portal gun fixes and variants

This commit is contained in:
craisinlord committed 2026-10-08 13:54:21 -05:00
1 parent 2d90cb8aaf
commit 216efeb39b
111 files changed
+1937 -2136

No files matched your search

@@ -7,7 +7,6 @@ import com.craisinlord.antarchy.content.entity.ReverieEntity;
import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.block.DuctTapeBlock;
import com.craisinlord.antarchy.content.item.AttitudeAdjusterItem;
import com.craisinlord.antarchy.content.item.AttitudeAdjusterSlamManager;
import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks;
@@ -19,7 +18,6 @@ import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition;
import com.craisinlord.antarchy.content.horde.CavarynHordeManager;
import com.craisinlord.antarchy.content.portal.PermanentPortalManager;
import com.craisinlord.antarchy.content.portalgun.PortalGunProjectileEntity;
import com.craisinlord.antarchy.content.portalgun.PortalGunGrabManager;
import com.craisinlord.antarchy.content.command.CavarynCommand;
import com.craisinlord.antarchy.content.command.CaterpillarCommand;
import com.craisinlord.antarchy.content.command.DimensionalTearCommand;
@@ -78,7 +76,6 @@ public final class AntarchyFabricEvents {
public static void register() {
ServerLifecycleEvents.SERVER_STOPPING.register(server -> PortalGunProjectileEntity.releaseAllProjectileTickets());
ServerLifecycleEvents.SERVER_STOPPING.register(PortalGunGrabManager::clear);
ServerLifecycleEvents.SERVER_STOPPING.register(com.craisinlord.antarchy.content.portalgun.PortalGunResetManager::clear);
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> {
ChronosphereManager.refresh(handler.player);
@@ -209,14 +206,13 @@ public final class AntarchyFabricEvents {
});
ServerTickEvents.END_SERVER_TICK.register(server -> {
PortalGunGrabManager.tick(server);
Set<UUID> activeThisTick = new HashSet<>();
for (ServerLevel level : server.getAllLevels()) {
CavarynHordeManager.tick(level);
com.craisinlord.antarchy.content.horde.CavarynCreatureSpawner.tick(level);
ThoraxisUndersideManager.tick(level);
com.craisinlord.antarchy.content.worldgen.elythia.KingsTreeGridFeature.tickPendingSpawns(level);
tickInvertedPlayers(level, activeThisTick);
tickDuctTapePlayers(level);
tickIchorPlayers(level);
tickBloodglassRecharge(level);
AttitudeAdjusterSlamManager.tick(level);
@@ -338,14 +334,6 @@ public final class AntarchyFabricEvents {
}
}
private static void tickDuctTapePlayers(ServerLevel level) {
for (Player player : level.players()) {
if (DuctTapeBlock.shouldTickStuckEntity(player)) {
DuctTapeBlock.tickStuckEntity(player);
}
}
}
private static void tickIchorPlayers(ServerLevel level) {
if (!AntarchySettings.ichorWitherEnabled()) {
return;
@@ -625,15 +625,14 @@ public final class AntarchyFabricClientBootstrap {
DorrieJumpHudRenderer.render(guiGraphics);
HerculesBeetleChargeHudRenderer.render(guiGraphics);
com.craisinlord.antarchy.content.client.KingJudgmentFlashHudRenderer.render(guiGraphics);
com.craisinlord.antarchy.content.client.PortalGunCrosshairRenderer.render(guiGraphics);
});
WorldRenderEvents.LAST.register(context -> {
BloodCrystalKatanaTrailHandler.render(context);
ScorpionWhipTetherRenderHandler.render(context);
WormHookTetherRenderHandler.render(context);
if (com.craisinlord.antarchy.content.client.renderer.PortalGunPortalViewRenderer.isEnabled()) {
com.craisinlord.antarchy.content.client.renderer.PortalGunPortalViewRenderer.render(context.camera(), context.positionMatrix(), context.projectionMatrix(), context.tickCounter());
}
com.craisinlord.antarchy.content.client.renderer.PortalGunPortalViewRenderer.render(context.camera(), context.positionMatrix(), context.projectionMatrix(), context.tickCounter());
});
}
@@ -51,14 +51,8 @@ public final class AntarchyKeyBindings {
);
public static final KeyMapping PORTAL_GUN_ZOOM = new KeyMapping(
"key.antarchy.portal_gun_zoom",
InputConstants.Type.MOUSE,
GLFW.GLFW_MOUSE_BUTTON_MIDDLE,
CATEGORY
);
public static final KeyMapping PORTAL_GUN_GRAB = new KeyMapping(
"key.antarchy.portal_gun_grab",
InputConstants.Type.KEYSYM,
GLFW.GLFW_KEY_G,
GLFW.GLFW_KEY_Z,
CATEGORY
);
public static final KeyMapping PORTAL_GUN_RESET = new KeyMapping(
@@ -78,7 +72,6 @@ public final class AntarchyKeyBindings {
KeyBindingHelper.registerKeyBinding(ROYAL_INVERSION_TOGGLE);
KeyBindingHelper.registerKeyBinding(ROYAL_BOUNDARY);
KeyBindingHelper.registerKeyBinding(PORTAL_GUN_ZOOM);
KeyBindingHelper.registerKeyBinding(PORTAL_GUN_GRAB);
KeyBindingHelper.registerKeyBinding(PORTAL_GUN_RESET);
}
@@ -110,10 +103,6 @@ public final class AntarchyKeyBindings {
return Minecraft.getInstance().screen == null && PORTAL_GUN_ZOOM.consumeClick();
}
public static boolean consumePortalGunGrabPressed() {
return Minecraft.getInstance().screen == null && PORTAL_GUN_GRAB.consumeClick();
}
public static boolean consumePortalGunResetPressed() {
return Minecraft.getInstance().screen == null && PORTAL_GUN_RESET.consumeClick();
}
@@ -27,14 +27,12 @@ public final class DorrieJumpClientHandler {
return;
}
// Space bar → upward movement.
boolean pressingJump = mc.options.keyJump.isDown();
if (pressingJump != wasPressingJump) {
ClientPlayNetworking.send(new DorrieJumpInputPayload(pressingJump));
wasPressingJump = pressingJump;
}
// Left ctrl → charge jump.
boolean pressingCharge = AntarchyKeyBindings.isMountSpecialPressed();
if (pressingCharge != wasPressingCharge) {
ClientPlayNetworking.send(new DorrieChargeJumpPayload(pressingCharge));
@@ -3,7 +3,6 @@ package com.craisinlord.antarchy.fabric.client;
import com.craisinlord.antarchy.content.item.PortalGunItem;
import com.craisinlord.antarchy.content.client.PortalGunZoomClientState;
import com.craisinlord.antarchy.content.network.PortalGunPrimaryPayload;
import com.craisinlord.antarchy.content.network.PortalGunGrabPayload;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.minecraft.client.Minecraft;
@@ -20,23 +19,19 @@ public final class PortalGunClientHandler {
private static void tickMouse(Minecraft mc) {
if (mc.player == null) {
com.craisinlord.antarchy.content.client.PortalGunGrabClientState.clear();
com.craisinlord.antarchy.content.client.PortalGunResetClientState.clear();
}
boolean hasPortalGun = mc.player != null && (mc.player.getMainHandItem().getItem() instanceof PortalGunItem || mc.player.getOffhandItem().getItem() instanceof PortalGunItem);
boolean gameplayInput = mc.screen == null;
boolean held = hasPortalGun && gameplayInput;
boolean zoomPressed = AntarchyKeyBindings.consumePortalGunZoomPressed();
PortalGunZoomClientState.tick(mc, hasPortalGun, zoomPressed && gameplayInput);
PortalGunZoomClientState.tick(mc, held, zoomPressed && gameplayInput);
boolean resetActive = com.craisinlord.antarchy.content.client.PortalGunResetClientState.tick(
mc,
held,
AntarchyKeyBindings.isPortalGunResetDown(),
ClientPlayNetworking::send
);
if (held && AntarchyKeyBindings.consumePortalGunGrabPressed()) {
ClientPlayNetworking.send(new PortalGunGrabPayload());
}
if (mc.player == null || mc.level == null || mc.screen != null) {
lastAttackDown = false;
return;
@@ -20,6 +20,8 @@ public final class SeparateLargeItemModels {
entry(AntarchyFabricItems.GROWTH_RAY.get(), "grow_ray_gui"),
entry(AntarchyFabricItems.KRAKENS_GRASP.get(), "krakens_grasp_gui"),
entry(AntarchyFabricItems.PORTAL_GUN.get(), "portal_gun_gui"),
entry(AntarchyFabricItems.PORTAL_GUN_ATLAS.get(), "portal_gun_atlas_gui"),
entry(AntarchyFabricItems.PORTAL_GUN_P_BODY.get(), "portal_gun_p_body_gui"),
entry(AntarchyFabricItems.ROYAL_ASSAILANT_BATTLEAXE.get(), "royal_assailant_battleaxe_gui"),
entry(AntarchyFabricItems.ROYAL_ASSAILANT_STAFF.get(), "royal_assailant_staff_gui"),
entry(AntarchyFabricItems.ROYAL_GUARDIAN_SWORD.get(), "royal_guardian_sword_gui"),
@@ -1,30 +0,0 @@
package com.craisinlord.antarchy.fabric.mixin.client;
import com.craisinlord.antarchy.content.block.DuctTapeBlock;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.Input;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Input.class)
public abstract class DuctTapeInputMixin {
@Inject(method = "tick", at = @At("RETURN"))
private void blockInputInDuctTape(boolean isSneaking, float slowFactor, CallbackInfo ci) {
Minecraft mc = Minecraft.getInstance();
if (mc.player == null || mc.level == null) return;
if (!mc.player.isNoGravity() && !DuctTapeBlock.isTouchingTape(mc.level, mc.player)) return;
Input self = (Input) (Object) this;
self.left = false;
self.right = false;
self.up = false;
self.down = false;
self.leftImpulse = 0.0F;
self.forwardImpulse = 0.0F;
self.jumping = false;
self.shiftKeyDown = false;
}
}
@@ -0,0 +1,28 @@
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);
}
}
@@ -45,8 +45,6 @@ public final class AntarchyFabricClientNetworking {
com.craisinlord.antarchy.content.client.PortalGunIndicatorClientState.setRequestSender(ClientPlayNetworking::send);
ClientPlayNetworking.registerGlobalReceiver(PortalGunIndicatorPayload.TYPE, (payload, context) ->
context.client().execute(() -> com.craisinlord.antarchy.content.client.PortalGunIndicatorClientState.update(payload)));
ClientPlayNetworking.registerGlobalReceiver(PortalGunGrabStatePayload.TYPE, (payload, context) ->
context.client().execute(() -> com.craisinlord.antarchy.content.client.PortalGunGrabClientState.update(payload.active())));
ClientPlayNetworking.registerGlobalReceiver(GravityStatePayload.TYPE, (payload, context) ->
context.client().execute(() -> AntarchyFabricNetworking.handleGravityState(context.player(), payload)));
ClientPlayNetworking.registerGlobalReceiver(BloodglassStatePayload.TYPE, (payload, context) ->
@@ -50,7 +50,6 @@ public final class AntarchyFabricNetworking {
registerServerReceivers();
com.craisinlord.antarchy.content.network.AntarchyGameNetworkHandler.setResultSender(ServerPlayNetworking::send);
com.craisinlord.antarchy.content.portalgun.PortalGunIndicatorSync.setSender(ServerPlayNetworking::send);
com.craisinlord.antarchy.content.portalgun.PortalGunGrabManager.setStateSender(ServerPlayNetworking::send);
}
public static void bootstrapMultipartCommon() {
@@ -76,7 +75,6 @@ public final class AntarchyFabricNetworking {
private static void registerPayloadTypes() {
PayloadTypeRegistry.playS2C().register(AntarchyGameResultPayload.TYPE, AntarchyGameResultPayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(PortalGunIndicatorPayload.TYPE, PortalGunIndicatorPayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(PortalGunGrabStatePayload.TYPE, PortalGunGrabStatePayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(GravityStatePayload.TYPE, GravityStatePayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(BloodglassStatePayload.TYPE, BloodglassStatePayload.STREAM_CODEC);
PayloadTypeRegistry.playS2C().register(TigerEyeCamouflageStatePayload.TYPE, TigerEyeCamouflageStatePayload.STREAM_CODEC);
@@ -92,8 +90,8 @@ public final class AntarchyFabricNetworking {
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(PortalGunGrabPayload.TYPE, PortalGunGrabPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(PortalGunResetPayload.TYPE, PortalGunResetPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(EyeOfStormPrimaryPayload.TYPE, EyeOfStormPrimaryPayload.STREAM_CODEC);
PayloadTypeRegistry.playC2S().register(OpenGiantFryingPanPayload.TYPE, OpenGiantFryingPanPayload.STREAM_CODEC);
@@ -128,10 +126,15 @@ 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(PortalGunGrabPayload.TYPE, (payload, context) ->
context.server().execute(() -> com.craisinlord.antarchy.content.portalgun.PortalGunGrabManager.toggle(context.player())));
ServerPlayNetworking.registerGlobalReceiver(PortalGunResetPayload.TYPE, (payload, context) ->
context.server().execute(() -> com.craisinlord.antarchy.content.portalgun.PortalGunResetManager.handleInput(context.player(), payload.action())));
ServerPlayNetworking.registerGlobalReceiver(EyeOfStormPrimaryPayload.TYPE, (payload, context) ->
@@ -1561,7 +1561,28 @@ public final class AntarchyFabricItems {
AntarchyFabricEntities.PORTAL_GUN_BLACK_HOLE,
AntarchyFabricEntities.PORTAL_GUN_PROJECTILE,
AntarchyFabricBlocks.PORTAL_GUN_PORTAL_MASTER,
AntarchyFabricBlocks.PORTAL_GUN_PORTAL_BASE
AntarchyFabricBlocks.PORTAL_GUN_PORTAL_BASE,
com.craisinlord.antarchy.content.portalgun.PortalGunVariant.DEFAULT
));
public static final DeferredItem<PortalGunItem> PORTAL_GUN_ATLAS = ITEMS.register("portal_gun_atlas",
() -> new PortalGunItem(
new Item.Properties().stacksTo(1).durability(256).rarity(Rarity.RARE),
AntarchyFabricEntities.PORTAL_GUN_PORTAL,
AntarchyFabricEntities.PORTAL_GUN_BLACK_HOLE,
AntarchyFabricEntities.PORTAL_GUN_PROJECTILE,
AntarchyFabricBlocks.PORTAL_GUN_PORTAL_MASTER,
AntarchyFabricBlocks.PORTAL_GUN_PORTAL_BASE,
com.craisinlord.antarchy.content.portalgun.PortalGunVariant.ATLAS
));
public static final DeferredItem<PortalGunItem> PORTAL_GUN_P_BODY = ITEMS.register("portal_gun_p_body",
() -> new PortalGunItem(
new Item.Properties().stacksTo(1).durability(256).rarity(Rarity.RARE),
AntarchyFabricEntities.PORTAL_GUN_PORTAL,
AntarchyFabricEntities.PORTAL_GUN_BLACK_HOLE,
AntarchyFabricEntities.PORTAL_GUN_PROJECTILE,
AntarchyFabricBlocks.PORTAL_GUN_PORTAL_MASTER,
AntarchyFabricBlocks.PORTAL_GUN_PORTAL_BASE,
com.craisinlord.antarchy.content.portalgun.PortalGunVariant.P_BODY
));
public static final DeferredItem<EyeOfTheStormItem> EYE_OF_THE_STORM = ITEMS.register("eye_of_the_storm",
@@ -27,12 +27,12 @@
"infinity.AmendmentRareOresMixin"
],
"client": [
"client.RenderTargetDepthStencilMixin",
"client.SeparateLargeItemModelsMixin",
"client.SeparateLargeItemGuiLightingMixin",
"client.CameraShakeMixin",
"client.BrutalflyElytraExperienceBarMixin",
"client.BloodglassChatOrderMixin",
"client.DuctTapeInputMixin",
"client.LiquidFogMixin",
"client.GravityGunMouseScrollMixin",
"client.KeybindingConflictFixMixin",
@@ -0,0 +1,3 @@
{
"parent": "antarchy:item/portal_gun_held_geo"
}
@@ -0,0 +1,3 @@
{
"parent": "antarchy:item/portal_gun_held_geo"
}