From bba2a5667175298850fc0a6773953fc1cf958f87 Mon Sep 17 00:00:00 2001 From: craisinlord Date: Mon, 12 Oct 2026 15:37:13 -0500 Subject: [PATCH] Move gravity direction system to Anthology Gravity API, mixins, projectile compat, inverted effect, gravity sync and /gravity now live in the Anthology library. Antarchy registers the Underside region, antiwater, stale-inversion cleanup and portal gun camera roll through GravityHooks, and depends on the local Anthology jar in anthology_jars/. --- .../com/craisinlord/antarchy/Antarchy.java | 2 + .../block/AntimetalScaffoldingBlock.java | 4 +- .../block/entity/PotentNyxiteBlockEntity.java | 12 +- .../client/PortalGunClientTransit.java | 6 +- .../content/command/GravityCommand.java | 75 ---- .../content/effect/InvertedMobEffect.java | 49 --- .../content/entity/AlphaMantisEntity.java | 14 +- .../content/entity/AppleCowEntity.java | 14 +- .../antarchy/content/entity/BedBugEntity.java | 12 +- .../antarchy/content/entity/BomberEntity.java | 14 +- .../content/entity/ButterflyEntity.java | 8 +- .../content/entity/CrawlingBlightEntity.java | 14 +- .../antarchy/content/entity/DorrieEntity.java | 16 +- .../content/entity/EmperorScorpionEntity.java | 46 +-- .../content/entity/HerculesBeetleEntity.java | 16 +- .../content/entity/HoverboardEntity.java | 16 +- .../antarchy/content/entity/JerryEntity.java | 14 +- .../content/entity/ManticoreEntity.java | 10 +- .../content/entity/MissileSquidEntity.java | 22 +- .../content/entity/MolevoreEntity.java | 16 +- .../content/entity/OctopusBombEntity.java | 8 +- .../content/entity/OuranwoodDeerEntity.java | 12 +- .../content/entity/ReverieEntity.java | 16 +- .../content/entity/RollyPollyEntity.java | 16 +- .../content/entity/ScorpionEntity.java | 12 +- .../content/entity/SpitBugEntity.java | 12 +- .../content/entity/SpringbugEntity.java | 18 +- .../antarchy/content/entity/WaspEntity.java | 12 +- .../entity/brutalfly/BrutalflyEntity.java | 10 +- .../entity/nightmare/NightmareBiteEntity.java | 18 +- .../entity/nightmare/NightmareEntity.java | 30 +- .../content/entity/royal/KingEntity.java | 34 +- .../content/entity/royal/QueenEntity.java | 56 +-- .../content/entity/royal/RoyalBossEntity.java | 30 +- .../entity/stratoshark/StratosharkEntity.java | 16 +- .../content/entity/vortex/VortexEntity.java | 8 +- .../entity/vortex/WindVortexEntity.java | 14 +- .../gravity/AntarchyGravityAccess.java | 25 -- .../content/gravity/AntarchyGravityApi.java | 238 ----------- .../gravity/AntarchyGravityDirection.java | 44 --- .../gravity/AntarchyGravityRotationUtil.java | 140 ------- .../gravity/AntarchyGravityTransition.java | 9 - .../gravity/AntarchyMountedGravityHelper.java | 74 ---- .../gravity/GravityWalkNodeEvaluator.java | 214 ---------- .../gravity/ProjectileLaunchGravity.java | 13 - .../gravity/ScgunsProjectileAccess.java | 10 - .../item/AntimetalScaffoldingItem.java | 4 +- .../item/AttitudeAdjusterSlamManager.java | 14 +- .../antarchy/content/item/BigBerthaItem.java | 4 +- .../content/item/EyeOfTheStormItem.java | 12 +- .../antarchy/content/item/GravityGunItem.java | 14 +- .../antarchy/content/item/PortalGunItem.java | 8 +- .../content/item/RpoLauncherItem.java | 12 +- .../antarchy/content/item/SquidzookaItem.java | 12 +- .../content/item/WormHookTetherManager.java | 8 +- .../movement/AntarchyGravityHooks.java | 94 +++++ .../content/network/GravityStatePayload.java | 52 --- .../portalgun/PortalGunPortalEntity.java | 10 +- .../portalgun/PortalGunProjectileEntity.java | 8 +- .../portalgun/PortalGunTransitMath.java | 18 +- .../thoraxis/ThoraxisUndersideManager.java | 64 ++- .../mixins/AntarchyRangedAttackPatcher.java | 2 +- .../mixins/DreamSandLowGravityMixin.java | 6 +- .../AlexsCavesCandyCaneHookMixin.java | 54 --- .../AlexsCavesDepthChargeMixin.java | 28 -- .../alexscaves/AlexsCavesTephraMixin.java | 27 -- .../alexscaves/AlexsCavesWaterBoltMixin.java | 27 -- .../ArsNouveauProjectileGravityMixin.java | 45 --- ...IronsSpellbooksProjectileGravityMixin.java | 67 ---- .../scguns/ScgunsArrowGravityMixin.java | 28 -- .../ScgunsProjectileEntityAccessMixin.java | 29 -- .../ScgunsProjectileEntityGravityMixin.java | 80 ---- .../gravity/AbstractArrowGravityMixin.java | 28 -- .../gravity/BehaviorUtilsGravityMixin.java | 73 ---- .../gravity/BubbleColumnGravityMixin.java | 33 -- .../gravity/BucketItemGravityMixin.java | 84 ---- .../gravity/CrossbowItemGravityMixin.java | 59 --- .../mixins/gravity/DirectionFacingMixin.java | 36 -- .../gravity/EntityCollisionContextMixin.java | 65 --- .../gravity/EntityGravityFrameMixin.java | 270 ------------- .../mixins/gravity/EntityGravityMixin.java | 320 --------------- .../gravity/EntityMountedGravityMixin.java | 6 +- .../mixins/gravity/EntityMoveMixin.java | 374 ------------------ .../gravity/EntityProjectileGravityMixin.java | 42 -- .../mixins/gravity/ExplosionGravityMixin.java | 42 -- .../gravity/FireworkRocketGravityMixin.java | 29 -- .../gravity/GroundPathNavigationMixin.java | 89 ----- .../mixins/gravity/LivingEntityMixin.java | 297 -------------- .../gravity/MeleeAttackGoalGravityMixin.java | 101 ----- .../antarchy/mixins/gravity/MobHurtMixin.java | 26 -- .../gravity/MoveControlGravityMixin.java | 48 --- .../gravity/PathNavigationAccessor.java | 23 -- .../mixins/gravity/PlayerGravityMixin.java | 91 ----- .../mixins/gravity/PlayerPoseFitMixin.java | 37 -- .../mixins/gravity/PlayerSneakMixin.java | 100 ----- .../gravity/ProjectileGravityMixin.java | 69 ---- .../gravity/RandomStrollGoalGravityMixin.java | 161 -------- .../ServerGamePacketListenerMixin.java | 82 ---- .../gravity/ServerPlayerGravityMixin.java | 116 ------ .../ThrowableProjectileGravityMixin.java | 28 -- .../gravity/client/CameraGravityMixin.java | 93 ----- .../ClientPacketListenerGravityMixin.java | 38 -- .../EntityRenderDispatcherGravityMixin.java | 117 ------ .../resources/antarchy-common.mixins.json | 39 -- .../resources/assets/antarchy/lang/de_de.json | 2 - .../resources/assets/antarchy/lang/en_us.json | 2 - .../resources/assets/antarchy/lang/es_es.json | 2 - .../resources/assets/antarchy/lang/fr_fr.json | 2 - .../resources/assets/antarchy/lang/it_it.json | 2 - .../resources/assets/antarchy/lang/ja_jp.json | 2 - .../resources/assets/antarchy/lang/ko_kr.json | 2 - .../resources/assets/antarchy/lang/pt_br.json | 2 - .../resources/assets/antarchy/lang/ru_ru.json | 2 - .../resources/assets/antarchy/lang/zh_cn.json | 2 - .../resources/assets/antarchy/lang/zh_tw.json | 2 - .../antarchy/textures/mob_effect/inverted.png | Bin 438 -> 0 bytes .../advancement/in_the_upside_down.json | 2 +- fabric-1.21.1/build.gradle | 1 + .../fabric/AntarchyFabricContent.java | 10 +- .../antarchy/fabric/AntarchyFabricEvents.java | 16 +- .../fabric/client/AntarchyFabricClient.java | 1 + .../entity/multipart/MultipartPartEntity.java | 18 +- .../fabric/mixin/AntimetalInversionMixin.java | 8 +- .../mixin/AntiwaterLivingEntityMixin.java | 20 +- .../mixin/SpringyBootsFallDamageMixin.java | 4 +- .../AntarchyFabricClientNetworking.java | 2 - .../network/AntarchyFabricNetworking.java | 49 --- .../fabric/registry/AntarchyFabricMisc.java | 7 +- .../src/main/resources/fabric.mod.json | 1 + gradle.properties | 1 + neoforge-1.21.1/build.gradle | 2 + .../antarchy/neoforge/AntarchyNeoforge.java | 5 +- .../neoforge/AntarchyNeoforgeEvents.java | 2 - .../client/AntarchyNeoForgeClient.java | 1 + .../content/fluid/AntiwaterFluidType.java | 14 +- .../entity/multipart/MultipartPartEntity.java | 18 +- .../network/AntarchyGravityNetworking.java | 54 --- .../registry/AntarchyNeoForgeEvents.java | 33 +- .../registry/AntarchyNeoforgeMisc.java | 7 +- .../resources/META-INF/neoforge.mods.toml | 7 + 140 files changed, 570 insertions(+), 4947 deletions(-) delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/command/GravityCommand.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/InvertedMobEffect.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityAccess.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityDirection.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityRotationUtil.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityTransition.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyMountedGravityHelper.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/GravityWalkNodeEvaluator.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/ProjectileLaunchGravity.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/ScgunsProjectileAccess.java create mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/movement/AntarchyGravityHooks.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/GravityStatePayload.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesCandyCaneHookMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesDepthChargeMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesTephraMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesWaterBoltMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/ars_nouveau/ArsNouveauProjectileGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/irons_spellbooks/IronsSpellbooksProjectileGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsArrowGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsProjectileEntityAccessMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsProjectileEntityGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/AbstractArrowGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BehaviorUtilsGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BubbleColumnGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BucketItemGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/CrossbowItemGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/DirectionFacingMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityCollisionContextMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityFrameMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityProjectileGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ExplosionGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/FireworkRocketGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/GroundPathNavigationMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MeleeAttackGoalGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MobHurtMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MoveControlGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PathNavigationAccessor.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerPoseFitMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerSneakMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ProjectileGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/RandomStrollGoalGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerGamePacketListenerMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ThrowableProjectileGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/ClientPacketListenerGravityMixin.java delete mode 100644 common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/EntityRenderDispatcherGravityMixin.java delete mode 100644 common-1.21.1/src/main/resources/assets/antarchy/textures/mob_effect/inverted.png diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/Antarchy.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/Antarchy.java index 72c67f26..17733245 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/Antarchy.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/Antarchy.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy; import com.craisinlord.antarchy.content.computer.AntarchyArchiveLocators; +import com.craisinlord.antarchy.content.movement.AntarchyGravityHooks; import com.craisinlord.antarchy.content.util.AttributeRangeInit; import com.craisinlord.antarchy.content.worldgen.VillagePoolAdditions; import com.craisinlord.integrated_api.events.lifecycle.ServerGoingToStartEvent; @@ -17,6 +18,7 @@ public class Antarchy { public static void init() { AttributeRangeInit.apply(); AntarchyArchiveLocators.register(); + AntarchyGravityHooks.register(); ServerGoingToStartEvent.EVENT.addListener(Antarchy::serverAboutToStart); } private static void serverAboutToStart(final ServerGoingToStartEvent event) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java index f0d3d6ab..408ee9ab 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java @@ -1,7 +1,7 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.anthology.gravity.GravityApi; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -66,7 +66,7 @@ public class AntimetalScaffoldingBlock extends ScaffoldingBlock { public BlockState getStateForPlacement(BlockPlaceContext context) { BlockPos pos = context.getClickedPos(); Level level = context.getLevel(); - boolean inverted = context.getPlayer() != null && AntarchyGravityApi.isGravityInverted(context.getPlayer()); + boolean inverted = context.getPlayer() != null && GravityApi.isGravityInverted(context.getPlayer()); int distance = getDistance(level, pos, inverted); if (inverted && distance >= 7) { return null; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java index 8c09372d..04b1035d 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java @@ -6,9 +6,9 @@ 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.fluid.AntarchyFluidChecks; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; import java.util.List; import java.util.function.Predicate; @@ -333,9 +333,9 @@ public class PotentNyxiteBlockEntity extends BlockEntity { continue; } - AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(entity); + GravityDirection gravityDirection = GravityApi.getGravityDirection(entity); Vec3 currentWorldVelocity = gravityDirection.isInverted() - ? AntarchyGravityRotationUtil.vecPlayerToWorld(entity.getDeltaMovement(), gravityDirection) + ? GravityRotationUtil.vecPlayerToWorld(entity.getDeltaMovement(), gravityDirection) : entity.getDeltaMovement(); double axisVelocity = currentWorldVelocity.y * eruptionDirection.getStepY(); @@ -343,7 +343,7 @@ public class PotentNyxiteBlockEntity extends BlockEntity { Vec3 nextWorldVelocity = currentWorldVelocity.add(worldPush); entity.setDeltaMovement( gravityDirection.isInverted() - ? AntarchyGravityRotationUtil.vecWorldToPlayer(nextWorldVelocity, gravityDirection) + ? GravityRotationUtil.vecWorldToPlayer(nextWorldVelocity, gravityDirection) : nextWorldVelocity ); entity.hurtMarked = true; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/PortalGunClientTransit.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/PortalGunClientTransit.java index eb73c736..5cbdec42 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/PortalGunClientTransit.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/PortalGunClientTransit.java @@ -1,7 +1,7 @@ package com.craisinlord.antarchy.content.client; import com.craisinlord.antarchy.content.network.PortalGunTransitPayload; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.anthology.gravity.GravityApi; import com.craisinlord.antarchy.content.portalgun.PortalGunPortalEntity; import com.craisinlord.antarchy.content.portalgun.PortalGunTransformUtil; import com.craisinlord.antarchy.content.portalgun.PortalGunTransitMath; @@ -34,7 +34,7 @@ public final class PortalGunClientTransit { if (connection == null) { return; } - Vec3 crossingVelocity = AntarchyGravityApi.isGravityInverted(player) + Vec3 crossingVelocity = GravityApi.isGravityInverted(player) ? PortalGunTransitMath.entityVelocityToWorld(player, velocity) : velocity; for (PortalGunPortalEntity portal : PortalGunPortalEntity.findPortalsNearBounds(player.level(), startBox.minmax(currentBox).expandTowards(crossingVelocity).inflate(1.0D))) { @@ -49,7 +49,7 @@ public final class PortalGunClientTransit { connection.send(new ServerboundCustomPayloadPacket(new PortalGunTransitPayload( portal.getId(), PortalGunTransitMath.entityPosition(startBox, player), player.position(), velocity))); PortalGunPortalEntity.PortalTransit transit = portal.computeTransit(player, linked, currentBox, velocity, look); - Vec3 rollLook = AntarchyGravityApi.isGravityInverted(player) + Vec3 rollLook = GravityApi.isGravityInverted(player) ? PortalGunTransitMath.entityVelocityToWorld(player, look) : look; PortalGunRollClientState.onTransit(portal, linked, rollLook); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/command/GravityCommand.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/command/GravityCommand.java deleted file mode 100644 index df009da1..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/command/GravityCommand.java +++ /dev/null @@ -1,75 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/InvertedMobEffect.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/InvertedMobEffect.java deleted file mode 100644 index e9175ed5..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/InvertedMobEffect.java +++ /dev/null @@ -1,49 +0,0 @@ -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; -import net.minecraft.world.entity.EntityType; - -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) { - // Vex flight steering is authored around vanilla gravity and ground contact. Rotating its - // gravity frame makes the native flight controller drive it into terrain. - if (entity.getType() == EntityType.VEX) { - if (!entity.level().isClientSide()) { - AntarchyGravityApi.clearForcedGravity(entity); - } - return true; - } - 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-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java index ebbdc864..8f3d93ec 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java @@ -4,9 +4,9 @@ import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.boss.BossCombatUtil; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -477,15 +477,15 @@ public class AlphaMantisEntity extends MantisEntity { } } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntity.java index 78b7fde3..865ea6c3 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AppleCowEntity.java @@ -1,8 +1,8 @@ package com.craisinlord.antarchy.content.entity; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; @@ -334,16 +334,16 @@ public abstract class AppleCowEntity extends Cow implements GeoEntity, Shearable this.setDeltaMovement(this.toWorld(0.0D, motion.y < 0.0D ? motion.y : 0.0D, 0.0D)); } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private int randomNapCooldown() { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java index 114e1a1b..b46a45f6 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BedBugEntity.java @@ -5,9 +5,9 @@ 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 com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; @@ -394,15 +394,15 @@ public class BedBugEntity extends Animal implements GeoEntity { } private void commitLunge(LivingEntity target, double horizontalSpeed, double verticalSpeed) { - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(this); - Vec3 localLunge = AntarchyGravityRotationUtil.vecWorldToPlayer(target.position().subtract(this.position()), direction); + GravityDirection direction = GravityApi.getGravityDirection(this); + Vec3 localLunge = GravityRotationUtil.vecWorldToPlayer(target.position().subtract(this.position()), direction); Vec3 horizontal = new Vec3(localLunge.x, 0.0D, localLunge.z); if (horizontal.lengthSqr() < 1.0E-4D) { return; } horizontal = horizontal.normalize().scale(horizontalSpeed); Vec3 localImpulse = new Vec3(horizontal.x, verticalSpeed, horizontal.z); - Vec3 worldImpulse = AntarchyGravityRotationUtil.vecPlayerToWorld(localImpulse, direction); + Vec3 worldImpulse = GravityRotationUtil.vecPlayerToWorld(localImpulse, direction); this.setDeltaMovement(this.getDeltaMovement().add(worldImpulse.x, worldImpulse.y, worldImpulse.z)); this.hasImpulse = true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java index cd32bc2f..02ce3d51 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/BomberEntity.java @@ -2,9 +2,9 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import java.util.Objects; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; @@ -352,16 +352,16 @@ public class BomberEntity extends Monster implements GeoEntity { return this.toLocal(this.getDeltaMovement()).horizontalDistanceSqr() > 1.0E-4D || this.getNavigation().isInProgress(); } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private Vec3 toLocalPlane(Vec3 worldVector) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java index 44848ad8..24597343 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ButterflyEntity.java @@ -5,8 +5,8 @@ import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import java.util.EnumSet; import java.util.Optional; import java.util.function.Predicate; @@ -184,7 +184,7 @@ public class ButterflyEntity extends Animal implements FlyingAnimal, GeoEntity { FlyingPathNavigation navigation = new FlyingPathNavigation(this, level) { @Override public boolean isStableDestination(BlockPos pos) { - BlockPos support = AntarchyGravityApi.isGravityInverted(ButterflyEntity.this) ? pos.above() : pos.below(); + BlockPos support = GravityApi.isGravityInverted(ButterflyEntity.this) ? pos.above() : pos.below(); return !this.level.getBlockState(support).isAir(); } @@ -432,7 +432,7 @@ public class ButterflyEntity extends Animal implements FlyingAnimal, GeoEntity { @Override protected void jumpInLiquid(net.minecraft.tags.TagKey fluidTag) { - this.setDeltaMovement(this.getDeltaMovement().add(AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, 0.01D, 0.0D, AntarchyGravityApi.getGravityDirection(this)))); + this.setDeltaMovement(this.getDeltaMovement().add(GravityRotationUtil.vecPlayerToWorld(0.0D, 0.01D, 0.0D, GravityApi.getGravityDirection(this)))); } @Override diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CrawlingBlightEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CrawlingBlightEntity.java index 86b48eec..5ad3a701 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CrawlingBlightEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/CrawlingBlightEntity.java @@ -2,9 +2,9 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; @@ -228,16 +228,16 @@ public class CrawlingBlightEntity extends Monster implements GeoEntity { } } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } @Override diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/DorrieEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/DorrieEntity.java index fc49ecb3..900e6541 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/DorrieEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/DorrieEntity.java @@ -1,9 +1,9 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import java.util.EnumSet; import java.util.List; import net.minecraft.core.BlockPos; @@ -768,20 +768,20 @@ public class DorrieEntity extends Animal implements GeoEntity { || this.getNavigation().isInProgress(); } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(Vec3 localVector) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private Vec3 toLocalPlane(Vec3 worldVector) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java index e55c2edf..aab28e06 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java @@ -6,9 +6,9 @@ import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.boss.BossCombatUtil; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -428,9 +428,9 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { } } case ACTIVE -> { - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(this); - Vec3 motion = AntarchyGravityRotationUtil.vecWorldToPlayer(this.getDeltaMovement(), direction); - this.setDeltaMovement(AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, motion.y, 0.0D, direction)); + GravityDirection direction = GravityApi.getGravityDirection(this); + Vec3 motion = GravityRotationUtil.vecWorldToPlayer(this.getDeltaMovement(), direction); + this.setDeltaMovement(GravityRotationUtil.vecPlayerToWorld(0.0D, motion.y, 0.0D, direction)); if (--this.hardenDurationTicks <= 0) { this.beginHardeningEnd(); return; @@ -441,9 +441,9 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { } } case END -> { - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(this); - Vec3 motion = AntarchyGravityRotationUtil.vecWorldToPlayer(this.getDeltaMovement(), direction); - this.setDeltaMovement(AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, motion.y, 0.0D, direction)); + GravityDirection direction = GravityApi.getGravityDirection(this); + Vec3 motion = GravityRotationUtil.vecWorldToPlayer(this.getDeltaMovement(), direction); + this.setDeltaMovement(GravityRotationUtil.vecPlayerToWorld(0.0D, motion.y, 0.0D, direction)); if (--this.hardenStateTicks <= 0) { this.setHardenPhase(HardenPhase.NONE); this.hardenCooldownTicks = Math.max(1, AntarchySettings.emperorScorpionHardenCooldownTicks()); @@ -504,10 +504,10 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { } Vec3 anchor = this.getTarget() != null ? this.getTarget().position() : this.position(); - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(this); + GravityDirection direction = GravityApi.getGravityDirection(this); Vec3 localRing = Vec3.directionFromRotation(0.0F, this.random.nextFloat() * 360.0F) .scale(2.75D + this.random.nextDouble() * 1.75D); - Vec3 worldRing = AntarchyGravityRotationUtil.vecPlayerToWorld(localRing, direction); + Vec3 worldRing = GravityRotationUtil.vecPlayerToWorld(localRing, direction); BlockPos spawnPos = this.findSummonSpawnPos(anchor.add(worldRing)); Vec3 spawnCenter = Vec3.atCenterOf(spawnPos); scorpion.moveTo(spawnCenter.x, spawnCenter.y, spawnCenter.z, this.random.nextFloat() * 360.0F, 0.0F); @@ -522,22 +522,22 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { } private void commitLunge(LivingEntity target, double horizontalSpeed, double verticalSpeed) { - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(this); - Vec3 localLunge = AntarchyGravityRotationUtil.vecWorldToPlayer(target.position().subtract(this.position()), direction); + GravityDirection direction = GravityApi.getGravityDirection(this); + Vec3 localLunge = GravityRotationUtil.vecWorldToPlayer(target.position().subtract(this.position()), direction); Vec3 horizontal = new Vec3(localLunge.x, 0.0D, localLunge.z); if (horizontal.lengthSqr() < 1.0E-4D) { return; } horizontal = horizontal.normalize().scale(horizontalSpeed); Vec3 localImpulse = new Vec3(horizontal.x, verticalSpeed, horizontal.z); - Vec3 worldImpulse = AntarchyGravityRotationUtil.vecPlayerToWorld(localImpulse, direction); + Vec3 worldImpulse = GravityRotationUtil.vecPlayerToWorld(localImpulse, direction); this.setDeltaMovement(this.getDeltaMovement().add(worldImpulse.x, worldImpulse.y, worldImpulse.z)); this.hasImpulse = true; } private BlockPos findSummonSpawnPos(Vec3 center) { BlockPos base = BlockPos.containing(center); - Direction gravityDown = AntarchyGravityRotationUtil.getGravityDownDirection(this); + Direction gravityDown = GravityRotationUtil.getGravityDownDirection(this); Direction gravityUp = gravityDown.getOpposite(); BlockPos fallback = base; for (int step = -2; step <= 2; step++) { @@ -1001,10 +1001,10 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { if (EmperorScorpionEntity.this.isWithinMeleeAttackRange(target) && EmperorScorpionEntity.this.hasLineOfSight(target)) { EmperorScorpionEntity.this.getNavigation().stop(); - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(EmperorScorpionEntity.this); - Vec3 localMotion = AntarchyGravityRotationUtil.vecWorldToPlayer(EmperorScorpionEntity.this.getDeltaMovement(), direction); + GravityDirection direction = GravityApi.getGravityDirection(EmperorScorpionEntity.this); + Vec3 localMotion = GravityRotationUtil.vecWorldToPlayer(EmperorScorpionEntity.this.getDeltaMovement(), direction); Vec3 localStopped = new Vec3(0.0D, localMotion.y, 0.0D); - Vec3 worldStopped = AntarchyGravityRotationUtil.vecPlayerToWorld(localStopped, direction); + Vec3 worldStopped = GravityRotationUtil.vecPlayerToWorld(localStopped, direction); EmperorScorpionEntity.this.setDeltaMovement(worldStopped); AttackType attackType = EmperorScorpionEntity.this.selectAttack(target); if (attackType != AttackType.NONE) { @@ -1024,8 +1024,8 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { } private void approachDirectly(LivingEntity target) { - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(EmperorScorpionEntity.this); - Vec3 localDelta = AntarchyGravityRotationUtil.vecWorldToPlayer(target.position().subtract(EmperorScorpionEntity.this.position()), direction); + GravityDirection direction = GravityApi.getGravityDirection(EmperorScorpionEntity.this); + Vec3 localDelta = GravityRotationUtil.vecWorldToPlayer(target.position().subtract(EmperorScorpionEntity.this.position()), direction); double dx = localDelta.x; double dz = localDelta.z; if (dx * dx + dz * dz < 1.0E-4D) { @@ -1039,15 +1039,15 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { EmperorScorpionEntity.this.yBodyRot = newYaw; EmperorScorpionEntity.this.yBodyRotO = newYaw; - Vec3 currentMotion = AntarchyGravityRotationUtil.vecWorldToPlayer(EmperorScorpionEntity.this.getDeltaMovement(), direction); + Vec3 currentMotion = GravityRotationUtil.vecWorldToPlayer(EmperorScorpionEntity.this.getDeltaMovement(), direction); float headingError = Math.abs(Mth.wrapDegrees(targetYaw - currentYaw)); if (headingError <= DIRECT_APPROACH_ALIGN_THRESHOLD) { double speed = EmperorScorpionEntity.this.getAttributeValue(Attributes.MOVEMENT_SPEED) * CHASE_SPEED; Vec3 forward = Vec3.directionFromRotation(0.0F, newYaw).scale(speed); - Vec3 worldForward = AntarchyGravityRotationUtil.vecPlayerToWorld(forward.x, currentMotion.y, forward.z, direction); + Vec3 worldForward = GravityRotationUtil.vecPlayerToWorld(forward.x, currentMotion.y, forward.z, direction); EmperorScorpionEntity.this.setDeltaMovement(worldForward); } else { - EmperorScorpionEntity.this.setDeltaMovement(AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, currentMotion.y, 0.0D, direction)); + EmperorScorpionEntity.this.setDeltaMovement(GravityRotationUtil.vecPlayerToWorld(0.0D, currentMotion.y, 0.0D, direction)); } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java index 472b2051..5c89f30e 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java @@ -6,9 +6,9 @@ import com.craisinlord.antarchy.content.AntarchyGameRules; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.content.item.BigBerthaItem; import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; import java.util.EnumSet; @@ -1341,20 +1341,20 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl .toList(); } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(Vec3 localVector) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private Vec3 toLocalPlane(Vec3 worldVector) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java index 509567d7..66a618b0 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java @@ -3,9 +3,9 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.mixins.LivingEntityJumpingAccessor; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -70,7 +70,7 @@ public class HoverboardEntity extends PathfinderMob implements GeoEntity { @Override public boolean canBeAffected(MobEffectInstance effectInstance) { - return effectInstance.getEffect().value() instanceof com.craisinlord.antarchy.content.effect.InvertedMobEffect; + return effectInstance.getEffect().value() instanceof com.craisinlord.anthology.effect.InvertedMobEffect; } public static AttributeSupplier.Builder createAttributes() { @@ -172,11 +172,11 @@ public class HoverboardEntity extends PathfinderMob implements GeoEntity { if (!this.hasPassenger(passenger)) { return; } - Vec3 riderOffset = AntarchyGravityRotationUtil.vecPlayerToWorld( + Vec3 riderOffset = GravityRotationUtil.vecPlayerToWorld( 0.0D, RIDER_Y_OFFSET, 0.0D, - AntarchyGravityApi.getGravityDirection(this) + GravityApi.getGravityDirection(this) ); moveFunction.accept(passenger, this.getX() + riderOffset.x, this.getY() + riderOffset.y, this.getZ() + riderOffset.z); } @@ -220,7 +220,7 @@ public class HoverboardEntity extends PathfinderMob implements GeoEntity { } private double resolveVerticalMotion(boolean holdingJump) { - AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(this); + GravityDirection gravityDirection = GravityApi.getGravityDirection(this); double supportHeight = this.findSupportHeight(gravityDirection); double height = gravityDirection.isInverted() ? supportHeight - this.getY() : this.getY() - supportHeight; if (holdingJump) { @@ -236,7 +236,7 @@ public class HoverboardEntity extends PathfinderMob implements GeoEntity { return -SETTLE_DESCEND_SPEED; } - private double findSupportHeight(AntarchyGravityDirection gravityDirection) { + private double findSupportHeight(GravityDirection gravityDirection) { BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(Mth.floor(this.getX()), Mth.floor(this.getY()), Mth.floor(this.getZ())); if (!gravityDirection.isInverted()) { int minY = this.level().getMinBuildHeight(); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java index 1d670cfc..4e9d4bcf 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/JerryEntity.java @@ -2,9 +2,9 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.content.horde.CavarynHordeManager; import net.minecraft.nbt.CompoundTag; import net.minecraft.core.registries.BuiltInRegistries; @@ -308,16 +308,16 @@ public class JerryEntity extends Monster implements GeoEntity { : super.doHurtTarget(target); } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private Vec3 toLocalPlane(Vec3 worldVector) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ManticoreEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ManticoreEntity.java index b36b9587..436dc728 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ManticoreEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ManticoreEntity.java @@ -4,8 +4,8 @@ import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.entity.royal.QueenEntity; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; import java.util.List; import java.util.UUID; @@ -385,7 +385,7 @@ public class ManticoreEntity extends Monster implements GeoEntity { } private static Vec3 oppositeGravity(Entity entity) { - return AntarchyGravityApi.isGravityInverted(entity) ? new Vec3(0.0D, -1.0D, 0.0D) : new Vec3(0.0D, 1.0D, 0.0D); + return GravityApi.isGravityInverted(entity) ? new Vec3(0.0D, -1.0D, 0.0D) : new Vec3(0.0D, 1.0D, 0.0D); } private void tickQueenSummonInversionRule() { @@ -395,8 +395,8 @@ public class ManticoreEntity extends Monster implements GeoEntity { if (this.hasEffect(AntarchyObjects.INVERTED_EFFECT.get())) { this.removeEffect(AntarchyObjects.INVERTED_EFFECT.get()); } - if (AntarchyGravityApi.isGravityInverted(this) && AntarchyGravityApi.isGravityForced(this)) { - AntarchyGravityApi.setGravityDirection(this, AntarchyGravityDirection.DOWN, false); + if (GravityApi.isGravityInverted(this) && GravityApi.isGravityForced(this)) { + GravityApi.setGravityDirection(this, GravityDirection.DOWN, false); } this.setNoGravity(false); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java index c18a37c0..446b31eb 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/MissileSquidEntity.java @@ -3,10 +3,10 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; 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.AntarchyGravityRotationUtil; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityTransition; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; @@ -413,8 +413,8 @@ public class MissileSquidEntity extends Monster implements GeoEntity { this.launchOwnerUuid = owner != null ? owner.getUUID() : null; this.setTarget(null); this.setNoGravity(false); - if (owner != null && AntarchyGravityApi.isGravityInverted(owner)) { - AntarchyGravityApi.setAirborneGravityDirection(this, AntarchyGravityApi.getGravityDirection(owner), true, AntarchyGravityTransition.INSTANT); + if (owner != null && GravityApi.isGravityInverted(owner)) { + GravityApi.setAirborneGravityDirection(this, GravityApi.getGravityDirection(owner), true, GravityTransition.INSTANT); } this.setDeltaMovement(velocity); this.hasImpulse = true; @@ -732,20 +732,20 @@ public class MissileSquidEntity extends Monster implements GeoEntity { this.setAnimationState(ANIM_IDLE); } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private Vec3 toWorld(Vec3 localVector) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); } private Vec3 toLocalPlane(Vec3 worldVector) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java index 13c31f07..da1167c4 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/MolevoreEntity.java @@ -4,9 +4,9 @@ import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import java.util.HashSet; import java.util.Set; import java.util.UUID; @@ -687,20 +687,20 @@ public class MolevoreEntity extends Monster implements GeoEntity { return forward.normalize().dot(toTarget.normalize()) >= minimumDot; } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private Vec3 toWorld(Vec3 localVector) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); } private Vec3 toLocalPlane(Vec3 worldVector) { - Vec3 local = AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + Vec3 local = GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); return new Vec3(local.x, 0.0D, local.z); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java index 82492bae..d89e64fe 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/OctopusBombEntity.java @@ -357,12 +357,12 @@ public class OctopusBombEntity extends Monster implements GeoEntity { public void launchAsExplosiveProjectile(net.minecraft.world.entity.Entity launcher, Vec3 velocity) { this.explosiveImpact = true; this.explosiveLauncherId = launcher != null ? launcher.getUUID() : null; - if (launcher != null && com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.isGravityInverted(launcher)) { - com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setAirborneGravityDirection( + if (launcher != null && com.craisinlord.anthology.gravity.GravityApi.isGravityInverted(launcher)) { + com.craisinlord.anthology.gravity.GravityApi.setAirborneGravityDirection( this, - com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.getGravityDirection(launcher), + com.craisinlord.anthology.gravity.GravityApi.getGravityDirection(launcher), true, - com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition.INSTANT + com.craisinlord.anthology.gravity.GravityTransition.INSTANT ); } this.setDeltaMovement(velocity); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodDeerEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodDeerEntity.java index 32631a33..4378189f 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodDeerEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/OuranwoodDeerEntity.java @@ -3,9 +3,9 @@ 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 com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import java.util.EnumSet; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; @@ -245,12 +245,12 @@ public class OuranwoodDeerEntity extends Animal implements GeoEntity { return MIN_QUIRK_COOLDOWN + this.random.nextInt(MAX_QUIRK_COOLDOWN - MIN_QUIRK_COOLDOWN + 1); } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } @Override diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java index 292d603b..55a706ec 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ReverieEntity.java @@ -7,9 +7,9 @@ import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.content.movement.DreamSandLowGravityAccess; import java.util.EnumSet; import java.util.List; @@ -663,8 +663,8 @@ public class ReverieEntity extends PathfinderMob implements FlyingAnimal, GeoEnt return false; } - AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(focus); - Vec3 localMotion = AntarchyGravityRotationUtil.vecWorldToPlayer(focus.getDeltaMovement(), gravityDirection); + GravityDirection gravityDirection = GravityApi.getGravityDirection(focus); + Vec3 localMotion = GravityRotationUtil.vecWorldToPlayer(focus.getDeltaMovement(), gravityDirection); double descentThreshold = Math.max(0.02D, this.cfgDangerousFallSpeed); boolean invertedGravity = gravityDirection.isInverted(); if (invertedGravity ? localMotion.y < descentThreshold : localMotion.y > -descentThreshold) { @@ -1008,7 +1008,7 @@ public class ReverieEntity extends PathfinderMob implements FlyingAnimal, GeoEnt } private int getGravitySupportDistance(Player focus, int maxDistanceBlocks) { - Direction gravityDown = AntarchyGravityRotationUtil.getGravityDownDirection(focus); + Direction gravityDown = GravityRotationUtil.getGravityDownDirection(focus); Direction supportFace = gravityDown.getOpposite(); BlockPos cursor = focus.blockPosition(); for (int distance = 1; distance <= maxDistanceBlocks; distance++) { @@ -1047,7 +1047,7 @@ public class ReverieEntity extends PathfinderMob implements FlyingAnimal, GeoEnt 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 verticalOffset = GravityApi.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, @@ -1057,7 +1057,7 @@ public class ReverieEntity extends PathfinderMob implements FlyingAnimal, GeoEnt } private Vec3 getPurpleProtectTarget(Player focus) { - double verticalOffset = AntarchyGravityApi.isGravityInverted(focus) ? -0.95D : 0.95D; + double verticalOffset = GravityApi.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( diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RollyPollyEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RollyPollyEntity.java index cbd95196..36afd023 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RollyPollyEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/RollyPollyEntity.java @@ -4,9 +4,9 @@ import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import java.util.EnumSet; import net.minecraft.core.BlockPos; @@ -875,20 +875,20 @@ public class RollyPollyEntity extends TamableAnimal implements GeoEntity { } } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(Vec3 localVector) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private Vec3 toLocalPlane(Vec3 worldVector) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java index b55695c3..156b64fb 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ScorpionEntity.java @@ -2,9 +2,9 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -229,15 +229,15 @@ public class ScorpionEntity extends Monster implements GeoEntity { } private void commitLunge(LivingEntity target, double horizontalSpeed, double verticalSpeed) { - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(this); - Vec3 localLunge = AntarchyGravityRotationUtil.vecWorldToPlayer(target.position().subtract(this.position()), direction); + GravityDirection direction = GravityApi.getGravityDirection(this); + Vec3 localLunge = GravityRotationUtil.vecWorldToPlayer(target.position().subtract(this.position()), direction); Vec3 horizontal = new Vec3(localLunge.x, 0.0D, localLunge.z); if (horizontal.lengthSqr() < 1.0E-4D) { return; } horizontal = horizontal.normalize().scale(horizontalSpeed); Vec3 localImpulse = new Vec3(horizontal.x, verticalSpeed, horizontal.z); - Vec3 worldImpulse = AntarchyGravityRotationUtil.vecPlayerToWorld(localImpulse, direction); + Vec3 worldImpulse = GravityRotationUtil.vecPlayerToWorld(localImpulse, direction); this.setDeltaMovement(this.getDeltaMovement().add(worldImpulse.x, worldImpulse.y, worldImpulse.z)); this.hasImpulse = true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java index d500a640..34987969 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java @@ -3,9 +3,9 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.syncher.EntityDataAccessor; @@ -235,12 +235,12 @@ public class SpitBugEntity extends Monster implements GeoEntity { this.playSound(AntarchySoundEvents.SPIT_BUG_SPIT.get(), 1.0F, 0.85F + this.random.nextFloat() * 0.15F); } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private final class SpitAttackGoal extends Goal { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpringbugEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpringbugEntity.java index 167a61c4..9819a87a 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpringbugEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/SpringbugEntity.java @@ -3,9 +3,9 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.mojang.serialization.Codec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -412,7 +412,7 @@ public class SpringbugEntity extends Monster implements GeoEntity { this.getNavigation().stop(); this.setDeltaMovement(Vec3.ZERO); this.move(MoverType.SELF, Vec3.ZERO); - this.setPos(this.getX(), AntarchyGravityApi.isGravityInverted(this) ? clingPos.getY() + 1.01D : clingPos.getY() - this.getBbHeight() - 0.01D, this.getZ()); + this.setPos(this.getX(), GravityApi.isGravityInverted(this) ? clingPos.getY() + 1.01D : clingPos.getY() - this.getBbHeight() - 0.01D, this.getZ()); } private void tickPouncing() { @@ -544,7 +544,7 @@ public class SpringbugEntity extends Monster implements GeoEntity { return false; } double x = pos.getX() + 0.5D; - double y = AntarchyGravityApi.isGravityInverted(this) + double y = GravityApi.isGravityInverted(this) ? pos.getY() + 1.01D : pos.getY() - this.getBbHeight() - 0.01D; double z = pos.getZ() + 0.5D; @@ -952,8 +952,8 @@ public class SpringbugEntity extends Monster implements GeoEntity { } } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Direction gravityDownDirection() { @@ -961,11 +961,11 @@ public class SpringbugEntity extends Monster implements GeoEntity { } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private Vec3 toLocalPlane(Vec3 worldVector) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java index a16a0f48..a628f0d8 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WaspEntity.java @@ -3,9 +3,9 @@ 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 com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import java.util.EnumSet; import java.util.Objects; import net.minecraft.core.BlockPos; @@ -331,12 +331,12 @@ public class WaspEntity extends Monster implements GeoEntity, FlyingAnimal { return !this.onGround(); } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private void realignHitbox() { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java index efaba0d5..982d2d20 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java @@ -4,8 +4,8 @@ import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.boss.BossCombatUtil; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import java.util.EnumSet; import java.util.Objects; import net.minecraft.core.BlockPos; @@ -566,7 +566,7 @@ public class BrutalflyEntity extends Monster implements GeoEntity { private boolean shouldSwipe(LivingEntity target, FightPhase phase) { double horizontalDistanceSqr = new Vec3(target.getX() - this.getX(), 0.0D, target.getZ() - this.getZ()).lengthSqr(); - Vec3 localDelta = AntarchyGravityRotationUtil.vecWorldToPlayer(target.position().subtract(this.position()), AntarchyGravityApi.getGravityDirection(this)); + Vec3 localDelta = GravityRotationUtil.vecWorldToPlayer(target.position().subtract(this.position()), GravityApi.getGravityDirection(this)); horizontalDistanceSqr = new Vec3(localDelta.x, 0.0D, localDelta.z).lengthSqr(); boolean beneathBoss = horizontalDistanceSqr <= 16.0D && localDelta.y <= 2.0D; return beneathBoss || this.distanceToSqr(target) <= phase.swipeRangeSqr; @@ -579,7 +579,7 @@ public class BrutalflyEntity extends Monster implements GeoEntity { } private void tickSwipe(LivingEntity target) { - Vec3 divePoint = target.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, 1.0D, 0.0D, AntarchyGravityApi.getGravityDirection(this))); + Vec3 divePoint = target.position().add(GravityRotationUtil.vecPlayerToWorld(0.0D, 1.0D, 0.0D, GravityApi.getGravityDirection(this))); this.getMoveControl().setWantedPosition(divePoint.x, divePoint.y, divePoint.z, 1.45D); if (this.animationTicks == 8) { @@ -608,7 +608,7 @@ public class BrutalflyEntity extends Monster implements GeoEntity { dz = this.random.nextDouble() - 0.5D; } target.knockback(SWIPE_KNOCKBACK, -dx, -dz); - target.setDeltaMovement(target.getDeltaMovement().add(AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, 0.3D, 0.0D, AntarchyGravityApi.getGravityDirection(this)))); + target.setDeltaMovement(target.getDeltaMovement().add(GravityRotationUtil.vecPlayerToWorld(0.0D, 0.3D, 0.0D, GravityApi.getGravityDirection(this)))); } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareBiteEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareBiteEntity.java index c371e131..72faf194 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareBiteEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareBiteEntity.java @@ -3,9 +3,9 @@ package com.craisinlord.antarchy.content.entity.nightmare; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; 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.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; @@ -170,9 +170,9 @@ public class NightmareBiteEntity extends Entity implements GeoEntity { } private void updateTrackingPosition(LivingEntity target, double progress) { - AntarchyGravityDirection targetGravity = AntarchyGravityApi.getGravityDirection(target); - if (AntarchyGravityApi.getGravityDirection(this) != targetGravity) { - AntarchyGravityApi.setGravityDirection(this, targetGravity); + GravityDirection targetGravity = GravityApi.getGravityDirection(target); + if (GravityApi.getGravityDirection(this) != targetGravity) { + GravityApi.setGravityDirection(this, targetGravity); } Vec3 forward = target.getLookAngle().multiply(1.0D, 0.0D, 1.0D); if (forward.lengthSqr() < 1.0E-4D) { @@ -182,12 +182,12 @@ public class NightmareBiteEntity extends Entity implements GeoEntity { forward = new Vec3(0.0D, 0.0D, 1.0D); } forward = forward.normalize(); - Vec3 localUp = AntarchyGravityRotationUtil.vecPlayerToWorld( + Vec3 localUp = GravityRotationUtil.vecPlayerToWorld( 0.0D, 1.0D, 0.0D, targetGravity); Vec3 right = forward.cross(localUp).normalize(); double sideOffset = START_SIDE_OFFSET + (END_SIDE_OFFSET - START_SIDE_OFFSET) * progress; double backOffset = START_BACK_OFFSET + (END_BACK_OFFSET - START_BACK_OFFSET) * progress; - Vec3 bodyCenter = target.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( + Vec3 bodyCenter = target.position().add(GravityRotationUtil.vecPlayerToWorld( 0.0D, target.getBbHeight() * 0.55D, 0.0D, targetGravity)); Vec3 desiredPos = bodyCenter .add(right.scale(this.approachSide * sideOffset)) @@ -195,7 +195,7 @@ public class NightmareBiteEntity extends Entity implements GeoEntity { Vec3 toTarget = bodyCenter.subtract(desiredPos); this.setPos(desiredPos.x, desiredPos.y, desiredPos.z); if (toTarget.lengthSqr() > 1.0E-4D) { - Vec3 localToTarget = AntarchyGravityRotationUtil.vecWorldToPlayer(toTarget, targetGravity); + Vec3 localToTarget = GravityRotationUtil.vecWorldToPlayer(toTarget, targetGravity); float yaw = (float) Math.toDegrees(Math.atan2(localToTarget.z, localToTarget.x)) - 90.0F; this.setYRot(yaw); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java index 87ee2f9d..69aae1ec 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java @@ -6,9 +6,9 @@ import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.boss.BossCombatUtil; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; @@ -746,14 +746,14 @@ public class NightmareEntity extends Monster implements GeoEntity { : target.getEyePosition(); Vec3 lunge = lungeTarget.subtract(this.getEyePosition()); if (lunge.lengthSqr() > 1.0E-4D) { - AntarchyGravityDirection direction = this.gravityDirection(); - Vec3 normalized = AntarchyGravityRotationUtil.vecWorldToPlayer(lunge, direction).normalize(); + GravityDirection direction = this.gravityDirection(); + Vec3 normalized = GravityRotationUtil.vecWorldToPlayer(lunge, direction).normalize(); double verticalBoost = this.shouldUseFlyingLocomotion() ? 0.34D : 0.18D; - Vec3 current = AntarchyGravityRotationUtil.vecWorldToPlayer(this.getDeltaMovement(), direction); + Vec3 current = GravityRotationUtil.vecWorldToPlayer(this.getDeltaMovement(), direction); double upward = this.shouldUseFlyingLocomotion() ? Math.max(normalized.y * verticalBoost, -0.08D) : normalized.y * verticalBoost; - this.setDeltaMovement(AntarchyGravityRotationUtil.vecPlayerToWorld( + this.setDeltaMovement(GravityRotationUtil.vecPlayerToWorld( normalized.x * 0.85D, current.y * 0.18D + upward, normalized.z * 0.85D, @@ -1106,26 +1106,26 @@ public class NightmareEntity extends Monster implements GeoEntity { } private void knockAway(LivingEntity target, double horizontalStrength, double verticalStrength) { - AntarchyGravityDirection direction = this.gravityDirection(); + GravityDirection direction = this.gravityDirection(); Vec3 localDirection = this.toLocalPlane(target.position().subtract(this.position())); if (localDirection.lengthSqr() < 1.0E-4D) localDirection = this.toLocalPlane(this.getViewVector(1.0F)); if (localDirection.lengthSqr() < 1.0E-4D) localDirection = new Vec3(1.0D, 0.0D, 0.0D); Vec3 localPush = localDirection.normalize().scale(horizontalStrength); - Vec3 worldPush = AntarchyGravityRotationUtil.vecPlayerToWorld(localPush.x, verticalStrength, localPush.z, direction); + Vec3 worldPush = GravityRotationUtil.vecPlayerToWorld(localPush.x, verticalStrength, localPush.z, direction); target.push(worldPush.x, worldPush.y, worldPush.z); target.hurtMarked = true; } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(Vec3 localVector) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); } private Vec3 toLocalPlane(Vec3 worldVector) { @@ -1174,7 +1174,7 @@ public class NightmareEntity extends Monster implements GeoEntity { } private boolean tryBreakBlocksToTarget(LivingEntity target) { - Direction gravityDown = AntarchyGravityRotationUtil.getGravityDownDirection(this); + Direction gravityDown = GravityRotationUtil.getGravityDownDirection(this); BlockPos.MutableBlockPos cursor = this.blockPosition().mutable(); for (int i = 0; i <= 16; i++) { if (this.level().getBlockState(cursor).is(AntarchyTags.Blocks.NIGHTMARE_BREAKABLE)) { @@ -1336,7 +1336,7 @@ public class NightmareEntity extends Monster implements GeoEntity { } private boolean isTooCloseToCeiling() { - Direction gravityUp = AntarchyGravityRotationUtil.getGravityDownDirection(this).getOpposite(); + Direction gravityUp = GravityRotationUtil.getGravityDownDirection(this).getOpposite(); BlockPos current = this.blockPosition(); for (int i = 1; i <= FLIGHT_CEILING_CLEARANCE_BLOCKS; i++) { if (!this.level().isEmptyBlock(current.relative(gravityUp, i))) return true; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java index 44f9abc5..7514eadc 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java @@ -5,8 +5,8 @@ import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.effect.RoyalEffectEligibility; import com.craisinlord.antarchy.content.effect.RoyalEffectHooks; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.content.network.KingJudgmentFlashSync; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; @@ -821,8 +821,8 @@ public class KingEntity extends RoyalBossEntity { this.setRoyalFlying(true); this.getMoveControl().setWantedPosition(landing.x, landing.y, landing.z, 1.35D); this.tickKingLandingIndicator(); - Vec3 localLandingDelta = AntarchyGravityRotationUtil.vecWorldToPlayer( - this.position().subtract(landing), AntarchyGravityApi.getGravityDirection(this)); + Vec3 localLandingDelta = GravityRotationUtil.vecWorldToPlayer( + this.position().subtract(landing), GravityApi.getGravityDirection(this)); double horizontalDistanceSquared = this.position().subtract(landing) .multiply(1.0D, 0.0D, 1.0D).lengthSqr(); boolean reachedLanding = this.onGround() @@ -928,8 +928,8 @@ public class KingEntity extends RoyalBossEntity { this.performWingGust(level, target); } this.setRoyalFlying(true); - this.addGravityAwareImpulse(this, AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, 0.42D, 0.0D, AntarchyGravityApi.getGravityDirection(this))); + this.addGravityAwareImpulse(this, GravityRotationUtil.vecPlayerToWorld( + 0.0D, 0.42D, 0.0D, GravityApi.getGravityDirection(this))); this.hasImpulse = true; } @@ -943,8 +943,8 @@ public class KingEntity extends RoyalBossEntity { double radius = Mth.lerp(progress, 4.0D, STOMP_RADIUS); for (int index = 0; index < 36; index++) { double angle = Mth.TWO_PI * index / 36.0D; - Vec3 indicator = this.kingLandingWaypoint.add(AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, 0.2D, 0.0D, AntarchyGravityApi.getGravityDirection(this))); + Vec3 indicator = this.kingLandingWaypoint.add(GravityRotationUtil.vecPlayerToWorld( + 0.0D, 0.2D, 0.0D, GravityApi.getGravityDirection(this))); level.sendParticles(ParticleTypes.ELECTRIC_SPARK, this.kingLandingWaypoint.x + Math.cos(angle) * radius, indicator.y, @@ -963,7 +963,7 @@ public class KingEntity extends RoyalBossEntity { for (double radius : radii) { double x = target.getX() + Math.cos(angle) * radius; double z = target.getZ() + Math.sin(angle) * radius; - double y = AntarchyGravityApi.isGravityInverted(this) + double y = GravityApi.isGravityInverted(this) ? target.position().y - 0.1D : this.groundYBelow(x, z) + 0.1D; Vec3 candidate = new Vec3(x, y, z); @@ -974,7 +974,7 @@ public class KingEntity extends RoyalBossEntity { } } } - double fallbackY = AntarchyGravityApi.isGravityInverted(this) + double fallbackY = GravityApi.isGravityInverted(this) ? target.position().y - 0.1D : this.groundYBelow(target.getX(), target.getZ()) + 0.1D; Vec3 fallback = new Vec3(target.getX(), fallbackY, target.getZ()); @@ -986,7 +986,7 @@ public class KingEntity extends RoyalBossEntity { // Last resort: land directly beneath the King if the target ring is obstructed. // This still gives Close Quarters a committed ground sequence instead of silently // remaining airborne over difficult tree geometry. - double directY = AntarchyGravityApi.isGravityInverted(this) + double directY = GravityApi.isGravityInverted(this) ? this.position().y - 0.1D : this.groundYBelow(this.getX(), this.getZ()) + 0.1D; Vec3 direct = new Vec3(this.getX(), directY, this.getZ()); @@ -1632,8 +1632,8 @@ public class KingEntity extends RoyalBossEntity { continue; } living.hurt(this.damageSources().mobAttack(this), this.scaleRoyalDamage(12.0D)); - Vec3 lift = AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, 0.45D, 0.0D, AntarchyGravityApi.getGravityDirection(living)); + Vec3 lift = GravityRotationUtil.vecPlayerToWorld( + 0.0D, 0.45D, 0.0D, GravityApi.getGravityDirection(living)); this.addGravityAwareImpulse(living, this.royalChargeDirection.scale(2.1D).add(lift)); living.hasImpulse = true; level.sendParticles(ParticleTypes.END_ROD, living.getX(), living.getY() + living.getBbHeight() * 0.5D, @@ -1821,8 +1821,8 @@ public class KingEntity extends RoyalBossEntity { float falloff = (float) Math.max(0.2D, 1.0D - distance / (STOMP_RADIUS + 6.0D)); living.hurt(source, base * falloff); Vec3 push = living.position().subtract(this.position()).normalize().scale(2.4D * falloff); - Vec3 vertical = AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, 0.85D, 0.0D, AntarchyGravityApi.getGravityDirection(living)); + Vec3 vertical = GravityRotationUtil.vecPlayerToWorld( + 0.0D, 0.85D, 0.0D, GravityApi.getGravityDirection(living)); this.addGravityAwareImpulse(living, new Vec3(push.x, 0.0D, push.z).add(vertical)); living.hasImpulse = true; } @@ -2125,8 +2125,8 @@ public class KingEntity extends RoyalBossEntity { } private void sendRoyalJudgmentTelegraph(ServerLevel level, LivingEntity target, int elapsedTicks) { - Vec3 targetPoint = target.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, 0.35D, 0.0D, AntarchyGravityApi.getGravityDirection(target))); + Vec3 targetPoint = target.position().add(GravityRotationUtil.vecPlayerToWorld( + 0.0D, 0.35D, 0.0D, GravityApi.getGravityDirection(target))); double pulse = 0.8D + Math.min(1.0D, elapsedTicks / 20.0D) * 0.5D; for (RoyalHead.Slot slot : RoyalHead.Slot.values()) { RoyalHead head = this.royalHead(slot); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/QueenEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/QueenEntity.java index 3eb64b6a..a2887bd0 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/QueenEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/QueenEntity.java @@ -6,10 +6,10 @@ import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.entity.ManticoreEntity; import com.craisinlord.antarchy.content.entity.nightmare.NightmareBiteEntity; -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 com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityTransition; import com.craisinlord.antarchy.content.time.TimeDilationApi; import com.craisinlord.antarchy.content.time.TimeDilationFieldEntity; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; @@ -576,7 +576,7 @@ public class QueenEntity extends RoyalBossEntity { Vec3 away = this.position().subtract(target.position()).multiply(1.0D, 0.0D, 1.0D); double baseAngle = away.lengthSqr() > 1.0E-4D ? Math.atan2(away.z, away.x) : this.random.nextDouble() * Mth.TWO_PI; - boolean inverted = AntarchyGravityApi.isGravityInverted(this); + boolean inverted = GravityApi.isGravityInverted(this); double[] radii = {10.0D, 14.0D, 18.0D, 7.0D}; for (int angleIndex = 0; angleIndex < 12; angleIndex++) { double angle = baseAngle + angleIndex * Mth.TWO_PI / 12.0D; @@ -614,8 +614,8 @@ public class QueenEntity extends RoyalBossEntity { double progress = this.queenLandingStage == QueenLandingStage.TELEGRAPH ? 1.0D - this.queenLandingStageTicks / (double) LANDING_TELEGRAPH_TICKS : 1.0D; double radius = Mth.lerp(progress, 4.0D, 18.0D); - Vec3 indicator = this.queenLandingWaypoint.add(AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, 0.2D, 0.0D, AntarchyGravityApi.getGravityDirection(this))); + Vec3 indicator = this.queenLandingWaypoint.add(GravityRotationUtil.vecPlayerToWorld( + 0.0D, 0.2D, 0.0D, GravityApi.getGravityDirection(this))); for (int index = 0; index < 40; index++) { double angle = Mth.TWO_PI * index / 40.0D; level.sendParticles(ParticleTypes.REVERSE_PORTAL, @@ -639,8 +639,8 @@ public class QueenEntity extends RoyalBossEntity { 60, 7.0D, 1.0D, 7.0D, 0.12D); } this.setRoyalFlying(true); - this.addGravityAwareImpulse(this, AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, 0.42D, 0.0D, AntarchyGravityApi.getGravityDirection(this))); + this.addGravityAwareImpulse(this, GravityRotationUtil.vecPlayerToWorld( + 0.0D, 0.42D, 0.0D, GravityApi.getGravityDirection(this))); this.hasImpulse = true; } @@ -905,7 +905,7 @@ public class QueenEntity extends RoyalBossEntity { queen.setPersistenceRequired(); queen.setNoGravity(false); ThoraxisUndersideManager.applyUndersideInversion(queen); - AntarchyGravityApi.setAirborneGravityDirection(queen, AntarchyGravityDirection.UP, true, new AntarchyGravityTransition(12)); + GravityApi.setAirborneGravityDirection(queen, GravityDirection.UP, true, new GravityTransition(12)); queen.resetFallDistance(); return level.addFreshEntity(queen) ? queen : null; } @@ -979,7 +979,7 @@ public class QueenEntity extends RoyalBossEntity { Vec3 behindTarget = target.position().add(towardTarget.scale(8.0D)); Vec3 lateral = new Vec3(-towardTarget.z, 0.0D, towardTarget.x); float tearYaw = (float) Math.toDegrees(Math.atan2(-towardTarget.x, towardTarget.z)); - double vertical = AntarchyGravityApi.isGravityInverted(this) ? -2.0D : 2.0D; + double vertical = GravityApi.isGravityInverted(this) ? -2.0D : 2.0D; for (int i = 0; i < pairs; i++) { double forwardScatter = 3.0D + this.random.nextDouble() * 9.0D; double lateralScatter = (this.random.nextDouble() * 2.0D - 1.0D) * 11.0D; @@ -1173,7 +1173,7 @@ public class QueenEntity extends RoyalBossEntity { } private void spawnQueenWingPressure(ServerLevel level) { - AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(this); + GravityDirection gravity = GravityApi.getGravityDirection(this); for (int ring = 1; ring <= 3; ring++) { double radius = ring * 3.2D; int samples = 14 + ring * 4; @@ -1181,9 +1181,9 @@ public class QueenEntity extends RoyalBossEntity { double angle = Mth.TWO_PI * sample / samples; double localX = Math.cos(angle) * radius; double localZ = Math.sin(angle) * radius; - Vec3 point = this.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( + Vec3 point = this.position().add(GravityRotationUtil.vecPlayerToWorld( localX, this.getBbHeight() * 0.45D, localZ, gravity)); - Vec3 velocity = AntarchyGravityRotationUtil.vecPlayerToWorld( + Vec3 velocity = GravityRotationUtil.vecPlayerToWorld( Math.cos(angle) * 0.2D, 0.025D, Math.sin(angle) * 0.2D, gravity); level.sendParticles(ACCEL_DUST, point.x, point.y, point.z, 0, velocity.x, velocity.y, velocity.z, 1.0D); @@ -1258,8 +1258,8 @@ public class QueenEntity extends RoyalBossEntity { double distance = Math.max(1.0D, living.distanceTo(this)); living.hurt(source, this.scaleRoyalDamage(12.0D * Math.max(0.25D, 1.0D - distance / 24.0D))); Vec3 push = living.position().subtract(this.position()).normalize().scale(1.3D); - Vec3 vertical = AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, 0.65D, 0.0D, AntarchyGravityApi.getGravityDirection(living)); + Vec3 vertical = GravityRotationUtil.vecPlayerToWorld( + 0.0D, 0.65D, 0.0D, GravityApi.getGravityDirection(living)); this.addGravityAwareImpulse(living, new Vec3(push.x, 0.0D, push.z).add(vertical)); living.hasImpulse = true; } @@ -1281,7 +1281,7 @@ public class QueenEntity extends RoyalBossEntity { private Vec3 selectBlackHoleAnchor(LivingEntity target) { double vertical = 2.0D + this.random.nextDouble() * 2.0D; - if (AntarchyGravityApi.isGravityInverted(this)) { + if (GravityApi.isGravityInverted(this)) { vertical = -vertical; } return target.position().add( @@ -1399,8 +1399,8 @@ public class QueenEntity extends RoyalBossEntity { int elapsed = GRAVITY_STOMP_TELEGRAPH_TICKS - this.gravityStompTelegraphTicks; if (this.tickCount % 2 == 0) { double radius = Mth.lerp(elapsed / (double) GRAVITY_STOMP_TELEGRAPH_TICKS, 3.0D, 18.0D); - Vec3 surfaceCenter = this.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, 0.2D, 0.0D, AntarchyGravityApi.getGravityDirection(this))); + Vec3 surfaceCenter = this.position().add(GravityRotationUtil.vecPlayerToWorld( + 0.0D, 0.2D, 0.0D, GravityApi.getGravityDirection(this))); this.spawnQueenTelegraphSpokes(level, surfaceCenter, radius); } this.playQueenTelegraphBeat(level, this.gravityStompTelegraphTicks, @@ -1460,7 +1460,7 @@ public class QueenEntity extends RoyalBossEntity { this.queenEffectBounds(CRUSHING_GRAVITY_RADIUS), living -> this.canDamageWithRoyalAttack(living) && this.withinQueenEffectRange(living, CRUSHING_GRAVITY_RADIUS))) { - double downSign = AntarchyGravityApi.isGravityInverted(living) ? 1.0D : -1.0D; + double downSign = GravityApi.isGravityInverted(living) ? 1.0D : -1.0D; this.spawnCrushingGravityArrow(level, living, downSign, progress); } } @@ -1543,7 +1543,7 @@ public class QueenEntity extends RoyalBossEntity { double orbitRadius = Mth.lerp(Math.min(1.0D, progress * 1.6D), 1.0D, DEBRIS_CYCLONE_ORBIT_RADIUS); double spinSpeed = Mth.lerp(progress, 0.12D, 0.55D); int count = this.debrisCycloneBlocks.size(); - AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(this); + GravityDirection gravity = GravityApi.getGravityDirection(this); for (int index = 0; index < count; index++) { FallingBlockEntity block = this.debrisCycloneBlocks.get(index); if (!block.isAlive()) continue; @@ -1551,7 +1551,7 @@ public class QueenEntity extends RoyalBossEntity { double localX = Math.cos(angle) * orbitRadius; double localZ = Math.sin(angle) * orbitRadius; double localY = this.getBbHeight() * 0.5D + Math.sin(this.tickCount * 0.1D + index) * 0.4D; - Vec3 point = this.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld(localX, localY, localZ, gravity)); + Vec3 point = this.position().add(GravityRotationUtil.vecPlayerToWorld(localX, localY, localZ, gravity)); block.setPos(point.x - 0.5D, point.y - 0.5D, point.z - 0.5D); block.setDeltaMovement(Vec3.ZERO); if (this.tickCount % 2 == 0) { @@ -1598,7 +1598,7 @@ public class QueenEntity extends RoyalBossEntity { this.playRoyalSound(AntarchySoundEvents.QUEEN_ROAR.get(), 0.75F); if (level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { Vec3 center = this.position(); - boolean inverted = AntarchyGravityApi.isGravityInverted(this); + boolean inverted = GravityApi.isGravityInverted(this); int gathered = 0; for (int attempt = 0; attempt < GRAVITIC_UPHEAVAL_BLOCK_COUNT * 3 && gathered < GRAVITIC_UPHEAVAL_BLOCK_COUNT; attempt++) { @@ -1670,14 +1670,14 @@ public class QueenEntity extends RoyalBossEntity { private void spawnBlackHoleFunnel(ServerLevel level, Vec3 center, double fieldRadius, double progress) { double rotation = this.tickCount * 0.35D; - AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(this); + GravityDirection gravity = GravityApi.getGravityDirection(this); for (int tier = 0; tier < 4; tier++) { double tierProgress = tier / 3.0D; double radius = Mth.lerp(progress, fieldRadius * (0.25D + tierProgress * 0.5D), 0.7D); double localY = -1.5D + tierProgress * 4.5D; for (int point = 0; point < 10; point++) { double angle = rotation + tier * 0.65D + Mth.TWO_PI * point / 10.0D; - Vec3 particlePos = center.add(AntarchyGravityRotationUtil.vecPlayerToWorld( + Vec3 particlePos = center.add(GravityRotationUtil.vecPlayerToWorld( Math.cos(angle) * radius, localY, Math.sin(angle) * radius, gravity)); level.sendParticles(ParticleTypes.REVERSE_PORTAL, particlePos.x, particlePos.y, particlePos.z, @@ -1742,13 +1742,13 @@ public class QueenEntity extends RoyalBossEntity { private void spawnAccelerationHelix(ServerLevel level, double progress) { double rotation = this.tickCount * Mth.lerp(progress, 0.24D, 0.62D); double radius = Mth.lerp(progress, 2.8D, 0.75D); - AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(this); + GravityDirection gravity = GravityApi.getGravityDirection(this); for (int strand = 0; strand < 2; strand++) { for (int segment = 0; segment < 9; segment++) { double heightProgress = segment / 8.0D; double angle = rotation + strand * Math.PI + heightProgress * Mth.TWO_PI * 1.5D; double localY = 0.4D + heightProgress * (this.getBbHeight() + 2.0D); - Vec3 particlePos = this.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( + Vec3 particlePos = this.position().add(GravityRotationUtil.vecPlayerToWorld( Math.cos(angle) * radius, localY, Math.sin(angle) * radius, gravity)); level.sendParticles(AntarchyObjects.LUCID_BOLT_IMPACT_SMALL.get(), particlePos.x, particlePos.y, particlePos.z, @@ -1849,7 +1849,7 @@ public class QueenEntity extends RoyalBossEntity { if (entity == this || isFieldImmune(entity) || entity instanceof Player player && player.isCreative()) { continue; } - double downSign = AntarchyGravityApi.isGravityInverted(entity) ? 1.0D : -1.0D; + double downSign = GravityApi.isGravityInverted(entity) ? 1.0D : -1.0D; entity.setDeltaMovement(entity.getDeltaMovement().add(0.0D, downSign * CRUSHING_GRAVITY_STRENGTH, 0.0D)); entity.hasImpulse = true; if (entity instanceof LivingEntity living && this.tickCount % 8 == 0) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossEntity.java index 1f483df6..148d75bc 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossEntity.java @@ -10,8 +10,8 @@ import com.craisinlord.antarchy.content.entity.royal.beam.RoyalBeamTerrainMode; import com.craisinlord.antarchy.content.entity.royal.beam.RoyalBeamElement; import com.craisinlord.antarchy.content.entity.royal.attack.RoyalAttackLane; import com.craisinlord.antarchy.content.entity.royal.attack.RoyalAttackScheduler; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; import java.util.Arrays; import java.util.HashSet; @@ -526,7 +526,7 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult if (this.isFlyingBoss()) { this.moveControl = this.isRoyalFlying() ? this.flyingMoveControl : this.groundMoveControl; this.navigation = this.isRoyalFlying() ? this.flyingNavigation : this.groundNavigation; - this.setNoGravity(!AntarchyGravityApi.isGravityInverted(this)); + this.setNoGravity(!GravityApi.isGravityInverted(this)); if (!this.isRoyalFlying()) { this.setNoGravity(false); } @@ -750,8 +750,8 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult } protected final void addGravityAwareImpulse(Entity entity, Vec3 worldImpulse) { - AntarchyGravityApi.setWorldVelocity(entity, - AntarchyGravityApi.getWorldVelocity(entity).add(worldImpulse)); + GravityApi.setWorldVelocity(entity, + GravityApi.getWorldVelocity(entity).add(worldImpulse)); } protected final boolean isRoyalPhaseTransitionActive() { @@ -937,7 +937,7 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult this.aerialCombatAnchor = null; this.aerialCombatAnchorTicks = 0; - boolean inverted = AntarchyGravityApi.isGravityInverted(this); + boolean inverted = GravityApi.isGravityInverted(this); double groundBelowTarget = this.groundYBelow(wanted.x, wanted.z); double wantedY = this.landingForCombat ? (inverted ? target.getY() + target.getBbHeight() - this.getBbHeight() : groundBelowTarget) @@ -964,7 +964,7 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult if (!this.isFlyingBoss() || this.managesOwnCombatLocomotion()) { return; } - boolean inverted = AntarchyGravityApi.isGravityInverted(this); + boolean inverted = GravityApi.isGravityInverted(this); double groundY = this.groundYBelow(this.getX(), this.getZ()); if (this.landingForCombat) { if (!target.onGround()) { @@ -1007,7 +1007,7 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult this.entityData.set(ROYAL_FLYING, flying); this.moveControl = flying ? this.flyingMoveControl : this.groundMoveControl; this.navigation = flying ? this.flyingNavigation : this.groundNavigation; - this.setNoGravity(flying && !AntarchyGravityApi.isGravityInverted(this)); + this.setNoGravity(flying && !GravityApi.isGravityInverted(this)); } protected double groundYBelow(double x, double z) { @@ -1016,7 +1016,7 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult } private void tickFlyingAltitude() { - if (AntarchyGravityApi.isGravityInverted(this)) { + if (GravityApi.isGravityInverted(this)) { return; } if (this.onGround()) { @@ -1155,8 +1155,8 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult forward.x * spec.forwardOffset() + right.x * spec.lateralOffset(), spec.yOffset(), forward.z * spec.forwardOffset() + right.z * spec.lateralOffset()); - return this.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld(localOffset, - AntarchyGravityApi.getGravityDirection(this))); + return this.position().add(GravityRotationUtil.vecPlayerToWorld(localOffset, + GravityApi.getGravityDirection(this))); } protected Vec3 beamAnchor(RoyalHead head) { @@ -1166,8 +1166,8 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult protected Vec3 beamDirection(RoyalHead head) { float yaw = this.getYRot() * Mth.DEG_TO_RAD; Vec3 localDirection = new Vec3(-Math.sin(yaw), 0.0D, Math.cos(yaw)); - return AntarchyGravityRotationUtil.vecPlayerToWorld(localDirection, - AntarchyGravityApi.getGravityDirection(this)).normalize(); + return GravityRotationUtil.vecPlayerToWorld(localDirection, + GravityApi.getGravityDirection(this)).normalize(); } protected boolean targetInBeamLine(RoyalHead head, LivingEntity target) { @@ -1197,8 +1197,8 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult forward.x * BEAM_MUZZLE_FORWARD + right.x * lateral, vertical, forward.z * BEAM_MUZZLE_FORWARD + right.z * lateral); - return new Vec3(x, y, z).add(AntarchyGravityRotationUtil.vecPlayerToWorld(localOffset, - AntarchyGravityApi.getGravityDirection(this))); + return new Vec3(x, y, z).add(GravityRotationUtil.vecPlayerToWorld(localOffset, + GravityApi.getGravityDirection(this))); } protected double royalBeamMinimumRange() { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/stratoshark/StratosharkEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/stratoshark/StratosharkEntity.java index 98f582d8..5a7e9850 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/stratoshark/StratosharkEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/stratoshark/StratosharkEntity.java @@ -2,9 +2,9 @@ package com.craisinlord.antarchy.content.entity.stratoshark; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.server.level.ServerLevel; @@ -607,20 +607,20 @@ public class StratosharkEntity extends Monster implements GeoEntity { } } - private AntarchyGravityDirection gravityDirection() { - return AntarchyGravityApi.getGravityDirection(this); + private GravityDirection gravityDirection() { + return GravityApi.getGravityDirection(this); } private Vec3 toLocal(Vec3 worldVector) { - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); + return GravityRotationUtil.vecWorldToPlayer(worldVector, this.gravityDirection()); } private Vec3 toWorld(Vec3 localVector) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(localVector, this.gravityDirection()); } private Vec3 toWorld(double x, double y, double z) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); + return GravityRotationUtil.vecPlayerToWorld(x, y, z, this.gravityDirection()); } private Vec3 toLocalPlane(Vec3 worldVector) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/VortexEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/VortexEntity.java index 44e3527c..229ef235 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/VortexEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/VortexEntity.java @@ -2,8 +2,8 @@ package com.craisinlord.antarchy.content.entity.vortex; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataAccessor; @@ -203,7 +203,7 @@ public class VortexEntity extends Monster implements GeoEntity { private void tickCombatMovement(LivingEntity target) { this.faceTowards(target.position().add(0.0D, target.getBbHeight() * 0.5D, 0.0D), 12.0F, 8.0F); Vec3 gravityUp = Vec3.atLowerCornerOf( - AntarchyGravityRotationUtil.getGravityDownDirection(this).getOpposite().getNormal()); + GravityRotationUtil.getGravityDownDirection(this).getOpposite().getNormal()); Vec3 hoverPosition = target.position().add(gravityUp.scale(2.5D)); this.getMoveControl().setWantedPosition(hoverPosition.x, hoverPosition.y, hoverPosition.z, 0.38D); @@ -256,7 +256,7 @@ public class VortexEntity extends Monster implements GeoEntity { double distance = direction.length(); Vec3 drift = distance > 1.0E-6D ? direction.scale(0.24D / distance) : this.getViewVector(1.0F).scale(0.24D); WindVortexEntity vortex = WindVortexEntity.create(serverLevel, windVortexTypeSupplier.get(), origin, Vec3.ZERO, this, true); - vortex.setAxis(AntarchyGravityRotationUtil.getGravityDownDirection(this).getOpposite()); + vortex.setAxis(GravityRotationUtil.getGravityDownDirection(this).getOpposite()); vortex.setTravel(drift); vortex.setTravelDuration(Mth.clamp((int) Math.ceil(distance / drift.length()), 8, 36)); vortex.setHoming(false); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java index 3ff59d1b..9feddbc7 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java @@ -2,8 +2,8 @@ package com.craisinlord.antarchy.content.entity.vortex; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyTags; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -508,7 +508,7 @@ public class WindVortexEntity extends Entity { .add(tangent.scale(spin)) .add(basis.axis.scale(axialSpeed)) .scale(ENTITY_FORCE_SPEED_SCALE); - Vec3 current = AntarchyGravityApi.getWorldVelocity(entity); + Vec3 current = GravityApi.getWorldVelocity(entity); Vec3 updatedMovement = current.lerp(wanted, 0.72D); if (this.travelling) { updatedMovement = updatedMovement.add(this.travelVelocity.scale(0.8D * ENTITY_FORCE_SPEED_SCALE)); @@ -516,12 +516,12 @@ public class WindVortexEntity extends Entity { if (mode == VortexMode.UPWARD && entity.onGround()) { double minRise = (entity instanceof Player ? 0.38D : 0.3D) * ENTITY_FORCE_SPEED_SCALE; Vec3 gravityUp = Vec3.atLowerCornerOf( - AntarchyGravityRotationUtil.getGravityDownDirection(entity).getOpposite().getNormal()); + GravityRotationUtil.getGravityDownDirection(entity).getOpposite().getNormal()); double minimumAxialSpeed = Math.max(updatedMovement.dot(gravityUp), minRise); updatedMovement = updatedMovement.add(gravityUp.scale(minimumAxialSpeed - updatedMovement.dot(gravityUp))); entity.setOnGround(false); } - AntarchyGravityApi.setWorldVelocity(entity, updatedMovement); + GravityApi.setWorldVelocity(entity, updatedMovement); if (entity instanceof Player) { entity.setOnGround(false); } @@ -572,7 +572,7 @@ public class WindVortexEntity extends Entity { double arc = Mth.clamp(distance * 0.06D, 0.25D, 1.1D) * ENTITY_FORCE_SPEED_SCALE; double power = this.launchStrength * Mth.clamp(distance / 6.0D, 0.6D, 2.0D) * ENTITY_FORCE_SPEED_SCALE; Vec3 gravityUp = Vec3.atLowerCornerOf( - AntarchyGravityRotationUtil.getGravityDownDirection(entity).getOpposite().getNormal()); + GravityRotationUtil.getGravityDownDirection(entity).getOpposite().getNormal()); this.setWorldVelocity(entity, direction.scale(power).add(gravityUp.scale(arc))); entity.fallDistance = 0.0F; entity.hasImpulse = true; @@ -592,7 +592,7 @@ public class WindVortexEntity extends Entity { } private void setWorldVelocity(Entity entity, Vec3 velocity) { - AntarchyGravityApi.setWorldVelocity(entity, velocity); + GravityApi.setWorldVelocity(entity, velocity); } private DamageSource damageSource() { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityAccess.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityAccess.java deleted file mode 100644 index 4b13e527..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityAccess.java +++ /dev/null @@ -1,25 +0,0 @@ -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$setAirborneGravityState(AntarchyGravityDirection direction, boolean forced, AntarchyGravityTransition transition); - - void antarchy$applySyncedGravityState( - AntarchyGravityDirection direction, - AntarchyGravityDirection previousDirection, - boolean forced, - int transitionDuration, - int transitionRemaining - ); -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java deleted file mode 100644 index 00e484dd..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java +++ /dev/null @@ -1,238 +0,0 @@ -package com.craisinlord.antarchy.content.gravity; - -import net.minecraft.world.entity.Entity; -import net.minecraft.world.phys.Vec3; - -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 setAirborneGravityDirection(Entity entity, AntarchyGravityDirection direction, boolean forced, AntarchyGravityTransition transition) { - access(entity).antarchy$setAirborneGravityState(direction, forced, 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); - } - - public static Vec3 getWorldVelocity(Entity entity) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(entity.getDeltaMovement(), getGravityDirection(entity)); - } - - public static void setWorldVelocity(Entity entity, Vec3 worldVelocity) { - entity.setDeltaMovement(AntarchyGravityRotationUtil.vecWorldToPlayer(worldVelocity, getGravityDirection(entity))); - } - - public static Vec3 getEyeOffset(Entity entity) { - return AntarchyGravityRotationUtil.getEyeOffset(entity, entity.getEyeHeight()); - } - - public static double eyeX(Entity entity) { - return isGravityInverted(entity) ? entity.getEyePosition().x : entity.getX(); - } - - public static double eyeY(Entity entity) { - return isGravityInverted(entity) ? entity.getEyePosition().y : entity.getY(); - } - - public static double eyeZ(Entity entity) { - return isGravityInverted(entity) ? entity.getEyePosition().z : entity.getZ(); - } - - public static Vec3 deltaMovement(net.minecraft.world.entity.LivingEntity target) { - return isGravityInverted(target) ? getWorldVelocity(target) : target.getDeltaMovement(); - } - - public static double projectileSpawnX(net.minecraft.world.entity.LivingEntity shooter) { - return projectileSpawnVec(shooter).x; - } - - public static double projectileSpawnY(net.minecraft.world.entity.LivingEntity shooter) { - return projectileSpawnVec(shooter).y; - } - - public static double projectileSpawnZ(net.minecraft.world.entity.LivingEntity shooter) { - return projectileSpawnVec(shooter).z; - } - - public static double rangedBodyTargetX(net.minecraft.world.entity.LivingEntity target) { - if (!isGravityInverted(target)) { - return target.getX(); - } - return target.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, - target.getBbHeight() * 0.3333333333333333D, - 0.0D, - getGravityDirection(target) - )).x; - } - - public static double rangedBodyTargetY(net.minecraft.world.entity.LivingEntity target, double heightScale) { - if (!isGravityInverted(target)) { - return target.getY(heightScale); - } - return target.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, - target.getBbHeight() * 0.3333333333333333D, - 0.0D, - getGravityDirection(target) - )).y; - } - - public static double rangedBodyTargetZ(net.minecraft.world.entity.LivingEntity target) { - if (!isGravityInverted(target)) { - return target.getZ(); - } - return target.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, - target.getBbHeight() * 0.3333333333333333D, - 0.0D, - getGravityDirection(target) - )).z; - } - - public static double rangedEyeTargetX(net.minecraft.world.entity.LivingEntity target) { - if (!isGravityInverted(target)) { - return target.getX(); - } - return target.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, - target.getEyeHeight() - 1.100000023841858D, - 0.0D, - getGravityDirection(target) - )).x; - } - - public static double rangedEyeTargetY(net.minecraft.world.entity.LivingEntity target) { - if (!isGravityInverted(target)) { - return target.getEyeY(); - } - return target.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, - target.getEyeHeight() - 1.100000023841858D, - 0.0D, - getGravityDirection(target) - )).y + 1.100000023841858D; - } - - public static double rangedEyeTargetZ(net.minecraft.world.entity.LivingEntity target) { - if (!isGravityInverted(target)) { - return target.getZ(); - } - return target.position().add(AntarchyGravityRotationUtil.vecPlayerToWorld( - 0.0D, - target.getEyeHeight() - 1.100000023841858D, - 0.0D, - getGravityDirection(target) - )).z; - } - - public static double rangedSqrt(double value, net.minecraft.world.entity.LivingEntity target) { - return isGravityInverted(target) ? Math.sqrt(Math.sqrt(value)) : Math.sqrt(value); - } - - private static AntarchyGravityAccess access(Entity entity) { - if (entity instanceof AntarchyGravityAccess access) { - return access; - } - - throw new IllegalStateException("Entity " + entity + " is missing Antarchy gravity state"); - } - - private static Vec3 projectileSpawnVec(net.minecraft.world.entity.LivingEntity shooter) { - AntarchyGravityDirection direction = getGravityDirection(shooter); - if (!direction.isInverted()) { - return new Vec3(shooter.getX(), shooter.getEyeY() - 0.1D, shooter.getZ()); - } - return shooter.getEyePosition().subtract(AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, 0.1D, 0.0D, direction)); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityDirection.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityDirection.java deleted file mode 100644 index 183d1489..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityDirection.java +++ /dev/null @@ -1,44 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityRotationUtil.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityRotationUtil.java deleted file mode 100644 index 1f6c6c3b..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityRotationUtil.java +++ /dev/null @@ -1,140 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityTransition.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityTransition.java deleted file mode 100644 index b58f2bf7..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityTransition.java +++ /dev/null @@ -1,9 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyMountedGravityHelper.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyMountedGravityHelper.java deleted file mode 100644 index bf4053e8..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyMountedGravityHelper.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.craisinlord.antarchy.content.gravity; - -import com.craisinlord.antarchy.content.AntarchyObjects; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; - -public final class AntarchyMountedGravityHelper { - private static final AntarchyGravityTransition STACK_TRANSITION = new AntarchyGravityTransition(12); - - private AntarchyMountedGravityHelper() { - } - - public static void syncConnectedStack(Entity entity) { - if (entity == null || entity.level().isClientSide()) { - return; - } - syncRootStack(entity.getRootVehicle(), null); - } - - public static void syncConnectedStackIgnoring(Entity entity, LivingEntity ignoredEffectSource) { - if (entity == null || entity.level().isClientSide()) { - return; - } - syncRootStack(entity.getRootVehicle(), ignoredEffectSource); - } - - public static void syncSeparatedStacks(Entity previousVehicle, Entity detachedEntity) { - if (previousVehicle != null && !previousVehicle.level().isClientSide()) { - syncRootStack(previousVehicle.getRootVehicle(), null); - } - if (detachedEntity != null && !detachedEntity.level().isClientSide()) { - syncRootStack(detachedEntity.getRootVehicle(), null); - } - } - - private static void syncRootStack(Entity root, LivingEntity ignoredEffectSource) { - boolean shouldInvert = stackHasInvertedEffect(root, ignoredEffectSource); - applyGravityState(root, shouldInvert); - for (Entity passenger : root.getIndirectPassengers()) { - applyGravityState(passenger, shouldInvert); - } - } - - private static boolean stackHasInvertedEffect(Entity root, LivingEntity ignoredEffectSource) { - if (hasInvertedEffect(root, ignoredEffectSource)) { - return true; - } - for (Entity passenger : root.getIndirectPassengers()) { - if (hasInvertedEffect(passenger, ignoredEffectSource)) { - return true; - } - } - return false; - } - - private static boolean hasInvertedEffect(Entity entity, LivingEntity ignoredEffectSource) { - return entity instanceof LivingEntity living - && living != ignoredEffectSource - && living.hasEffect(AntarchyObjects.INVERTED_EFFECT.get()); - } - - private static void applyGravityState(Entity entity, boolean shouldInvert) { - if (shouldInvert) { - if (AntarchyGravityApi.getGravityDirection(entity) != AntarchyGravityDirection.UP) { - AntarchyGravityApi.setForcedGravityDirection(entity, AntarchyGravityDirection.UP, STACK_TRANSITION); - } - return; - } - - if (AntarchyGravityApi.isGravityForced(entity)) { - AntarchyGravityApi.setGravityDirection(entity, AntarchyGravityDirection.DOWN, false, STACK_TRANSITION); - } - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/GravityWalkNodeEvaluator.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/GravityWalkNodeEvaluator.java deleted file mode 100644 index cda49d4f..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/GravityWalkNodeEvaluator.java +++ /dev/null @@ -1,214 +0,0 @@ -package com.craisinlord.antarchy.content.gravity; - -import net.minecraft.util.Mth; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -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 long LOG_TIME_THRESHOLD_NANOS = 25_000_000L; - - private long antarchy$prepareStartNanos; - private int antarchy$nodeProbeCount; - - private static final int[] START_Y_SEARCH = {0, 1, -1, 2, -2}; - private static final int[][] INVERTED_CARDINAL_NEIGHBOR_OFFSETS = { - {1, 0, 0}, - {-1, 0, 0}, - {0, 0, 1}, - {0, 0, -1} - }; - private static final int[][] INVERTED_DIAGONAL_NEIGHBOR_OFFSETS = { - {1, 0, 1}, - {1, 0, -1}, - {-1, 0, 1}, - {-1, 0, -1} - }; - - @Override - public void prepare(PathNavigationRegion sourceIn, Mob mob) { - super.prepare(sourceIn, mob); - this.antarchy$prepareStartNanos = System.nanoTime(); - this.antarchy$nodeProbeCount = 0; - } - - @Override - public void done() { - if (this.mob != null && AntarchyGravityApi.isGravityInverted(this.mob)) { - long elapsedNanos = System.nanoTime() - this.antarchy$prepareStartNanos; - if (elapsedNanos > LOG_TIME_THRESHOLD_NANOS) { - com.craisinlord.antarchy.Antarchy.LOGGER.warn( - "[antarchy-gravity] slow inverted pathfind: type={} uuid={} pos=({}, {}, {}) nodeProbes={} elapsedMs={}", - this.mob.getType(), this.mob.getUUID(), - this.mob.getX(), this.mob.getY(), this.mob.getZ(), - this.antarchy$nodeProbeCount, elapsedNanos / 1_000_000.0 - ); - } - } - 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.antarchy$findStartNode(x, y, z); - // A floor-oriented start is a different coordinate model and must not - // be mixed into an inverted search. PathFinder treats null as a clean - // no-path result. - return node; - } - - private Node antarchy$findStartNode(int x, int y, int z) { - for (int dy : START_Y_SEARCH) { - int candidateY = y + dy; - for (int dx = -1; dx <= 1; dx++) { - for (int dz = -1; dz <= 1; dz++) { - Node node = this.antarchy$createStartNode(x + dx, candidateY, z + dz); - if (node != null) { - return node; - } - } - } - } - return null; - } - - private Node antarchy$createStartNode(int x, int y, int z) { - this.antarchy$nodeProbeCount++; - if (!this.antarchy$hasCeilingSupport(this.currentContext, x, y, z)) { - return null; - } - - PathType type = this.getPathTypeOfMob(this.currentContext, x, y, z, this.mob); - float malus = this.mob.getPathfindingMalus(type); - if (malus < 0.0F || type == PathType.OPEN) { - return null; - } - - Node node = this.getNode(x, y, z); - node.type = type; - node.costMalus = malus; - return node; - } - - private boolean antarchy$hasCeilingSupport(PathfindingContext context, int x, int y, int z) { - for (int dx = 0; dx < this.entityWidth; dx++) { - for (int dz = 0; dz < this.entityDepth; dz++) { - BlockPos ceilingPos = new BlockPos(x + dx, y + 1, z + dz); - if (!context.level().getBlockState(ceilingPos).isFaceSturdy(context.level(), ceilingPos, Direction.DOWN)) { - return false; - } - } - } - return true; - } - - @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); - } - - if (!this.antarchy$hasCeilingSupport(context, x, y, z)) { - 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; - } - } - } - } - - return result; - } - - @Override - public int getNeighbors(Node[] neighbors, Node current) { - if (!AntarchyGravityApi.isGravityInverted(this.mob)) { - return super.getNeighbors(neighbors, current); - } - - int count = 0; - Node[] cardinalNeighbors = new Node[INVERTED_CARDINAL_NEIGHBOR_OFFSETS.length]; - for (int i = 0; i < INVERTED_CARDINAL_NEIGHBOR_OFFSETS.length; i++) { - int[] offset = INVERTED_CARDINAL_NEIGHBOR_OFFSETS[i]; - Node neighbor = this.antarchy$getNeighbor(current.x + offset[0], current.y, current.z + offset[2]); - cardinalNeighbors[i] = neighbor; - if (neighbor != null) { - neighbors[count++] = neighbor; - } - } - - for (int i = 0; i < INVERTED_DIAGONAL_NEIGHBOR_OFFSETS.length; i++) { - int[] offset = INVERTED_DIAGONAL_NEIGHBOR_OFFSETS[i]; - if (!this.antarchy$canUseDiagonal(cardinalNeighbors, i)) { - continue; - } - Node neighbor = this.antarchy$getNeighbor(current.x + offset[0], current.y, current.z + offset[2]); - if (neighbor != null) { - neighbors[count++] = neighbor; - } - } - - // Relative "up" for an inverted mob is world-Y down. Keep both - // vertical directions available so a one-block ceiling step can be - // represented in the path instead of trapping the mob below it. - Node stepTowardInvertedUp = this.antarchy$getNeighbor(current.x, current.y - 1, current.z); - if (stepTowardInvertedUp != null) { - neighbors[count++] = stepTowardInvertedUp; - } - Node stepTowardInvertedDown = this.antarchy$getNeighbor(current.x, current.y + 1, current.z); - if (stepTowardInvertedDown != null) { - neighbors[count++] = stepTowardInvertedDown; - } - - return count; - } - - private boolean antarchy$canUseDiagonal(Node[] cardinalNeighbors, int diagonalIndex) { - return switch (diagonalIndex) { - case 0 -> cardinalNeighbors[0] != null && cardinalNeighbors[2] != null; - case 1 -> cardinalNeighbors[0] != null && cardinalNeighbors[3] != null; - case 2 -> cardinalNeighbors[1] != null && cardinalNeighbors[2] != null; - case 3 -> cardinalNeighbors[1] != null && cardinalNeighbors[3] != null; - default -> false; - }; - } - - private Node antarchy$getNeighbor(int x, int y, int z) { - this.antarchy$nodeProbeCount++; - PathType type = this.getPathTypeOfMob(this.currentContext, x, y, z, this.mob); - if (type == PathType.OPEN || this.mob.getPathfindingMalus(type) < 0.0F) { - return null; - } - - Node node = this.getNode(x, y, z); - if (node.closed) { - return null; - } - node.type = type; - node.costMalus = this.mob.getPathfindingMalus(type); - return node; - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/ProjectileLaunchGravity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/ProjectileLaunchGravity.java deleted file mode 100644 index 9ed220b4..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/ProjectileLaunchGravity.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.craisinlord.antarchy.content.gravity; - -import net.minecraft.world.phys.Vec3; - -/** Converts a projectile launch vector from its shooter's gravity frame to world space. */ -public final class ProjectileLaunchGravity { - private ProjectileLaunchGravity() { - } - - public static Vec3 toWorld(Vec3 launchDirection, AntarchyGravityDirection gravityDirection) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(launchDirection, gravityDirection); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/ScgunsProjectileAccess.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/ScgunsProjectileAccess.java deleted file mode 100644 index 6b640e8a..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/gravity/ScgunsProjectileAccess.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.craisinlord.antarchy.content.gravity; - -import net.minecraft.world.entity.LivingEntity; -import org.jetbrains.annotations.Nullable; - -/** Exposes Scorched Guns' base ProjectileEntity fields to mixins targeting its subclasses. */ -public interface ScgunsProjectileAccess { - @Nullable LivingEntity antarchy$getScgunsShooter(); - double antarchy$getScgunsModifiedGravity(); -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/AntimetalScaffoldingItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/AntimetalScaffoldingItem.java index 657a2e86..be39ee6c 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/AntimetalScaffoldingItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/AntimetalScaffoldingItem.java @@ -1,7 +1,7 @@ package com.craisinlord.antarchy.content.item; import com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.anthology.gravity.GravityApi; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.Item; @@ -24,7 +24,7 @@ public class AntimetalScaffoldingItem extends ScaffoldingBlockItem { Level level = context.getLevel(); BlockState clickedState = level.getBlockState(clickedPos); Block block = this.getBlock(); - boolean inverted = context.getPlayer() != null && AntarchyGravityApi.isGravityInverted(context.getPlayer()); + boolean inverted = context.getPlayer() != null && GravityApi.isGravityInverted(context.getPlayer()); if (!clickedState.is(block)) { return AntimetalScaffoldingBlock.getDistance(level, clickedPos, inverted) == 7 ? null : context; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/AttitudeAdjusterSlamManager.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/AttitudeAdjusterSlamManager.java index d14e8951..3adeeddc 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/AttitudeAdjusterSlamManager.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/AttitudeAdjusterSlamManager.java @@ -1,8 +1,8 @@ package com.craisinlord.antarchy.content.item; import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.content.network.ImpactShakeSync; import java.util.HashMap; import java.util.Iterator; @@ -105,10 +105,10 @@ public final class AttitudeAdjusterSlamManager { return false; } PLAYER_SLAMS.put(player.getUUID(), new PlayerSlamState(player.getUUID(), hand, player.serverLevel().dimension().location().toString(), player.serverLevel().getGameTime() + SLAM_TIMEOUT_TICKS, player.fallDistance)); - AntarchyGravityDirection gravityDirection = AntarchyGravityRotationUtil.getGravityDownDirection(player) == Direction.UP ? AntarchyGravityDirection.UP : AntarchyGravityDirection.DOWN; + GravityDirection gravityDirection = GravityRotationUtil.getGravityDownDirection(player) == Direction.UP ? GravityDirection.UP : GravityDirection.DOWN; Vec3 motion = player.getDeltaMovement(); - Vec3 localMotion = AntarchyGravityRotationUtil.vecWorldToPlayer(motion, gravityDirection); - player.setDeltaMovement(AntarchyGravityRotationUtil.vecPlayerToWorld(new Vec3(localMotion.x * 0.25D, PLAYER_SLAM_START_VELOCITY, localMotion.z * 0.25D), gravityDirection)); + Vec3 localMotion = GravityRotationUtil.vecWorldToPlayer(motion, gravityDirection); + player.setDeltaMovement(GravityRotationUtil.vecPlayerToWorld(new Vec3(localMotion.x * 0.25D, PLAYER_SLAM_START_VELOCITY, localMotion.z * 0.25D), gravityDirection)); player.hurtMarked = true; player.fallDistance = 0.0F; player.swing(hand, true); @@ -168,10 +168,10 @@ public final class AttitudeAdjusterSlamManager { if (!player.onGround()) { continue; } - Direction gravityDown = AntarchyGravityRotationUtil.getGravityDownDirection(player); + Direction gravityDown = GravityRotationUtil.getGravityDownDirection(player); Vec3 impactPos = player.position(); BlockPos groundPos = getSlamSurfacePos(player, gravityDown); - double localVerticalSpeed = AntarchyGravityRotationUtil.vecWorldToPlayer(player.getDeltaMovement(), gravityDown == Direction.UP ? AntarchyGravityDirection.UP : AntarchyGravityDirection.DOWN).y; + double localVerticalSpeed = GravityRotationUtil.vecWorldToPlayer(player.getDeltaMovement(), gravityDown == Direction.UP ? GravityDirection.UP : GravityDirection.DOWN).y; double impactStrength = Math.max(Math.abs(Math.min(localVerticalSpeed, PLAYER_SLAM_START_VELOCITY)), Math.max(state.startFallDistance, player.fallDistance) * 0.15D); float damage = (float) Mth.clamp(PLAYER_SLAM_BASE_DAMAGE + impactStrength * PLAYER_SLAM_DAMAGE_SCALE * 10.0D, PLAYER_SLAM_BASE_DAMAGE, PLAYER_SLAM_MAX_DAMAGE); AABB area = new AABB(impactPos.x - PLAYER_SLAM_RADIUS, impactPos.y - 1.5D, impactPos.z - PLAYER_SLAM_RADIUS, impactPos.x + PLAYER_SLAM_RADIUS, impactPos.y + 2.5D, impactPos.z + PLAYER_SLAM_RADIUS); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java index 22cb89a9..8e7260ed 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java @@ -5,7 +5,7 @@ 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.anthology.gravity.GravityApi; import com.craisinlord.antarchy.config.AntarchySettings; import java.util.List; import java.util.function.Consumer; @@ -292,7 +292,7 @@ public class BigBerthaItem extends SwordItem implements GeoItem { Vec3 impactPos = new Vec3(target.getX(), target.getY(0.8D), target.getZ()); LucidBoltEntity.spawnImpactParticles(level, impactPos); level.sendParticles(ParticleTypes.PORTAL, impactPos.x, impactPos.y, impactPos.z, 12, 0.25D, 0.25D, 0.25D, 0.08D); - if (!AntarchyGravityApi.isGravityInverted(player)) { + if (!GravityApi.isGravityInverted(player)) { return; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java index e32bb10f..2f4b2e34 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java @@ -5,7 +5,7 @@ import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; import com.craisinlord.antarchy.content.entity.vortex.WindVortexEntity; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.anthology.gravity.GravityApi; import java.util.List; import java.util.function.Consumer; import net.minecraft.ChatFormatting; @@ -77,15 +77,15 @@ public class EyeOfTheStormItem extends Item implements GeoItem { false ); vortex.setMode(WindVortexEntity.VortexMode.UPWARD); - vortex.setAxis(AntarchyGravityApi.isGravityInverted(player) ? Direction.DOWN : Direction.UP); + vortex.setAxis(GravityApi.isGravityInverted(player) ? Direction.DOWN : Direction.UP); vortex.setVortexSize((float) AntarchySettings.eyeOfTheStormUpdraftHeight(), (float) AntarchySettings.eyeOfTheStormUpdraftRadius()); vortex.setVortexDurationTicks(AntarchySettings.eyeOfTheStormUpdraftDurationTicks()); serverLevel.addFreshEntity(vortex); Vec3 gravityUp = Vec3.atLowerCornerOf( - (AntarchyGravityApi.isGravityInverted(player) ? Direction.DOWN : Direction.UP).getNormal()); - AntarchyGravityApi.setWorldVelocity(player, - AntarchyGravityApi.getWorldVelocity(player).add(gravityUp.scale(AntarchySettings.eyeOfTheStormUpdraftLaunchStrength()))); + (GravityApi.isGravityInverted(player) ? Direction.DOWN : Direction.UP).getNormal()); + GravityApi.setWorldVelocity(player, + GravityApi.getWorldVelocity(player).add(gravityUp.scale(AntarchySettings.eyeOfTheStormUpdraftLaunchStrength()))); player.hasImpulse = true; player.resetFallDistance(); player.getCooldowns().addCooldown(this, AntarchySettings.eyeOfTheStormUpdraftCooldownTicks()); @@ -133,7 +133,7 @@ public class EyeOfTheStormItem extends Item implements GeoItem { true ); vortex.setMode(WindVortexEntity.VortexMode.UPWARD); - vortex.setAxis(owner != null && AntarchyGravityApi.isGravityInverted(owner) ? Direction.DOWN : Direction.UP); + vortex.setAxis(owner != null && GravityApi.isGravityInverted(owner) ? Direction.DOWN : Direction.UP); vortex.setVortexSize((float) AntarchySettings.eyeOfTheStormSurgeHeight(), (float) AntarchySettings.eyeOfTheStormSurgeRadius()); vortex.setVortexDurationTicks(AntarchySettings.eyeOfTheStormSurgeDurationTicks()); vortex.setVortexStrengths(AntarchySettings.eyeOfTheStormSurgePullStrength(), AntarchySettings.eyeOfTheStormSurgeReturnStrength()); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/GravityGunItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/GravityGunItem.java index cdf6ef71..281a8312 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/GravityGunItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/GravityGunItem.java @@ -4,8 +4,8 @@ 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 com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import it.unimi.dsi.fastutil.longs.Long2BooleanMap; import it.unimi.dsi.fastutil.longs.Long2BooleanOpenHashMap; import it.unimi.dsi.fastutil.longs.Long2IntMap; @@ -527,11 +527,11 @@ public class GravityGunItem extends Item implements GeoItem { private static Vec3 getHoldVector(Player player) { Vec3 look = getRawLookVector(player); - if (!AntarchyGravityApi.isGravityInverted(player)) { + if (!GravityApi.isGravityInverted(player)) { return look; } - return AntarchyGravityRotationUtil.vecWorldToPlayer(look, AntarchyGravityApi.getGravityDirection(player)); + return GravityRotationUtil.vecWorldToPlayer(look, GravityApi.getGravityDirection(player)); } private static Vec3 getRawLookVector(Player player) { @@ -540,14 +540,14 @@ public class GravityGunItem extends Item implements GeoItem { } private static Vec2 getHoldRotation(Player player) { - if (!AntarchyGravityApi.isGravityInverted(player)) { + if (!GravityApi.isGravityInverted(player)) { return new Vec2(player.getYRot(), player.getXRot()); } - return AntarchyGravityRotationUtil.rotWorldToPlayer( + return GravityRotationUtil.rotWorldToPlayer( player.getYRot(), player.getXRot(), - AntarchyGravityApi.getGravityDirection(player) + GravityApi.getGravityDirection(player) ); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/PortalGunItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/PortalGunItem.java index 5971d8b3..163357ea 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/PortalGunItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/PortalGunItem.java @@ -7,7 +7,7 @@ import com.craisinlord.antarchy.content.block.entity.PortalGunPortalFaceRecord; import com.craisinlord.antarchy.content.block.entity.PortalGunPortalCellAccess; import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.anthology.gravity.GravityApi; import com.craisinlord.antarchy.content.network.PortalGunPrimaryPayload; import com.craisinlord.antarchy.content.portalgun.PortalGunPlacement; import com.craisinlord.antarchy.content.portalgun.PortalGunMoonMath; @@ -390,9 +390,9 @@ public class PortalGunItem extends Item implements GeoItem { private Vec3 worldLook(LivingEntity entity) { Vec3 look = entity.getLookAngle(); - return AntarchyGravityApi.isGravityInverted(entity) - ? com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil.vecPlayerToWorld( - look, AntarchyGravityApi.getGravityDirection(entity)) + return GravityApi.isGravityInverted(entity) + ? com.craisinlord.anthology.gravity.GravityRotationUtil.vecPlayerToWorld( + look, GravityApi.getGravityDirection(entity)) : look; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RpoLauncherItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RpoLauncherItem.java index 2b3b5cec..7c4ed4ae 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RpoLauncherItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RpoLauncherItem.java @@ -6,9 +6,9 @@ import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; import com.craisinlord.antarchy.content.entity.OctopusBombEntity; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import java.util.function.Consumer; import java.util.function.Predicate; import net.minecraft.core.component.DataComponents; @@ -165,11 +165,11 @@ public class RpoLauncherItem extends ProjectileWeaponItem implements GeoItem { float yaw = player.getYRot() + yawOffset; Vec3 localDirection = Vec3.directionFromRotation(new Vec2(player.getXRot(), yaw)); - AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(player); - Vec3 direction = AntarchyGravityRotationUtil.vecPlayerToWorld(localDirection, gravity).normalize(); + GravityDirection gravity = GravityApi.getGravityDirection(player); + Vec3 direction = GravityRotationUtil.vecPlayerToWorld(localDirection, gravity).normalize(); Vec3 spawn = player.getEyePosition().add(direction.scale(0.55D)); projectileBomb.moveTo(spawn.x, spawn.y, spawn.z, yaw, player.getXRot()); - projectileBomb.launchAsExplosiveProjectile(player, direction.scale(AntarchySettings.rpoLauncherLaunchVelocity()).add(AntarchyGravityApi.deltaMovement(player))); + projectileBomb.launchAsExplosiveProjectile(player, direction.scale(AntarchySettings.rpoLauncherLaunchVelocity()).add(GravityApi.deltaMovement(player))); level.addFreshEntity(projectileBomb); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/SquidzookaItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/SquidzookaItem.java index 6950d148..e1fc96fb 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/SquidzookaItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/SquidzookaItem.java @@ -5,9 +5,9 @@ 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 com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import java.util.function.Consumer; import java.util.function.Predicate; import net.minecraft.core.component.DataComponents; @@ -166,11 +166,11 @@ public class SquidzookaItem extends ProjectileWeaponItem implements GeoItem { float yaw = player.getYRot() + yawOffset; Vec3 localDirection = Vec3.directionFromRotation(new Vec2(player.getXRot(), yaw)); - AntarchyGravityDirection gravity = AntarchyGravityApi.getGravityDirection(player); - Vec3 direction = AntarchyGravityRotationUtil.vecPlayerToWorld(localDirection, gravity).normalize(); + GravityDirection gravity = GravityApi.getGravityDirection(player); + Vec3 direction = GravityRotationUtil.vecPlayerToWorld(localDirection, gravity).normalize(); Vec3 spawn = player.getEyePosition().add(direction.scale(0.45D)); projectileSquid.moveTo(spawn.x, spawn.y, spawn.z, yaw, player.getXRot()); - projectileSquid.launchAsProjectile(player, direction.scale(AntarchySettings.squidzookaLaunchVelocity()).add(AntarchyGravityApi.deltaMovement(player))); + projectileSquid.launchAsProjectile(player, direction.scale(AntarchySettings.squidzookaLaunchVelocity()).add(GravityApi.deltaMovement(player))); level.addFreshEntity(projectileSquid); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookTetherManager.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookTetherManager.java index 5e765760..f80887ec 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookTetherManager.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/WormHookTetherManager.java @@ -2,8 +2,8 @@ package com.craisinlord.antarchy.content.item; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.entity.WormHookProjectileEntity; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.content.util.WormHookRope; import java.util.Map; import java.util.UUID; @@ -161,11 +161,11 @@ public final class WormHookTetherManager { } private static Vec3 getWorldMotion(ServerPlayer player) { - return AntarchyGravityRotationUtil.vecPlayerToWorld(player.getDeltaMovement(), AntarchyGravityApi.getGravityDirection(player)); + return GravityRotationUtil.vecPlayerToWorld(player.getDeltaMovement(), GravityApi.getGravityDirection(player)); } private static void setWorldMotion(ServerPlayer player, Vec3 worldMotion) { - player.setDeltaMovement(AntarchyGravityRotationUtil.vecWorldToPlayer(worldMotion, AntarchyGravityApi.getGravityDirection(player))); + player.setDeltaMovement(GravityRotationUtil.vecWorldToPlayer(worldMotion, GravityApi.getGravityDirection(player))); } private static void tickFlyingSound(ServerPlayer player, TetherState state) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/movement/AntarchyGravityHooks.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/movement/AntarchyGravityHooks.java new file mode 100644 index 00000000..5ad12022 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/movement/AntarchyGravityHooks.java @@ -0,0 +1,94 @@ +package com.craisinlord.antarchy.content.movement; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.PortalGunRollClientState; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.portal.DimensionalTearEntity; +import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; +import com.craisinlord.anthology.effect.AnthologyEffects; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityHooks; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.Mob; + +public final class AntarchyGravityHooks { + private AntarchyGravityHooks() { + } + + public static void register() { + GravityHooks.addInvertedRegion(ThoraxisUndersideManager::isInUnderside); + GravityHooks.addInvertedFluid(AntarchyFluidChecks::isAntiwater); + GravityHooks.addLoadListener(AntarchyGravityHooks::clearStaleUndersideInversion); + } + + public static void registerClient() { + GravityHooks.addCameraRollSource(PortalGunRollClientState::getRollDegrees); + } + + private static void clearStaleUndersideInversion(Entity entity) { + if (!(entity instanceof Mob mob) + || !GravityApi.isGravityInverted(mob) + || !GravityApi.isGravityForced(mob)) { + return; + } + MobEffectInstance invertedEffect = mob.getEffect(AnthologyEffects.inverted()); + boolean aboveUndersideExit = ThoraxisUndersideManager.isAboveUndersideExit(mob); + int nearbyDimensionalTears = countNearbyDimensionalTears(mob); + if (invertedEffect != null + && invertedEffect.isAmbient() + && !invertedEffect.isVisible() + && aboveUndersideExit) { + clearInversion(mob); + Antarchy.LOGGER.warn( + "[antarchy-gravity] cleared stale underside inversion from loaded mob type={} uuid={} pos=({}, {}, {}) dim={} effectDuration={} nearbyDimensionalTears={}", + mob.getType(), mob.getUUID(), mob.getX(), mob.getY(), mob.getZ(), + mob.level() != null ? mob.level().dimension().location() : "?", + invertedEffect.getDuration(), nearbyDimensionalTears + ); + return; + } + if (invertedEffect != null + && mob instanceof BedBugEntity + && aboveUndersideExit + && ThoraxisUndersideManager.isThoraxis(mob.level())) { + clearInversion(mob); + Antarchy.LOGGER.warn( + "[antarchy-gravity] cleared loaded inverted bed bug above underside exit type={} uuid={} pos=({}, {}, {}) dim={} effectDuration={} effectAmbient={} effectVisible={} nearbyDimensionalTears={}", + mob.getType(), mob.getUUID(), mob.getX(), mob.getY(), mob.getZ(), + mob.level() != null ? mob.level().dimension().location() : "?", + invertedEffect.getDuration(), invertedEffect.isAmbient(), invertedEffect.isVisible(), nearbyDimensionalTears + ); + return; + } + Antarchy.LOGGER.info( + "[antarchy-gravity] loaded inverted mob type={} uuid={} pos=({}, {}, {}) dim={} hasInvertedEffect={} effectDuration={} effectAmbient={} effectVisible={} aboveUndersideExit={} nearbyDimensionalTears={}", + mob.getType(), mob.getUUID(), mob.getX(), mob.getY(), mob.getZ(), + mob.level() != null ? mob.level().dimension().location() : "?", + invertedEffect != null, + invertedEffect != null ? invertedEffect.getDuration() : -1, + invertedEffect != null && invertedEffect.isAmbient(), + invertedEffect != null && invertedEffect.isVisible(), + aboveUndersideExit, + nearbyDimensionalTears + ); + } + + private static void clearInversion(Mob mob) { + mob.removeEffect(AnthologyEffects.inverted()); + GravityApi.resetGravityState(mob); + } + + private static int countNearbyDimensionalTears(Mob mob) { + if (!(mob.level() instanceof ServerLevel serverLevel)) { + return -1; + } + return serverLevel.getEntitiesOfClass( + DimensionalTearEntity.class, + mob.getBoundingBox().inflate(48.0D), + Entity::isAlive + ).size(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/GravityStatePayload.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/GravityStatePayload.java deleted file mode 100644 index 195e8375..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/GravityStatePayload.java +++ /dev/null @@ -1,52 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPortalEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPortalEntity.java index 7648389d..2bc65c47 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPortalEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunPortalEntity.java @@ -2,7 +2,7 @@ package com.craisinlord.antarchy.content.portalgun; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.anthology.gravity.GravityApi; import com.craisinlord.antarchy.content.block.entity.PortalGunPortalBaseBlockEntity; import com.craisinlord.antarchy.content.block.entity.PortalGunPortalCellAccess; import com.craisinlord.antarchy.content.block.entity.PortalGunPortalFaceRecord; @@ -388,7 +388,7 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { } public PortalTransit computeTransit(Entity entity, PortalGunPortalEntity destination, AABB box, Vec3 velocity, Vec3 look) { - if (!AntarchyGravityApi.isGravityInverted(entity)) { + if (!GravityApi.isGravityInverted(entity)) { return computeTransit(destination, box, velocity, look); } PortalGunWorldPortalShape source = this.getWorldPortalShape(); @@ -951,7 +951,7 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { Vec3 memberLook; if (root) { memberLook = transit.look(); - } else if (AntarchyGravityApi.isGravityInverted(member)) { + } else if (GravityApi.isGravityInverted(member)) { Vec3 worldLook = PortalGunTransitMath.entityVelocityToWorld(member, state.look()); memberLook = PortalGunTransitMath.entityVelocityFromWorld(member, PortalGunTransformUtil.transformVector(this, destination, worldLook).normalize()); @@ -961,7 +961,7 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { Vec3 memberMotion; if (root) { memberMotion = transit.velocity(); - } else if (AntarchyGravityApi.isGravityInverted(member)) { + } else if (GravityApi.isGravityInverted(member)) { Vec3 worldMotion = PortalGunTransitMath.entityVelocityToWorld(member, state.motion()); memberMotion = PortalGunTransitMath.entityVelocityFromWorld(member, PortalGunTransformUtil.transformVector(this, destination, worldMotion)); @@ -971,7 +971,7 @@ public class PortalGunPortalEntity extends Entity implements GeoEntity { float yaw = PortalGunTransformUtil.yawFromLook(memberLook); float pitch = PortalGunTransformUtil.pitchFromLook(memberLook); float fallDistance = PortalGunTransitMath.exitFallDistance(member.fallDistance, - AntarchyGravityApi.isGravityInverted(member) ? PortalGunTransitMath.entityVelocityToWorld(member, memberMotion) : memberMotion, + GravityApi.isGravityInverted(member) ? PortalGunTransitMath.entityVelocityToWorld(member, memberMotion) : memberMotion, member); if (member instanceof ServerPlayer player && root && clientAuthoritative) { player.moveTo(memberExitPos.x, memberExitPos.y, memberExitPos.z, yaw, pitch); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunProjectileEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunProjectileEntity.java index 0f293419..46e39a5d 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunProjectileEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunProjectileEntity.java @@ -1,9 +1,9 @@ package com.craisinlord.antarchy.content.portalgun; import com.craisinlord.antarchy.content.item.PortalGunItem; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityTransition; import com.craisinlord.antarchy.config.AntarchySettings; import java.util.ArrayList; import java.util.Comparator; @@ -126,7 +126,7 @@ public class PortalGunProjectileEntity extends ThrowableItemProjectile { } public void configure(PortalGunPortalEntity.PortalSide side, UUID gunId, ItemStack gunStack) { - AntarchyGravityApi.setAirborneGravityDirection(this, AntarchyGravityDirection.DOWN, false, AntarchyGravityTransition.INSTANT); + GravityApi.setAirborneGravityDirection(this, GravityDirection.DOWN, false, GravityTransition.INSTANT); this.entityData.set(SIDE, side.ordinal()); this.gunId = gunId; this.setItem(gunStack.copyWithCount(1)); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunTransitMath.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunTransitMath.java index fd77677d..67616a63 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunTransitMath.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/portalgun/PortalGunTransitMath.java @@ -1,8 +1,8 @@ package com.craisinlord.antarchy.content.portalgun; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; @@ -70,7 +70,7 @@ public final class PortalGunTransitMath { } public static Vec3 entityPosition(AABB box, Entity entity) { - return entityPosition(box, AntarchyGravityApi.isGravityInverted(entity)); + return entityPosition(box, GravityApi.isGravityInverted(entity)); } public static Vec3 entityPosition(AABB box, boolean inverted) { @@ -81,25 +81,25 @@ public final class PortalGunTransitMath { } public static Vec3 entityVelocityToWorld(Entity entity, Vec3 velocity) { - return entityVelocityToWorld(velocity, AntarchyGravityApi.isGravityInverted(entity)); + return entityVelocityToWorld(velocity, GravityApi.isGravityInverted(entity)); } public static Vec3 entityVelocityToWorld(Vec3 velocity, boolean inverted) { if (!inverted) { return velocity; } - return AntarchyGravityRotationUtil.vecPlayerToWorld(velocity, AntarchyGravityDirection.UP); + return GravityRotationUtil.vecPlayerToWorld(velocity, GravityDirection.UP); } public static Vec3 entityVelocityFromWorld(Entity entity, Vec3 velocity) { - return entityVelocityFromWorld(velocity, AntarchyGravityApi.isGravityInverted(entity)); + return entityVelocityFromWorld(velocity, GravityApi.isGravityInverted(entity)); } public static Vec3 entityVelocityFromWorld(Vec3 velocity, boolean inverted) { if (!inverted) { return velocity; } - return AntarchyGravityRotationUtil.vecWorldToPlayer(velocity, AntarchyGravityDirection.UP); + return GravityRotationUtil.vecWorldToPlayer(velocity, GravityDirection.UP); } public static Vec3 exitVelocity(PortalGunWorldPortalShape source, PortalGunWorldPortalShape destination, Vec3 velocity, double minUpwardExitSpeed, double maxExitSpeed) { @@ -122,7 +122,7 @@ public final class PortalGunTransitMath { } public static float exitFallDistance(float fallDistance, Vec3 exitVelocity, Entity entity) { - if (!AntarchyGravityApi.isGravityInverted(entity)) { + if (!GravityApi.isGravityInverted(entity)) { return exitFallDistance(fallDistance, exitVelocity); } return exitVelocity.y > 0.0D ? fallDistance : 0.0F; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisUndersideManager.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisUndersideManager.java index c20fbf38..7834cd17 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisUndersideManager.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisUndersideManager.java @@ -4,9 +4,9 @@ import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.advancement.AntarchyAdvancementTriggers; import com.craisinlord.antarchy.content.block.DreamSandBlock; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityTransition; import java.util.Collections; import java.util.IdentityHashMap; import java.util.Map; @@ -23,7 +23,6 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.projectile.Projectile; import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -33,8 +32,8 @@ import net.minecraft.world.phys.Vec3; public final class ThoraxisUndersideManager { public static final int GRAVITY_FLIP_Y = 0; private static final net.minecraft.resources.ResourceLocation THORAXIS_DIMENSION = net.minecraft.resources.ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "thoraxis"); - private static final AntarchyGravityTransition TRANSITION = new AntarchyGravityTransition(12); - private static final AntarchyGravityTransition THROAT_TRANSITION = new AntarchyGravityTransition(12); + private static final GravityTransition TRANSITION = new GravityTransition(12); + private static final GravityTransition THROAT_TRANSITION = new GravityTransition(12); private static final int EFFECT_DURATION_TICKS = 50; private static final int EFFECT_REFRESH_THRESHOLD_TICKS = 10; private static final int DISCOVERY_INTERVAL_TICKS = 5; @@ -115,8 +114,8 @@ public final class ThoraxisUndersideManager { boolean shouldInvert = tracked ? entity.getY() < EXIT_UNDERSIDE_Y : entity.getY() < ENTER_UNDERSIDE_Y; if (shouldInvert) { - boolean needsFlip = AntarchyGravityApi.getGravityDirection(entity) != AntarchyGravityDirection.UP - || !AntarchyGravityApi.isGravityForced(entity); + boolean needsFlip = GravityApi.getGravityDirection(entity) != GravityDirection.UP + || !GravityApi.isGravityForced(entity); tracking.forcedItems.add(entity); if (needsFlip && (flipsRemaining <= 0 || !flipReady(tracking, uuid, now))) { continue; @@ -124,22 +123,22 @@ public final class ThoraxisUndersideManager { if (needsFlip) { flipsRemaining--; tracking.lastFlipTick.put(uuid, now); - AntarchyGravityApi.setForcedGravityDirection(entity, AntarchyGravityDirection.UP, TRANSITION); + GravityApi.setForcedGravityDirection(entity, GravityDirection.UP, TRANSITION); flippedItems++; } continue; } if (tracked) { - boolean isForcedUp = AntarchyGravityApi.getGravityDirection(entity) == AntarchyGravityDirection.UP - && AntarchyGravityApi.isGravityForced(entity); + boolean isForcedUp = GravityApi.getGravityDirection(entity) == GravityDirection.UP + && GravityApi.isGravityForced(entity); if (isForcedUp && !flipReady(tracking, uuid, now)) { continue; } tracking.forcedItems.remove(entity); if (isForcedUp) { tracking.lastFlipTick.put(uuid, now); - AntarchyGravityApi.setGravityDirection(entity, AntarchyGravityDirection.DOWN, false, TRANSITION); + GravityApi.setGravityDirection(entity, GravityDirection.DOWN, false, TRANSITION); restoredItems++; } evicted.add(entity); @@ -217,7 +216,7 @@ public final class ThoraxisUndersideManager { } if (isCrossingGravityBoundary(player)) { - boolean toUnderside = AntarchyGravityApi.getGravityDirection(player) == AntarchyGravityDirection.DOWN; + boolean toUnderside = GravityApi.getGravityDirection(player) == GravityDirection.DOWN; if (!toUnderside) { refreshInvertedEffect(player); } else { @@ -227,17 +226,17 @@ public final class ThoraxisUndersideManager { continue; } - if (AntarchyGravityApi.getGravityDirection(player) == AntarchyGravityDirection.DOWN + if (GravityApi.getGravityDirection(player) == GravityDirection.DOWN && player.getY() < UNDERSIDE_ENTRY_BORDER_Y && flipReady(tracking, player.getUUID(), now)) { - AntarchyGravityApi.setAirborneGravityDirection(player, AntarchyGravityDirection.UP, true, THROAT_TRANSITION); + GravityApi.setAirborneGravityDirection(player, GravityDirection.UP, true, THROAT_TRANSITION); player.resetFallDistance(); tracking.lastFlipTick.put(player.getUUID(), now); refreshInvertedEffect(player); continue; } - if (AntarchyGravityApi.isGravityInverted(player) && player.getY() < EXIT_UNDERSIDE_Y) { + if (GravityApi.isGravityInverted(player) && player.getY() < EXIT_UNDERSIDE_Y) { refreshInvertedEffect(player); } } @@ -245,7 +244,7 @@ public final class ThoraxisUndersideManager { private static void tickPlayerCrossing(ServerPlayer player, PlayerCrossing crossing, TrackingState tracking, long now) { crossing.ticks++; - Vec3 velocity = AntarchyGravityApi.getWorldVelocity(player); + Vec3 velocity = GravityApi.getWorldVelocity(player); if (!crossing.flipped) { if (!crossing.toUnderside) { refreshInvertedEffect(player); @@ -274,14 +273,14 @@ public final class ThoraxisUndersideManager { return; } - AntarchyGravityDirection destination = crossing.toUnderside - ? AntarchyGravityDirection.UP - : AntarchyGravityDirection.DOWN; - AntarchyGravityApi.setAirborneGravityDirection(player, destination, crossing.toUnderside, THROAT_TRANSITION); + GravityDirection destination = crossing.toUnderside + ? GravityDirection.UP + : GravityDirection.DOWN; + GravityApi.setAirborneGravityDirection(player, destination, crossing.toUnderside, THROAT_TRANSITION); double assistedVerticalVelocity = crossing.toUnderside ? Math.min(velocity.y, -0.7D) : Math.max(velocity.y, 0.7D); - AntarchyGravityApi.setWorldVelocity(player, + GravityApi.setWorldVelocity(player, new Vec3(velocity.x, assistedVerticalVelocity, velocity.z)); player.resetFallDistance(); crossing.flipped = true; @@ -306,10 +305,10 @@ public final class ThoraxisUndersideManager { } private static boolean isCrossingGravityBoundary(ServerPlayer player) { - Vec3 velocity = AntarchyGravityApi.getWorldVelocity(player); + Vec3 velocity = GravityApi.getWorldVelocity(player); AABB swept = player.getBoundingBox().expandTowards(velocity.scale(-1.0D)).inflate(0.08D); - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(player); - return direction == AntarchyGravityDirection.DOWN + GravityDirection direction = GravityApi.getGravityDirection(player); + return direction == GravityDirection.DOWN ? swept.minY < UNDERSIDE_ENTRY_BORDER_Y && swept.maxY >= UNDERSIDE_ENTRY_BORDER_Y && velocity.y <= -MIN_ENTRY_CROSSING_SPEED : swept.minY <= GRAVITY_FLIP_Y && swept.maxY > GRAVITY_FLIP_Y && velocity.y >= MIN_CROSSING_SPEED; } @@ -376,25 +375,12 @@ public final class ThoraxisUndersideManager { return isThoraxis(entity.level()) && entity.getY() < GRAVITY_FLIP_Y; } - public static void normalizeProjectileGravityFrame(Projectile projectile) { - boolean stateMismatch = AntarchyGravityApi.getGravityDirection(projectile) != AntarchyGravityDirection.DOWN - || AntarchyGravityApi.isGravityForced(projectile); - if (stateMismatch) { - AntarchyGravityApi.setAirborneGravityDirection( - projectile, - AntarchyGravityDirection.DOWN, - false, - AntarchyGravityTransition.INSTANT - ); - } - } - public static boolean isAboveUndersideExit(Entity entity) { return isThoraxis(entity.level()) && entity.getY() >= EXIT_UNDERSIDE_Y; } public static boolean shouldInvertInUnderside(Entity entity) { - return AntarchyGravityApi.isGravityInverted(entity) + return GravityApi.isGravityInverted(entity) && isInUnderside(entity); } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/AntarchyRangedAttackPatcher.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/AntarchyRangedAttackPatcher.java index 4b7d628d..b1d0c233 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/AntarchyRangedAttackPatcher.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/AntarchyRangedAttackPatcher.java @@ -14,7 +14,7 @@ final class AntarchyRangedAttackPatcher { private static final String LIVING_D_DESC = "(Lnet/minecraft/world/entity/LivingEntity;D)D"; private static final String D_LIVING_DESC = "(DLnet/minecraft/world/entity/LivingEntity;)D"; private static final String DELTA_MOVEMENT_DESC = "(Lnet/minecraft/world/entity/LivingEntity;)Lnet/minecraft/world/phys/Vec3;"; - private static final String API_OWNER = "com/craisinlord/antarchy/content/gravity/AntarchyGravityApi"; + private static final String API_OWNER = "com/craisinlord/anthology/gravity/GravityApi"; private enum AimMode { BODY, diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/DreamSandLowGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/DreamSandLowGravityMixin.java index ea7694b4..43dfbd6a 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/DreamSandLowGravityMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/DreamSandLowGravityMixin.java @@ -2,8 +2,8 @@ package com.craisinlord.antarchy.mixins; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.block.DreamSandBlock; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; import com.craisinlord.antarchy.content.movement.DreamSandLowGravityAccess; import net.minecraft.core.BlockPos; import net.minecraft.util.Mth; @@ -116,7 +116,7 @@ public abstract class DreamSandLowGravityMixin implements DreamSandLowGravityAcc @Unique private boolean antarchy$isSupportedByDreamSand(LivingEntity entity) { - AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(entity); + GravityDirection gravityDirection = GravityApi.getGravityDirection(entity); AABB box = entity.getBoundingBox(); BlockPos supportPos = gravityDirection.isInverted() ? BlockPos.containing(entity.getX(), box.maxY + 0.05D, entity.getZ()) diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesCandyCaneHookMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesCandyCaneHookMixin.java deleted file mode 100644 index e8168256..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesCandyCaneHookMixin.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.craisinlord.antarchy.mixins.compat.alexscaves; - -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.worldgen.thoraxis.ThoraxisUndersideManager; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.Projectile; -import net.minecraft.world.phys.Vec3; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -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.callback.CallbackInfo; - -/** Handles Alex's Caves' manually-launched Candy Cane Hook. */ -@Mixin(targets = "com.github.alexmodguy.alexscaves.server.entity.item.CandyCaneHookEntity") -@Pseudo -public abstract class AlexsCavesCandyCaneHookMixin { - private boolean antarchy$launchAdjusted; - - @Inject(method = "tick", at = @At("HEAD")) - private void antarchy$rotateManualLaunch(CallbackInfo ci) { - Projectile self = (Projectile) (Object) this; - if (this.antarchy$launchAdjusted) { - return; - } - this.antarchy$launchAdjusted = true; - - Entity owner = self.getOwner(); - boolean ownerInverted = owner != null && AntarchyGravityApi.isGravityInverted(owner); - if (ownerInverted || ThoraxisUndersideManager.isInUnderside(self)) { - AntarchyGravityDirection direction = ownerInverted - ? AntarchyGravityApi.getGravityDirection(owner) - : AntarchyGravityDirection.UP; - Vec3 launch = AntarchyGravityRotationUtil.vecPlayerToWorld( - self.getDeltaMovement(), direction); - self.setDeltaMovement(launch); - } - } - - @ModifyArg( - method = "fling", - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;add(DDD)Lnet/minecraft/world/phys/Vec3;"), - index = 1 - ) - private double antarchy$invertFlingBoost(double y) { - Projectile self = (Projectile) (Object) this; - Entity owner = self.getOwner(); - return y != 0.0D && (ThoraxisUndersideManager.isInUnderside(self) - || (owner != null && AntarchyGravityApi.isGravityInverted(owner))) ? -y : y; - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesDepthChargeMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesDepthChargeMixin.java deleted file mode 100644 index 8b4833a1..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesDepthChargeMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.craisinlord.antarchy.mixins.compat.alexscaves; - -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.Projectile; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyArg; - -/** Corrects Depth Charge's custom tick, which bypasses ThrowableProjectile.tick. */ -@Mixin(targets = "com.github.alexmodguy.alexscaves.server.entity.item.DepthChargeEntity") -@Pseudo -public abstract class AlexsCavesDepthChargeMixin { - @ModifyArg( - method = "tick", - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;add(DDD)Lnet/minecraft/world/phys/Vec3;"), - index = 1, - require = 0 - ) - private double antarchy$invertManualGravity(double y) { - Projectile self = (Projectile) (Object) this; - Entity owner = self.getOwner(); - return !self.isNoGravity() && (ThoraxisUndersideManager.isInUnderside(self) - || (owner != null && AntarchyGravityApi.isGravityInverted(owner))) ? -y : y; - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesTephraMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesTephraMixin.java deleted file mode 100644 index 0f96c5d6..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesTephraMixin.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.craisinlord.antarchy.mixins.compat.alexscaves; - -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.Projectile; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyArg; - -/** Corrects Tephra's explicit -0.1 Y gravity adjustment. */ -@Mixin(targets = "com.github.alexmodguy.alexscaves.server.entity.item.TephraEntity") -@Pseudo -public abstract class AlexsCavesTephraMixin { - @ModifyArg( - method = "tick", - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;add(DDD)Lnet/minecraft/world/phys/Vec3;", ordinal = 1), - index = 1 - ) - private double antarchy$invertManualGravity(double y) { - Projectile self = (Projectile) (Object) this; - Entity owner = self.getOwner(); - return !self.isNoGravity() && (ThoraxisUndersideManager.isInUnderside(self) - || (owner != null && AntarchyGravityApi.isGravityInverted(owner))) ? -y : y; - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesWaterBoltMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesWaterBoltMixin.java deleted file mode 100644 index 7bbcccd3..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/alexscaves/AlexsCavesWaterBoltMixin.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.craisinlord.antarchy.mixins.compat.alexscaves; - -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.Projectile; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyArg; - -/** Corrects Water Bolt's explicit -0.07 Y gravity adjustment. */ -@Mixin(targets = "com.github.alexmodguy.alexscaves.server.entity.item.WaterBoltEntity") -@Pseudo -public abstract class AlexsCavesWaterBoltMixin { - @ModifyArg( - method = "tick", - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;add(DDD)Lnet/minecraft/world/phys/Vec3;", ordinal = 1), - index = 1 - ) - private double antarchy$invertManualGravity(double y) { - Projectile self = (Projectile) (Object) this; - Entity owner = self.getOwner(); - return !self.isNoGravity() && (ThoraxisUndersideManager.isInUnderside(self) - || (owner != null && AntarchyGravityApi.isGravityInverted(owner))) ? -y : y; - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/ars_nouveau/ArsNouveauProjectileGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/ars_nouveau/ArsNouveauProjectileGravityMixin.java deleted file mode 100644 index fa90dabb..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/ars_nouveau/ArsNouveauProjectileGravityMixin.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.craisinlord.antarchy.mixins.compat.ars_nouveau; - -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.worldgen.thoraxis.ThoraxisUndersideManager; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.Projectile; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -/** Handles Ars Nouveau's explicit tickNextPosition gravity adjustment. */ -@Mixin(targets = "com.hollingsworth.arsnouveau.common.entity.EntityProjectileSpell") -@Pseudo -public abstract class ArsNouveauProjectileGravityMixin { - @Inject(method = "tick", at = @At("HEAD")) - private void antarchy$prepareArsProjectile(CallbackInfo ci) { - Projectile self = (Projectile) (Object) this; - Entity owner = self.getOwner(); - if (owner != null && (ThoraxisUndersideManager.isInUnderside(self) - || AntarchyGravityApi.isGravityInverted(owner))) { - AntarchyGravityApi.setAirborneGravityDirection( - self, - AntarchyGravityDirection.UP, - false, - AntarchyGravityTransition.INSTANT - ); - } - } - - @Inject(method = "tickNextPosition", at = @At("TAIL")) - private void antarchy$invertArsProjectileGravity(CallbackInfo ci) { - Projectile self = (Projectile) (Object) this; - if (!AntarchyGravityApi.isGravityInverted(self) || self.isNoGravity()) { - return; - } - - // Ars applies -0.03 directly in tickNextPosition(). Correct that one - // application to +0.03 without changing damping or spell effects. - self.setDeltaMovement(self.getDeltaMovement().add(0.0D, 0.06D, 0.0D)); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/irons_spellbooks/IronsSpellbooksProjectileGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/irons_spellbooks/IronsSpellbooksProjectileGravityMixin.java deleted file mode 100644 index d44dd439..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/irons_spellbooks/IronsSpellbooksProjectileGravityMixin.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.craisinlord.antarchy.mixins.compat.irons_spellbooks; - -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 com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.Projectile; -import net.minecraft.world.phys.Vec3; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -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; - -/** Handles Iron's Spellbooks' custom travel() gravity path. */ -@Mixin(targets = "io.redspace.ironsspellbooks.entity.spells.AbstractMagicProjectile") -@Pseudo -public abstract class IronsSpellbooksProjectileGravityMixin { - @Shadow public abstract float getSpeed(); - @Shadow protected abstract double getDefaultGravity(); - - @Inject(method = "tick", at = @At("HEAD")) - private void antarchy$prepareMagicProjectile(CallbackInfo ci) { - Projectile self = (Projectile) (Object) this; - Entity owner = self.getOwner(); - boolean inverted = ThoraxisUndersideManager.isInUnderside(self) - || (owner != null && AntarchyGravityApi.isGravityInverted(owner)); - if (!inverted) { - return; - } - AntarchyGravityApi.setAirborneGravityDirection( - self, - AntarchyGravityDirection.UP, - false, - AntarchyGravityTransition.INSTANT - ); - } - - @Inject(method = "shoot", at = @At("HEAD"), cancellable = true) - private void antarchy$rotateMagicProjectileLaunch(Vec3 rotation, CallbackInfo ci) { - Projectile self = (Projectile) (Object) this; - Entity owner = self.getOwner(); - if (owner == null || (!ThoraxisUndersideManager.isInUnderside(self) - && !AntarchyGravityApi.isGravityInverted(owner))) { - return; - } - self.setDeltaMovement(AntarchyGravityRotationUtil.vecPlayerToWorld( - rotation, - AntarchyGravityApi.getGravityDirection(owner) - ).scale(this.getSpeed())); - ci.cancel(); - } - - @Inject(method = "travel", at = @At("TAIL")) - private void antarchy$invertMagicProjectileGravity(CallbackInfo ci) { - Projectile self = (Projectile) (Object) this; - if (!AntarchyGravityApi.isGravityInverted(self) || self.isNoGravity()) { - return; - } - - // AbstractMagicProjectile.travel() already subtracted default gravity. - self.setDeltaMovement(self.getDeltaMovement().add(0.0D, 2.0D * this.getDefaultGravity(), 0.0D)); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsArrowGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsArrowGravityMixin.java deleted file mode 100644 index 94ec1463..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsArrowGravityMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.craisinlord.antarchy.mixins.compat.scguns; - -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import net.minecraft.world.entity.projectile.AbstractArrow; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -/** Corrects Scorched Guns arrow-derived projectiles with custom tick gravity. */ -@Mixin(targets = "top.ribs.scguns.entity.projectile.BrassBoltEntity") -@Pseudo -public abstract class ScgunsArrowGravityMixin { - @Inject(method = "tick", at = @At("TAIL")) - private void antarchy$invertScgunsArrowGravity(CallbackInfo ci) { - AbstractArrow self = (AbstractArrow) (Object) this; - if (self.isNoGravity() || (!AntarchyGravityApi.isGravityInverted(self) - && !ThoraxisUndersideManager.isInUnderside(self))) { - return; - } - - // Brass Bolt adds +0.01 after AbstractArrow.tick(); invert that custom - // correction to -0.01, without touching normal arrows. - self.setDeltaMovement(self.getDeltaMovement().add(0.0D, -0.02D, 0.0D)); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsProjectileEntityAccessMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsProjectileEntityAccessMixin.java deleted file mode 100644 index a5c3efd2..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsProjectileEntityAccessMixin.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.craisinlord.antarchy.mixins.compat.scguns; - -import com.craisinlord.antarchy.content.gravity.ScgunsProjectileAccess; -import net.minecraft.world.entity.LivingEntity; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -import org.spongepowered.asm.mixin.Shadow; - -/* - * Shadows must live on the class that declares the field, so the subclasses - * reach these through ScgunsProjectileAccess instead. - */ -@Mixin(targets = "top.ribs.scguns.entity.projectile.ProjectileEntity") -@Pseudo -public abstract class ScgunsProjectileEntityAccessMixin implements ScgunsProjectileAccess { - @Shadow(remap = false) @Nullable protected LivingEntity shooter; - @Shadow(remap = false) protected double modifiedGravity; - - @Override - public @Nullable LivingEntity antarchy$getScgunsShooter() { - return this.shooter; - } - - @Override - public double antarchy$getScgunsModifiedGravity() { - return this.modifiedGravity; - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsProjectileEntityGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsProjectileEntityGravityMixin.java deleted file mode 100644 index c4b36b8c..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/compat/scguns/ScgunsProjectileEntityGravityMixin.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.craisinlord.antarchy.mixins.compat.scguns; - -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 com.craisinlord.antarchy.content.gravity.ScgunsProjectileAccess; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.phys.Vec3; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Pseudo; -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; - -/** Bridges Scorched Guns' Entity-based projectile physics into Antarchy gravity. */ -@Mixin(targets = { - "top.ribs.scguns.entity.projectile.ProjectileEntity", - "top.ribs.scguns.entity.projectile.BearPackShellProjectileEntity", - "top.ribs.scguns.entity.projectile.KrahgRoundProjectileEntity", - "top.ribs.scguns.entity.projectile.LightningProjectileEntity", - "top.ribs.scguns.entity.projectile.OsborneSlugProjectileEntity", - "top.ribs.scguns.entity.projectile.ShotballProjectileEntity" -}) -@Pseudo -public abstract class ScgunsProjectileEntityGravityMixin { - @Unique private boolean antarchy$launchDirectionAdjusted; - - @Inject(method = "tick", at = @At("HEAD")) - private void antarchy$prepareScgunsProjectile(CallbackInfo ci) { - Entity self = (Entity) (Object) this; - LivingEntity shooter = ((ScgunsProjectileAccess) self).antarchy$getScgunsShooter(); - boolean inverted = ThoraxisUndersideManager.isInUnderside(self) - || (shooter != null && AntarchyGravityApi.isGravityInverted(shooter)); - if (!inverted) { - if (AntarchyGravityApi.isGravityInverted(self) && !AntarchyGravityApi.isGravityForced(self)) { - AntarchyGravityApi.setAirborneGravityDirection( - self, - AntarchyGravityDirection.DOWN, - false, - AntarchyGravityTransition.INSTANT - ); - } - return; - } - - AntarchyGravityApi.setAirborneGravityDirection( - self, - AntarchyGravityDirection.UP, - false, - AntarchyGravityTransition.INSTANT - ); - if (!this.antarchy$launchDirectionAdjusted && self.tickCount <= 1) { - Vec3 motion = self.getDeltaMovement(); - if (motion.lengthSqr() > 1.0E-8D) { - self.setDeltaMovement(AntarchyGravityRotationUtil.vecPlayerToWorld( - motion, - AntarchyGravityDirection.UP - )); - } - this.antarchy$launchDirectionAdjusted = true; - } - } - - @Inject(method = "tick", at = @At("TAIL")) - private void antarchy$invertScgunsGravity(CallbackInfo ci) { - Entity self = (Entity) (Object) this; - double modifiedGravity = ((ScgunsProjectileAccess) self).antarchy$getScgunsModifiedGravity(); - if (!AntarchyGravityApi.isGravityInverted(self) || modifiedGravity == 0.0D) { - return; - } - - // Scorched Guns already adds modifiedGravity once near tick end. Replace - // that downward world-Y acceleration with its upward counterpart. - self.setDeltaMovement(self.getDeltaMovement().add(0.0D, -2.0D * modifiedGravity, 0.0D)); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/AbstractArrowGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/AbstractArrowGravityMixin.java deleted file mode 100644 index e948a155..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/AbstractArrowGravityMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import net.minecraft.world.entity.projectile.AbstractArrow; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(AbstractArrow.class) -/* - * Flips arrow gravity from the arrow's current position. - */ -public abstract class AbstractArrowGravityMixin { - - @WrapOperation(method = "tick", at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/entity/projectile/AbstractArrow;applyGravity()V")) - private void antarchy$applyArrowGravityUpward(AbstractArrow self, Operation original) { - if (!ThoraxisUndersideManager.isInUnderside(self)) { - original.call(self); - return; - } - // Vanilla subtracts gravity from world Y; the Underside adds it instead. - double gravity = self.getGravity(); - self.setDeltaMovement(self.getDeltaMovement().add(0.0D, gravity, 0.0D)); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BehaviorUtilsGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BehaviorUtilsGravityMixin.java deleted file mode 100644 index b9bd9065..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BehaviorUtilsGravityMixin.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import com.llamalad7.mixinextras.sugar.Local; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.behavior.BehaviorUtils; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraft.world.phys.Vec3; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(BehaviorUtils.class) -public abstract class BehaviorUtilsGravityMixin { - @WrapOperation( - method = "throwItem(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/Vec3;F)V", - at = @At( - value = "NEW", - target = "(Lnet/minecraft/world/level/Level;DDDLnet/minecraft/world/item/ItemStack;)Lnet/minecraft/world/entity/item/ItemEntity;" - ) - ) - private static ItemEntity antarchy$fixThrownItemSpawn( - Level level, - double x, - double y, - double z, - ItemStack stack, - Operation original, - @Local float yOffset, - @Local LivingEntity entity - ) { - if (!antarchy$shouldInvertThrownItem(entity)) { - return original.call(level, x, y, z, stack); - } - - Vec3 eyeOffset = AntarchyGravityRotationUtil.getEyeOffset(entity, entity.getEyeHeight()); - Vec3 offset = eyeOffset.normalize().scale(yOffset); - Vec3 itemPos = entity.position().add(eyeOffset).subtract(offset); - ItemEntity itemEntity = original.call(level, itemPos.x(), itemPos.y(), itemPos.z(), stack); - AntarchyGravityApi.setGravityDirection(itemEntity, AntarchyGravityApi.getGravityDirection(entity)); - return itemEntity; - } - - @WrapOperation( - method = "throwItem(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/Vec3;F)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/entity/item/ItemEntity;setDeltaMovement(Lnet/minecraft/world/phys/Vec3;)V" - ) - ) - private static void antarchy$fixThrownItemVelocity( - ItemEntity itemEntity, - Vec3 deltaMovement, - Operation original, - @Local LivingEntity entity - ) { - if (!antarchy$shouldInvertThrownItem(entity)) { - original.call(itemEntity, deltaMovement); - return; - } - - AntarchyGravityApi.setWorldVelocity(itemEntity, deltaMovement); - } - - private static boolean antarchy$shouldInvertThrownItem(LivingEntity entity) { - return ThoraxisUndersideManager.shouldInvertInUnderside(entity); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BubbleColumnGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BubbleColumnGravityMixin.java deleted file mode 100644 index 4c7abbe5..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BubbleColumnGravityMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.BubbleColumnBlock; -import net.minecraft.world.level.block.state.BlockState; -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(BubbleColumnBlock.class) -public abstract class BubbleColumnGravityMixin { - @Inject(method = "entityInside", at = @At("HEAD"), cancellable = true) - private void antarchy$applyBubbleForces(BlockState state, Level level, BlockPos pos, Entity entity, CallbackInfo ci) { - if (!AntarchyGravityApi.isGravityInverted(entity)) { - return; - } - - boolean drag = state.getValue(BubbleColumnBlock.DRAG_DOWN); - Vec3 velocity = AntarchyGravityApi.getWorldVelocity(entity); - double vertical = drag ? Math.max(-0.9D, velocity.y - 0.03D) : Math.min(1.8D, velocity.y + 0.1D); - AntarchyGravityApi.setWorldVelocity(entity, new Vec3(velocity.x, vertical, velocity.z)); - entity.onAboveBubbleCol(!drag); - if (drag) { - entity.resetFallDistance(); - } - ci.cancel(); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BucketItemGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BucketItemGravityMixin.java deleted file mode 100644 index 4cbde7b7..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/BucketItemGravityMixin.java +++ /dev/null @@ -1,84 +0,0 @@ -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(); - 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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/CrossbowItemGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/CrossbowItemGravityMixin.java deleted file mode 100644 index 15c5a1a5..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/CrossbowItemGravityMixin.java +++ /dev/null @@ -1,59 +0,0 @@ -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.worldgen.thoraxis.ThoraxisUndersideManager; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import net.minecraft.world.entity.LivingEntity; -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 (!antarchy$shouldFixProjectileSpawn(shooter)) 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 (!antarchy$shouldFixProjectileSpawn(shooter)) 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 (!antarchy$shouldFixProjectileSpawn(shooter)) 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; - } - - private static boolean antarchy$shouldFixProjectileSpawn(LivingEntity shooter) { - return ThoraxisUndersideManager.shouldInvertInUnderside(shooter); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/DirectionFacingMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/DirectionFacingMixin.java deleted file mode 100644 index f29d121a..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/DirectionFacingMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityCollisionContextMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityCollisionContextMixin.java deleted file mode 100644 index 0ac4a24f..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityCollisionContextMixin.java +++ /dev/null @@ -1,65 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityFrameMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityFrameMixin.java deleted file mode 100644 index 4854d607..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityFrameMixin.java +++ /dev/null @@ -1,270 +0,0 @@ -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 = "getY(D)D", at = @At("HEAD"), cancellable = true) - private void antarchy$fixScaledY(double scale, CallbackInfoReturnable cir) { - Entity entity = (Entity) (Object) this; - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); - if (!direction.isInverted()) { - return; - } - cir.setReturnValue(entity.position().add( - AntarchyGravityRotationUtil.vecPlayerToWorld(0.0D, entity.getBbHeight() * scale, 0.0D, direction) - ).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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java deleted file mode 100644 index 0c850486..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityGravityMixin.java +++ /dev/null @@ -1,320 +0,0 @@ -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 com.craisinlord.antarchy.content.entity.BedBugEntity; -import com.craisinlord.antarchy.content.entity.portal.DimensionalTearEntity; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.Mob; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.phys.AABB; -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 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)); - - Entity entity = this.antarchy$entity(); - if (this.antarchy$gravityDirection.isInverted() && this.antarchy$gravityForced - && entity instanceof Mob mob) { - MobEffectInstance invertedEffect = mob.getEffect(com.craisinlord.antarchy.content.AntarchyObjects.INVERTED_EFFECT.get()); - boolean aboveUndersideExit = ThoraxisUndersideManager.isAboveUndersideExit(mob); - int nearbyDimensionalTears = this.antarchy$countNearbyDimensionalTears(mob); - if (invertedEffect != null - && invertedEffect.isAmbient() - && !invertedEffect.isVisible() - && aboveUndersideExit) { - this.antarchy$clearLoadedInversion(mob); - com.craisinlord.antarchy.Antarchy.LOGGER.warn( - "[antarchy-gravity] cleared stale underside inversion from loaded mob type={} uuid={} pos=({}, {}, {}) dim={} effectDuration={} nearbyDimensionalTears={}", - mob.getType(), mob.getUUID(), mob.getX(), mob.getY(), mob.getZ(), - mob.level() != null ? mob.level().dimension().location() : "?", - invertedEffect.getDuration(), nearbyDimensionalTears - ); - return; - } - if (invertedEffect != null - && mob instanceof BedBugEntity - && aboveUndersideExit - && ThoraxisUndersideManager.isThoraxis(mob.level())) { - this.antarchy$clearLoadedInversion(mob); - com.craisinlord.antarchy.Antarchy.LOGGER.warn( - "[antarchy-gravity] cleared loaded inverted bed bug above underside exit type={} uuid={} pos=({}, {}, {}) dim={} effectDuration={} effectAmbient={} effectVisible={} nearbyDimensionalTears={}", - mob.getType(), mob.getUUID(), mob.getX(), mob.getY(), mob.getZ(), - mob.level() != null ? mob.level().dimension().location() : "?", - invertedEffect.getDuration(), invertedEffect.isAmbient(), invertedEffect.isVisible(), nearbyDimensionalTears - ); - return; - } - com.craisinlord.antarchy.Antarchy.LOGGER.info( - "[antarchy-gravity] loaded inverted mob type={} uuid={} pos=({}, {}, {}) dim={} hasInvertedEffect={} effectDuration={} effectAmbient={} effectVisible={} aboveUndersideExit={} nearbyDimensionalTears={}", - mob.getType(), mob.getUUID(), mob.getX(), mob.getY(), mob.getZ(), - mob.level() != null ? mob.level().dimension().location() : "?", - invertedEffect != null, - invertedEffect != null ? invertedEffect.getDuration() : -1, - invertedEffect != null && invertedEffect.isAmbient(), - invertedEffect != null && invertedEffect.isVisible(), - aboveUndersideExit, - nearbyDimensionalTears - ); - } - } - - @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; - } - - entity.resetFallDistance(); - } - - @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() instanceof Mob mob) { - // Any existing path is expressed in the previous gravity frame. - // Keep goals from following stale nodes after a flip. - mob.getNavigation().stop(); - } - if (changed && !this.antarchy$entity().level().isClientSide) { - AntarchyGravityApi.notifyGravityStateChanged(this.antarchy$entity()); - } - } - - @Override - public void antarchy$setAirborneGravityState(AntarchyGravityDirection direction, boolean forced, AntarchyGravityTransition transition) { - Entity entity = this.antarchy$entity(); - net.minecraft.world.phys.Vec3 worldVelocity = AntarchyGravityApi.getWorldVelocity(entity); - this.antarchy$setGravityState(direction, forced, transition); - AntarchyGravityApi.setWorldVelocity(entity, worldVelocity); - entity.setOnGround(false); - entity.resetFallDistance(); - } - - @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$clearLoadedInversion(Mob mob) { - mob.removeEffect(com.craisinlord.antarchy.content.AntarchyObjects.INVERTED_EFFECT.get()); - this.antarchy$gravityDirection = AntarchyGravityDirection.DOWN; - this.antarchy$prevGravityDirection = AntarchyGravityDirection.DOWN; - this.antarchy$gravityForced = false; - this.antarchy$gravityTransitionDuration = 0; - this.antarchy$gravityTransitionRemaining = 0; - this.antarchy$refreshGravityBounds(); - } - - @Unique - private int antarchy$countNearbyDimensionalTears(Mob mob) { - if (!(mob.level() instanceof ServerLevel serverLevel)) { - return -1; - } - return serverLevel.getEntitiesOfClass( - DimensionalTearEntity.class, - mob.getBoundingBox().inflate(48.0D), - Entity::isAlive - ).size(); - } - - @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; - } - - return -worldY; - } - - @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.fluid.AntarchyFluidChecks.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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMountedGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMountedGravityMixin.java index 80ce21d1..c32977e3 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMountedGravityMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMountedGravityMixin.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.mixins.gravity; -import com.craisinlord.antarchy.content.gravity.AntarchyMountedGravityHelper; +import com.craisinlord.anthology.gravity.MountedGravityHelper; import net.minecraft.world.entity.Entity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -17,7 +17,7 @@ public abstract class EntityMountedGravityMixin { @Inject(method = "startRiding(Lnet/minecraft/world/entity/Entity;Z)Z", at = @At("RETURN")) private void antarchy$syncMountedStack(Entity vehicle, boolean force, CallbackInfoReturnable cir) { if (cir.getReturnValueZ()) { - AntarchyMountedGravityHelper.syncConnectedStack((Entity) (Object) this); + MountedGravityHelper.syncConnectedStack((Entity) (Object) this); } } @@ -28,7 +28,7 @@ public abstract class EntityMountedGravityMixin { @Inject(method = "stopRiding", at = @At("TAIL")) private void antarchy$syncDismountedStacks(CallbackInfo ci) { - AntarchyMountedGravityHelper.syncSeparatedStacks(this.antarchy$previousVehicle, (Entity) (Object) this); + MountedGravityHelper.syncSeparatedStacks(this.antarchy$previousVehicle, (Entity) (Object) this); this.antarchy$previousVehicle = null; } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java deleted file mode 100644 index 152c4e41..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityMoveMixin.java +++ /dev/null @@ -1,374 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; -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 java.util.List; -import java.util.TreeSet; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.MoverType; -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 net.minecraft.world.phys.shapes.VoxelShape; -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.ModifyArgs; -import org.spongepowered.asm.mixin.injection.ModifyVariable; -import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.invoke.arg.Args; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(Entity.class) -/* - * Fixes move/landing logic that assumes down is always down. - */ -public abstract class EntityMoveMixin { - @Unique - private static final Logger ANTARCHY_STEP_LOGGER = LoggerFactory.getLogger("Antarchy/GravityStep"); - @Unique - private boolean antarchy$loggedInvertedCollide; - @Unique - private boolean antarchy$loggedHorizontalBlock; - @Unique - private boolean antarchy$loggedInvertedMove; - @Unique - private double antarchy$lastWorldMoveY = 0.0; - @Unique - private double antarchy$lastPlayerMoveY = 0.0; - @Unique - private AABB antarchy$moveStartBox; - @Unique - private Vec3 antarchy$collideWorldMovement = Vec3.ZERO; - - @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; - if (AntarchyGravityApi.isGravityInverted(entity) && !this.antarchy$loggedInvertedMove) { - this.antarchy$loggedInvertedMove = true; - ANTARCHY_STEP_LOGGER.warn( - "Inverted move entered: entity={} movement={} noPhysics={} onGround={} box={}", - entity.getClass().getSimpleName(), movement, entity.noPhysics, entity.onGround(), entity.getBoundingBox()); - } - } - - @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)) { - entity.resetFallDistance(); - } - } - - if (!entity.verticalCollision) return; - boolean landedOnCeiling = this.antarchy$lastWorldMoveY > 0.0; - entity.verticalCollisionBelow = landedOnCeiling; - if (landedOnCeiling) { - entity.setOnGround(true); - } - } - - @Inject(method = "collide", at = @At("HEAD")) - private void antarchy$captureCollideWorldMovement(Vec3 movement, CallbackInfoReturnable cir) { - this.antarchy$collideWorldMovement = movement; - Entity entity = (Entity) (Object) this; - if (AntarchyGravityApi.isGravityInverted(entity) && !this.antarchy$loggedInvertedCollide) { - this.antarchy$loggedInvertedCollide = true; - ANTARCHY_STEP_LOGGER.warn( - "Inverted collide entered: entity={} movement={} onGround={} maxUpStep={} box={}", - entity.getClass().getSimpleName(), movement, entity.onGround(), entity.maxUpStep(), entity.getBoundingBox()); - } - } - - /* - * Keep vanilla's step algorithm in player-local coordinates. Its Y tests, - * candidate heights and maxUpStep are all defined in that frame. Only the - * physical AABB operations and low-level shape collision belong in world - * coordinates. - */ - @ModifyVariable( - method = "collide", - at = @At( - value = "INVOKE_ASSIGN", - target = "Lnet/minecraft/world/level/Level;getEntityCollisions(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;", - ordinal = 0 - ), - ordinal = 0 - ) - private Vec3 antarchy$collideWorldToPlayer(Vec3 movement) { - Entity entity = (Entity) (Object) this; - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); - if (!direction.isInverted()) { - return movement; - } - return AntarchyGravityRotationUtil.vecWorldToPlayer(movement, direction); - } - - @ModifyArgs( - method = "collide", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/phys/AABB;expandTowards(DDD)Lnet/minecraft/world/phys/AABB;" - ) - ) - private void antarchy$expandStepSearchInWorldFrame(Args args) { - Entity entity = (Entity) (Object) this; - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); - if (!direction.isInverted()) { - return; - } - Vec3 world = AntarchyGravityRotationUtil.vecPlayerToWorld( - new Vec3(args.get(0), args.get(1), args.get(2)), direction); - args.set(0, world.x); - args.set(1, world.y); - args.set(2, world.z); - } - - @ModifyArgs( - method = "collide", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/phys/AABB;move(DDD)Lnet/minecraft/world/phys/AABB;" - ) - ) - private void antarchy$moveStepBoxInWorldFrame(Args args) { - Entity entity = (Entity) (Object) this; - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); - if (!direction.isInverted()) { - return; - } - Vec3 world = AntarchyGravityRotationUtil.vecPlayerToWorld( - new Vec3(args.get(0), args.get(1), args.get(2)), direction); - args.set(0, world.x); - args.set(1, world.y); - args.set(2, world.z); - } - - @WrapOperation( - method = "collide", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/entity/Entity;collideBoundingBox(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/AABB;Lnet/minecraft/world/level/Level;Ljava/util/List;)Lnet/minecraft/world/phys/Vec3;" - ) - ) - private Vec3 antarchy$collideBoundingBoxInLocalFrame( - Entity collisionEntity, - Vec3 localMovement, - AABB box, - Level level, - List collisions, - Operation original - ) { - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(collisionEntity); - if (!direction.isInverted()) { - return original.call(collisionEntity, localMovement, box, level, collisions); - } - Vec3 worldMovement = AntarchyGravityRotationUtil.vecPlayerToWorld(localMovement, direction); - Vec3 worldResult = original.call(collisionEntity, worldMovement, box, level, collisions); - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldResult, direction); - } - - /* - * Vanilla uses collideWithShapes directly for each step-height candidate, - * bypassing collideBoundingBox. At this point collide() is operating in the - * gravity-local frame, so leaving this call untouched makes an inverted - * entity test the candidate in the opposite horizontal and vertical world - * directions. The candidate consequently never beats the blocked movement. - */ - @WrapOperation( - method = "collide", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/entity/Entity;collideWithShapes(Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/AABB;Ljava/util/List;)Lnet/minecraft/world/phys/Vec3;" - ) - ) - private Vec3 antarchy$collideStepCandidateInLocalFrame( - Vec3 localMovement, - AABB box, - List collisions, - Operation original - ) { - Entity entity = (Entity) (Object) this; - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); - if (!direction.isInverted()) { - return original.call(localMovement, box, collisions); - } - Vec3 worldMovement = AntarchyGravityRotationUtil.vecPlayerToWorld(localMovement, direction); - Vec3 worldResult = original.call(worldMovement, box, collisions); - return AntarchyGravityRotationUtil.vecWorldToPlayer(worldResult, direction); - } - - @Redirect( - method = "collide", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/entity/Entity;collectCandidateStepUpHeights(Lnet/minecraft/world/phys/AABB;Ljava/util/List;FF)[F" - ) - ) - private float[] antarchy$collectGravityAwareStepHeights( - AABB box, List shapes, float maxStep, float currentY) { - Entity entity = (Entity) (Object) this; - boolean inverted = AntarchyGravityApi.isGravityInverted(entity); - TreeSet heights = new TreeSet<>(); - for (VoxelShape shape : shapes) { - for (double coord : shape.getCoords(Direction.Axis.Y)) { - float height = (float) (inverted ? box.maxY - coord : coord - box.minY); - if (height >= 0.0F && height != currentY && height <= maxStep) { - heights.add(height); - } - } - } - float[] result = new float[heights.size()]; - int i = 0; - for (float height : heights) { - result[i++] = height; - } - return result; - } - - @Redirect( - method = "collide", - at = @At(value = "FIELD", target = "Lnet/minecraft/world/phys/AABB;minY:D") - ) - private double antarchy$readLocalStepBase(AABB box) { - Entity entity = (Entity) (Object) this; - if (!AntarchyGravityApi.isGravityInverted(entity)) { - return box.minY; - } - return -box.maxY; - } - - @Inject(method = "collide", at = @At("RETURN"), cancellable = true) - private void antarchy$collidePlayerToWorld(Vec3 movement, CallbackInfoReturnable cir) { - Entity entity = (Entity) (Object) this; - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); - if (!direction.isInverted()) { - return; - } - Vec3 worldResult = AntarchyGravityRotationUtil.vecPlayerToWorld(cir.getReturnValue(), direction); - Vec3 localMovement = AntarchyGravityRotationUtil.vecWorldToPlayer(this.antarchy$collideWorldMovement, direction); - if (!this.antarchy$loggedHorizontalBlock - && (localMovement.x != cir.getReturnValue().x || localMovement.z != cir.getReturnValue().z)) { - this.antarchy$loggedHorizontalBlock = true; - ANTARCHY_STEP_LOGGER.warn( - "Inverted horizontal block: localMovement={} localResult={} worldMovement={} worldResult={} onGround={} maxUpStep={} box={}", - localMovement, cir.getReturnValue(), this.antarchy$collideWorldMovement, worldResult, - entity.onGround(), entity.maxUpStep(), entity.getBoundingBox()); - } - // Portal-gun collision restoration is temporarily disabled. It can - // recurse through Sable's collision redirect and hang the server. - cir.setReturnValue(worldResult); - } - - @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 (AntarchyFluidChecks.isAntiwater(fluidState)) { - return true; - } - } - } - } - return false; - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityProjectileGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityProjectileGravityMixin.java deleted file mode 100644 index aa39bafd..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/EntityProjectileGravityMixin.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.Projectile; -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) -/* - * Entity declares applyGravity in 1.21.1. Restrict the reversed acceleration to - * projectiles that are physically inside the Thoraxis Underside. - */ -public abstract class EntityProjectileGravityMixin { - - @Inject(method = "applyGravity", at = @At("HEAD"), cancellable = true) - private void antarchy$applyProjectileGravityUpward(CallbackInfo ci) { - Entity self = (Entity) (Object) this; - if (!(self instanceof Projectile projectile)) { - return; - } - if (projectile.isNoGravity()) { - return; - } - - boolean inverted = AntarchyGravityApi.isGravityInverted(projectile); - if (!inverted && projectile.getOwner() != null) { - inverted = AntarchyGravityApi.isGravityInverted(projectile.getOwner()); - } - if (!inverted && !ThoraxisUndersideManager.isInUnderside(projectile)) { - return; - } - - projectile.setDeltaMovement( - projectile.getDeltaMovement().add(0.0D, projectile.getGravity(), 0.0D) - ); - ci.cancel(); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ExplosionGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ExplosionGravityMixin.java deleted file mode 100644 index e2dcb868..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ExplosionGravityMixin.java +++ /dev/null @@ -1,42 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/FireworkRocketGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/FireworkRocketGravityMixin.java deleted file mode 100644 index 6bf1410d..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/FireworkRocketGravityMixin.java +++ /dev/null @@ -1,29 +0,0 @@ -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.LivingEntity; -import net.minecraft.world.entity.projectile.FireworkRocketEntity; -import net.minecraft.world.item.Item; -import net.minecraft.world.phys.Vec3; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(FireworkRocketEntity.class) -public abstract class FireworkRocketGravityMixin { - - @WrapOperation(method = "tick", - at = @At(value = "INVOKE", - target = "Lnet/minecraft/world/entity/LivingEntity;getHandHoldingItemAngle(Lnet/minecraft/world/item/Item;)Lnet/minecraft/world/phys/Vec3;")) - private Vec3 antarchy$rotateAttachedRocketOffset(LivingEntity entity, Item item, Operation original) { - Vec3 offset = original.call(entity, item); - AntarchyGravityDirection direction = AntarchyGravityApi.getGravityDirection(entity); - if (!direction.isInverted()) { - return offset; - } - return AntarchyGravityRotationUtil.vecPlayerToWorld(offset, direction); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/GroundPathNavigationMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/GroundPathNavigationMixin.java deleted file mode 100644 index 6442a003..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/GroundPathNavigationMixin.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.gravity.GravityWalkNodeEvaluator; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.entity.EntityDimensions; -import net.minecraft.world.entity.Pose; -import net.minecraft.world.entity.Mob; -import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; -import net.minecraft.world.level.pathfinder.NodeEvaluator; -import net.minecraft.world.level.pathfinder.PathFinder; -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(GroundPathNavigation.class) -public abstract class GroundPathNavigationMixin { - @Inject(method = "createPathFinder", at = @At("HEAD"), cancellable = true) - private void antarchy$useGravityEvaluator(int maxVisitedNodes, CallbackInfoReturnable cir) { - var accessor = (PathNavigationAccessor) (Object) this; - NodeEvaluator evaluator = new GravityWalkNodeEvaluator(); - // GroundPathNavigation enables door passing on its vanilla evaluator. - // Preserve that setting when swapping in the gravity-aware evaluator. - evaluator.setCanPassDoors(true); - accessor.antarchy$setNodeEvaluator(evaluator); - cir.setReturnValue(new PathFinder(evaluator, maxVisitedNodes)); - } - - /** - * GroundPathNavigation normalizes entity destinations toward the floor - * before delegating to PathNavigation. For inverted mobs, replace that - * final destination with a bounded, collision-free ceiling anchor. - */ - @org.spongepowered.asm.mixin.injection.ModifyArg( - method = "createPath(Lnet/minecraft/core/BlockPos;I)Lnet/minecraft/world/level/pathfinder/Path;", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/entity/ai/navigation/PathNavigation;createPath(Lnet/minecraft/core/BlockPos;I)Lnet/minecraft/world/level/pathfinder/Path;" - ), - index = 0 - ) - private BlockPos antarchy$projectInvertedDestination(BlockPos normalizedDestination) { - Mob mob = ((PathNavigationAccessor) (Object) this).antarchy$getMob(); - if (!AntarchyGravityApi.isGravityInverted(mob)) { - return normalizedDestination; - } - - EntityDimensions dimensions = mob.getDimensions(mob.getPose()); - int centerX = normalizedDestination.getX(); - int centerZ = normalizedDestination.getZ(); - int baseY = normalizedDestination.getY(); - int minY = Math.max(mob.level().getMinBuildHeight(), baseY - 32); - int maxY = Math.min(mob.level().getMaxBuildHeight() - 2, baseY + 32); - for (int candidateY = baseY; candidateY <= maxY; candidateY++) { - BlockPos support = new BlockPos(centerX, candidateY + 1, centerZ); - if (!mob.level().getBlockState(support).isFaceSturdy(mob.level(), support, Direction.DOWN)) { - continue; - } - - double topY = candidateY + 1.0D - 1.0E-3D; - double halfWidth = dimensions.width() / 2.0D; - AABB body = new AABB( - centerX + 0.5D - halfWidth, - topY - dimensions.height(), - centerZ + 0.5D - halfWidth, - centerX + 0.5D + halfWidth, - topY, - centerZ + 0.5D + halfWidth - ).deflate(1.0E-4D); - if (mob.level().noCollision(mob, body)) { - return new BlockPos(centerX, candidateY, centerZ); - } - } - - return normalizedDestination; - } - - @Inject(method = "getTempMobPos", at = @At("HEAD"), cancellable = true) - private void antarchy$useInvertedMobAnchor(CallbackInfoReturnable cir) { - Mob mob = ((PathNavigationAccessor) (Object) this).antarchy$getMob(); - if (AntarchyGravityApi.isGravityInverted(mob)) { - cir.setReturnValue(new Vec3(mob.getX(), mob.getY(), mob.getZ())); - } - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java deleted file mode 100644 index 5e78fa97..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/LivingEntityMixin.java +++ /dev/null @@ -1,297 +0,0 @@ -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.fluid.AntarchyFluidChecks; -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 (AntarchyFluidChecks.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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MeleeAttackGoalGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MeleeAttackGoalGravityMixin.java deleted file mode 100644 index d69998dc..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MeleeAttackGoalGravityMixin.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.PathfinderMob; -import net.minecraft.world.entity.ai.goal.MeleeAttackGoal; -import net.minecraft.world.entity.player.Player; -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 org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(MeleeAttackGoal.class) -public abstract class MeleeAttackGoalGravityMixin { - @Shadow - @Final - protected PathfinderMob mob; - - @Shadow - @Final - private double speedModifier; - - @Shadow - @Final - private boolean followingTargetEvenIfNotSeen; - - @Shadow - private int ticksUntilNextAttack; - - @Shadow - protected abstract void checkAndPerformAttack(LivingEntity enemy); - - @Inject(method = "canUse", at = @At("HEAD"), cancellable = true) - private void antarchy$useInvertedMelee(CallbackInfoReturnable cir) { - if (!AntarchyGravityApi.isGravityInverted(this.mob)) { - return; - } - - LivingEntity target = this.mob.getTarget(); - cir.setReturnValue(this.antarchy$isValidInvertedMeleeTarget(target)); - } - - @Inject(method = "canContinueToUse", at = @At("HEAD"), cancellable = true) - private void antarchy$continueInvertedMelee(CallbackInfoReturnable cir) { - if (!AntarchyGravityApi.isGravityInverted(this.mob)) { - return; - } - - LivingEntity target = this.mob.getTarget(); - cir.setReturnValue(this.antarchy$isValidInvertedMeleeTarget(target)); - } - - @Inject(method = "start", at = @At("HEAD"), cancellable = true) - private void antarchy$startInvertedMelee(CallbackInfo ci) { - if (!AntarchyGravityApi.isGravityInverted(this.mob)) { - return; - } - - LivingEntity target = this.mob.getTarget(); - this.mob.getNavigation().stop(); - this.mob.setAggressive(true); - this.ticksUntilNextAttack = 0; - ci.cancel(); - } - - @Inject(method = "tick", at = @At("HEAD"), cancellable = true) - private void antarchy$tickInvertedMelee(CallbackInfo ci) { - if (!AntarchyGravityApi.isGravityInverted(this.mob)) { - return; - } - - LivingEntity target = this.mob.getTarget(); - if (!this.antarchy$isValidInvertedMeleeTarget(target)) { - this.mob.getNavigation().stop(); - ci.cancel(); - return; - } - - this.mob.getLookControl().setLookAt(target, 30.0F, 30.0F); - // Do not call PathNavigation.moveTo here: that starts the unsafe vanilla - // path acquisition path. MoveControl receives a world-space target and - // the gravity movement mixin converts it into the inverted frame. - this.mob.getMoveControl().setWantedPosition(target.getX(), target.getY(), target.getZ(), this.speedModifier); - this.ticksUntilNextAttack = Math.max(0, this.ticksUntilNextAttack - 1); - this.checkAndPerformAttack(target); - ci.cancel(); - } - - private boolean antarchy$isValidInvertedMeleeTarget(LivingEntity target) { - if (target == null || !target.isAlive()) { - return false; - } - if (this.followingTargetEvenIfNotSeen && !this.mob.isWithinRestriction(target.blockPosition())) { - return false; - } - return !(target instanceof Player player) || (!player.isSpectator() && !player.isCreative()); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MobHurtMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MobHurtMixin.java deleted file mode 100644 index 5649f57d..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MobHurtMixin.java +++ /dev/null @@ -1,26 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MoveControlGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MoveControlGravityMixin.java deleted file mode 100644 index 60116734..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/MoveControlGravityMixin.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; -import net.minecraft.world.entity.Mob; -import net.minecraft.world.entity.ai.control.MoveControl; -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.callback.CallbackInfo; - -@Mixin(MoveControl.class) -public abstract class MoveControlGravityMixin { - @Shadow - @Final - protected Mob mob; - - @Shadow - protected double wantedX; - - @Shadow - protected double wantedY; - - @Shadow - protected double wantedZ; - - @Shadow - protected double speedModifier; - - @Inject(method = "setWantedPosition", at = @At("TAIL")) - private void antarchy$convertInvertedWantedPosition(double x, double y, double z, double speed, CallbackInfo ci) { - if (!AntarchyGravityApi.isGravityInverted(this.mob)) { - return; - } - - Vec3 worldOffset = new Vec3(x - this.mob.getX(), y - this.mob.getY(), z - this.mob.getZ()); - Vec3 localOffset = AntarchyGravityRotationUtil.vecWorldToPlayer( - worldOffset, - AntarchyGravityApi.getGravityDirection(this.mob)); - this.wantedX = this.mob.getX() + localOffset.x; - this.wantedY = this.mob.getY() + localOffset.y; - this.wantedZ = this.mob.getZ() + localOffset.z; - this.speedModifier = speed; - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PathNavigationAccessor.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PathNavigationAccessor.java deleted file mode 100644 index f7bdcedc..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PathNavigationAccessor.java +++ /dev/null @@ -1,23 +0,0 @@ -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.NodeEvaluator; -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(); - - @Accessor("nodeEvaluator") - void antarchy$setNodeEvaluator(NodeEvaluator nodeEvaluator); -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerGravityMixin.java deleted file mode 100644 index dd2d76f3..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerGravityMixin.java +++ /dev/null @@ -1,91 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerPoseFitMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerPoseFitMixin.java deleted file mode 100644 index 64040e22..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerPoseFitMixin.java +++ /dev/null @@ -1,37 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerSneakMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerSneakMixin.java deleted file mode 100644 index a854d195..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerSneakMixin.java +++ /dev/null @@ -1,100 +0,0 @@ -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.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 { - - @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; - } - } - - 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; - - 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; - } - - 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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ProjectileGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ProjectileGravityMixin.java deleted file mode 100644 index eea80ce1..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ProjectileGravityMixin.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.ProjectileLaunchGravity; -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import com.llamalad7.mixinextras.sugar.Local; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.projectile.Projectile; -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(Projectile.class) -/* - * Keeps projectile movement in world space while reversing gravity and launch - * direction only inside the Thoraxis Underside. - */ -public abstract class ProjectileGravityMixin { - - @Inject(method = "shootFromRotation", at = @At("HEAD")) - private void antarchy$prepareGravityAwareShot( - Entity shooter, - float xRot, - float yRot, - float rotationOffset, - float velocity, - float inaccuracy, - CallbackInfo ci - ) { - ThoraxisUndersideManager.normalizeProjectileGravityFrame((Projectile) (Object) this); - } - - @Inject(method = "tick", at = @At("HEAD")) - private void antarchy$keepWorldMovementFrame(CallbackInfo ci) { - ThoraxisUndersideManager.normalizeProjectileGravityFrame((Projectile) (Object) this); - } - - @WrapOperation( - method = "shootFromRotation", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/entity/projectile/Projectile;shoot(DDDFF)V" - ) - ) - private void antarchy$rotateUndersideLaunchDirection( - Projectile projectile, - double x, - double y, - double z, - float velocity, - float inaccuracy, - Operation original, - @Local(argsOnly = true) Entity shooter - ) { - Vec3 direction = new Vec3(x, y, z); - if (AntarchyGravityApi.isGravityInverted(shooter)) { - direction = ProjectileLaunchGravity.toWorld( - direction, - AntarchyGravityApi.getGravityDirection(shooter) - ); - } - original.call(projectile, direction.x, direction.y, direction.z, velocity, inaccuracy); - } - -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/RandomStrollGoalGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/RandomStrollGoalGravityMixin.java deleted file mode 100644 index a82324be..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/RandomStrollGoalGravityMixin.java +++ /dev/null @@ -1,161 +0,0 @@ -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.util.Mth; -import net.minecraft.world.entity.PathfinderMob; -import net.minecraft.world.entity.Pose; -import net.minecraft.world.entity.ai.goal.RandomStrollGoal; -import net.minecraft.world.entity.EntityDimensions; -import net.minecraft.world.level.Level; -import net.minecraft.world.phys.AABB; -import org.spongepowered.asm.mixin.Final; -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.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(RandomStrollGoal.class) -public abstract class RandomStrollGoalGravityMixin { - @Unique - private static final int ANTARCHY$INVERTED_STROLL_ATTEMPTS = 12; - @Unique - private static final int ANTARCHY$INVERTED_STROLL_HORIZONTAL_RANGE = 7; - @Unique - private static final int ANTARCHY$INVERTED_STROLL_VERTICAL_RANGE = 2; - - @Shadow - @Final - protected PathfinderMob mob; - - @Shadow - protected double wantedX; - - @Shadow - protected double wantedY; - - @Shadow - protected double wantedZ; - - @Shadow - @Final - protected double speedModifier; - - @Shadow - protected int interval; - - @Shadow - protected boolean forceTrigger; - - @Shadow - @Final - private boolean checkNoActionTime; - - @Unique - private int antarchy$invertedStrollTicks; - - @Inject(method = "canUse", at = @At("HEAD"), cancellable = true) - private void antarchy$useInvertedRandomStroll(CallbackInfoReturnable cir) { - if (!AntarchyGravityApi.isGravityInverted(this.mob)) { - return; - } - - if (this.mob.hasControllingPassenger()) { - cir.setReturnValue(false); - return; - } - - if (!this.forceTrigger) { - if (this.checkNoActionTime && this.mob.getNoActionTime() >= 100) { - cir.setReturnValue(false); - return; - } - int chance = Math.max(1, this.interval); - if (this.mob.getRandom().nextInt(chance) != 0) { - cir.setReturnValue(false); - return; - } - } - - cir.setReturnValue(this.antarchy$findInvertedStrollTarget()); - } - - @Inject(method = "start", at = @At("HEAD"), cancellable = true) - private void antarchy$startInvertedRandomStroll(CallbackInfo ci) { - if (!AntarchyGravityApi.isGravityInverted(this.mob)) { - return; - } - - this.mob.getNavigation().stop(); - this.mob.getMoveControl().setWantedPosition(this.wantedX, this.wantedY, this.wantedZ, this.speedModifier); - this.antarchy$invertedStrollTicks = 0; - this.forceTrigger = false; - ci.cancel(); - } - - @Inject(method = "canContinueToUse", at = @At("HEAD"), cancellable = true) - private void antarchy$continueInvertedRandomStroll(CallbackInfoReturnable cir) { - if (!AntarchyGravityApi.isGravityInverted(this.mob)) { - return; - } - - double dx = this.wantedX - this.mob.getX(); - double dy = this.wantedY - this.mob.getY(); - double dz = this.wantedZ - this.mob.getZ(); - boolean arrived = dx * dx + dy * dy + dz * dz <= 1.0D; - boolean timedOut = this.antarchy$invertedStrollTicks++ >= 200; - if (!arrived && !timedOut && !this.mob.hasControllingPassenger()) { - // RandomStrollGoal inherits Goal.tick(), so continuation is the - // declared per-tick hook available for refreshing direct movement. - this.mob.getMoveControl().setWantedPosition(this.wantedX, this.wantedY, this.wantedZ, this.speedModifier); - } - cir.setReturnValue(!this.mob.hasControllingPassenger() && !arrived && !timedOut); - } - - @Unique - private boolean antarchy$findInvertedStrollTarget() { - int baseX = Mth.floor(this.mob.getX()); - int baseY = Mth.floor(this.mob.getY() + this.mob.getBbHeight()) - 1; - int baseZ = Mth.floor(this.mob.getZ()); - - for (int attempt = 0; attempt < ANTARCHY$INVERTED_STROLL_ATTEMPTS; attempt++) { - int x = baseX + this.mob.getRandom().nextInt(ANTARCHY$INVERTED_STROLL_HORIZONTAL_RANGE * 2 + 1) - ANTARCHY$INVERTED_STROLL_HORIZONTAL_RANGE; - int y = baseY + this.mob.getRandom().nextInt(ANTARCHY$INVERTED_STROLL_VERTICAL_RANGE * 2 + 1) - ANTARCHY$INVERTED_STROLL_VERTICAL_RANGE; - int z = baseZ + this.mob.getRandom().nextInt(ANTARCHY$INVERTED_STROLL_HORIZONTAL_RANGE * 2 + 1) - ANTARCHY$INVERTED_STROLL_HORIZONTAL_RANGE; - if (this.antarchy$isValidInvertedStrollTarget(x, y, z)) { - this.wantedX = x + 0.5D; - this.wantedY = y + 1.0D - 1.0E-3D; - this.wantedZ = z + 0.5D; - return true; - } - } - - return false; - } - - @Unique - private boolean antarchy$isValidInvertedStrollTarget(int x, int y, int z) { - Level level = this.mob.level(); - BlockPos ceilingPos = new BlockPos(x, y + 1, z); - if (!level.getBlockState(ceilingPos).isFaceSturdy(level, ceilingPos, Direction.DOWN)) { - return false; - } - - EntityDimensions dimensions = this.mob.getDimensions(Pose.STANDING); - double halfWidth = dimensions.width() / 2.0D; - double topY = y + 1.0D - 1.0E-3D; - AABB bodyBox = new AABB( - x + 0.5D - halfWidth, - topY - dimensions.height(), - z + 0.5D - halfWidth, - x + 0.5D + halfWidth, - topY, - z + 0.5D + halfWidth - ).deflate(1.0E-4D); - return level.noCollision(this.mob, bodyBox); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerGamePacketListenerMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerGamePacketListenerMixin.java deleted file mode 100644 index 80622200..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerGamePacketListenerMixin.java +++ /dev/null @@ -1,82 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java deleted file mode 100644 index 70629df2..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ServerPlayerGravityMixin.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; -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 (AntarchyFluidChecks.isAntiwater(fluidState)) { - return true; - } - } - } - } - return false; - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ThrowableProjectileGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ThrowableProjectileGravityMixin.java deleted file mode 100644 index e4aa87f1..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/ThrowableProjectileGravityMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity; - -import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import net.minecraft.world.entity.projectile.ThrowableProjectile; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(ThrowableProjectile.class) -/* - * Flips thrown projectile gravity from the projectile's current position. - */ -public abstract class ThrowableProjectileGravityMixin { - - @WrapOperation(method = "tick", at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/entity/projectile/ThrowableProjectile;applyGravity()V")) - private void antarchy$applyThrownProjectileGravityUpward(ThrowableProjectile self, Operation original) { - if (!ThoraxisUndersideManager.isInUnderside(self)) { - original.call(self); - return; - } - // Vanilla subtracts gravity from world Y; the Underside adds it instead. - double gravity = self.getGravity(); - self.setDeltaMovement(self.getDeltaMovement().add(0.0D, gravity, 0.0D)); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java deleted file mode 100644 index 42ccba3a..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/CameraGravityMixin.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity.client; - -import com.craisinlord.antarchy.content.client.PortalGunRollClientState; -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) -public abstract class CameraGravityMixin { - @Shadow - private Entity entity; - - @Shadow - private Quaternionf rotation; - - @Shadow - private float eyeHeight; - - @Shadow - private float eyeHeightOld; - - private float antarchy$storedTickDelta; - - @Shadow - protected abstract void setPosition(double x, double y, double z); - - @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; - } - - @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() - ); - } - - @Inject( - method = "setRotation", - at = @At(value = "INVOKE", target = "Lorg/joml/Quaternionf;rotationYXZ(FFF)Lorg/joml/Quaternionf;", shift = At.Shift.AFTER) - ) - private void antarchy$applyGravityRotation(CallbackInfo ci) { - if (this.entity == null) { - return; - } - if (AntarchyGravityApi.isGravityInverted(this.entity) || AntarchyGravityApi.getGravityFlipProgress(this.entity, this.antarchy$storedTickDelta) > 0.0F) { - this.rotation.premul(AntarchyGravityRotationUtil.getCameraRotationQuaternion(this.entity, this.antarchy$storedTickDelta)); - } - this.rotation.premul(new Quaternionf().fromAxisAngleDeg(0.0F, 0.0F, -1.0F, PortalGunRollClientState.getRollDegrees(this.antarchy$storedTickDelta))); - } -} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/ClientPacketListenerGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/ClientPacketListenerGravityMixin.java deleted file mode 100644 index 9afe4f83..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/ClientPacketListenerGravityMixin.java +++ /dev/null @@ -1,38 +0,0 @@ -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-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/EntityRenderDispatcherGravityMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/EntityRenderDispatcherGravityMixin.java deleted file mode 100644 index 057577a5..00000000 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/client/EntityRenderDispatcherGravityMixin.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.craisinlord.antarchy.mixins.gravity.client; - -import com.craisinlord.antarchy.Antarchy; -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 { - @org.spongepowered.asm.mixin.Unique - private static boolean antarchy$loggedGravityRenderFailure; - - @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 - ) { - try { - float flipProgress = AntarchyGravityApi.getGravityFlipProgress(entity, partialTick); - if (!AntarchyGravityApi.isGravityInverted(entity) && flipProgress <= 0.0F) { - return; - } - - poseStack.mulPose(AntarchyGravityRotationUtil.getCameraRotationQuaternion(entity, partialTick)); - } catch (Throwable throwable) { - antarchy$logGravityRenderFailure(entity, throwable); - } - } - - @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 - ) { - try { - if (!AntarchyGravityApi.isGravityInverted(entity)) { - return box; - } - - return AntarchyGravityRotationUtil.boxWorldToPlayer( - box, - AntarchyGravityApi.getGravityDirection(entity) - ); - } catch (Throwable throwable) { - antarchy$logGravityRenderFailure(entity, throwable); - return box; - } - } - - @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); - try { - if (!AntarchyGravityApi.isGravityInverted(entity)) { - return viewVector; - } - - return AntarchyGravityRotationUtil.vecWorldToPlayer( - viewVector, - AntarchyGravityApi.getGravityDirection(entity) - ); - } catch (Throwable throwable) { - antarchy$logGravityRenderFailure(entity, throwable); - return viewVector; - } - } - - @org.spongepowered.asm.mixin.Unique - private static void antarchy$logGravityRenderFailure(Entity entity, Throwable throwable) { - if (antarchy$loggedGravityRenderFailure) { - return; - } - - antarchy$loggedGravityRenderFailure = true; - Antarchy.LOGGER.error("Disabling Antarchy gravity render adjustments after a client render failure on entity {}", entity, throwable); - } -} diff --git a/common-1.21.1/src/main/resources/antarchy-common.mixins.json b/common-1.21.1/src/main/resources/antarchy-common.mixins.json index 8aff0c03..b3b9de57 100644 --- a/common-1.21.1/src/main/resources/antarchy-common.mixins.json +++ b/common-1.21.1/src/main/resources/antarchy-common.mixins.json @@ -72,49 +72,13 @@ "SquidzookaMultishotMixin", "TigerEyeCamouflageMixin", "TigerEyeVisibilityMixin", - "gravity.AbstractArrowGravityMixin", - "gravity.BehaviorUtilsGravityMixin", - "gravity.BucketItemGravityMixin", - "gravity.BubbleColumnGravityMixin", "gravity.ChunkMapAccessor", - "gravity.CrossbowItemGravityMixin", - "gravity.DirectionFacingMixin", - "gravity.EntityCollisionContextMixin", - "gravity.EntityGravityFrameMixin", - "gravity.EntityGravityMixin", - "gravity.EntityMoveMixin", - "gravity.EntityProjectileGravityMixin", - "gravity.ExplosionGravityMixin", "gravity.FallingBlockEntityBlockDataMixin", - "gravity.FireworkRocketGravityMixin", - "gravity.GroundPathNavigationMixin", - "gravity.LivingEntityMixin", - "gravity.MeleeAttackGoalGravityMixin", - "gravity.MoveControlGravityMixin", - "gravity.MobHurtMixin", - "gravity.PathNavigationAccessor", "gravity.PlayerAttackMixin", - "gravity.PlayerGravityMixin", - "gravity.PlayerPoseFitMixin", - "gravity.PlayerSneakMixin", - "gravity.RandomStrollGoalGravityMixin", - "gravity.ProjectileGravityMixin", "gravity.ServerChunkCacheAccessor", "gravity.ServerEntityAccessor", - "gravity.ServerGamePacketListenerMixin", - "gravity.ServerPlayerGravityMixin", - "gravity.ThrowableProjectileGravityMixin", "gravity.TrackedEntityAccessor", "compat.biolith.MultiNoiseBiomeSourceNullGuardMixin", - "compat.scguns.ScgunsProjectileEntityAccessMixin", - "compat.scguns.ScgunsProjectileEntityGravityMixin", - "compat.scguns.ScgunsArrowGravityMixin", - "compat.irons_spellbooks.IronsSpellbooksProjectileGravityMixin", - "compat.ars_nouveau.ArsNouveauProjectileGravityMixin", - "compat.alexscaves.AlexsCavesCandyCaneHookMixin", - "compat.alexscaves.AlexsCavesWaterBoltMixin", - "compat.alexscaves.AlexsCavesTephraMixin", - "compat.alexscaves.AlexsCavesDepthChargeMixin", "multipart.EntityMultipartLifecycleMixin", "time.EntityDeltaMovementTimeDilationMixin", "time.EntityMoveTimeDilationMixin", @@ -191,9 +155,6 @@ "client.TigerEyeNameTagHideMixin", "client.TemporalContractionLivingRendererMixin", "client.WolfRendererGrimMixin", - "gravity.client.CameraGravityMixin", - "gravity.client.ClientPacketListenerGravityMixin", - "gravity.client.EntityRenderDispatcherGravityMixin", "gravity.client.FallingBlockRendererBlockEntityMixin", "time.LivingEntityRendererAnimationTimeDilationMixin", "time.ParticleTimeDilationMixin", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/de_de.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/de_de.json index f59b20eb..2f1e98df 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/de_de.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/de_de.json @@ -526,8 +526,6 @@ "effect.antarchy.dread.description": "Verursacht visuelle und akustische Halluzinationen.", "effect.antarchy.paralyzed": "Gelähmt", "effect.antarchy.paralyzed.description": "Verhindert, dass sich Ziele bewegen.", - "effect.antarchy.inverted": "Umgekehrt", - "effect.antarchy.inverted.description": "Kehrt die Schwerkraft des Ziels um.", "effect.antarchy.commanded.description": "Kämpft für den Spieler, der das Ziel kommandiert hat.", "effect.antarchy.dilated.description": "Verlangsamt den Zeitablauf für das betroffene Wesen.", "effect.antarchy.stinky": "Stinkend", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json index 0f6b120e..2f5affd4 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json @@ -800,8 +800,6 @@ "effect.antarchy.dread.description": "Gives visual and audio hallucinations.", "effect.antarchy.paralyzed": "Paralyzed", "effect.antarchy.paralyzed.description": "Prevents targets from moving.", - "effect.antarchy.inverted": "Inverted", - "effect.antarchy.inverted.description": "Inverts the target's gravity.", "effect.antarchy.commanded": "Commanded", "effect.antarchy.commanded.description": "Fights for the player who commanded it.", "effect.antarchy.dilated": "Temporal Dilation", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/es_es.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/es_es.json index 3567985f..d546ce78 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/es_es.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/es_es.json @@ -526,8 +526,6 @@ "effect.antarchy.dread.description": "Provoca alucinaciones visuales y auditivas.", "effect.antarchy.paralyzed": "Paralizado", "effect.antarchy.paralyzed.description": "Impide que los objetivos se muevan.", - "effect.antarchy.inverted": "Invertido", - "effect.antarchy.inverted.description": "Invierte la gravedad del objetivo.", "effect.antarchy.commanded.description": "Lucha por el jugador que lo comandó.", "effect.antarchy.dilated.description": "Ralentiza el paso del tiempo para la criatura afectada.", "effect.antarchy.stinky": "Apestoso", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/fr_fr.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/fr_fr.json index 1da3b124..1608afe0 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/fr_fr.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/fr_fr.json @@ -526,8 +526,6 @@ "effect.antarchy.dread.description": "Provoque des hallucinations visuelles et sonores.", "effect.antarchy.paralyzed": "Paralysé", "effect.antarchy.paralyzed.description": "Empêche les cibles de se déplacer.", - "effect.antarchy.inverted": "Inversé", - "effect.antarchy.inverted.description": "Inverse la gravité de la cible.", "effect.antarchy.commanded.description": "Combat pour le joueur qui l’a commandé.", "effect.antarchy.dilated.description": "Ralentit le passage du temps pour l’entité affectée.", "effect.antarchy.stinky": "Puant", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/it_it.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/it_it.json index e3497a4c..f1529967 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/it_it.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/it_it.json @@ -526,8 +526,6 @@ "effect.antarchy.dread.description": "Provoca allucinazioni visive e sonore.", "effect.antarchy.paralyzed": "Paralizzato", "effect.antarchy.paralyzed.description": "Impedisce ai bersagli di muoversi.", - "effect.antarchy.inverted": "Invertito", - "effect.antarchy.inverted.description": "Inverte la gravità del bersaglio.", "effect.antarchy.commanded.description": "Combatte per il giocatore che lo ha comandato.", "effect.antarchy.dilated.description": "Rallenta il passare del tempo per l’entità colpita.", "effect.antarchy.stinky": "Puzzolente", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/ja_jp.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/ja_jp.json index 6d81f97f..9e08d8a0 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/ja_jp.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/ja_jp.json @@ -526,8 +526,6 @@ "effect.antarchy.dread.description": "視覚と聴覚の幻覚を引き起こします。", "effect.antarchy.paralyzed": "麻痺", "effect.antarchy.paralyzed.description": "対象が動けなくなります。", - "effect.antarchy.inverted": "重力反転", - "effect.antarchy.inverted.description": "対象の重力を反転させます。", "effect.antarchy.commanded.description": "命令したプレイヤーのために戦います。", "effect.antarchy.dilated.description": "影響を受けたエンティティの時間の流れを遅くします。", "effect.antarchy.stinky": "悪臭", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/ko_kr.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/ko_kr.json index 3a9f171b..d015ff0f 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/ko_kr.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/ko_kr.json @@ -526,8 +526,6 @@ "effect.antarchy.dread.description": "시각 및 청각 환각을 일으킵니다.", "effect.antarchy.paralyzed": "마비", "effect.antarchy.paralyzed.description": "대상이 움직이지 못하게 합니다.", - "effect.antarchy.inverted": "반전", - "effect.antarchy.inverted.description": "대상의 중력을 반전시킵니다.", "effect.antarchy.commanded.description": "명령한 플레이어를 위해 싸웁니다.", "effect.antarchy.dilated.description": "영향받은 개체의 시간 흐름을 늦춥니다.", "effect.antarchy.stinky": "악취", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/pt_br.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/pt_br.json index d418f422..dbbdf048 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/pt_br.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/pt_br.json @@ -526,8 +526,6 @@ "effect.antarchy.dread.description": "Provoca alucinações visuais e auditivas.", "effect.antarchy.paralyzed": "Paralisado", "effect.antarchy.paralyzed.description": "Impede que os alvos se movam.", - "effect.antarchy.inverted": "Invertido", - "effect.antarchy.inverted.description": "Inverte a gravidade do alvo.", "effect.antarchy.commanded.description": "Luta pelo jogador que o comandou.", "effect.antarchy.dilated.description": "Diminui a passagem do tempo para a entidade afetada.", "effect.antarchy.stinky": "Fedido", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/ru_ru.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/ru_ru.json index e05f5a01..0d158572 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/ru_ru.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/ru_ru.json @@ -497,8 +497,6 @@ "effect.antarchy.dread.description": "Вызывает зрительные и звуковые галлюцинации.", "effect.antarchy.paralyzed": "Паралич", "effect.antarchy.paralyzed.description": "Не дает целям двигаться.", - "effect.antarchy.inverted": "Инверсия", - "effect.antarchy.inverted.description": "Инвертирует гравитацию цели.", "effect.antarchy.commanded.description": "Сражается за игрока, который им командует.", "effect.antarchy.dilated.description": "Замедляет течение времени для существа под действием эффекта.", "effect.antarchy.stinky": "Вонючесть", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_cn.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_cn.json index 7c4c5d58..773b1a7a 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_cn.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_cn.json @@ -526,8 +526,6 @@ "effect.antarchy.dread.description": "会产生视觉和听觉幻觉。", "effect.antarchy.paralyzed": "麻痹", "effect.antarchy.paralyzed.description": "阻止目标移动。", - "effect.antarchy.inverted": "反转", - "effect.antarchy.inverted.description": "反转目标的重力。", "effect.antarchy.commanded.description": "为命令它的玩家而战。", "effect.antarchy.dilated.description": "减缓受影响生物的时间流逝。", "effect.antarchy.stinky": "臭气", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_tw.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_tw.json index 88424f7c..d3f6d342 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_tw.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_tw.json @@ -526,8 +526,6 @@ "effect.antarchy.dread.description": "會產生視覺與聽覺幻覺。", "effect.antarchy.paralyzed": "麻痺", "effect.antarchy.paralyzed.description": "阻止目標移動。", - "effect.antarchy.inverted": "反轉", - "effect.antarchy.inverted.description": "反轉目標的重力。", "effect.antarchy.commanded.description": "為命令它的玩家而戰。", "effect.antarchy.dilated.description": "減緩受影響生物的時間流逝。", "effect.antarchy.stinky": "臭氣", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/mob_effect/inverted.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/mob_effect/inverted.png deleted file mode 100644 index 77d8ce5ffeb3fc1578fae86c050c6bd3ee9d67fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmV;n0ZIOeP)Px$a7jc#R5*>Dld)>TP!xv0#H0y`bWuntPA)Dk>Ez%GI5~9d+*jz-H|Qfccj)HS z7jWnxy0{1;6h%}bb+AG-$xR2jw@Fke{o!&shx`BMKj+@7aRH-RB~HfG;Y2%k&bUN; z`ut)ops2%I9P^&Hqp@6S7X?POO59%@SQ!BT8xc{|b8JLJd$t9j>o{>zM9-4%ZmwvS z@+Vdw%LQ7tPRAE?9Vbo+B+327fp>3rBG8^~>A{JJav*K5jDTh-&srSwa&Or>b6+UI zX=nnVWvjpKzf;4Lka68Kl?&IfejOxTY(%7XxsrKVU9}*I|ABJgof+Jp1ggV{)-2`e z!P((S$k;V32H_spuy|O{G(%RO`vT9~abK{Q`+{*4P}FmZTsKW_Z41J*uzFEl$B8?> zpk*JsdfDw6hmkt?oWBN0RVVqB8_T68Mb2Rm?o|ttO!hBGk!fi15u|U%H7tM>In_cI guf=leJ7 AntarchyFabricItems.STINK_BUG_ITEM.get(), () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.DREAD), () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.PARALYZED), - () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.INVERTED), + AnthologyEffects::inverted, () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.STINKY), () -> AntarchyFabricBlocks.OURANWOOD_ACORN_BLOCK.get(), () -> AntarchyFabricBlocks.MOSSY_OURANWOOD_LOG.get(), @@ -542,10 +543,10 @@ public final class AntarchyFabricContent { ); LucidEyeProjectileEntity.defaultItemSupplier = () -> AntarchyFabricItems.LUCID_PEARL.get(); - LucidEntity.invertedEffectSupplier = () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.INVERTED); + LucidEntity.invertedEffectSupplier = AnthologyEffects::inverted; LucidEntity.boltEntityTypeSupplier = () -> AntarchyFabricEntities.LUCID_BOLT.get(); - LucidBoltEntity.invertedEffectSupplier = () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.INVERTED); - LucidEyeProjectileEntity.invertedEffectSupplier = () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.INVERTED); + LucidBoltEntity.invertedEffectSupplier = AnthologyEffects::inverted; + LucidEyeProjectileEntity.invertedEffectSupplier = AnthologyEffects::inverted; VortexEntity.windVortexTypeSupplier = () -> AntarchyFabricEntities.WIND_VORTEX.get(); VortexChargeProjectileEntity.defaultItemSupplier = () -> AntarchyFabricItems.VORTEX_CHARGE.get(); VortexChargeProjectileEntity.projectileTypeSupplier = () -> AntarchyFabricEntities.VORTEX_CHARGE_PROJECTILE.get(); @@ -560,7 +561,6 @@ public final class AntarchyFabricContent { TigerEyeCamouflageSync.setSendToPlayer((player, payload) -> net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(player, payload)); TigerEyeCamouflageSync.setSyncSelfAndTracking(AntarchyFabricNetworking::syncTigerEyeCamouflage); BloodCrystalKatanaItem.setTrailCallback(AntarchyFabricNetworking::syncKatanaTrail); - com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setSyncDispatcher(AntarchyFabricNetworking::syncGravityEntity); com.craisinlord.antarchy.content.time.TimeDilationApi.setSyncDispatcher( com.craisinlord.antarchy.fabric.network.AntarchyFabricTimeDilationNetworking::syncRate ); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java index 8b2e8f61..b71e62b7 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java @@ -12,9 +12,9 @@ import com.craisinlord.antarchy.content.item.AttitudeAdjusterSlamManager; import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; 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 com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityTransition; import com.craisinlord.antarchy.content.horde.CavarynHordeManager; import com.craisinlord.antarchy.content.portal.PermanentPortalManager; import com.craisinlord.antarchy.content.portalgun.PortalGunProjectileEntity; @@ -22,7 +22,6 @@ import com.craisinlord.antarchy.content.portalgun.PortalGunSavedData; import com.craisinlord.antarchy.content.command.CavarynCommand; import com.craisinlord.antarchy.content.command.CaterpillarCommand; import com.craisinlord.antarchy.content.command.DimensionalTearCommand; -import com.craisinlord.antarchy.content.command.GravityCommand; import com.craisinlord.antarchy.content.command.QueenLocateCommand; import com.craisinlord.antarchy.content.command.RoyalCommand; import com.craisinlord.antarchy.content.time.TimeDilationCommand; @@ -69,7 +68,7 @@ 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 GravityTransition INVERTED_CLEAR_TRANSITION = new GravityTransition(12); private static final Set invertedPlayers = new HashSet<>(); private AntarchyFabricEvents() { @@ -100,7 +99,6 @@ public final class AntarchyFabricEvents { }); CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { CavarynCommand.register(dispatcher); - GravityCommand.register(dispatcher); CaterpillarCommand.register(dispatcher); DimensionalTearCommand.register(dispatcher); QueenLocateCommand.register(dispatcher); @@ -324,9 +322,9 @@ public final class AntarchyFabricEvents { continue; } - if (AntarchyGravityApi.getGravityDirection(player) == AntarchyGravityDirection.UP - || AntarchyGravityApi.isGravityForced(player)) { - AntarchyGravityApi.setGravityDirection(player, AntarchyGravityDirection.DOWN, INVERTED_CLEAR_TRANSITION); + if (GravityApi.getGravityDirection(player) == GravityDirection.UP + || GravityApi.isGravityForced(player)) { + GravityApi.setGravityDirection(player, GravityDirection.DOWN, INVERTED_CLEAR_TRANSITION); } notifyNearbyReveriesOfInversionChange(player); } diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClient.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClient.java index 3ba60763..afe2ba83 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClient.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClient.java @@ -24,6 +24,7 @@ public final class AntarchyFabricClient implements ClientModInitializer { @Override public void onInitializeClient() { com.craisinlord.antarchy.Antarchy.physicalClient = true; + com.craisinlord.antarchy.content.movement.AntarchyGravityHooks.registerClient(); ModelLoadingPlugin.register(plugin -> plugin.addModels(SeparateLargeItemModels.all())); ClientTickEvents.END_CLIENT_TICK.register(client -> QueenMusicHandler.tick(client, AntarchyFabricSounds.THE_QUEEN.get())); AntarchyFabricClientNetworking.register(); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/entity/multipart/MultipartPartEntity.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/entity/multipart/MultipartPartEntity.java index 0f4b4646..6eaa3363 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/entity/multipart/MultipartPartEntity.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/entity/multipart/MultipartPartEntity.java @@ -4,8 +4,8 @@ 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 com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -66,13 +66,13 @@ public class MultipartPartEntity extends Entity implements MultipartPartAccess { return; } - AntarchyGravityApi.applySyncedState( + GravityApi.applySyncedState( this, - AntarchyGravityApi.getGravityDirection(parent), - AntarchyGravityApi.getPrevGravityDirection(parent), - AntarchyGravityApi.isGravityForced(parent), - AntarchyGravityApi.getTransitionDuration(parent), - AntarchyGravityApi.getTransitionRemaining(parent) + GravityApi.getGravityDirection(parent), + GravityApi.getPrevGravityDirection(parent), + GravityApi.isGravityForced(parent), + GravityApi.getTransitionDuration(parent), + GravityApi.getTransitionRemaining(parent) ); double oldX = this.getX(); @@ -85,7 +85,7 @@ public class MultipartPartEntity extends Entity implements MultipartPartAccess { forward.x * definition.forwardOffset() + right.x * definition.lateralOffset(), definition.yOffset(), forward.z * definition.forwardOffset() + right.z * definition.lateralOffset()); - Vec3 offset = AntarchyGravityRotationUtil.vecPlayerToWorld(localOffset, AntarchyGravityApi.getGravityDirection(parent)); + Vec3 offset = GravityRotationUtil.vecPlayerToWorld(localOffset, GravityApi.getGravityDirection(parent)); Vec3 position = parent.position().add(offset); this.setPos(position.x, position.y, position.z); this.setYRot(parent.getYRot()); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalInversionMixin.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalInversionMixin.java index 6a6f0ae2..80e3a5cd 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalInversionMixin.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalInversionMixin.java @@ -2,9 +2,9 @@ package com.craisinlord.antarchy.fabric.mixin; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyTags; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityTransition; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.DustParticleOptions; import net.minecraft.server.level.ServerLevel; @@ -65,7 +65,7 @@ public abstract class AntimetalInversionMixin { 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)); + GravityApi.setGravityDirection(entity, GravityDirection.DOWN, new GravityTransition(12)); } private static void antarchy$spawnInversionParticles(LivingEntity entity) { diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java index 7abc586f..9e8bac47 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntiwaterLivingEntityMixin.java @@ -1,9 +1,9 @@ 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.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import com.craisinlord.antarchy.fabric.util.CustomFluidPhysicsChecks; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.MoverType; @@ -38,9 +38,9 @@ public abstract class AntiwaterLivingEntityMixin { motion = new Vec3(motion.x, 0.2D, motion.z); } - AntarchyGravityDirection gravityDirection = antarchy$getEffectiveGravityDirection(entity); + GravityDirection gravityDirection = antarchy$getEffectiveGravityDirection(entity); Vec3 worldMotion = gravityDirection.isInverted() - ? AntarchyGravityRotationUtil.vecPlayerToWorld(motion, gravityDirection) + ? GravityRotationUtil.vecPlayerToWorld(motion, gravityDirection) : motion; double drag = entity.isSwimming() ? 0.9D : 0.8D; @@ -56,7 +56,7 @@ public abstract class AntiwaterLivingEntityMixin { entity.setDeltaMovement( gravityDirection.isInverted() - ? AntarchyGravityRotationUtil.vecWorldToPlayer(worldMotion, gravityDirection) + ? GravityRotationUtil.vecWorldToPlayer(worldMotion, gravityDirection) : worldMotion ); @@ -68,7 +68,7 @@ public abstract class AntiwaterLivingEntityMixin { Vec3 boostedWorldMotion = new Vec3(worldMotion.x, 0.3D, worldMotion.z); entity.setDeltaMovement( gravityDirection.isInverted() - ? AntarchyGravityRotationUtil.vecWorldToPlayer(boostedWorldMotion, gravityDirection) + ? GravityRotationUtil.vecWorldToPlayer(boostedWorldMotion, gravityDirection) : boostedWorldMotion ); } @@ -76,12 +76,12 @@ public abstract class AntiwaterLivingEntityMixin { ci.cancel(); } - private AntarchyGravityDirection antarchy$getEffectiveGravityDirection(LivingEntity entity) { - AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(entity); + private GravityDirection antarchy$getEffectiveGravityDirection(LivingEntity entity) { + GravityDirection gravityDirection = GravityApi.getGravityDirection(entity); if (gravityDirection.isInverted() || !entity.hasEffect(AntarchyObjects.INVERTED_EFFECT.get())) { return gravityDirection; } - return AntarchyGravityDirection.UP; + return GravityDirection.UP; } } diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/SpringyBootsFallDamageMixin.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/SpringyBootsFallDamageMixin.java index e1d6872e..e0ffdece 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/SpringyBootsFallDamageMixin.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/SpringyBootsFallDamageMixin.java @@ -1,6 +1,6 @@ package com.craisinlord.antarchy.fabric.mixin; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; +import com.craisinlord.anthology.gravity.GravityApi; import com.craisinlord.antarchy.content.enchantment.AntarchyEnchantments; import com.craisinlord.antarchy.content.item.SpringyBootsItem; import com.craisinlord.antarchy.fabric.util.SpringyBootsFabricHelper; @@ -21,7 +21,7 @@ public abstract class SpringyBootsFallDamageMixin { if (!(self instanceof Player player)) { return; } - if (!AntarchyGravityApi.isGravityInverted(player)) { + if (!GravityApi.isGravityInverted(player)) { return; } if (AntarchyEnchantments.featherRisingLevel(player) <= 0) { diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java index 522b256d..02b9cc1c 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java @@ -47,8 +47,6 @@ public final class AntarchyFabricClientNetworking { com.craisinlord.antarchy.content.portalgun.PortalGunMoonAimSync.setClientReporter(com.craisinlord.antarchy.content.client.MoonSkyTracker::report); ClientPlayNetworking.registerGlobalReceiver(PortalGunIndicatorPayload.TYPE, (payload, context) -> context.client().execute(() -> com.craisinlord.antarchy.content.client.PortalGunIndicatorClientState.update(payload))); - 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(TigerEyeCamouflageStatePayload.TYPE, (payload, context) -> diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java index bdaef55f..18f11e72 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java @@ -6,7 +6,6 @@ import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner; import com.craisinlord.antarchy.content.entity.multipart.MultipartFramework; 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.entity.HerculesBeetleEntity; import com.craisinlord.antarchy.content.item.BrutalflyElytraFlightHelper; import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; @@ -75,7 +74,6 @@ public final class AntarchyFabricNetworking { private static void registerPayloadTypes() { PayloadTypeRegistry.playS2C().register(AntarchyGameResultPayload.TYPE, AntarchyGameResultPayload.STREAM_CODEC); PayloadTypeRegistry.playS2C().register(PortalGunIndicatorPayload.TYPE, PortalGunIndicatorPayload.STREAM_CODEC); - PayloadTypeRegistry.playS2C().register(GravityStatePayload.TYPE, GravityStatePayload.STREAM_CODEC); PayloadTypeRegistry.playS2C().register(BloodglassStatePayload.TYPE, BloodglassStatePayload.STREAM_CODEC); PayloadTypeRegistry.playS2C().register(TigerEyeCamouflageStatePayload.TYPE, TigerEyeCamouflageStatePayload.STREAM_CODEC); PayloadTypeRegistry.playS2C().register(BloodCrystalKatanaTrailPayload.TYPE, BloodCrystalKatanaTrailPayload.STREAM_CODEC); @@ -186,35 +184,6 @@ public final class AntarchyFabricNetworking { 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)); } @@ -253,24 +222,6 @@ public final class AntarchyFabricNetworking { 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; diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index 0c5ade2d..da5d098a 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.fabric.registry; +import com.craisinlord.anthology.effect.AnthologyEffects; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.recipe.AmericanizeRecipe; @@ -31,7 +32,6 @@ import com.craisinlord.antarchy.content.effect.BleedingMobEffect; import com.craisinlord.antarchy.content.effect.BloodMoonMobEffect; import com.craisinlord.antarchy.content.effect.GoopedMobEffect; import com.craisinlord.antarchy.content.effect.GrowthMobEffect; -import com.craisinlord.antarchy.content.effect.InvertedMobEffect; import com.craisinlord.antarchy.content.effect.CommandedMobEffect; import com.craisinlord.antarchy.content.effect.DilatedMobEffect; import com.craisinlord.antarchy.content.effect.ContractedMobEffect; @@ -457,7 +457,6 @@ public final class AntarchyFabricMisc { 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 COMMANDED = MOB_EFFECTS.register("commanded", CommandedMobEffect::new); public static final DeferredHolder DILATED = MOB_EFFECTS.register("dilated", DilatedMobEffect::new); @@ -490,11 +489,11 @@ public final class AntarchyFabricMisc { public static final DeferredHolder INVERSION = POTIONS.register("inversion", - () -> new Potion(new MobEffectInstance(mobEffectHolder(INVERTED), 600))); + () -> new Potion(new MobEffectInstance(AnthologyEffects.inverted(), 600))); public static final DeferredHolder LONG_INVERSION = POTIONS.register("long_inversion", - () -> new Potion("inversion", new MobEffectInstance(mobEffectHolder(INVERTED), 2400))); + () -> new Potion("inversion", new MobEffectInstance(AnthologyEffects.inverted(), 2400))); public static final DeferredHolder COMMAND = POTIONS.register("command", () -> new Potion(new MobEffectInstance(mobEffectHolder(COMMANDED), 600))); public static final DeferredHolder LONG_COMMAND = POTIONS.register("long_command", diff --git a/fabric-1.21.1/src/main/resources/fabric.mod.json b/fabric-1.21.1/src/main/resources/fabric.mod.json index 93e915c7..a96dc70c 100644 --- a/fabric-1.21.1/src/main/resources/fabric.mod.json +++ b/fabric-1.21.1/src/main/resources/fabric.mod.json @@ -33,6 +33,7 @@ ], "depends": { "antos": ">=1.2.1", + "anthology": ">=1.0.0", "fabricloader": ">=${fabric_loader_version}", "minecraft": "~${minecraft_version}", "java": ">=21", diff --git a/gradle.properties b/gradle.properties index c8a01030..37b89bac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -50,6 +50,7 @@ structurevoidtoggle_fabric=4.4.1+1.21 geckolib_version=4.8.4 architectury_api_version=13.0.11 +anthology_version=1.0.0 jei_version=19.27.0.336 diff --git a/neoforge-1.21.1/build.gradle b/neoforge-1.21.1/build.gradle index ff2de315..7277edc8 100644 --- a/neoforge-1.21.1/build.gradle +++ b/neoforge-1.21.1/build.gradle @@ -59,6 +59,8 @@ dependencies { compileOnly("curse.maven:intapi-${intapi_curseforge_id}:${intapi_curseforge_file_id_neoforge}") runtimeOnly("curse.maven:intapi-${intapi_curseforge_id}:${intapi_curseforge_file_id_neoforge}") implementation "software.bernie.geckolib:geckolib-neoforge-1.21.1:${geckolib_version}" + compileOnly(files(rootProject.file("anthology_jars/anthology-${anthology_version}+1.21.1-neoforge.jar"))) + runtimeOnly(files(rootProject.file("anthology_jars/anthology-${anthology_version}+1.21.1-neoforge.jar"))) compileOnly(files(rootProject.file("infinite_dimensions_jars/infinity-2.7.3+1.21.1-neoforge.jar"))) compileOnly(files(rootProject.file("infinite_dimensions_jars/stellarview-1.21.1-0.5.3-neoforge.jar"))) runtimeOnly(files(rootProject.file("infinite_dimensions_jars/infinity-2.7.3+1.21.1-neoforge.jar"))) diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java index 7b2cf7e6..6f416773 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.neoforge; +import com.craisinlord.anthology.effect.AnthologyEffects; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.compat.infinity.InfinityCompat; import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; @@ -13,7 +14,6 @@ import com.craisinlord.antarchy.content.network.BloodCrystalKatanaTrailPayload; import com.craisinlord.antarchy.content.tigereye.TigerEyeCamouflageSync; import com.craisinlord.antarchy.content.portal.PermanentPortalType; import com.craisinlord.antarchy.neoforge.registry.*; -import com.craisinlord.antarchy.neoforge.network.AntarchyGravityNetworking; import net.neoforged.bus.api.IEventBus; import net.neoforged.fml.ModContainer; import net.neoforged.fml.ModList; @@ -272,7 +272,6 @@ public class AntarchyNeoforge { player, TigerEyeCamouflageSync.payload(player) )); - com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setSyncDispatcher(AntarchyGravityNetworking::syncEntity); com.craisinlord.antarchy.content.time.TimeDilationApi.setSyncDispatcher( com.craisinlord.antarchy.neoforge.network.AntarchyTimeDilationNetworking::syncRate ); @@ -411,7 +410,7 @@ public class AntarchyNeoforge { () -> AntarchyNeoforgeItems.STINK_BUG.get(), () -> AntarchyNeoforgeMisc.DREAD, () -> AntarchyNeoforgeMisc.PARALYZED, - () -> AntarchyNeoforgeMisc.INVERTED, + AnthologyEffects::inverted, () -> AntarchyNeoforgeMisc.STINKY, () -> AntarchyNeoforgeBlocks.OURANWOOD_ACORN_BLOCK.get(), () -> AntarchyNeoforgeBlocks.MOSSY_OURANWOOD_LOG.get(), diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java index 8543ae1c..85193023 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java @@ -4,7 +4,6 @@ import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.command.CavarynCommand; import com.craisinlord.antarchy.content.command.CaterpillarCommand; import com.craisinlord.antarchy.content.command.DimensionalTearCommand; -import com.craisinlord.antarchy.content.command.GravityCommand; import com.craisinlord.antarchy.content.command.QueenLocateCommand; import com.craisinlord.antarchy.content.command.RoyalCommand; import com.craisinlord.antarchy.content.time.TimeDilationCommand; @@ -23,7 +22,6 @@ public final class AntarchyNeoforgeEvents { @SubscribeEvent public static void onRegisterCommands(RegisterCommandsEvent event) { CavarynCommand.register(event.getDispatcher()); - GravityCommand.register(event.getDispatcher()); CaterpillarCommand.register(event.getDispatcher()); DimensionalTearCommand.register(event.getDispatcher()); QueenLocateCommand.register(event.getDispatcher()); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java index 19422740..7025eefd 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java @@ -117,6 +117,7 @@ public final class AntarchyNeoForgeClient { @SubscribeEvent public static void clientSetup(FMLClientSetupEvent event) { Antarchy.physicalClient = true; + com.craisinlord.antarchy.content.movement.AntarchyGravityHooks.registerClient(); event.enqueueWork(() -> { AntarchyArchivePreviews.register(); AntarchyComputerGames.register(); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/content/fluid/AntiwaterFluidType.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/content/fluid/AntiwaterFluidType.java index 20c08c9d..338c3480 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/content/fluid/AntiwaterFluidType.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/content/fluid/AntiwaterFluidType.java @@ -1,8 +1,8 @@ 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 com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityDirection; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.MoverType; import net.minecraft.world.entity.item.ItemEntity; @@ -31,9 +31,9 @@ public class AntiwaterFluidType extends FluidType { motion = new Vec3(motion.x, 0.2, motion.z); } - AntarchyGravityDirection gravityDirection = AntarchyGravityApi.getGravityDirection(entity); + GravityDirection gravityDirection = GravityApi.getGravityDirection(entity); Vec3 worldMotion = gravityDirection.isInverted() - ? AntarchyGravityRotationUtil.vecPlayerToWorld(motion, gravityDirection) + ? GravityRotationUtil.vecPlayerToWorld(motion, gravityDirection) : motion; double drag = entity.isSwimming() ? 0.9 : 0.8; @@ -45,7 +45,7 @@ public class AntiwaterFluidType extends FluidType { entity.setDeltaMovement( gravityDirection.isInverted() - ? AntarchyGravityRotationUtil.vecWorldToPlayer(worldMotion, gravityDirection) + ? GravityRotationUtil.vecWorldToPlayer(worldMotion, gravityDirection) : worldMotion ); if (entity.horizontalCollision && entity.isFree( @@ -55,7 +55,7 @@ public class AntiwaterFluidType extends FluidType { Vec3 boostedWorldMotion = new Vec3(worldMotion.x, 0.3D, worldMotion.z); entity.setDeltaMovement( gravityDirection.isInverted() - ? AntarchyGravityRotationUtil.vecWorldToPlayer(boostedWorldMotion, gravityDirection) + ? GravityRotationUtil.vecWorldToPlayer(boostedWorldMotion, gravityDirection) : boostedWorldMotion ); } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/entity/multipart/MultipartPartEntity.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/entity/multipart/MultipartPartEntity.java index 7b8fece3..737a6ce5 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/entity/multipart/MultipartPartEntity.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/entity/multipart/MultipartPartEntity.java @@ -4,8 +4,8 @@ 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 com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; +import com.craisinlord.anthology.gravity.GravityApi; +import com.craisinlord.anthology.gravity.GravityRotationUtil; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -69,13 +69,13 @@ public class MultipartPartEntity extends PartEntity implements OwnableEn return; } - AntarchyGravityApi.applySyncedState( + GravityApi.applySyncedState( this, - AntarchyGravityApi.getGravityDirection(parent), - AntarchyGravityApi.getPrevGravityDirection(parent), - AntarchyGravityApi.isGravityForced(parent), - AntarchyGravityApi.getTransitionDuration(parent), - AntarchyGravityApi.getTransitionRemaining(parent) + GravityApi.getGravityDirection(parent), + GravityApi.getPrevGravityDirection(parent), + GravityApi.isGravityForced(parent), + GravityApi.getTransitionDuration(parent), + GravityApi.getTransitionRemaining(parent) ); double oldX = this.getX(); @@ -88,7 +88,7 @@ public class MultipartPartEntity extends PartEntity implements OwnableEn forward.x * this.definition.forwardOffset() + right.x * this.definition.lateralOffset(), this.definition.yOffset(), forward.z * this.definition.forwardOffset() + right.z * this.definition.lateralOffset()); - Vec3 offset = AntarchyGravityRotationUtil.vecPlayerToWorld(localOffset, AntarchyGravityApi.getGravityDirection(parent)); + Vec3 offset = GravityRotationUtil.vecPlayerToWorld(localOffset, GravityApi.getGravityDirection(parent)); Vec3 position = parent.position().add(offset); this.setPos(position.x, position.y, position.z); this.setRot(parent.getYRot(), parent.getXRot()); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java index 3181cb3a..756672e9 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java @@ -1,7 +1,6 @@ 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.BigBerthaItem; import com.craisinlord.antarchy.content.item.EyeOfTheStormItem; import com.craisinlord.antarchy.content.item.GravityGunItem; @@ -13,11 +12,9 @@ import com.craisinlord.antarchy.content.network.GravityGunPrimaryPayload; import com.craisinlord.antarchy.content.network.GravityGunScrollPayload; import com.craisinlord.antarchy.content.network.TemporalTunerScrollPayload; import com.craisinlord.antarchy.content.item.TemporalTunerItem; -import com.craisinlord.antarchy.content.network.GravityStatePayload; import com.craisinlord.antarchy.content.network.ImpactShakePayload; import com.craisinlord.antarchy.content.network.PortalGunPrimaryPayload; import com.craisinlord.antarchy.content.client.CameraShakeClientState; -import net.minecraft.world.entity.Entity; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; @@ -39,10 +36,6 @@ public final class AntarchyGravityNetworking { com.craisinlord.antarchy.content.network.PortalGunIndicatorRequestPayload.TYPE, com.craisinlord.antarchy.content.network.PortalGunIndicatorRequestPayload.STREAM_CODEC, AntarchyGravityNetworking::handlePortalGunIndicatorRequest - ).playToClient( - GravityStatePayload.TYPE, - GravityStatePayload.STREAM_CODEC, - AntarchyGravityNetworking::handleGravityState ).playToClient( ImpactShakePayload.TYPE, ImpactShakePayload.STREAM_CODEC, @@ -112,53 +105,6 @@ public final class AntarchyGravityNetworking { ); } - 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 handleImpactShake(ImpactShakePayload payload, IPayloadContext context) { context.enqueueWork(() -> CameraShakeClientState.triggerImpact( new Vec3(payload.x(), payload.y(), payload.z()), diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java index 691bd8b7..743077a7 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.neoforge.registry; +import com.craisinlord.anthology.effect.AnthologyEffects; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; @@ -36,7 +37,6 @@ import com.craisinlord.antarchy.content.tigereye.TigerEyeCamouflageController; import com.craisinlord.antarchy.content.tigereye.TigerEyeCamouflageSync; 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.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; @@ -326,7 +326,6 @@ public final class AntarchyNeoForgeEvents { return; } - AntarchyGravityNetworking.syncEntity(event.getTarget()); if (event.getTarget() instanceof com.craisinlord.antarchy.content.time.TimeDilationEntityAccess access && event.getEntity() instanceof ServerPlayer trackingPlayer) { com.craisinlord.antarchy.neoforge.network.AntarchyTimeDilationNetworking.syncRateToPlayer( @@ -495,7 +494,7 @@ public final class AntarchyNeoForgeEvents { return; } - MobEffectInstance existingInverted = livingEntity.getEffect(AntarchyNeoforgeMisc.INVERTED); + MobEffectInstance existingInverted = livingEntity.getEffect(AnthologyEffects.inverted()); long gameTime = livingEntity.level().getGameTime(); if (!shouldScanOverheadAntimetal(livingEntity, existingInverted, gameTime)) { return; @@ -511,8 +510,8 @@ public final class AntarchyNeoForgeEvents { "[antarchy-gravity] slow overhead antimetal scan targetType={} uuid={} pos=({}, {}, {}) dim={} elapsedMs={} inverted={} forced={} gameTime={}", livingEntity.getType(), livingEntity.getUUID(), livingEntity.getX(), livingEntity.getY(), livingEntity.getZ(), livingEntity.level().dimension().location(), elapsedMs, - com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.isGravityInverted(livingEntity), - com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.isGravityForced(livingEntity), + com.craisinlord.anthology.gravity.GravityApi.isGravityInverted(livingEntity), + com.craisinlord.anthology.gravity.GravityApi.isGravityForced(livingEntity), gameTime ); } @@ -521,7 +520,7 @@ public final class AntarchyNeoForgeEvents { } if (existingInverted == null || existingInverted.getDuration() <= ANTIMETAL_INVERTED_REFRESH_THRESHOLD_TICKS) { - livingEntity.addEffect(new MobEffectInstance(AntarchyNeoforgeMisc.INVERTED, ANTIMETAL_INVERTED_REFRESH_TICKS, 0, false, false, false)); + livingEntity.addEffect(new MobEffectInstance(AnthologyEffects.inverted(), ANTIMETAL_INVERTED_REFRESH_TICKS, 0, false, false, false)); spawnAntimetalInversionParticles(livingEntity); } } @@ -826,7 +825,7 @@ public final class AntarchyNeoForgeEvents { static void handleBloodCrystalBootsFall(LivingFallEvent event) { if (!(event.getEntity() instanceof Player player)) return; - if (!com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.isGravityInverted(player)) return; + if (!com.craisinlord.anthology.gravity.GravityApi.isGravityInverted(player)) return; if (com.craisinlord.antarchy.content.enchantment.AntarchyEnchantments.featherRisingLevel(player) <= 0) return; event.setCanceled(true); } @@ -1160,10 +1159,10 @@ public final class AntarchyNeoForgeEvents { static void onInvertedEffectExpired(MobEffectEvent.Expired event) { if (event.getEffectInstance() == null) return; - if (!event.getEffectInstance().is(AntarchyNeoforgeMisc.INVERTED)) return; + if (!event.getEffectInstance().is(AnthologyEffects.inverted())) return; LivingEntity entity = event.getEntity(); if (!entity.level().isClientSide()) { - com.craisinlord.antarchy.content.gravity.AntarchyMountedGravityHelper.syncConnectedStackIgnoring(entity, entity); + com.craisinlord.anthology.gravity.MountedGravityHelper.syncConnectedStackIgnoring(entity, entity); if (entity instanceof Player player) { notifyNearbyReveriesOfInversionChange(player); } @@ -1261,7 +1260,7 @@ public final class AntarchyNeoForgeEvents { } if (event.getEntity().getType().is(AntarchyTags.Entities.INVERTED_IMMUNE) - && event.getEffectInstance().is(AntarchyNeoforgeMisc.INVERTED)) { + && event.getEffectInstance().is(AnthologyEffects.inverted())) { event.setResult(MobEffectEvent.Applicable.Result.DO_NOT_APPLY); return; } @@ -1279,18 +1278,18 @@ public final class AntarchyNeoForgeEvents { } if (event.getEntity() instanceof Player player - && event.getEffectInstance().is(AntarchyNeoforgeMisc.INVERTED) - && !player.hasEffect(AntarchyNeoforgeMisc.INVERTED)) { + && event.getEffectInstance().is(AnthologyEffects.inverted()) + && !player.hasEffect(AnthologyEffects.inverted())) { notifyNearbyReveriesOfInversionChange(player); } } static void onInvertedEffectRemoved(MobEffectEvent.Remove event) { - if (!event.getEffect().is(AntarchyNeoforgeMisc.INVERTED)) return; + if (!event.getEffect().is(AnthologyEffects.inverted())) return; LivingEntity entity = event.getEntity(); if (!entity.level().isClientSide()) { - com.craisinlord.antarchy.content.gravity.AntarchyMountedGravityHelper.syncConnectedStackIgnoring(entity, entity); + com.craisinlord.anthology.gravity.MountedGravityHelper.syncConnectedStackIgnoring(entity, entity); if (entity instanceof Player player) { notifyNearbyReveriesOfInversionChange(player); } @@ -1387,7 +1386,7 @@ public final class AntarchyNeoForgeEvents { DispenserBlock.registerBehavior(Items.HOPPER_MINECART, antimetalMinecartDispenseBehavior); DispenserBlock.registerBehavior(Items.COMMAND_BLOCK_MINECART, antimetalMinecartDispenseBehavior); LucidEyeProjectileEntity.defaultItemSupplier = () -> AntarchyNeoforgeItems.LUCID_PEARL.get(); - LucidEntity.invertedEffectSupplier = () -> AntarchyNeoforgeMisc.INVERTED; + LucidEntity.invertedEffectSupplier = AnthologyEffects::inverted; FluidInteractionRegistry.addInteraction( AntarchyNeoForgeFluidTypes.ANTIWATER_TYPE.get(), new FluidInteractionRegistry.InteractionInformation( @@ -1398,8 +1397,8 @@ public final class AntarchyNeoForgeEvents { ) ); LucidEntity.boltEntityTypeSupplier = () -> AntarchyNeoforgeEntites.LUCID_BOLT.get(); - LucidBoltEntity.invertedEffectSupplier = () -> AntarchyNeoforgeMisc.INVERTED; - LucidEyeProjectileEntity.invertedEffectSupplier = () -> AntarchyNeoforgeMisc.INVERTED; + LucidBoltEntity.invertedEffectSupplier = AnthologyEffects::inverted; + LucidEyeProjectileEntity.invertedEffectSupplier = AnthologyEffects::inverted; VortexEntity.windVortexTypeSupplier = () -> AntarchyNeoforgeEntites.WIND_VORTEX.get(); VortexChargeProjectileEntity.defaultItemSupplier = () -> AntarchyNeoforgeItems.VORTEX_CHARGE.get(); VortexChargeProjectileEntity.projectileTypeSupplier = () -> AntarchyNeoforgeEntites.VORTEX_CHARGE_PROJECTILE.get(); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java index 0fa7fcdb..21eb8ac3 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.neoforge.registry; +import com.craisinlord.anthology.effect.AnthologyEffects; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; @@ -8,7 +9,6 @@ import com.craisinlord.antarchy.content.effect.BleedingMobEffect; import com.craisinlord.antarchy.content.effect.BloodMoonMobEffect; import com.craisinlord.antarchy.content.effect.GoopedMobEffect; import com.craisinlord.antarchy.content.effect.GrowthMobEffect; -import com.craisinlord.antarchy.content.effect.InvertedMobEffect; import com.craisinlord.antarchy.content.effect.CommandedMobEffect; import com.craisinlord.antarchy.content.effect.DilatedMobEffect; import com.craisinlord.antarchy.content.effect.ContractedMobEffect; @@ -178,7 +178,6 @@ public final class AntarchyNeoforgeMisc { public static final DeferredHolder BLEEDING = MOB_EFFECTS.register("bleeding", BleedingMobEffect::new); public static final DeferredHolder BLOOD_MOON = MOB_EFFECTS.register("blood_moon", BloodMoonMobEffect::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 COMMANDED = MOB_EFFECTS.register("commanded", CommandedMobEffect::new); public static final DeferredHolder DILATED = MOB_EFFECTS.register("dilated", DilatedMobEffect::new); public static final DeferredHolder CONTRACTED = MOB_EFFECTS.register("contracted", ContractedMobEffect::new); @@ -193,9 +192,9 @@ public final class AntarchyNeoforgeMisc { // Potions public static final DeferredHolder INVERSION = POTIONS.register("inversion", - () -> new Potion(new MobEffectInstance(INVERTED, 600))); + () -> new Potion(new MobEffectInstance(AnthologyEffects.inverted(), 600))); public static final DeferredHolder LONG_INVERSION = POTIONS.register("long_inversion", - () -> new Potion("inversion", new MobEffectInstance(INVERTED, 2400))); + () -> new Potion("inversion", new MobEffectInstance(AnthologyEffects.inverted(), 2400))); public static final DeferredHolder COMMAND = POTIONS.register("command", () -> new Potion(new MobEffectInstance(COMMANDED, 600))); public static final DeferredHolder LONG_COMMAND = POTIONS.register("long_command", diff --git a/neoforge-1.21.1/src/main/resources/META-INF/neoforge.mods.toml b/neoforge-1.21.1/src/main/resources/META-INF/neoforge.mods.toml index 54dcfd04..92703040 100644 --- a/neoforge-1.21.1/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge-1.21.1/src/main/resources/META-INF/neoforge.mods.toml @@ -35,6 +35,13 @@ displayURL="https://www.curseforge.com/minecraft/mc-mods/antarchy" ordering="AFTER" side="BOTH" +[[dependencies.antarchy]] + modId="anthology" + type="required" + versionRange="[1.0.0,)" + ordering="AFTER" + side="BOTH" + [[dependencies.antarchy]] modId="antos" type="required"