anthology split
This commit is contained in:
1 parent
bba2a56671
commit
f7e7bebac3
244 files changed
+452
-11595
No files matched your search
@@ -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);
|
||||
});
|
||||
|
||||
+1
-2
@@ -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() {
|
||||
|
||||
-25
@@ -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());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
-37
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-26
@@ -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;
|
||||
}
|
||||
}
|
||||
-65
@@ -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];
|
||||
}
|
||||
}
|
||||
-211
@@ -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) {
|
||||
}
|
||||
}
|
||||
-37
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-50
@@ -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));
|
||||
}
|
||||
}
|
||||
-20
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
-34
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
-28
@@ -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);
|
||||
}
|
||||
}
|
||||
-37
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
-32
@@ -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())));
|
||||
}
|
||||
}
|
||||
-94
@@ -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;
|
||||
|
||||
-39
@@ -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));
|
||||
}
|
||||
}
|
||||
-18
@@ -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)
|
||||
|
||||
+4
-8
@@ -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": {
|
||||
|
||||
Reference in new issue
Block a user