fixed time dilations

king progress
beams
This commit is contained in:
craisinlord committed 2026-08-30 21:34:23 -05:00
1 parent af0b052b5c
commit 069d90d6e2
135 files changed
+3383 -483

No files matched your search

@@ -163,6 +163,7 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setKingBeamTracking(AntarchyMobsConfig.kingBeamTracking());
AntarchySettings.setKingBeamTerrainRadius(AntarchyMobsConfig.kingBeamTerrainRadius());
AntarchySettings.setKingBeamTerrainCap(AntarchyMobsConfig.kingBeamTerrainCap());
AntarchySettings.setRoyalDecreeCooldownTicks(AntarchyMobsConfig.royalDecreeCooldownTicks());
AntarchySettings.setBrutalflyHealth(AntarchyMobsConfig.brutalflyHealth());
AntarchySettings.setBrutalflySwipeDamage(AntarchyMobsConfig.brutalflySwipeDamage());
@@ -128,6 +128,7 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.IntValue QUEEN_BEAM_DURATION_TICKS, QUEEN_BEAM_COOLDOWN_TICKS, QUEEN_BEAM_TERRAIN_CAP;
private static final ModConfigSpec.DoubleValue KING_BEAM_DAMAGE, KING_BEAM_RANGE, KING_BEAM_TRACKING, KING_BEAM_TERRAIN_RADIUS;
private static final ModConfigSpec.IntValue KING_BEAM_DURATION_TICKS, KING_BEAM_COOLDOWN_TICKS, KING_BEAM_TERRAIN_CAP;
private static final ModConfigSpec.IntValue ROYAL_DECREE_COOLDOWN_TICKS;
// Brutalfly
@@ -570,6 +571,7 @@ public final class AntarchyMobsConfig {
KING_BEAM_TRACKING = b.defineInRange("kingBeamTracking", 0.1D, 0.0D, 1.0D);
KING_BEAM_TERRAIN_RADIUS = b.defineInRange("kingBeamTerrainRadius", 5.0D, 0.0D, 32.0D);
KING_BEAM_TERRAIN_CAP = b.defineInRange("kingBeamTerrainCap", 192, 0, 4096);
ROYAL_DECREE_COOLDOWN_TICKS = b.comment("Cooldown in ticks between the end of one King decree and the next.").defineInRange("royalDecreeCooldownTicks", 1200, 1, 72000);
b.pop();
@@ -966,6 +968,7 @@ public final class AntarchyMobsConfig {
static double kingBeamTracking() { return KING_BEAM_TRACKING.get(); }
static double kingBeamTerrainRadius() { return KING_BEAM_TERRAIN_RADIUS.get(); }
static int kingBeamTerrainCap() { return KING_BEAM_TERRAIN_CAP.get(); }
static int royalDecreeCooldownTicks() { return ROYAL_DECREE_COOLDOWN_TICKS.get(); }
static double brutalflyHealth() { return BRUTALFLY_HEALTH.get(); }
static double brutalflySwipeDamage() { return BRUTALFLY_SWIPE_DAMAGE.get(); }
@@ -216,7 +216,21 @@ public class AntarchyNeoforge {
AntarchyNeoforgeSounds.QUEEN_BEAM_SHOOT,
AntarchyNeoforgeSounds.QUEEN_BEAM_START,
AntarchyNeoforgeSounds.QUEEN_BEAM_LOOP,
AntarchyNeoforgeSounds.QUEEN_BEAM_END
AntarchyNeoforgeSounds.QUEEN_BEAM_END,
AntarchyNeoforgeSounds.KING_STOMP,
AntarchyNeoforgeSounds.KING_ROAR,
AntarchyNeoforgeSounds.KING_WING_FLAP,
AntarchyNeoforgeSounds.KING_FLY_LOOP,
AntarchyNeoforgeSounds.PRINCE_IDLE,
AntarchyNeoforgeSounds.PRINCE_BITE,
AntarchyNeoforgeSounds.PRINCE_SHOOT,
AntarchyNeoforgeSounds.PRINCE_FLY,
AntarchyNeoforgeSounds.PRINCE_STEP,
AntarchyNeoforgeSounds.PRINCESS_IDLE,
AntarchyNeoforgeSounds.PRINCESS_BITE,
AntarchyNeoforgeSounds.PRINCESS_SHOOT,
AntarchyNeoforgeSounds.PRINCESS_FLY,
AntarchyNeoforgeSounds.PRINCESS_STEP
);
bindCommonObjects();
ScorpionWhipTetherSync.setSink((player, targetId) -> PacketDistributor.sendToPlayersTrackingEntityAndSelf(
@@ -242,6 +256,9 @@ public class AntarchyNeoforge {
com.craisinlord.antarchy.content.time.TimeDilationApi.setSyncDispatcher(
com.craisinlord.antarchy.neoforge.network.AntarchyTimeDilationNetworking::syncRate
);
com.craisinlord.antarchy.content.time.TimeDilationApi.setFieldSyncDispatcher(
com.craisinlord.antarchy.neoforge.network.AntarchyTimeDilationNetworking::syncFields
);
if (isSupportedInfinityLoaded()) {
InfinityCompat.bind(new NeoForgeInfinityCompat());
}
@@ -407,6 +424,7 @@ public class AntarchyNeoforge {
AntarchyObjects.setVortex(AntarchyNeoforgeEntites.VORTEX);
AntarchyObjects.setWindVortex(() -> AntarchyNeoforgeEntites.WIND_VORTEX.get());
AntarchyObjects.setTimeDilationField(() -> AntarchyNeoforgeEntites.TIME_DILATION_FIELD.get());
AntarchyObjects.setRoyalBlackHole(() -> AntarchyNeoforgeEntites.ROYAL_BLACK_HOLE.get());
AntarchyObjects.setVortexChargeProjectile(() -> AntarchyNeoforgeEntites.VORTEX_CHARGE_PROJECTILE.get());
AntarchyObjects.setPrince(() -> AntarchyNeoforgeEntites.PRINCE.get());
AntarchyObjects.setPrincess(() -> AntarchyNeoforgeEntites.PRINCESS.get());
@@ -3,6 +3,7 @@ package com.craisinlord.antarchy.neoforge;
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.time.TimeDilationCommand;
import net.neoforged.bus.api.SubscribeEvent;
@@ -19,6 +20,7 @@ public final class AntarchyNeoforgeEvents {
CavarynCommand.register(event.getDispatcher());
GravityCommand.register(event.getDispatcher());
CaterpillarCommand.register(event.getDispatcher());
DimensionalTearCommand.register(event.getDispatcher());
TimeDilationCommand.register(event.getDispatcher());
}
}
@@ -21,14 +21,6 @@ public final class AntarchyKeyBindings {
CATEGORY
);
public static final KeyMapping DORRIE_CHARGE_JUMP = new KeyMapping(
"key.antarchy.dorrie_charge_jump",
KeyConflictContext.IN_GAME,
InputConstants.Type.KEYSYM,
InputConstants.KEY_LCONTROL,
CATEGORY
);
public static final KeyMapping MOUNT_SPECIAL = new KeyMapping(
"key.antarchy.mount_special",
KeyConflictContext.IN_GAME,
@@ -65,7 +57,6 @@ public final class AntarchyKeyBindings {
@SubscribeEvent
public static void onRegisterKeyMappings(RegisterKeyMappingsEvent event) {
event.register(BRUTALFLY_FLAP);
event.register(DORRIE_CHARGE_JUMP);
event.register(MOUNT_SPECIAL);
event.register(MOUNT_FLIGHT_TOGGLE);
event.register(TIGERS_EYE_CAMOUFLAGE);
@@ -150,6 +150,7 @@ public final class AntarchyNeoForgeClient {
event.registerEntityRenderer(AntarchyNeoforgeEntites.VORTEX_CHARGE_PROJECTILE.get(), ThrownItemRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.WIND_VORTEX.get(), WindVortexRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.TIME_DILATION_FIELD.get(), TimeDilationFieldRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.ROYAL_BLACK_HOLE.get(), net.minecraft.client.renderer.entity.NoopRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.CRITTER_CAGE_PROJECTILE.get(), ThrownItemRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.WORM_HOOK_PROJECTILE.get(), ThrownItemRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.HUSH_PROJECTILE.get(), HushProjectileRenderer::new);
@@ -40,7 +40,7 @@ public final class DorrieJumpClientHandler {
wasPressingJump = pressingJump;
}
boolean pressingCharge = AntarchyKeyBindings.DORRIE_CHARGE_JUMP.isDown();
boolean pressingCharge = AntarchyKeyBindings.MOUNT_SPECIAL.isDown();
if (pressingCharge != wasPressingCharge) {
PacketDistributor.sendToServer(new DorrieChargeJumpPayload(pressingCharge));
if (!pressingCharge && player.getVehicle() instanceof DorrieEntity dorrie) {
@@ -1,9 +1,13 @@
package com.craisinlord.antarchy.neoforge.network;
import com.craisinlord.antarchy.content.network.TimeDilationRatePayload;
import com.craisinlord.antarchy.content.network.TimeDilationFieldsPayload;
import com.craisinlord.antarchy.content.time.TimeDilationFieldSnapshot;
import java.util.List;
import com.craisinlord.antarchy.content.time.TimeDilationApi;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.world.entity.Entity;
import net.minecraft.server.level.ServerPlayer;
import net.neoforged.neoforge.network.PacketDistributor;
import net.neoforged.neoforge.network.handling.IPayloadContext;
import net.neoforged.neoforge.network.registration.PayloadRegistrar;
@@ -18,21 +22,32 @@ public final class AntarchyTimeDilationNetworking {
TimeDilationRatePayload.STREAM_CODEC,
AntarchyTimeDilationNetworking::handleTimeDilationRate
);
registrar.playToClient(
TimeDilationFieldsPayload.TYPE,
TimeDilationFieldsPayload.STREAM_CODEC,
AntarchyTimeDilationNetworking::handleTimeDilationFields
);
}
public static void syncRate(ServerPlayer player, double rate) {
PacketDistributor.sendToPlayer(player, new TimeDilationRatePayload(player.getId(), rate));
public static void syncRate(Entity entity, double rate) {
PacketDistributor.sendToPlayersTrackingEntityAndSelf(entity, new TimeDilationRatePayload(entity.getUUID(), rate));
}
public static void syncRateToPlayer(ServerPlayer player, Entity entity, double rate) {
PacketDistributor.sendToPlayer(player, new TimeDilationRatePayload(entity.getUUID(), rate));
}
public static void syncFields(ServerPlayer player, List<TimeDilationFieldSnapshot> fields) {
PacketDistributor.sendToPlayer(player, new TimeDilationFieldsPayload(fields));
}
private static void handleTimeDilationRate(TimeDilationRatePayload payload, IPayloadContext context) {
context.enqueueWork(() -> {
Entity entity = context.player().level().getEntity(payload.entityId());
if (entity == null && context.player().getId() == payload.entityId()) {
entity = context.player();
}
if (entity != null) {
TimeDilationApi.applySyncedRate(entity, payload.rate());
}
TimeDilationApi.applySyncedRate(payload.entityUuid(), payload.rate());
});
}
private static void handleTimeDilationFields(TimeDilationFieldsPayload payload, IPayloadContext context) {
context.enqueueWork(() -> com.craisinlord.antarchy.content.client.ClientTimeDilationTicker.applyFields(payload.fields()));
}
}
@@ -304,6 +304,12 @@ public final class AntarchyNeoForgeEvents {
}
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(
trackingPlayer, event.getTarget(), access.antarchy$getTimeDilationRate()
);
}
if (event.getTarget() instanceof ServerPlayer trackedPlayer && event.getEntity() instanceof ServerPlayer trackingPlayer) {
TigerEyeCamouflageSync.syncTo(trackingPlayer, trackedPlayer);
}
@@ -384,6 +384,13 @@ public final class AntarchyNeoforgeEntites {
.clientTrackingRange(10)
.updateInterval(1)
.build("wind_vortex"));
public static final DeferredHolder<EntityType<?>, EntityType<com.craisinlord.antarchy.content.entity.royal.RoyalBlackHoleEntity>> ROYAL_BLACK_HOLE = ENTITY_TYPES.register("royal_black_hole",
() -> EntityType.Builder.<com.craisinlord.antarchy.content.entity.royal.RoyalBlackHoleEntity>of(com.craisinlord.antarchy.content.entity.royal.RoyalBlackHoleEntity::new, MobCategory.MISC)
.sized(1.0F, 1.0F)
.clientTrackingRange(16)
.updateInterval(2)
.fireImmune()
.build("royal_black_hole"));
public static final DeferredHolder<EntityType<?>, EntityType<TimeDilationFieldEntity>> TIME_DILATION_FIELD = ENTITY_TYPES.register("time_dilation_field",
() -> EntityType.Builder.<TimeDilationFieldEntity>of(TimeDilationFieldEntity::new, MobCategory.MISC)
.sized(0.5F, 0.5F)
@@ -235,6 +235,17 @@ public final class AntarchyNeoforgeSounds {
public static final DeferredHolder<SoundEvent, SoundEvent> QUEEN_BLACK_HOLE_SHOOT = registerSoundEvent("queen_black_hole_shoot");
public static final DeferredHolder<SoundEvent, SoundEvent> QUEEN_CAST_SHOOT = registerSoundEvent("queen_cast_shoot");
public static final DeferredHolder<SoundEvent, SoundEvent> PRINCE_IDLE = registerSoundEvent("prince_idle");
public static final DeferredHolder<SoundEvent, SoundEvent> PRINCE_BITE = registerSoundEvent("prince_bite");
public static final DeferredHolder<SoundEvent, SoundEvent> PRINCE_SHOOT = registerSoundEvent("prince_shoot");
public static final DeferredHolder<SoundEvent, SoundEvent> PRINCE_FLY = registerSoundEvent("prince_fly");
public static final DeferredHolder<SoundEvent, SoundEvent> PRINCE_STEP = registerSoundEvent("prince_step");
public static final DeferredHolder<SoundEvent, SoundEvent> PRINCESS_IDLE = registerSoundEvent("princess_idle");
public static final DeferredHolder<SoundEvent, SoundEvent> PRINCESS_BITE = registerSoundEvent("princess_bite");
public static final DeferredHolder<SoundEvent, SoundEvent> PRINCESS_SHOOT = registerSoundEvent("princess_shoot");
public static final DeferredHolder<SoundEvent, SoundEvent> PRINCESS_FLY = registerSoundEvent("princess_fly");
public static final DeferredHolder<SoundEvent, SoundEvent> PRINCESS_STEP = registerSoundEvent("princess_step");
private AntarchyNeoforgeSounds() {}
public static void register(IEventBus modEventBus) {