anthology split

This commit is contained in:
craisinlord committed 2026-10-12 19:55:08 -05:00
1 parent bba2a56671
commit f7e7bebac3
244 files changed
+452 -11595

No files matched your search

+1 -1
View File
@@ -122,7 +122,7 @@ tasks.named('processResources', ProcessResources).configure {
// does — inject the refmap key into fabric's own copy of the shared file after copying.
tasks.named('processResources', ProcessResources).configure {
doLast {
['antarchy-common.mixins.json', 'antarchy-sodium.mixins.json'].each { configName ->
['antarchy-common.mixins.json'].each { configName ->
var mixinConfig = new File(destinationDir, configName)
var json = new groovy.json.JsonSlurper().parse(mixinConfig)
json.put('refmap', 'antarchy.mixins.refmap.json')
@@ -153,7 +153,6 @@ public final class AntarchyFabric implements ModInitializer {
GameRuleRegistry.register(name, category, GameRuleFactory.createBooleanRule(defaultValue))
);
AntarchyFabricNetworking.register();
AntarchyFabricNetworking.bootstrapMultipartCommon();
AntarchyConfigModuleFabric.init();
AntarchyFabricContent.register();
registerWorldgenFeatures();
@@ -18,7 +18,6 @@ import com.craisinlord.antarchy.content.entity.vortex.VortexChargeProjectileEnti
import com.craisinlord.antarchy.content.entity.vortex.VortexEntity;
import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync;
import com.craisinlord.antarchy.content.item.WormHookTetherSync;
import com.craisinlord.antarchy.content.network.ImpactShakeSync;
import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync;
import com.craisinlord.antarchy.content.network.HordeIntensitySync;
import com.craisinlord.antarchy.content.tigereye.TigerEyeCamouflageSync;
@@ -370,7 +369,6 @@ public final class AntarchyFabricContent {
AntarchyObjects.setLucid(AntarchyFabricEntities.LUCID);
AntarchyObjects.setVortex(AntarchyFabricEntities.VORTEX);
AntarchyObjects.setWindVortex(() -> AntarchyFabricEntities.WIND_VORTEX.get());
AntarchyObjects.setTimeDilationField(() -> AntarchyFabricEntities.TIME_DILATION_FIELD.get());
AntarchyObjects.setRoyalBlackHole(() -> AntarchyFabricEntities.ROYAL_BLACK_HOLE.get());
AntarchyObjects.setRoyalAssailantBlackHole(() -> AntarchyFabricEntities.ROYAL_ASSAILANT_BLACK_HOLE.get());
AntarchyObjects.setVortexChargeProjectile(() -> AntarchyFabricEntities.VORTEX_CHARGE_PROJECTILE.get());
@@ -556,17 +554,10 @@ public final class AntarchyFabricContent {
WormHookTetherSync.setSink(AntarchyFabricNetworking::syncWormHookTether);
HerculesBeetleImpactShakeSync.setSink((player, ticks) -> net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(player, new com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakePayload(ticks)));
com.craisinlord.antarchy.content.network.KingJudgmentFlashSync.setSink((player, ticks) -> net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(player, new com.craisinlord.antarchy.content.network.KingJudgmentFlashPayload(ticks)));
ImpactShakeSync.setSink((player, payload) -> net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(player, payload));
HordeIntensitySync.setSink((player, payload) -> net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(player, payload));
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.time.TimeDilationApi.setSyncDispatcher(
com.craisinlord.antarchy.fabric.network.AntarchyFabricTimeDilationNetworking::syncRate
);
com.craisinlord.antarchy.content.time.TimeDilationApi.setFieldSyncDispatcher(
com.craisinlord.antarchy.fabric.network.AntarchyFabricTimeDilationNetworking::syncFields
);
AntarchyFabricMisc.POI_TYPES.register();
AntarchyFabricMisc.VILLAGER_PROFESSIONS.register();
AntarchyFabricEvents.register();
@@ -24,16 +24,11 @@ import com.craisinlord.antarchy.content.command.CaterpillarCommand;
import com.craisinlord.antarchy.content.command.DimensionalTearCommand;
import com.craisinlord.antarchy.content.command.QueenLocateCommand;
import com.craisinlord.antarchy.content.command.RoyalCommand;
import com.craisinlord.antarchy.content.time.TimeDilationCommand;
import com.craisinlord.antarchy.content.time.TimeDilationManager;
import com.craisinlord.antarchy.content.time.ChronosphereManager;
import com.craisinlord.antarchy.content.item.WormHookTetherManager;
import com.craisinlord.antarchy.content.entity.trades.ComputerScientistTradeManager;
import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisUndersideManager;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents;
import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents;
import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
@@ -80,29 +75,13 @@ public final class AntarchyFabricEvents {
ServerLifecycleEvents.SERVER_STOPPING.register(server -> com.craisinlord.antarchy.content.entity.ant.AntArrivalScheduler.clear());
ServerLifecycleEvents.SERVER_STOPPING.register(server -> com.craisinlord.antarchy.content.portalgun.PortalGunMoonAimSync.clear());
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> {
ChronosphereManager.refresh(handler.player);
TimeDilationManager.resyncPersistentEffects(handler.player);
PortalGunSavedData.clearMissingGuns(handler.player);
});
ServerPlayerEvents.AFTER_RESPAWN.register((oldPlayer, newPlayer, alive) -> {
ChronosphereManager.refresh(newPlayer);
TimeDilationManager.resyncPersistentEffects(newPlayer);
});
ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register((player, origin, destination) -> ChronosphereManager.refresh(player));
net.fabricmc.fabric.api.networking.v1.EntityTrackingEvents.START_TRACKING.register((trackedEntity, player) -> {
if (trackedEntity instanceof com.craisinlord.antarchy.content.time.TimeDilationEntityAccess access
&& player instanceof ServerPlayer serverPlayer) {
com.craisinlord.antarchy.fabric.network.AntarchyFabricTimeDilationNetworking.syncRateToPlayer(
serverPlayer, trackedEntity, access.antarchy$getTimeDilationRate()
);
}
});
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> {
CavarynCommand.register(dispatcher);
CaterpillarCommand.register(dispatcher);
DimensionalTearCommand.register(dispatcher);
QueenLocateCommand.register(dispatcher);
TimeDilationCommand.register(dispatcher);
RoyalCommand.register(dispatcher);
com.craisinlord.antarchy.content.command.PortalGunCommand.register(dispatcher);
});
@@ -224,7 +203,6 @@ public final class AntarchyFabricEvents {
WormHookTetherManager.tick(player);
}
}
TimeDilationManager.tickServer(server);
com.craisinlord.antarchy.content.entity.ant.AntArrivalScheduler.tick(server);
invertedPlayers.retainAll(activeThisTick);
});
@@ -24,11 +24,10 @@ public final class AntarchyFabricClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
com.craisinlord.antarchy.Antarchy.physicalClient = true;
com.craisinlord.antarchy.content.movement.AntarchyGravityHooks.registerClient();
com.craisinlord.antarchy.content.AntarchyAnthologyHooks.registerClient();
ModelLoadingPlugin.register(plugin -> plugin.addModels(SeparateLargeItemModels.all()));
ClientTickEvents.END_CLIENT_TICK.register(client -> QueenMusicHandler.tick(client, AntarchyFabricSounds.THE_QUEEN.get()));
AntarchyFabricClientNetworking.register();
AntarchyFabricClientNetworking.bootstrapMultipartClient();
AntarchyFabricClientBootstrap.register();
AntarchyComputerGames.register();
ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(new IdentifiableResourceReloadListener() {
@@ -5,19 +5,16 @@ import com.craisinlord.antarchy.fabric.registry.AntarchyFabricItems;
import com.craisinlord.antarchy.fabric.registry.AntarchyFabricMisc;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.client.CameraShakeClientState;
import com.craisinlord.antarchy.content.client.AntarchyArchivePreviews;
import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState;
import com.craisinlord.antarchy.content.client.HordeClientState;
import com.craisinlord.antarchy.content.client.KingJudgmentFlashClientState;
import com.craisinlord.antarchy.content.client.PortalGunRollClientState;
import com.craisinlord.antarchy.content.client.SizeRaySoundHandler;
import com.craisinlord.antarchy.content.client.TigerEyeClientHooks;
import com.craisinlord.antarchy.content.client.renderer.*;
import com.craisinlord.antarchy.content.client.particle.*;
import com.craisinlord.antarchy.content.client.renderer.AntiwaterFluidRenderer;
import com.craisinlord.antarchy.fabric.AntarchyFabricContent;
import com.craisinlord.antarchy.fabric.client.renderer.MultipartPartRenderer;
import net.fabricmc.fabric.api.client.rendering.v1.LivingEntityFeatureRendererRegistrationCallback;
import net.minecraft.world.entity.EntityType;
import net.minecraft.client.renderer.blockentity.VaultRenderer;
@@ -28,7 +25,6 @@ import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.CoreShaderRegistrationCallback;
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
@@ -38,7 +34,6 @@ import net.minecraft.client.model.ChestBoatModel;
import net.minecraft.client.gui.screens.MenuScreens;
import net.minecraft.client.renderer.BiomeColors;
import net.minecraft.client.renderer.RenderType;
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
import net.minecraft.client.renderer.texture.TextureAtlas;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.client.renderer.blockentity.CampfireRenderer;
@@ -68,18 +63,6 @@ public final class AntarchyFabricClientBootstrap {
}
public static void register() {
CoreShaderRegistrationCallback.EVENT.register(context -> {
PortalGunPortalViewRenderer.clearPortalViewShader();
try {
context.register(
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "portal_view"),
DefaultVertexFormat.POSITION_TEX,
PortalGunPortalViewRenderer::setPortalViewShader
);
} catch (java.io.IOException | RuntimeException exception) {
Antarchy.LOGGER.error("Failed to register portal view shader", exception);
}
});
AntarchyArchivePreviews.register();
AntarchyKeyBindings.register();
MenuScreens.register(AntarchyFabricMisc.DORRIE_INVENTORY_MENU.get(), com.craisinlord.antarchy.content.client.screen.DorrieInventoryScreen::new);
@@ -153,7 +136,6 @@ public final class AntarchyFabricClientBootstrap {
EntityRendererRegistry.register(AntarchyFabricEntities.DR_TRAYAURUS.get(), context -> new DrTrayaurusRenderer(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/dr_trayaurus.png")));
EntityRendererRegistry.register(AntarchyFabricEntities.STRATOSHARK.get(), context -> withTemporalGeoLayer(new StratosharkRenderer(context)));
EntityRendererRegistry.register(AntarchyFabricEntities.KRAKEN.get(), context -> withTemporalGeoLayer(new KrakenRenderer(context)));
EntityRendererRegistry.register(AntarchyFabricEntities.KRAKEN_PART.get(), MultipartPartRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.TENTACLE.get(), com.craisinlord.antarchy.content.client.renderer.TentacleRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.KRAKENS_GRASP_TRIDENT.get(), com.craisinlord.antarchy.content.client.renderer.KrakensGraspThrownTridentRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.MISSILE_SQUID.get(), context -> withTemporalGeoLayer(new MissileSquidRenderer(context)));
@@ -177,7 +159,6 @@ public final class AntarchyFabricClientBootstrap {
EntityRendererRegistry.register(AntarchyFabricEntities.LUCID_PEARL_PROJECTILE.get(), ThrownItemRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.VORTEX_CHARGE_PROJECTILE.get(), ThrownItemRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.WIND_VORTEX.get(), WindVortexRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.TIME_DILATION_FIELD.get(), TimeDilationFieldRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.ROYAL_BLACK_HOLE.get(), com.craisinlord.antarchy.content.client.renderer.RoyalBlackHoleRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.ROYAL_ASSAILANT_BLACK_HOLE.get(), com.craisinlord.antarchy.content.client.renderer.RoyalAssailantBlackHoleRenderer::new);
EntityRendererRegistry.register(AntarchyFabricEntities.CRITTER_CAGE_PROJECTILE.get(), ThrownItemRenderer::new);
@@ -571,11 +552,9 @@ public final class AntarchyFabricClientBootstrap {
private static void registerClientCallbacks() {
TigerEyeClientHooks.setCamouflageKeyTextSupplier(() -> AntarchyKeyBindings.TIGERS_EYE_CAMOUFLAGE.getTranslatedKeyMessage());
ClientTickEvents.END_CLIENT_TICK.register(client -> {
CameraShakeClientState.tick();
HerculesBeetleImpactShakeClientState.tick();
KingJudgmentFlashClientState.tick();
HordeClientState.tick();
PortalGunRollClientState.tick(client);
if (client.player != null) {
ParalyzedClientHandler.clampPlayerInput(client.player);
}
@@ -595,9 +574,6 @@ public final class AntarchyFabricClientBootstrap {
RoyalMountClientHandler.tick();
GiantFryingPanClientHandler.tick();
SizeRaySoundHandler.tick(client);
if (client.level != null) {
com.craisinlord.antarchy.content.client.ClientTimeDilationTicker.tick(client.level);
}
});
BigBerthaClientHandler.register();
@@ -631,7 +607,6 @@ public final class AntarchyFabricClientBootstrap {
BloodCrystalKatanaTrailHandler.render(context);
ScorpionWhipTetherRenderHandler.render(context);
WormHookTetherRenderHandler.render(context);
com.craisinlord.antarchy.content.client.renderer.PortalGunPortalViewRenderer.render(context.camera(), context.positionMatrix(), context.projectionMatrix(), context.tickCounter());
});
}
@@ -1,37 +0,0 @@
package com.craisinlord.antarchy.fabric.client.multipart;
import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.world.entity.Entity;
public final class MultipartClientPartLevelRegistry {
private MultipartClientPartLevelRegistry() {
}
public static void register(MultipartEntityOwner owner) {
Entity[] parts = owner.antarchy$getMultipartParts();
if (parts == null) {
return;
}
ClientLevel clientLevel = (ClientLevel) ((Entity) owner).level();
for (Entity part : parts) {
if (part != null && clientLevel.getEntity(part.getId()) != part) {
clientLevel.addEntity(part);
}
}
}
public static void unregister(MultipartEntityOwner owner) {
Entity[] parts = owner.antarchy$getMultipartParts();
if (parts == null) {
return;
}
for (Entity part : parts) {
if (part != null && !part.isRemoved()) {
part.discard();
}
}
}
}
@@ -1,26 +0,0 @@
package com.craisinlord.antarchy.fabric.client.renderer;
import com.craisinlord.antarchy.fabric.entity.multipart.MultipartPartEntity;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.resources.ResourceLocation;
public class MultipartPartRenderer extends EntityRenderer<MultipartPartEntity> {
private static final ResourceLocation TEXTURE = ResourceLocation.withDefaultNamespace("textures/misc/white.png");
public MultipartPartRenderer(EntityRendererProvider.Context context) {
super(context);
this.shadowRadius = 0.0F;
}
@Override
public void render(MultipartPartEntity entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight) {
}
@Override
public ResourceLocation getTextureLocation(MultipartPartEntity entity) {
return TEXTURE;
}
}
@@ -1,65 +0,0 @@
package com.craisinlord.antarchy.fabric.entity.multipart;
import com.craisinlord.antarchy.content.entity.multipart.MultipartPartDefinition;
public final class FabricKrakenMultipartLayout {
private static final MultipartPartDefinition[] PARTS = {
new MultipartPartDefinition(
"tentacle_mass",
14.0F,
18.0F,
0.90F,
12.0D,
13.5D,
0.00D,
true
),
new MultipartPartDefinition(
"head",
15.0F,
11.5F,
1.00F,
26.0D,
19.0D,
0.00D,
true
),
new MultipartPartDefinition(
"back_head",
13.0F,
11.0F,
1.10F,
38.0D,
20.5D,
0.00D,
true
),
new MultipartPartDefinition(
"mantle",
16.0F,
14.0F,
1.00F,
51.0D,
23.0D,
0.00D,
true
),
new MultipartPartDefinition(
"crest",
12.0F,
10.0F,
1.10F,
63.0D,
28.0D,
0.00D,
true
)
};
private FabricKrakenMultipartLayout() {
}
public static MultipartPartDefinition part(int partIndex) {
return PARTS[partIndex];
}
}
@@ -1,211 +0,0 @@
package com.craisinlord.antarchy.fabric.entity.multipart;
import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner;
import com.craisinlord.antarchy.content.entity.multipart.MultipartFramework;
import com.craisinlord.antarchy.content.entity.multipart.MultipartPartAccess;
import com.craisinlord.antarchy.content.entity.multipart.MultipartPartDefinition;
import 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;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityDimensions;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.Pose;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3;
import org.jetbrains.annotations.Nullable;
public class MultipartPartEntity extends Entity implements MultipartPartAccess {
@Nullable
private MultipartEntityOwner owner;
private int partIndex;
@Nullable
private MultipartPartDefinition definition;
public MultipartPartEntity(EntityType<? extends MultipartPartEntity> entityType, Level level) {
super(entityType, level);
this.setNoGravity(true);
}
public MultipartPartEntity antarchy$configure(MultipartEntityOwner owner, int partIndex, MultipartPartDefinition definition) {
this.owner = owner;
this.partIndex = partIndex;
this.definition = definition;
this.refreshDimensions();
this.antarchy$syncFromParent();
return this;
}
@Nullable
public Entity antarchy$getMultipartParent() {
return this.owner == null ? null : (Entity) this.owner;
}
public int getPartIndex() {
return this.partIndex;
}
public String getPartName() {
return this.definition == null ? "" : this.definition.name();
}
public float getDamageMultiplier() {
return this.definition == null ? 1.0F : this.definition.damageMultiplier();
}
@Override
public void antarchy$syncFromParent() {
Entity parent = this.antarchy$getMultipartParent();
MultipartPartDefinition definition = this.definition;
if (parent == null || definition == null || parent.isRemoved()) {
return;
}
GravityApi.applySyncedState(
this,
GravityApi.getGravityDirection(parent),
GravityApi.getPrevGravityDirection(parent),
GravityApi.isGravityForced(parent),
GravityApi.getTransitionDuration(parent),
GravityApi.getTransitionRemaining(parent)
);
double oldX = this.getX();
double oldY = this.getY();
double oldZ = this.getZ();
double yawRadians = Math.toRadians(parent.getYRot());
Vec3 forward = new Vec3(-Math.sin(yawRadians), 0.0D, Math.cos(yawRadians));
Vec3 right = new Vec3(forward.z, 0.0D, -forward.x);
Vec3 localOffset = new Vec3(
forward.x * definition.forwardOffset() + right.x * definition.lateralOffset(),
definition.yOffset(),
forward.z * definition.forwardOffset() + right.z * definition.lateralOffset());
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());
this.setXRot(parent.getXRot());
this.xo = oldX;
this.yo = oldY;
this.zo = oldZ;
this.xOld = oldX;
this.yOld = oldY;
this.zOld = oldZ;
}
@Override
public boolean is(Entity entity) {
return entity == this || entity == this.antarchy$getMultipartParent();
}
@Override
public boolean isPickable() {
return true;
}
@Override
public boolean isAttackable() {
return true;
}
@Override
public boolean isPushable() {
return false;
}
@Override
public boolean canBeCollidedWith() {
return !this.isRemoved();
}
@Override
public boolean canCollideWith(Entity entity) {
MultipartPartDefinition definition = this.definition;
if (definition == null || !definition.collisionEnabled()) {
return false;
}
Entity parent = this.antarchy$getMultipartParent();
if (entity == parent) {
return false;
}
if (entity instanceof MultipartPartEntity otherPart && otherPart.antarchy$getMultipartParent() == parent) {
return false;
}
return entity.canBeCollidedWith() && !this.isPassengerOfSameVehicle(entity);
}
@Override
public boolean shouldBeSaved() {
return false;
}
@Override
public ItemStack getPickResult() {
Entity parent = this.antarchy$getMultipartParent();
return parent == null ? ItemStack.EMPTY : parent.getPickResult();
}
@Override
public boolean hurt(DamageSource source, float amount) {
Entity parent = this.antarchy$getMultipartParent();
MultipartPartDefinition definition = this.definition;
if (parent == null || definition == null || parent.isRemoved()) {
return false;
}
if (this.level().isClientSide()) {
if (source.getEntity() instanceof Player) {
MultipartFramework.sendMultipartAttack(parent.getUUID(), this.partIndex, amount * definition.damageMultiplier());
}
return true;
}
return this.owner != null && this.owner.antarchy$hurtMultipartPart(this, source, amount * definition.damageMultiplier());
}
@Override
public boolean isInvulnerableTo(DamageSource source) {
return false;
}
@Override
public InteractionResult interactAt(Player player, Vec3 vec, InteractionHand hand) {
Entity parent = this.antarchy$getMultipartParent();
if (parent == null || parent.isRemoved()) {
return InteractionResult.PASS;
}
if (this.level().isClientSide()) {
MultipartFramework.sendMultipartInteract(parent.getUUID(), this.partIndex, hand.ordinal());
return InteractionResult.SUCCESS;
}
return this.owner == null ? InteractionResult.PASS : this.owner.antarchy$interactMultipartPart(this, player, vec, hand);
}
@Override
public EntityDimensions getDimensions(Pose pose) {
MultipartPartDefinition definition = this.definition;
return definition == null ? super.getDimensions(pose) : EntityDimensions.scalable(definition.width(), definition.height());
}
@Override
protected void defineSynchedData(net.minecraft.network.syncher.SynchedEntityData.Builder builder) {
}
@Override
protected void readAdditionalSaveData(CompoundTag tag) {
}
@Override
protected void addAdditionalSaveData(CompoundTag tag) {
}
}
@@ -1,37 +0,0 @@
package com.craisinlord.antarchy.fabric.entity.multipart;
import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Entity;
public final class MultipartServerPartLevelRegistry {
private MultipartServerPartLevelRegistry() {
}
public static void register(MultipartEntityOwner owner) {
Entity[] parts = owner.antarchy$getMultipartParts();
if (parts == null) {
return;
}
ServerLevel serverLevel = (ServerLevel) ((Entity) owner).level();
for (Entity part : parts) {
if (part != null && serverLevel.getEntity(part.getId()) != part) {
serverLevel.addFreshEntity(part);
}
}
}
public static void unregister(MultipartEntityOwner owner) {
Entity[] parts = owner.antarchy$getMultipartParts();
if (parts == null) {
return;
}
for (Entity part : parts) {
if (part != null && !part.isRemoved()) {
part.discard();
}
}
}
}
@@ -1,50 +0,0 @@
package com.craisinlord.antarchy.fabric.mixin.client;
import com.craisinlord.antarchy.content.client.CameraShakeClientState;
import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState;
import com.craisinlord.antarchy.content.item.BigBerthaItem;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Axis;
import net.minecraft.client.Minecraft;
import net.minecraft.util.Mth;
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 net.minecraft.client.renderer.GameRenderer;
@Mixin(GameRenderer.class)
public abstract class CameraShakeMixin {
private static final int TORETERROR_SHAKE_TICKS = 25;
@Shadow @Final private Minecraft minecraft;
@Inject(method = "bobView", at = @At("TAIL"))
private void applyCameraShake(PoseStack poseStack, float partialTick, CallbackInfo ci) {
if (minecraft.level == null || minecraft.player == null) {
CameraShakeClientState.clear();
return;
}
float shakeStrength = CameraShakeClientState.getStrength(minecraft.gameRenderer.getMainCamera().getPosition());
int beetleShakeTicks = HerculesBeetleImpactShakeClientState.getTicks();
if (beetleShakeTicks > 0) {
shakeStrength += (float) beetleShakeTicks / TORETERROR_SHAKE_TICKS * 2.0F;
}
int bigBerthaShakeTicks = BigBerthaItem.clientShakeTicks;
if (bigBerthaShakeTicks > 0) {
shakeStrength += (float) bigBerthaShakeTicks / TORETERROR_SHAKE_TICKS * 2.0F;
}
if (shakeStrength <= 0.0F) return;
float time = (float) (minecraft.player.tickCount + partialTick);
poseStack.mulPose(Axis.YP.rotationDegrees(Mth.sin(time * 1.5F) * shakeStrength * 2.5F));
poseStack.mulPose(Axis.XP.rotationDegrees(Mth.cos(time * 1.8F) * shakeStrength * 2.0F));
poseStack.mulPose(Axis.ZP.rotationDegrees(Mth.sin(time * 2.2F) * shakeStrength * 1.5F));
}
}
@@ -1,20 +0,0 @@
package com.craisinlord.antarchy.fabric.mixin.client;
import com.craisinlord.antarchy.fabric.registry.AntarchyFabricEntities;
import com.craisinlord.antarchy.fabric.AntarchyFabricContent;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.network.protocol.game.ClientboundAddEntityPacket;
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(ClientPacketListener.class)
public abstract class MultipartClientSpawnMixin {
@Inject(method = "handleAddEntity", at = @At("HEAD"), cancellable = true)
private void antarchy$skipTrackedMultipartPlaceholders(ClientboundAddEntityPacket packet, CallbackInfo ci) {
if (packet.getType() == AntarchyFabricEntities.KRAKEN_PART.get()) {
ci.cancel();
}
}
}
@@ -1,34 +0,0 @@
package com.craisinlord.antarchy.fabric.mixin.client;
import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner;
import com.craisinlord.antarchy.fabric.client.multipart.MultipartClientPartLevelRegistry;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.entity.EntityInLevelCallback;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Entity.class)
public abstract class MultipartEntityLevelRegistryMixin {
@Inject(method = "setLevelCallback", at = @At("TAIL"))
private void antarchy$registerMultipartParts(EntityInLevelCallback entityInLevelCallback, CallbackInfo ci) {
Entity self = (Entity) (Object) this;
if (self instanceof MultipartEntityOwner owner
&& entityInLevelCallback != EntityInLevelCallback.NULL
&& self.level().isClientSide()) {
if (owner.antarchy$getMultipartParts() == null) {
owner.antarchy$spawnMultipartParts();
}
MultipartClientPartLevelRegistry.register(owner);
}
}
@Inject(method = "setRemoved", at = @At("HEAD"))
private void antarchy$unregisterMultipartParts(Entity.RemovalReason removalReason, CallbackInfo ci) {
Entity self = (Entity) (Object) this;
if (self instanceof MultipartEntityOwner owner && self.level().isClientSide()) {
MultipartClientPartLevelRegistry.unregister(owner);
}
}
}
@@ -1,28 +0,0 @@
package com.craisinlord.antarchy.fabric.mixin.client;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.mojang.blaze3d.pipeline.RenderTarget;
import java.nio.IntBuffer;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL30;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@Mixin(RenderTarget.class)
public abstract class RenderTargetDepthStencilMixin {
@WrapOperation(method = "createBuffers", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;_texImage2D(IIIIIIIILjava/nio/IntBuffer;)V"))
private void antarchy$allocateDepthStencil(int target, int level, int internalFormat, int width, int height, int border, int format, int type,
IntBuffer pixels, Operation<Void> original) {
if (internalFormat == GL11.GL_DEPTH_COMPONENT) {
original.call(target, level, GL30.GL_DEPTH24_STENCIL8, width, height, border, GL30.GL_DEPTH_STENCIL, GL30.GL_UNSIGNED_INT_24_8, pixels);
return;
}
original.call(target, level, internalFormat, width, height, border, format, type, pixels);
}
@WrapOperation(method = "createBuffers", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;_glFramebufferTexture2D(IIIII)V"))
private void antarchy$attachDepthStencil(int target, int attachment, int textureTarget, int texture, int level, Operation<Void> original) {
original.call(target, attachment == GL30.GL_DEPTH_ATTACHMENT ? GL30.GL_DEPTH_STENCIL_ATTACHMENT : attachment, textureTarget, texture, level);
}
}
@@ -1,37 +0,0 @@
package com.craisinlord.antarchy.fabric.mixin.entity;
import com.craisinlord.antarchy.content.entity.multipart.MultipartEntityOwner;
import com.craisinlord.antarchy.fabric.entity.multipart.MultipartServerPartLevelRegistry;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.entity.EntityInLevelCallback;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Entity.class)
/*
* Keeps multipart child entities registered in Fabric levels.
*/
public abstract class MultipartEntityLevelRegistryMixin {
@Inject(method = "setLevelCallback", at = @At("TAIL"))
private void antarchy$registerMultipartParts(EntityInLevelCallback entityInLevelCallback, CallbackInfo ci) {
Entity self = (Entity) (Object) this;
if (self instanceof MultipartEntityOwner owner
&& entityInLevelCallback != EntityInLevelCallback.NULL
&& !self.level().isClientSide()) {
if (owner.antarchy$getMultipartParts() == null) {
owner.antarchy$spawnMultipartParts();
}
MultipartServerPartLevelRegistry.register(owner);
}
}
@Inject(method = "setRemoved", at = @At("HEAD"))
private void antarchy$unregisterMultipartParts(Entity.RemovalReason removalReason, CallbackInfo ci) {
Entity self = (Entity) (Object) this;
if (self instanceof MultipartEntityOwner owner && !self.level().isClientSide()) {
MultipartServerPartLevelRegistry.unregister(owner);
}
}
}
@@ -2,42 +2,20 @@ package com.craisinlord.antarchy.fabric.network;
import com.craisinlord.antarchy.content.client.BloodglassClientState;
import com.craisinlord.antarchy.content.client.BrutalflyElytraClientState;
import com.craisinlord.antarchy.content.client.CameraShakeClientState;
import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState;
import com.craisinlord.antarchy.content.client.HordeClientState;
import com.craisinlord.antarchy.content.client.ScorpionWhipTetherClientState;
import com.craisinlord.antarchy.content.client.WormHookTetherClientState;
import com.craisinlord.antarchy.content.client.TigerEyeCamouflageClientState;
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.network.*;
import com.craisinlord.antarchy.fabric.client.BloodCrystalKatanaTrailClientState;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.phys.Vec3;
public final class AntarchyFabricClientNetworking {
private AntarchyFabricClientNetworking() {
}
public static void bootstrapMultipartClient() {
MultipartFramework.bootstrap(
AntarchyFabricNetworking::createMultipartPart,
new MultipartFramework.NetworkBridge() {
@Override
public void sendAttack(java.util.UUID parentId, int partIndex, float damage) {
ClientPlayNetworking.send(new MultipartAttackPayload(parentId, partIndex, damage));
}
@Override
public void sendInteract(java.util.UUID parentId, int partIndex, int handId) {
ClientPlayNetworking.send(new MultipartInteractPayload(parentId, partIndex, handId));
}
}
);
}
public static void register() {
ClientPlayNetworking.registerGlobalReceiver(AntarchyGameResultPayload.TYPE, (payload, context) ->
context.client().execute(() -> com.craisinlord.antarchy.content.client.AntarchyGameClientState.update(payload)));
@@ -63,17 +41,7 @@ public final class AntarchyFabricClientNetworking {
context.client().execute(() -> HerculesBeetleImpactShakeClientState.trigger(payload.durationTicks())));
ClientPlayNetworking.registerGlobalReceiver(KingJudgmentFlashPayload.TYPE, (payload, context) ->
context.client().execute(() -> com.craisinlord.antarchy.content.client.KingJudgmentFlashClientState.trigger(payload.durationTicks())));
ClientPlayNetworking.registerGlobalReceiver(ImpactShakePayload.TYPE, (payload, context) ->
context.client().execute(() -> CameraShakeClientState.triggerImpact(
new Vec3(payload.x(), payload.y(), payload.z()),
payload.intensity(),
payload.durationTicks(),
payload.radius())));
ClientPlayNetworking.registerGlobalReceiver(HordeIntensityPayload.TYPE, (payload, context) ->
context.client().execute(() -> HordeClientState.update(payload.intensity())));
ClientPlayNetworking.registerGlobalReceiver(TimeDilationRatePayload.TYPE, (payload, context) ->
context.client().execute(() -> com.craisinlord.antarchy.content.time.TimeDilationApi.applySyncedRate(payload.entityUuid(), payload.rate())));
ClientPlayNetworking.registerGlobalReceiver(TimeDilationFieldsPayload.TYPE, (payload, context) ->
context.client().execute(() -> com.craisinlord.antarchy.content.client.ClientTimeDilationTicker.applyFields(payload.fields())));
}
}
@@ -2,10 +2,6 @@ package com.craisinlord.antarchy.fabric.network;
import com.craisinlord.antarchy.fabric.registry.AntarchyFabricEntities;
import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity;
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.entity.HerculesBeetleEntity;
import com.craisinlord.antarchy.content.item.BrutalflyElytraFlightHelper;
import com.craisinlord.antarchy.content.item.BrutalflyElytraItem;
@@ -25,7 +21,6 @@ import com.craisinlord.antarchy.content.entity.DorrieEntity;
import com.craisinlord.antarchy.content.network.DorrieJumpInputPayload;
import com.craisinlord.antarchy.content.network.SpringyBootsLaunchPayload;
import com.craisinlord.antarchy.fabric.AntarchyFabricContent;
import com.craisinlord.antarchy.fabric.entity.multipart.MultipartPartEntity;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
@@ -34,7 +29,6 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.ItemStack;
@@ -51,26 +45,6 @@ public final class AntarchyFabricNetworking {
com.craisinlord.antarchy.content.portalgun.PortalGunIndicatorSync.setSender(ServerPlayNetworking::send);
}
public static void bootstrapMultipartCommon() {
MultipartFramework.bootstrap(
AntarchyFabricNetworking::createMultipartPart,
new MultipartFramework.NetworkBridge() {
@Override
public void sendAttack(java.util.UUID parentId, int partIndex, float damage) {
}
@Override
public void sendInteract(java.util.UUID parentId, int partIndex, int handId) {
}
}
);
}
public static MultipartPartEntity createMultipartPart(MultipartEntityOwner owner, int partIndex, com.craisinlord.antarchy.content.entity.multipart.MultipartPartDefinition spec) {
return new MultipartPartEntity(AntarchyFabricEntities.KRAKEN_PART.get(), ((Entity) owner).level())
.antarchy$configure(owner, partIndex, spec);
}
private static void registerPayloadTypes() {
PayloadTypeRegistry.playS2C().register(AntarchyGameResultPayload.TYPE, AntarchyGameResultPayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(PortalGunIndicatorPayload.TYPE, PortalGunIndicatorPayload.STREAM_CODEC);
@@ -82,13 +56,10 @@ public final class AntarchyFabricNetworking {
PayloadTypeRegistry.playS2C().register(BrutalflyElytraAnimationPayload.TYPE, BrutalflyElytraAnimationPayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(HerculesBeetleImpactShakePayload.TYPE, HerculesBeetleImpactShakePayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(KingJudgmentFlashPayload.TYPE, KingJudgmentFlashPayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(ImpactShakePayload.TYPE, ImpactShakePayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(HordeIntensityPayload.TYPE, HordeIntensityPayload.STREAM_CODEC);
AntarchyFabricTimeDilationNetworking.registerPayloadTypes();
PayloadTypeRegistry.playC2S().register(GravityGunPrimaryPayload.TYPE, GravityGunPrimaryPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(PortalGunPrimaryPayload.TYPE, PortalGunPrimaryPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(com.craisinlord.antarchy.content.network.PortalGunTransitPayload.TYPE, com.craisinlord.antarchy.content.network.PortalGunTransitPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(PortalGunIndicatorRequestPayload.TYPE, PortalGunIndicatorRequestPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(PortalGunResetPayload.TYPE, PortalGunResetPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(com.craisinlord.antarchy.content.network.PortalGunMoonAimPayload.TYPE, com.craisinlord.antarchy.content.network.PortalGunMoonAimPayload.STREAM_CODEC);
@@ -113,8 +84,6 @@ public final class AntarchyFabricNetworking {
PayloadTypeRegistry.playC2S().register(HerculesBeetleFlightTogglePayload.TYPE, HerculesBeetleFlightTogglePayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(HerculesBeetleMountedAttackPayload.TYPE, HerculesBeetleMountedAttackPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(HerculesBeetleMountedChargePayload.TYPE, HerculesBeetleMountedChargePayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(MultipartAttackPayload.TYPE, MultipartAttackPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(MultipartInteractPayload.TYPE, MultipartInteractPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(AntarchyGamePayload.TYPE, AntarchyGamePayload.STREAM_CODEC);
}
@@ -125,13 +94,6 @@ public final class AntarchyFabricNetworking {
context.server().execute(() -> handleGravityGunPrimary(context.player(), payload)));
ServerPlayNetworking.registerGlobalReceiver(PortalGunPrimaryPayload.TYPE, (payload, context) ->
context.server().execute(() -> handlePortalGunPrimary(context.player(), payload)));
ServerPlayNetworking.registerGlobalReceiver(com.craisinlord.antarchy.content.network.PortalGunTransitPayload.TYPE, (payload, context) -> {
if (context.server().isSameThread()) {
com.craisinlord.antarchy.content.portalgun.PortalGunTransitHandler.handle(context.player(), payload);
} else {
context.server().execute(() -> com.craisinlord.antarchy.content.portalgun.PortalGunTransitHandler.handle(context.player(), payload));
}
});
ServerPlayNetworking.registerGlobalReceiver(PortalGunIndicatorRequestPayload.TYPE, (payload, context) ->
context.server().execute(() -> com.craisinlord.antarchy.content.portalgun.PortalGunIndicatorSync.handleRequest(context.player(), payload)));
ServerPlayNetworking.registerGlobalReceiver(com.craisinlord.antarchy.content.network.PortalGunMoonAimPayload.TYPE, (payload, context) ->
@@ -178,10 +140,6 @@ public final class AntarchyFabricNetworking {
context.server().execute(() -> handleHerculesBeetleMountedAttack(context.player(), payload)));
ServerPlayNetworking.registerGlobalReceiver(HerculesBeetleMountedChargePayload.TYPE, (payload, context) ->
context.server().execute(() -> handleHerculesBeetleMountedCharge(context.player(), payload)));
ServerPlayNetworking.registerGlobalReceiver(MultipartAttackPayload.TYPE, (payload, context) ->
context.server().execute(() -> handleMultipartAttack(context.player(), payload)));
ServerPlayNetworking.registerGlobalReceiver(MultipartInteractPayload.TYPE, (payload, context) ->
context.server().execute(() -> handleMultipartInteract(context.player(), payload)));
}
public static void syncBloodglass(ServerPlayer player, int shieldsActive, int shieldsMax) {
@@ -343,58 +301,6 @@ public final class AntarchyFabricNetworking {
ServerPlayNetworking.send(player, animationPayload);
}
private static void handleMultipartAttack(ServerPlayer serverPlayer, MultipartAttackPayload payload) {
Entity entity = serverPlayer.serverLevel().getEntity(payload.parentId());
if (!(entity instanceof MultipartEntityOwner owner)) {
return;
}
Entity[] parts = owner.antarchy$getMultipartParts();
if (parts == null) {
parts = owner.antarchy$createMultipartParts();
owner.antarchy$setMultipartParts(parts);
owner.antarchy$syncMultipartParts();
}
if (payload.partIndex() < 0 || payload.partIndex() >= parts.length) {
return;
}
Entity part = parts[payload.partIndex()];
if (part == null || part.isRemoved()) {
return;
}
if (serverPlayer.distanceToSqr(part) > 10000.0D) {
return;
}
serverPlayer.attack(part);
}
private static void handleMultipartInteract(ServerPlayer serverPlayer, MultipartInteractPayload payload) {
Entity entity = serverPlayer.serverLevel().getEntity(payload.parentId());
if (!(entity instanceof MultipartEntityOwner owner)) {
return;
}
Entity[] parts = owner.antarchy$getMultipartParts();
if (parts == null) {
parts = owner.antarchy$createMultipartParts();
owner.antarchy$setMultipartParts(parts);
owner.antarchy$syncMultipartParts();
}
if (payload.partIndex() < 0 || payload.partIndex() >= parts.length) {
return;
}
Entity part = parts[payload.partIndex()];
if (part == null || part.isRemoved()) {
return;
}
InteractionHand hand = payload.handId() == 0 ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND;
owner.antarchy$interactMultipartPart(part, serverPlayer, part.position(), hand);
}
private static void handleSpringyBootsLaunch(ServerPlayer player, SpringyBootsLaunchPayload payload) {
if (!SpringyBootsItem.isWearingSpringyBoots(player)) return;
if (player.isSpectator() || player.isPassenger()) return;
@@ -1,39 +0,0 @@
package com.craisinlord.antarchy.fabric.network;
import com.craisinlord.antarchy.content.network.TimeDilationRatePayload;
import com.craisinlord.antarchy.content.network.TimeDilationFieldsPayload;
import com.craisinlord.antarchy.content.time.TimeDilationFieldSnapshot;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.Entity;
import java.util.List;
public final class AntarchyFabricTimeDilationNetworking {
private AntarchyFabricTimeDilationNetworking() {
}
public static void registerPayloadTypes() {
PayloadTypeRegistry.playS2C().register(TimeDilationRatePayload.TYPE, TimeDilationRatePayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(TimeDilationFieldsPayload.TYPE, TimeDilationFieldsPayload.STREAM_CODEC);
}
public static void syncRate(Entity entity, double rate) {
TimeDilationRatePayload payload = new TimeDilationRatePayload(entity.getUUID(), rate);
for (ServerPlayer player : PlayerLookup.tracking(entity)) {
ServerPlayNetworking.send(player, payload);
}
if (entity instanceof ServerPlayer player) {
ServerPlayNetworking.send(player, payload);
}
}
public static void syncRateToPlayer(ServerPlayer player, Entity entity, double rate) {
ServerPlayNetworking.send(player, new TimeDilationRatePayload(entity.getUUID(), rate));
}
public static void syncFields(ServerPlayer player, List<TimeDilationFieldSnapshot> fields) {
ServerPlayNetworking.send(player, new TimeDilationFieldsPayload(fields));
}
}
@@ -22,7 +22,6 @@ import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity;
import com.craisinlord.antarchy.content.entity.vortex.VortexChargeProjectileEntity;
import com.craisinlord.antarchy.content.entity.vortex.VortexEntity;
import com.craisinlord.antarchy.content.entity.vortex.WindVortexEntity;
import com.craisinlord.antarchy.content.time.TimeDilationFieldEntity;
import com.craisinlord.antarchy.content.entity.HushProjectileEntity;
import com.craisinlord.antarchy.content.entity.CritterCageProjectileEntity;
import com.craisinlord.antarchy.content.entity.WormHookProjectileEntity;
@@ -375,16 +374,6 @@ public final class AntarchyFabricEntities {
.build("kraken"));
public static final DeferredHolder<EntityType<?>, EntityType<com.craisinlord.antarchy.fabric.entity.multipart.MultipartPartEntity>> KRAKEN_PART = ENTITY_TYPES.register("kraken_part",
() -> EntityType.Builder.<com.craisinlord.antarchy.fabric.entity.multipart.MultipartPartEntity>of(
com.craisinlord.antarchy.fabric.entity.multipart.MultipartPartEntity::new,
MobCategory.MISC
)
.sized(1.0F, 1.0F)
.clientTrackingRange(12)
.updateInterval(1)
.build("kraken_part"));
public static final DeferredHolder<EntityType<?>, EntityType<MissileSquidEntity>> MISSILE_SQUID = ENTITY_TYPES.register("missile_squid",
() -> EntityType.Builder.of(MissileSquidEntity::new, MobCategory.MONSTER)
@@ -463,13 +452,6 @@ public final class AntarchyFabricEntities {
.fireImmune()
.build("wind_vortex"));
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)
.clientTrackingRange(16)
.updateInterval(20)
.fireImmune()
.build("time_dilation_field"));
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)
@@ -33,8 +33,6 @@ 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.CommandedMobEffect;
import com.craisinlord.antarchy.content.effect.DilatedMobEffect;
import com.craisinlord.antarchy.content.effect.ContractedMobEffect;
import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect;
import com.craisinlord.antarchy.content.effect.ShrinkMobEffect;
import com.craisinlord.antarchy.content.effect.StinkyMobEffect;
@@ -458,7 +456,6 @@ public final class AntarchyFabricMisc {
public static final DeferredHolder<MobEffect, CommandedMobEffect> COMMANDED = MOB_EFFECTS.register("commanded", CommandedMobEffect::new);
public static final DeferredHolder<MobEffect, DilatedMobEffect> DILATED = MOB_EFFECTS.register("dilated", DilatedMobEffect::new);
public static final DeferredHolder<MobEffect, StinkyMobEffect> STINKY = MOB_EFFECTS.register("stinky", StinkyMobEffect::new);
@@ -499,14 +496,13 @@ public final class AntarchyFabricMisc {
public static final DeferredHolder<Potion, Potion> LONG_COMMAND = POTIONS.register("long_command",
() -> new Potion("command", new MobEffectInstance(mobEffectHolder(COMMANDED), 1200)));
public static final DeferredHolder<Potion, Potion> TIME_DILATION = POTIONS.register("time_dilation",
() -> new Potion(new MobEffectInstance(mobEffectHolder(DILATED), 1200)));
() -> new Potion(new MobEffectInstance(AnthologyEffects.dilated(), 1200)));
public static final DeferredHolder<Potion, Potion> LONG_TIME_DILATION = POTIONS.register("long_time_dilation",
() -> new Potion("time_dilation", new MobEffectInstance(mobEffectHolder(DILATED), 1200, 1)));
public static final DeferredHolder<MobEffect, ContractedMobEffect> CONTRACTED = MOB_EFFECTS.register("contracted", ContractedMobEffect::new);
() -> new Potion("time_dilation", new MobEffectInstance(AnthologyEffects.dilated(), 1200, 1)));
public static final DeferredHolder<Potion, Potion> TIME_CONTRACTION = POTIONS.register("time_contraction",
() -> new Potion(new MobEffectInstance(mobEffectHolder(CONTRACTED), 1200)));
() -> new Potion(new MobEffectInstance(AnthologyEffects.contracted(), 1200)));
public static final DeferredHolder<Potion, Potion> LONG_TIME_CONTRACTION = POTIONS.register("long_time_contraction",
() -> new Potion("time_contraction", new MobEffectInstance(mobEffectHolder(CONTRACTED), 1200, 1)));
() -> new Potion("time_contraction", new MobEffectInstance(AnthologyEffects.contracted(), 1200, 1)));
public static final DeferredHolder<Potion, Potion> STINKY_POTION = POTIONS.register("stinky",
@@ -19,7 +19,6 @@
"DreamCampfireBlockEntityMixin",
"SpringyBootsFallDamageMixin",
"ThoraxisWaterBucketMixin",
"entity.MultipartEntityLevelRegistryMixin",
"entity.ParalyzedMobFreezeMixin",
"WoodTypeInvoker",
"infinity.PortalCreatorMixin",
@@ -27,18 +26,14 @@
"infinity.AmendmentRareOresMixin"
],
"client": [
"client.RenderTargetDepthStencilMixin",
"client.SeparateLargeItemModelsMixin",
"client.SeparateLargeItemGuiLightingMixin",
"client.CameraShakeMixin",
"client.BrutalflyElytraExperienceBarMixin",
"client.BloodglassChatOrderMixin",
"client.LiquidFogMixin",
"client.GravityGunMouseScrollMixin",
"client.KeybindingConflictFixMixin",
"client.CrossbowArmPoseMixin",
"client.MultipartClientSpawnMixin",
"client.MultipartEntityLevelRegistryMixin"
"client.CrossbowArmPoseMixin"
],
"injectors": {
"defaultRequire": 1
@@ -28,7 +28,6 @@
},
"mixins": [
"antarchy-common.mixins.json",
"antarchy-sodium.mixins.json",
"antarchy-fabric.mixins.json"
],
"depends": {