re-organized files
moved creative menu logic all to common fixed fabric fluids made termites a little more forgiving worked on fixing herc beetle
This commit is contained in:
1 parent
d5fd81f1c3
commit
db93a3ced9
161 files changed
+2588
-1337
No files matched your search
@@ -137,14 +137,6 @@ public final class AntarchyFabric implements ModInitializer {
|
||||
Registries.PLACED_FEATURE,
|
||||
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "seashell_patch_rare")
|
||||
);
|
||||
private static final TagKey<net.minecraft.world.level.biome.Biome> HAS_STAR_CORAL = TagKey.create(
|
||||
Registries.BIOME,
|
||||
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "has_star_coral")
|
||||
);
|
||||
private static final ResourceKey<PlacedFeature> STAR_CORAL_PATCH = ResourceKey.create(
|
||||
Registries.PLACED_FEATURE,
|
||||
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "star_coral_patch")
|
||||
);
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
AntarchyFabricNetworking.register();
|
||||
@@ -284,11 +276,6 @@ public final class AntarchyFabric implements ModInitializer {
|
||||
GenerationStep.Decoration.VEGETAL_DECORATION,
|
||||
SEASHELL_PATCH_RARE
|
||||
);
|
||||
BiomeModifications.addFeature(
|
||||
BiomeSelectors.tag(HAS_STAR_CORAL),
|
||||
GenerationStep.Decoration.VEGETAL_DECORATION,
|
||||
STAR_CORAL_PATCH
|
||||
);
|
||||
BiomeModifications.addSpawn(
|
||||
BiomeSelectors.tag(APPLE_COW_SPAWN_BIOMES),
|
||||
net.minecraft.world.entity.MobCategory.CREATURE,
|
||||
|
||||
@@ -274,7 +274,15 @@ public final class AntarchyFabricContent {
|
||||
AntarchyFabricSounds.BRUTALFLY_SPIT,
|
||||
AntarchyFabricSounds.ROLLY_POLLY_WHEEL_MODE,
|
||||
AntarchyFabricSounds.ROLLY_POLLY_NORMAL_MODE,
|
||||
AntarchyFabricSounds.ROLLY_POLLY_ROLL
|
||||
AntarchyFabricSounds.ROLLY_POLLY_ROLL,
|
||||
AntarchyFabricSounds.JERRY_YOUNG_IDLE,
|
||||
AntarchyFabricSounds.JERRY_YOUNG_HURT,
|
||||
AntarchyFabricSounds.JERRY_YOUNG_DEATH,
|
||||
AntarchyFabricSounds.JERRY_YOUNG_ATTACK,
|
||||
AntarchyFabricSounds.JERRY_ADULT_IDLE,
|
||||
AntarchyFabricSounds.JERRY_ADULT_HURT,
|
||||
AntarchyFabricSounds.JERRY_ADULT_DEATH,
|
||||
AntarchyFabricSounds.JERRY_ADULT_ATTACK
|
||||
);
|
||||
|
||||
AntarchyObjects.setOctopusBomb(AntarchyFabricEntities.OCTOPUS_BOMB);
|
||||
|
||||
@@ -8,7 +8,7 @@ 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.block.PotentNyxiteBlock;
|
||||
import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks;
|
||||
import com.craisinlord.antarchy.content.entity.MissileSquidEntity;
|
||||
import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity;
|
||||
import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi;
|
||||
@@ -26,10 +26,10 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
||||
import net.fabricmc.fabric.api.event.player.AttackEntityCallback;
|
||||
import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import com.craisinlord.antarchy.content.SquidzookaDispenseBehavior;
|
||||
import com.craisinlord.antarchy.content.RpoLauncherDispenseBehavior;
|
||||
import com.craisinlord.antarchy.content.SizeRayDispenseBehavior;
|
||||
import com.craisinlord.antarchy.content.WaterCannonDispenseBehavior;
|
||||
import com.craisinlord.antarchy.content.dispenser.SquidzookaDispenseBehavior;
|
||||
import com.craisinlord.antarchy.content.dispenser.RpoLauncherDispenseBehavior;
|
||||
import com.craisinlord.antarchy.content.dispenser.SizeRayDispenseBehavior;
|
||||
import com.craisinlord.antarchy.content.dispenser.WaterCannonDispenseBehavior;
|
||||
import net.minecraft.world.level.block.ComposterBlock;
|
||||
import net.minecraft.world.level.block.DispenserBlock;
|
||||
import net.minecraft.core.BlockPos;
|
||||
@@ -245,7 +245,7 @@ public final class AntarchyFabricEvents {
|
||||
for (int y = min.getY(); y <= max.getY(); y++) {
|
||||
for (int z = min.getZ(); z <= max.getZ(); z++) {
|
||||
cursor.set(x, y, z);
|
||||
if (PotentNyxiteBlock.isIchor(entity.level().getFluidState(cursor))) {
|
||||
if (AntarchyFluidChecks.isIchor(entity.level().getFluidState(cursor))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-3
@@ -214,10 +214,10 @@ public final class AntarchyFabricClientBootstrap {
|
||||
AntarchyFabricMisc.ICHOR.get(),
|
||||
AntarchyFabricMisc.FLOWING_ICHOR.get(),
|
||||
new SimpleFluidRenderHandler(
|
||||
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/antiwater_still"),
|
||||
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/antiwater_flow"),
|
||||
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/bile/bile_still"),
|
||||
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/bile/bile_flowing"),
|
||||
ResourceLocation.withDefaultNamespace("block/water_overlay"),
|
||||
0xFF2A0306
|
||||
0xFF3D0408
|
||||
)
|
||||
);
|
||||
|
||||
@@ -476,6 +476,7 @@ public final class AntarchyFabricClientBootstrap {
|
||||
JumpyBootsHudRenderer.render(guiGraphics);
|
||||
TriffidGooHudRenderer.render(guiGraphics);
|
||||
DorrieJumpHudRenderer.render(guiGraphics);
|
||||
HerculesBeetleChargeHudRenderer.render(guiGraphics);
|
||||
});
|
||||
|
||||
WorldRenderEvents.AFTER_TRANSLUCENT.register(context -> {
|
||||
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
package com.craisinlord.antarchy.fabric.client;
|
||||
|
||||
import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
public final class HerculesBeetleChargeHudRenderer {
|
||||
private static final ResourceLocation CHARGE_BAR_BACKGROUND =
|
||||
ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_background.png");
|
||||
private static final ResourceLocation CHARGE_BAR_PROGRESS =
|
||||
ResourceLocation.withDefaultNamespace("textures/gui/sprites/hud/jump_bar_progress.png");
|
||||
private static final int BAR_WIDTH = 182;
|
||||
private static final int BAR_HEIGHT = 5;
|
||||
|
||||
private HerculesBeetleChargeHudRenderer() {
|
||||
}
|
||||
|
||||
public static void render(GuiGraphics guiGraphics) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
Player player = mc.player;
|
||||
if (player == null || mc.screen != null || player.isDeadOrDying()) {
|
||||
return;
|
||||
}
|
||||
if (!(player.getVehicle() instanceof HerculesBeetleEntity beetle)) {
|
||||
return;
|
||||
}
|
||||
|
||||
int charge = beetle.getMountedCharge();
|
||||
if (charge <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int width = mc.getWindow().getGuiScaledWidth();
|
||||
int height = mc.getWindow().getGuiScaledHeight();
|
||||
int x0 = width / 2 - BAR_WIDTH / 2;
|
||||
int y0 = height - 39;
|
||||
float chargeRatio = Mth.clamp(charge / 100.0F, 0.0F, 1.0F);
|
||||
int filledWidth = Mth.clamp((int) (chargeRatio * BAR_WIDTH), 0, BAR_WIDTH);
|
||||
|
||||
guiGraphics.blit(CHARGE_BAR_BACKGROUND, x0, y0, 0, 0, BAR_WIDTH, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT);
|
||||
if (filledWidth > 0) {
|
||||
guiGraphics.setColor(1.0F, 0.78F, 0.2F, 0.45F + chargeRatio * 0.55F);
|
||||
guiGraphics.blit(CHARGE_BAR_PROGRESS, x0, y0, 0, 0, filledWidth, BAR_HEIGHT, BAR_WIDTH, BAR_HEIGHT);
|
||||
guiGraphics.setColor(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-9
@@ -9,12 +9,9 @@ import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
|
||||
public final class HerculesBeetleClientHandler {
|
||||
private static final int MAX_CHARGE_TICKS = 40;
|
||||
|
||||
private static boolean wasPressingJump;
|
||||
private static boolean wasPressingAttack;
|
||||
private static boolean wasCharging;
|
||||
private static int chargeTicks;
|
||||
|
||||
private HerculesBeetleClientHandler() {
|
||||
}
|
||||
@@ -45,11 +42,8 @@ public final class HerculesBeetleClientHandler {
|
||||
wasPressingAttack = pressingAttack;
|
||||
|
||||
boolean charging = AntarchyKeyBindings.isHerculesBeetleChargePressed();
|
||||
if (charging) {
|
||||
chargeTicks = Math.min(chargeTicks + 1, MAX_CHARGE_TICKS);
|
||||
} else if (wasCharging && chargeTicks > 0) {
|
||||
ClientPlayNetworking.send(new HerculesBeetleMountedChargePayload(chargeTicks));
|
||||
chargeTicks = 0;
|
||||
if (charging != wasCharging) {
|
||||
ClientPlayNetworking.send(new HerculesBeetleMountedChargePayload(charging));
|
||||
}
|
||||
wasCharging = charging;
|
||||
}
|
||||
@@ -61,6 +55,5 @@ public final class HerculesBeetleClientHandler {
|
||||
}
|
||||
wasPressingAttack = false;
|
||||
wasCharging = false;
|
||||
chargeTicks = 0;
|
||||
}
|
||||
}
|
||||
+8
-5
@@ -1,6 +1,7 @@
|
||||
package com.craisinlord.antarchy.fabric.mixin;
|
||||
|
||||
import com.craisinlord.antarchy.content.block.PotentNyxiteBlock;
|
||||
import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks;
|
||||
import com.craisinlord.antarchy.fabric.util.CustomFluidPhysicsChecks;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
@@ -20,10 +21,12 @@ public abstract class AntiwaterItemEntityMixin {
|
||||
}
|
||||
|
||||
Vec3 motion = entity.getDeltaMovement();
|
||||
Vec3 antiwaterFlow = CustomFluidPhysicsChecks.getAntiwaterFlow(entity);
|
||||
Vec3 push = antiwaterFlow.lengthSqr() > 1.0E-6D ? antiwaterFlow.normalize().scale(0.02D) : Vec3.ZERO;
|
||||
entity.setDeltaMovement(
|
||||
motion.x * 0.99D,
|
||||
motion.y + (motion.y < 0.06D ? 5.0E-4D : 0.0D),
|
||||
motion.z * 0.99D
|
||||
motion.x * 0.99D + push.x,
|
||||
motion.y * 0.8D + 0.025D + push.y,
|
||||
motion.z * 0.99D + push.z
|
||||
);
|
||||
}
|
||||
|
||||
@@ -36,7 +39,7 @@ public abstract class AntiwaterItemEntityMixin {
|
||||
for (int z = min.getZ(); z <= max.getZ(); z++) {
|
||||
cursor.set(x, y, z);
|
||||
FluidState fluidState = entity.level().getFluidState(cursor);
|
||||
if (PotentNyxiteBlock.isAntiwater(fluidState)) {
|
||||
if (AntarchyFluidChecks.isAntiwater(fluidState)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+13
-3
@@ -1,10 +1,11 @@
|
||||
package com.craisinlord.antarchy.fabric.mixin;
|
||||
|
||||
import com.craisinlord.antarchy.content.AntarchyObjects;
|
||||
import com.craisinlord.antarchy.content.block.PotentNyxiteBlock;
|
||||
import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks;
|
||||
import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi;
|
||||
import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection;
|
||||
import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil;
|
||||
import com.craisinlord.antarchy.fabric.util.CustomFluidPhysicsChecks;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.MoverType;
|
||||
@@ -32,6 +33,11 @@ public abstract class AntiwaterLivingEntityMixin {
|
||||
entity.move(MoverType.SELF, entity.getDeltaMovement());
|
||||
|
||||
Vec3 motion = entity.getDeltaMovement();
|
||||
double verticalInput = travelVector.y;
|
||||
if (verticalInput == 0.0D && entity instanceof Player player) {
|
||||
verticalInput = player.isShiftKeyDown() ? -1.0D : ((LivingEntityJumpingAccessor) entity).antarchy$isJumping() ? 1.0D : 0.0D;
|
||||
}
|
||||
|
||||
if (entity.horizontalCollision && entity.onClimbable()) {
|
||||
motion = new Vec3(motion.x, 0.2D, motion.z);
|
||||
}
|
||||
@@ -43,9 +49,13 @@ public abstract class AntiwaterLivingEntityMixin {
|
||||
|
||||
double drag = entity.isSwimming() ? 0.9D : 0.8D;
|
||||
worldMotion = worldMotion.scale(drag);
|
||||
Vec3 antiwaterFlow = CustomFluidPhysicsChecks.getAntiwaterFlow(entity);
|
||||
if (antiwaterFlow.lengthSqr() > 1.0E-6D) {
|
||||
worldMotion = worldMotion.add(antiwaterFlow.normalize().scale(0.02D));
|
||||
}
|
||||
boolean flying = entity instanceof Player player && player.getAbilities().flying;
|
||||
if (!flying) {
|
||||
worldMotion = worldMotion.add(0.0D, 0.005D, 0.0D);
|
||||
worldMotion = worldMotion.add(0.0D, 0.005D + verticalInput * 0.04D, 0.0D);
|
||||
}
|
||||
|
||||
entity.setDeltaMovement(
|
||||
@@ -89,7 +99,7 @@ public abstract class AntiwaterLivingEntityMixin {
|
||||
for (int z = min.getZ(); z <= max.getZ(); z++) {
|
||||
cursor.set(x, y, z);
|
||||
FluidState fluidState = entity.level().getFluidState(cursor);
|
||||
if (PotentNyxiteBlock.isAntiwater(fluidState)) {
|
||||
if (AntarchyFluidChecks.isAntiwater(fluidState)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+24
-10
@@ -23,14 +23,7 @@ public abstract class DreamSandMovementMixin {
|
||||
if (!AntarchySettings.dreamSandEnabled() || antarchy$isDreamSandLowGravityBlacklisted(self)) {
|
||||
access.antarchy$clearDreamSandLowGravity();
|
||||
} else if (antarchy$isStandingOnDreamSand(self)) {
|
||||
self.setDeltaMovement(
|
||||
self.getDeltaMovement().x,
|
||||
self.getDeltaMovement().y * AntarchySettings.dreamSandJumpVelocityMultiplier(),
|
||||
self.getDeltaMovement().z
|
||||
);
|
||||
access.antarchy$setDreamSandLowGravityActive(true);
|
||||
access.antarchy$setDreamSandLowGravityTicksRemaining((int) Math.max(1L, Math.round(AntarchySettings.dreamSandEffectDurationSeconds() * 20.0D)));
|
||||
access.antarchy$setDreamSandLandingGraceTicks(0);
|
||||
antarchy$startDreamSandLowGravity(self, access);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +38,17 @@ public abstract class DreamSandMovementMixin {
|
||||
access.antarchy$setDreamSandLandingGraceTicks(landingGraceTicks - 1);
|
||||
}
|
||||
|
||||
if (!AntarchySettings.dreamSandEnabled() || antarchy$isDreamSandLowGravityBlacklisted(self) || !access.antarchy$isDreamSandLowGravityActive()) {
|
||||
if (!AntarchySettings.dreamSandEnabled() || antarchy$isDreamSandLowGravityBlacklisted(self)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!access.antarchy$isDreamSandLowGravityActive()
|
||||
&& !self.onGround()
|
||||
&& antarchy$isStandingOnDreamSand(self)) {
|
||||
antarchy$startDreamSandLowGravity(self, access);
|
||||
}
|
||||
|
||||
if (!access.antarchy$isDreamSandLowGravityActive()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -90,7 +93,18 @@ public abstract class DreamSandMovementMixin {
|
||||
}
|
||||
|
||||
private static boolean antarchy$isStandingOnDreamSand(LivingEntity livingEntity) {
|
||||
return livingEntity.level().getBlockState(livingEntity.getOnPosLegacy()).is(AntarchyFabricBlocks.DREAM_SAND.get());
|
||||
return livingEntity.getBlockStateOn().is(AntarchyFabricBlocks.DREAM_SAND.get());
|
||||
}
|
||||
|
||||
private static void antarchy$startDreamSandLowGravity(LivingEntity self, DreamSandLowGravityAccess access) {
|
||||
self.setDeltaMovement(
|
||||
self.getDeltaMovement().x,
|
||||
self.getDeltaMovement().y * AntarchySettings.dreamSandJumpVelocityMultiplier(),
|
||||
self.getDeltaMovement().z
|
||||
);
|
||||
access.antarchy$setDreamSandLowGravityActive(true);
|
||||
access.antarchy$setDreamSandLowGravityTicksRemaining((int) Math.max(1L, Math.round(AntarchySettings.dreamSandEffectDurationSeconds() * 20.0D)));
|
||||
access.antarchy$setDreamSandLandingGraceTicks(0);
|
||||
}
|
||||
|
||||
private static boolean antarchy$isDreamSandLowGravityBlacklisted(LivingEntity livingEntity) {
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.craisinlord.antarchy.fabric.mixin;
|
||||
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(LivingEntity.class)
|
||||
public interface LivingEntityJumpingAccessor {
|
||||
@Accessor("jumping")
|
||||
boolean antarchy$isJumping();
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.craisinlord.antarchy.fabric.mixin;
|
||||
|
||||
import com.craisinlord.antarchy.fabric.util.CustomFluidPhysicsChecks;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = ItemEntity.class, priority = 900)
|
||||
public abstract class WaterlikeFluidItemEntityMixin {
|
||||
@Inject(method = "tick", at = @At("TAIL"))
|
||||
private void antarchy$applyWaterlikeFluidItemMovement(CallbackInfo ci) {
|
||||
ItemEntity entity = (ItemEntity) (Object) this;
|
||||
if (CustomFluidPhysicsChecks.isTouchingAntiwater(entity) || !CustomFluidPhysicsChecks.isTouchingWaterlikeFluid(entity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Vec3 motion = entity.getDeltaMovement();
|
||||
Vec3 fluidFlow = CustomFluidPhysicsChecks.getWaterlikeFlow(entity);
|
||||
Vec3 push = fluidFlow.lengthSqr() > 1.0E-6D ? fluidFlow.normalize().scale(0.03D) : Vec3.ZERO;
|
||||
entity.setDeltaMovement(
|
||||
motion.x * 0.99D + push.x,
|
||||
motion.y + (motion.y < 0.06D ? 5.0E-4D : 0.0D) + push.y,
|
||||
motion.z * 0.99D + push.z
|
||||
);
|
||||
}
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package com.craisinlord.antarchy.fabric.mixin;
|
||||
|
||||
import com.craisinlord.antarchy.fabric.util.CustomFluidPhysicsChecks;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.MoverType;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = LivingEntity.class, priority = 900)
|
||||
public abstract class WaterlikeFluidLivingEntityMixin {
|
||||
@Inject(method = "travel", at = @At("HEAD"), cancellable = true)
|
||||
private void antarchy$moveInCustomWaterlikeFluid(Vec3 travelVector, CallbackInfo ci) {
|
||||
LivingEntity entity = (LivingEntity) (Object) this;
|
||||
if (CustomFluidPhysicsChecks.isTouchingAntiwater(entity) || !CustomFluidPhysicsChecks.isTouchingWaterlikeFluid(entity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
double prevY = entity.getY();
|
||||
float swimSpeed = entity.isSprinting() ? 0.024F : 0.02F;
|
||||
entity.moveRelative(swimSpeed, travelVector);
|
||||
entity.move(MoverType.SELF, entity.getDeltaMovement());
|
||||
|
||||
Vec3 motion = entity.getDeltaMovement();
|
||||
double verticalInput = travelVector.y;
|
||||
if (verticalInput == 0.0D && entity instanceof Player player) {
|
||||
verticalInput = player.isShiftKeyDown() ? -1.0D : ((LivingEntityJumpingAccessor) entity).antarchy$isJumping() ? 1.0D : 0.0D;
|
||||
}
|
||||
|
||||
if (entity.horizontalCollision && entity.onClimbable()) {
|
||||
motion = new Vec3(motion.x, 0.2D, motion.z);
|
||||
}
|
||||
|
||||
boolean flying = entity instanceof Player player && player.getAbilities().flying;
|
||||
double verticalDrift = verticalInput * 0.04D;
|
||||
if (!flying) {
|
||||
verticalDrift -= 0.004D;
|
||||
}
|
||||
|
||||
Vec3 nextMotion = new Vec3(
|
||||
motion.x * 0.8D,
|
||||
motion.y * 0.8D + verticalDrift,
|
||||
motion.z * 0.8D
|
||||
);
|
||||
Vec3 fluidFlow = CustomFluidPhysicsChecks.getWaterlikeFlow(entity);
|
||||
if (fluidFlow.lengthSqr() > 1.0E-6D) {
|
||||
nextMotion = nextMotion.add(fluidFlow.normalize().scale(0.014D));
|
||||
}
|
||||
entity.setDeltaMovement(nextMotion);
|
||||
|
||||
if (entity.horizontalCollision && entity.isFree(
|
||||
nextMotion.x,
|
||||
nextMotion.y + 0.6D - entity.getY() + prevY,
|
||||
nextMotion.z
|
||||
)) {
|
||||
entity.setDeltaMovement(nextMotion.x, 0.3D, nextMotion.z);
|
||||
}
|
||||
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
package com.craisinlord.antarchy.fabric.mixin.client;
|
||||
|
||||
import com.craisinlord.antarchy.content.fluid.BileLiquidBlock;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.shaders.FogShape;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.client.renderer.FogRenderer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
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(FogRenderer.class)
|
||||
public abstract class AntiwaterFogMixin {
|
||||
@Inject(method = "setupColor", at = @At("TAIL"))
|
||||
private static void antarchy$overrideBileColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, CallbackInfo ci) {
|
||||
if (!antarchy$isInBile(camera)) {
|
||||
return;
|
||||
}
|
||||
|
||||
RenderSystem.clearColor(0.38F, 0.42F, 0.10F, 0.0F);
|
||||
}
|
||||
|
||||
@Inject(method = "setupFog", at = @At("TAIL"))
|
||||
private static void antarchy$overrideBileFog(Camera camera, FogRenderer.FogMode mode, float renderDistance, boolean thickFog, float partialTick, CallbackInfo ci) {
|
||||
if (!antarchy$isInBile(camera)) {
|
||||
return;
|
||||
}
|
||||
|
||||
RenderSystem.setShaderFogStart(0.25F);
|
||||
RenderSystem.setShaderFogEnd(Math.min(renderDistance, 4.0F));
|
||||
RenderSystem.setShaderFogShape(FogShape.CYLINDER);
|
||||
}
|
||||
|
||||
private static boolean antarchy$isInBile(Camera camera) {
|
||||
Entity entity = camera.getEntity();
|
||||
if (entity == null || entity.level() == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
BlockPos pos = BlockPos.containing(camera.getPosition());
|
||||
FluidState fluidState = entity.level().getFluidState(pos);
|
||||
return BileLiquidBlock.isBile(fluidState);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package com.craisinlord.antarchy.fabric.mixin.client;
|
||||
|
||||
import com.craisinlord.antarchy.content.fluid.BileLiquidBlock;
|
||||
import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.shaders.FogShape;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.client.renderer.FogRenderer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
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(FogRenderer.class)
|
||||
public abstract class LiquidFogMixin {
|
||||
private static final int FLUID_NONE = 0;
|
||||
private static final int FLUID_BILE = 1;
|
||||
private static final int FLUID_ANTIWATER = 2;
|
||||
private static final int FLUID_ICHOR = 3;
|
||||
private static final int FLUID_LUMEN = 4;
|
||||
|
||||
@Inject(method = "setupColor", at = @At("TAIL"))
|
||||
private static void antarchy$overrideBileColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, CallbackInfo ci) {
|
||||
int fluidKind = antarchy$getFluidKind(camera);
|
||||
if (fluidKind == FLUID_NONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (fluidKind == FLUID_BILE) {
|
||||
RenderSystem.clearColor(0.52F, 0.58F, 0.08F, 0.0F);
|
||||
} else if (fluidKind == FLUID_ANTIWATER) {
|
||||
RenderSystem.clearColor(0.48F, 0.06F, 0.06F, 0.0F);
|
||||
} else if (fluidKind == FLUID_ICHOR) {
|
||||
RenderSystem.clearColor(0.18F, 0.01F, 0.02F, 0.0F);
|
||||
} else if (fluidKind == FLUID_LUMEN) {
|
||||
RenderSystem.clearColor(0.42F, 0.82F, 1.0F, 0.0F);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "setupFog", at = @At("TAIL"))
|
||||
private static void antarchy$overrideBileFog(Camera camera, FogRenderer.FogMode mode, float renderDistance, boolean thickFog, float partialTick, CallbackInfo ci) {
|
||||
int fluidKind = antarchy$getFluidKind(camera);
|
||||
if (fluidKind == FLUID_NONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (fluidKind == FLUID_BILE) {
|
||||
RenderSystem.setShaderFogStart(0.2F);
|
||||
RenderSystem.setShaderFogEnd(Math.min(renderDistance, 4.5F));
|
||||
} else if (fluidKind == FLUID_ANTIWATER) {
|
||||
RenderSystem.setShaderFogStart(0.18F);
|
||||
RenderSystem.setShaderFogEnd(Math.min(renderDistance, 3.5F));
|
||||
} else if (fluidKind == FLUID_ICHOR) {
|
||||
RenderSystem.setShaderFogStart(0.08F);
|
||||
RenderSystem.setShaderFogEnd(Math.min(renderDistance, 2.25F));
|
||||
} else if (fluidKind == FLUID_LUMEN) {
|
||||
RenderSystem.setShaderFogStart(0.3F);
|
||||
RenderSystem.setShaderFogEnd(Math.min(renderDistance, 6.0F));
|
||||
}
|
||||
RenderSystem.setShaderFogShape(FogShape.CYLINDER);
|
||||
}
|
||||
|
||||
private static int antarchy$getFluidKind(Camera camera) {
|
||||
Entity entity = camera.getEntity();
|
||||
if (entity == null || entity.level() == null) {
|
||||
return FLUID_NONE;
|
||||
}
|
||||
|
||||
BlockPos pos = BlockPos.containing(camera.getPosition());
|
||||
FluidState fluidState = entity.level().getFluidState(pos);
|
||||
if (BileLiquidBlock.isBile(fluidState)) {
|
||||
return FLUID_BILE;
|
||||
}
|
||||
if (AntarchyFluidChecks.isAntiwater(fluidState)) {
|
||||
return FLUID_ANTIWATER;
|
||||
}
|
||||
if (AntarchyFluidChecks.isIchor(fluidState)) {
|
||||
return FLUID_ICHOR;
|
||||
}
|
||||
if (AntarchyFluidChecks.isLumen(fluidState)) {
|
||||
return FLUID_LUMEN;
|
||||
}
|
||||
return FLUID_NONE;
|
||||
}
|
||||
}
|
||||
+8
-9
@@ -3,30 +3,29 @@ package com.craisinlord.antarchy.fabric.mixin.infinity;
|
||||
import com.craisinlord.antarchy.config.AntarchySettings;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.component.DataComponents;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.NetherPortalBlock;
|
||||
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(value = NetherPortalBlock.class, priority = 2000)
|
||||
public abstract class PortalCreatorMixin {
|
||||
import net.lerariemann.infinity.util.teleport.PortalCreator;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
|
||||
@Mixin(PortalCreator.class)
|
||||
public interface PortalCreatorMixin {
|
||||
@Inject(
|
||||
method = "entityInside",
|
||||
method = "tryCreatePortalFromItem(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/item/ItemEntity;)V",
|
||||
at = @At("HEAD"),
|
||||
cancellable = true
|
||||
)
|
||||
private void antarchy$blockInfinityBookActivation(BlockState state, Level level, BlockPos pos, Entity entity, CallbackInfo ci) {
|
||||
private static void antarchy$blockInfinityBookActivation(ServerLevel level, BlockPos pos, ItemEntity itemEntity, CallbackInfo ci) {
|
||||
if (!AntarchySettings.disableInfinityBookPortalCreation()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(entity instanceof ItemEntity itemEntity) || itemEntity.isRemoved()) {
|
||||
if (itemEntity.isRemoved()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+5
-1
@@ -391,7 +391,11 @@ public final class AntarchyFabricNetworking {
|
||||
|
||||
private static void handleHerculesBeetleMountedCharge(ServerPlayer player, HerculesBeetleMountedChargePayload payload) {
|
||||
if (player.getVehicle() instanceof HerculesBeetleEntity beetle) {
|
||||
beetle.handleMountedCharge(player, payload.chargeTicks());
|
||||
if (payload.pressing()) {
|
||||
beetle.startMountedCharge(player);
|
||||
} else {
|
||||
beetle.releaseMountedCharge(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+9
-64
@@ -4,6 +4,7 @@ import com.craisinlord.antarchy.Antarchy;
|
||||
import com.craisinlord.antarchy.compat.infinity.InfinityCompat;
|
||||
import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion;
|
||||
import com.craisinlord.antarchy.config.AntarchySettings;
|
||||
import com.craisinlord.antarchy.content.CreativeTabContents;
|
||||
import com.craisinlord.antarchy.content.AntarchyObjects;
|
||||
import com.craisinlord.antarchy.content.CreativeTabOrder;
|
||||
import com.craisinlord.antarchy.content.block.*;
|
||||
@@ -270,73 +271,17 @@ public final class AntarchyFabricCreativeModeTabs {
|
||||
|
||||
|
||||
private static void populateCreativeTab(CreativeModeTab.Output output) {
|
||||
ArrayList<Item> sortedItems = new ArrayList<>();
|
||||
for (var holder : AntarchyFabricItems.ITEMS.getEntries()) {
|
||||
Item item = holder.get();
|
||||
if (item != Items.AIR) {
|
||||
sortedItems.add(item);
|
||||
}
|
||||
}
|
||||
sortedItems.sort(CreativeTabOrder.COMPARATOR);
|
||||
sortedItems.forEach(item -> {
|
||||
if (item == AntarchyFabricItems.GLIMMER_BOTTLE.get()) {
|
||||
addGlimmerBottleVariants(output);
|
||||
} else {
|
||||
CreativeTabContents.populateAntarchyTab(new CreativeTabContents.AntarchyTabOutput() {
|
||||
@Override
|
||||
public void accept(net.minecraft.world.level.ItemLike item) {
|
||||
output.accept(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(ItemStack stack) {
|
||||
output.accept(stack);
|
||||
}
|
||||
});
|
||||
addPotionVariants(output);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static void addGlimmerBottleVariants(CreativeModeTab.Output output) {
|
||||
for (com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant variant : com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.values()) {
|
||||
output.accept(com.craisinlord.antarchy.content.item.GlimmerBottleItem.create(variant));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static void addPotionVariants(CreativeModeTab.Output output) {
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.DREAD_POTION);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.LONG_DREAD);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.INVERSION);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.LONG_INVERSION);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.STINKY_POTION);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.LONG_STINKY);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.PARALYSIS);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.LONG_PARALYSIS);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.HASTE);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.STRONG_HASTE);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.SHRINKING);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.STRONG_SHRINKING);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.EXTREME_SHRINKING);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.GROWING);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.STRONG_GROWING);
|
||||
acceptPotionFamily(output, AntarchyFabricMisc.EXTREME_GROWING);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static void acceptPotionFamily(CreativeModeTab.Output output, DeferredHolder<Potion, ? extends Potion> potion) {
|
||||
Holder<Potion> holder = AntarchyFabricContent.potionHolder(potion);
|
||||
output.accept(PotionContents.createItemStack(Items.POTION, holder));
|
||||
output.accept(PotionContents.createItemStack(Items.SPLASH_POTION, holder));
|
||||
output.accept(PotionContents.createItemStack(Items.LINGERING_POTION, holder));
|
||||
output.accept(PotionContents.createItemStack(Items.TIPPED_ARROW, holder));
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static int creativeTabGroup(Item item) {
|
||||
return CreativeTabOrder.group(item);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static int creativeTabSubOrder(Item item) {
|
||||
return CreativeTabOrder.subOrder(item);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+13
-8
@@ -105,6 +105,7 @@ import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem;
|
||||
import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem;
|
||||
import com.craisinlord.antarchy.content.item.CorneaEarItem;
|
||||
import com.craisinlord.antarchy.content.item.GravityGunItem;
|
||||
import com.craisinlord.antarchy.content.item.MantisClawItem;
|
||||
import com.craisinlord.antarchy.content.item.MinersDreamItem;
|
||||
import com.craisinlord.antarchy.content.item.DuctTapeBlockItem;
|
||||
import com.craisinlord.antarchy.content.item.BrutalflyElytraItem;
|
||||
@@ -610,7 +611,8 @@ public final class AntarchyFabricItems {
|
||||
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEAD_STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEAD_STAR_CORAL);
|
||||
|
||||
|
||||
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEAD_STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEAD_STAR_CORAL_FAN);
|
||||
public static final DeferredItem<StandingAndWallBlockItem> DEAD_STAR_CORAL_FAN_ITEM = ITEMS.register("dead_star_coral_fan",
|
||||
() -> new StandingAndWallBlockItem(AntarchyFabricBlocks.DEAD_STAR_CORAL_FAN.get(), AntarchyFabricBlocks.DEAD_STAR_CORAL_WALL_FAN.get(), new Item.Properties(), Direction.UP));
|
||||
|
||||
|
||||
public static final DeferredItem<net.minecraft.world.item.BlockItem> STAR_CORAL_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STAR_CORAL_BLOCK);
|
||||
@@ -619,7 +621,8 @@ public final class AntarchyFabricItems {
|
||||
public static final DeferredItem<net.minecraft.world.item.BlockItem> STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STAR_CORAL);
|
||||
|
||||
|
||||
public static final DeferredItem<net.minecraft.world.item.BlockItem> STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STAR_CORAL_FAN);
|
||||
public static final DeferredItem<StandingAndWallBlockItem> STAR_CORAL_FAN_ITEM = ITEMS.register("star_coral_fan",
|
||||
() -> new StandingAndWallBlockItem(AntarchyFabricBlocks.STAR_CORAL_FAN.get(), AntarchyFabricBlocks.STAR_CORAL_WALL_FAN.get(), new Item.Properties(), Direction.UP));
|
||||
|
||||
|
||||
public static final DeferredItem<net.minecraft.world.item.BlockItem> DUCT_TAPE_ITEM = ITEMS.register("duct_tape",
|
||||
@@ -872,7 +875,8 @@ public final class AntarchyFabricItems {
|
||||
));
|
||||
|
||||
|
||||
public static final DeferredItem<Item> MANTIS_CLAW = ITEMS.registerSimpleItem("mantis_claw", new Item.Properties().rarity(Rarity.UNCOMMON));
|
||||
public static final DeferredItem<MantisClawItem> MANTIS_CLAW = ITEMS.register("mantis_claw",
|
||||
() -> new MantisClawItem(Tiers.IRON, new Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON)));
|
||||
public static final DeferredItem<Item> HERCULES_HORN = ITEMS.registerSimpleItem("hercules_horn", new Item.Properties().rarity(Rarity.UNCOMMON));
|
||||
|
||||
|
||||
@@ -887,11 +891,12 @@ public final class AntarchyFabricItems {
|
||||
public static final DeferredItem<Item> CHITEN = ITEMS.registerSimpleItem("chiten", new Item.Properties().rarity(Rarity.UNCOMMON));
|
||||
|
||||
|
||||
public static final DeferredItem<Item> JERRY_NUCLEUS = ITEMS.registerSimpleItem("jerry_nucleus", new Item.Properties().rarity(Rarity.UNCOMMON)
|
||||
.food(new FoodProperties.Builder()
|
||||
.nutrition(2)
|
||||
.saturationModifier(0.1F)
|
||||
.build()));
|
||||
public static final DeferredItem<Item> JERRY_NUCLEUS = ITEMS.register("jerry_nucleus",
|
||||
() -> new com.craisinlord.antarchy.content.item.JerryNucleusItem(new Item.Properties().rarity(Rarity.UNCOMMON)
|
||||
.food(new FoodProperties.Builder()
|
||||
.nutrition(2)
|
||||
.saturationModifier(0.1F)
|
||||
.build())));
|
||||
|
||||
|
||||
public static final DeferredItem<Item> CARAPACE = ITEMS.registerSimpleItem("carapace", new Item.Properties().rarity(Rarity.UNCOMMON));
|
||||
|
||||
+5
-155
@@ -1,23 +1,8 @@
|
||||
package com.craisinlord.antarchy.fabric.registry;
|
||||
|
||||
import com.craisinlord.antarchy.Antarchy;
|
||||
import com.craisinlord.antarchy.compat.infinity.InfinityCompat;
|
||||
import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion;
|
||||
import com.craisinlord.antarchy.config.AntarchySettings;
|
||||
import com.craisinlord.antarchy.content.AntarchyObjects;
|
||||
import com.craisinlord.antarchy.content.CreativeTabOrder;
|
||||
import com.craisinlord.antarchy.content.block.*;
|
||||
import com.craisinlord.antarchy.content.AntarchySoundEvents;
|
||||
import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem;
|
||||
import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem;
|
||||
import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem;
|
||||
import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity;
|
||||
import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity;
|
||||
import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity;
|
||||
import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity;
|
||||
import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity;
|
||||
import com.craisinlord.antarchy.content.fluid.BileLiquidBlock;
|
||||
import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock;
|
||||
import com.craisinlord.antarchy.content.recipe.AmericanizeRecipe;
|
||||
import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature;
|
||||
import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature;
|
||||
import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature;
|
||||
@@ -36,13 +21,6 @@ import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeatur
|
||||
import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature;
|
||||
import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature;
|
||||
import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid;
|
||||
import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock;
|
||||
import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem;
|
||||
import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking;
|
||||
import com.craisinlord.antarchy.fabric.registry.DeferredBlock;
|
||||
import com.craisinlord.antarchy.fabric.registry.DeferredHolder;
|
||||
import com.craisinlord.antarchy.fabric.registry.DeferredItem;
|
||||
import com.craisinlord.antarchy.fabric.registry.DeferredRegister;
|
||||
import com.craisinlord.antarchy.content.effect.DreadMobEffect;
|
||||
import com.craisinlord.antarchy.content.effect.GoopedMobEffect;
|
||||
import com.craisinlord.antarchy.content.effect.GrowthMobEffect;
|
||||
@@ -50,88 +28,6 @@ import com.craisinlord.antarchy.content.effect.InvertedMobEffect;
|
||||
import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect;
|
||||
import com.craisinlord.antarchy.content.effect.ShrinkMobEffect;
|
||||
import com.craisinlord.antarchy.content.effect.StinkyMobEffect;
|
||||
import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow;
|
||||
import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow;
|
||||
import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow;
|
||||
import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity;
|
||||
import com.craisinlord.antarchy.content.entity.BedBugEntity;
|
||||
import com.craisinlord.antarchy.content.entity.ButterflyEntity;
|
||||
import com.craisinlord.antarchy.content.entity.CaterpillarEntity;
|
||||
import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity;
|
||||
import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity;
|
||||
import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity;
|
||||
import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity;
|
||||
import com.craisinlord.antarchy.content.entity.EasterBunnyEntity;
|
||||
import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity;
|
||||
import com.craisinlord.antarchy.content.entity.ReverieEntity;
|
||||
import com.craisinlord.antarchy.content.entity.MissileSquidEntity;
|
||||
import com.craisinlord.antarchy.content.entity.lucid.LucidEntity;
|
||||
import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity;
|
||||
import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity;
|
||||
import com.craisinlord.antarchy.content.entity.HushProjectileEntity;
|
||||
import com.craisinlord.antarchy.content.entity.JumpyBugEntity;
|
||||
import com.craisinlord.antarchy.content.entity.StinkBugEntity;
|
||||
import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity;
|
||||
import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity;
|
||||
import com.craisinlord.antarchy.content.entity.AlphaMantisEntity;
|
||||
import com.craisinlord.antarchy.content.entity.MantisEntity;
|
||||
import com.craisinlord.antarchy.content.entity.RollyPollyEntity;
|
||||
import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity;
|
||||
import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity;
|
||||
import com.craisinlord.antarchy.content.entity.ScorpionEntity;
|
||||
import com.craisinlord.antarchy.content.item.LucidEyeItem;
|
||||
import com.craisinlord.antarchy.content.item.LucidPearlItem;
|
||||
import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity;
|
||||
import com.craisinlord.antarchy.content.entity.ToreterrorEntity;
|
||||
import com.craisinlord.antarchy.content.entity.WaterBombEntity;
|
||||
import com.craisinlord.antarchy.content.item.PrimordialArmorItem;
|
||||
import com.craisinlord.antarchy.content.item.WaterCannonItem;
|
||||
import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity;
|
||||
import com.craisinlord.antarchy.content.entity.OctopusBombEntity;
|
||||
import com.craisinlord.antarchy.content.entity.MolevoreEntity;
|
||||
import com.craisinlord.antarchy.content.entity.MolewormEntity;
|
||||
import com.craisinlord.antarchy.content.entity.BomberEntity;
|
||||
import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity;
|
||||
import com.craisinlord.antarchy.content.entity.TriffidEntity;
|
||||
import com.craisinlord.antarchy.content.entity.WaspEntity;
|
||||
import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity;
|
||||
import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity;
|
||||
import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity;
|
||||
import com.craisinlord.antarchy.content.entity.ant.RedAntEntity;
|
||||
import com.craisinlord.antarchy.content.item.BattleAxeItem;
|
||||
import com.craisinlord.antarchy.content.item.BasiliskDaggerItem;
|
||||
import com.craisinlord.antarchy.content.item.BigBerthaItem;
|
||||
import com.craisinlord.antarchy.content.item.AntimetalBlockItem;
|
||||
import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem;
|
||||
import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem;
|
||||
import com.craisinlord.antarchy.content.item.CorneaEarItem;
|
||||
import com.craisinlord.antarchy.content.item.GravityGunItem;
|
||||
import com.craisinlord.antarchy.content.item.MinersDreamItem;
|
||||
import com.craisinlord.antarchy.content.item.DuctTapeBlockItem;
|
||||
import com.craisinlord.antarchy.content.item.BrutalflyElytraItem;
|
||||
import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem;
|
||||
import com.craisinlord.antarchy.content.item.MogglesItem;
|
||||
import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem;
|
||||
import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem;
|
||||
import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem;
|
||||
import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem;
|
||||
import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem;
|
||||
import com.craisinlord.antarchy.content.item.DiamondMinecartItem;
|
||||
import com.craisinlord.antarchy.content.item.ReverieBottleItem;
|
||||
import com.craisinlord.antarchy.content.item.ScorpionWhipItem;
|
||||
import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync;
|
||||
import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync;
|
||||
import com.craisinlord.antarchy.content.item.SizeRayItem;
|
||||
import com.craisinlord.antarchy.content.item.SquidzookaItem;
|
||||
import com.craisinlord.antarchy.content.item.SimpleToolTier;
|
||||
import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem;
|
||||
import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem;
|
||||
import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem;
|
||||
import com.craisinlord.antarchy.content.item.NightmareArmorItem;
|
||||
import com.craisinlord.antarchy.content.item.NightmareSwordItem;
|
||||
import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem;
|
||||
import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem;
|
||||
import com.craisinlord.antarchy.content.item.RainbowSugarItem;
|
||||
import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature;
|
||||
import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource;
|
||||
import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction;
|
||||
@@ -181,82 +77,36 @@ import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfigura
|
||||
import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature;
|
||||
import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions;
|
||||
import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions;
|
||||
import com.craisinlord.antarchy.content.portal.PermanentPortalType;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
|
||||
import com.mojang.serialization.MapCodec;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;
|
||||
import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder;
|
||||
import net.minecraft.advancements.critereon.EntitySubPredicate;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.world.item.alchemy.Potion;
|
||||
import net.minecraft.world.item.alchemy.PotionContents;
|
||||
import net.minecraft.world.effect.MobEffect;
|
||||
import net.minecraft.world.effect.MobEffectInstance;
|
||||
import net.minecraft.world.effect.MobEffects;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.world.damagesource.DamageType;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.MobCategory;
|
||||
import net.minecraft.world.entity.ai.attributes.Attribute;
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.world.entity.animal.Cow;
|
||||
import net.minecraft.world.entity.animal.Rabbit;
|
||||
import net.minecraft.world.entity.SpawnPlacementTypes;
|
||||
import net.minecraft.world.entity.SpawnPlacements;
|
||||
import net.minecraft.world.entity.npc.Villager;
|
||||
import net.minecraft.world.entity.monster.Monster;
|
||||
import net.minecraft.world.item.ArmorItem;
|
||||
import net.minecraft.world.item.ArmorMaterial;
|
||||
import net.minecraft.world.item.BucketItem;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.Rarity;
|
||||
import net.minecraft.world.item.StandingAndWallBlockItem;
|
||||
import net.minecraft.world.food.FoodProperties;
|
||||
import net.minecraft.world.item.Tier;
|
||||
import net.minecraft.world.item.Tiers;
|
||||
import net.minecraft.world.item.alchemy.Potions;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.flag.FeatureFlags;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.particles.ParticleType;
|
||||
import net.minecraft.core.particles.SimpleParticleType;
|
||||
import net.minecraft.util.valueproviders.UniformInt;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.AmethystClusterBlock;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.DropExperienceBlock;
|
||||
import net.minecraft.world.level.block.GlowLichenBlock;
|
||||
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
|
||||
import net.minecraft.world.level.block.LiquidBlock;
|
||||
import net.minecraft.world.level.block.RotatedPillarBlock;
|
||||
import net.minecraft.world.level.block.SoundType;
|
||||
import net.minecraft.world.level.block.VineBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.biome.BiomeSource;
|
||||
import net.minecraft.world.level.levelgen.DensityFunction;
|
||||
import net.minecraft.world.level.levelgen.feature.Feature;
|
||||
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
|
||||
import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration;
|
||||
import net.minecraft.world.level.levelgen.Heightmap;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.block.Mirror;
|
||||
import net.minecraft.world.level.block.Rotation;
|
||||
import com.craisinlord.antarchy.fabric.AntarchyFabricContent;
|
||||
|
||||
public final class AntarchyFabricMisc {
|
||||
@@ -350,8 +200,8 @@ public final class AntarchyFabricMisc {
|
||||
.build());
|
||||
|
||||
|
||||
public static final DeferredHolder<net.minecraft.world.item.crafting.RecipeSerializer<?>, net.minecraft.world.item.crafting.RecipeSerializer<com.craisinlord.antarchy.content.AmericanizeRecipe>> AMERICANIZE_SERIALIZER =
|
||||
RECIPE_SERIALIZERS.register("americanize", () -> com.craisinlord.antarchy.content.AmericanizeRecipe.SERIALIZER);
|
||||
public static final DeferredHolder<net.minecraft.world.item.crafting.RecipeSerializer<?>, net.minecraft.world.item.crafting.RecipeSerializer<AmericanizeRecipe>> AMERICANIZE_SERIALIZER =
|
||||
RECIPE_SERIALIZERS.register("americanize", () -> AmericanizeRecipe.SERIALIZER);
|
||||
|
||||
|
||||
public static final DeferredHolder<ArmorMaterial, ArmorMaterial> ULTIMATE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("ultimate",
|
||||
|
||||
+8
@@ -641,6 +641,14 @@ public final class AntarchyFabricSounds {
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_WHEEL_MODE = registerSoundEvent("rolly_polly_wheel_mode");
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_NORMAL_MODE = registerSoundEvent("rolly_polly_normal_mode");
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_ROLL = registerSoundEvent("rolly_polly_roll");
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> JERRY_YOUNG_IDLE = registerSoundEvent("jerry_young_idle");
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> JERRY_YOUNG_HURT = registerSoundEvent("jerry_young_hurt");
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> JERRY_YOUNG_DEATH = registerSoundEvent("jerry_young_death");
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> JERRY_YOUNG_ATTACK = registerSoundEvent("jerry_young_attack");
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> JERRY_ADULT_IDLE = registerSoundEvent("jerry_adult_idle");
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> JERRY_ADULT_HURT = registerSoundEvent("jerry_adult_hurt");
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> JERRY_ADULT_DEATH = registerSoundEvent("jerry_adult_death");
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> JERRY_ADULT_ATTACK = registerSoundEvent("jerry_adult_attack");
|
||||
|
||||
|
||||
public static final DeferredHolder<SoundEvent, SoundEvent> CREEPING_HORROR_GROWL = registerSoundEvent("creeping_horror_growl");
|
||||
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
package com.craisinlord.antarchy.fabric.util;
|
||||
|
||||
import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
|
||||
public final class CustomFluidPhysicsChecks {
|
||||
private CustomFluidPhysicsChecks() {
|
||||
}
|
||||
|
||||
public static boolean isTouchingAntiwater(Entity entity) {
|
||||
AABB box = entity.getBoundingBox().inflate(0.05D);
|
||||
BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ);
|
||||
BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ);
|
||||
BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos();
|
||||
for (int x = min.getX(); x <= max.getX(); x++) {
|
||||
for (int y = min.getY(); y <= max.getY(); y++) {
|
||||
for (int z = min.getZ(); z <= max.getZ(); z++) {
|
||||
cursor.set(x, y, z);
|
||||
FluidState fluidState = entity.level().getFluidState(cursor);
|
||||
if (AntarchyFluidChecks.isAntiwater(fluidState)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isTouchingWaterlikeFluid(Entity entity) {
|
||||
AABB box = entity.getBoundingBox().inflate(0.05D);
|
||||
BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ);
|
||||
BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ);
|
||||
BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos();
|
||||
for (int x = min.getX(); x <= max.getX(); x++) {
|
||||
for (int y = min.getY(); y <= max.getY(); y++) {
|
||||
for (int z = min.getZ(); z <= max.getZ(); z++) {
|
||||
cursor.set(x, y, z);
|
||||
FluidState fluidState = entity.level().getFluidState(cursor);
|
||||
if (AntarchyFluidChecks.usesWaterLikePhysics(fluidState)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static Vec3 getAntiwaterFlow(Entity entity) {
|
||||
return getAverageFlow(entity, true);
|
||||
}
|
||||
|
||||
public static Vec3 getWaterlikeFlow(Entity entity) {
|
||||
return getAverageFlow(entity, false);
|
||||
}
|
||||
|
||||
private static Vec3 getAverageFlow(Entity entity, boolean antiwater) {
|
||||
AABB box = entity.getBoundingBox().inflate(0.05D);
|
||||
BlockPos min = BlockPos.containing(box.minX, box.minY, box.minZ);
|
||||
BlockPos max = BlockPos.containing(box.maxX, box.maxY, box.maxZ);
|
||||
BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos();
|
||||
Vec3 totalFlow = Vec3.ZERO;
|
||||
int matches = 0;
|
||||
for (int x = min.getX(); x <= max.getX(); x++) {
|
||||
for (int y = min.getY(); y <= max.getY(); y++) {
|
||||
for (int z = min.getZ(); z <= max.getZ(); z++) {
|
||||
cursor.set(x, y, z);
|
||||
FluidState fluidState = entity.level().getFluidState(cursor);
|
||||
boolean matchesFluid = antiwater
|
||||
? AntarchyFluidChecks.isAntiwater(fluidState)
|
||||
: AntarchyFluidChecks.usesWaterLikePhysics(fluidState);
|
||||
if (!matchesFluid) {
|
||||
continue;
|
||||
}
|
||||
|
||||
totalFlow = totalFlow.add(fluidState.getFlow(entity.level(), cursor));
|
||||
matches++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (matches == 0 || totalFlow.lengthSqr() < 1.0E-6D) {
|
||||
return Vec3.ZERO;
|
||||
}
|
||||
|
||||
return totalFlow.scale(1.0D / matches);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,9 @@
|
||||
"mixins": [
|
||||
"AntiwaterLivingEntityMixin",
|
||||
"AntiwaterItemEntityMixin",
|
||||
"LivingEntityJumpingAccessor",
|
||||
"WaterlikeFluidLivingEntityMixin",
|
||||
"WaterlikeFluidItemEntityMixin",
|
||||
"AntimetalInversionMixin",
|
||||
"AntimetalScaffoldingMixin",
|
||||
"ElytraStartFlyingMixin",
|
||||
@@ -25,7 +28,7 @@
|
||||
"client.BrutalflyElytraExperienceBarMixin",
|
||||
"client.BloodglassChatOrderMixin",
|
||||
"client.DuctTapeInputMixin",
|
||||
"client.AntiwaterFogMixin",
|
||||
"client.LiquidFogMixin",
|
||||
"client.GravityGunMouseScrollMixin",
|
||||
"client.KeybindingConflictFixMixin",
|
||||
"client.CrossbowArmPoseMixin",
|
||||
|
||||
@@ -1,10 +1,3 @@
|
||||
{
|
||||
"values": [
|
||||
"antarchy:ichor",
|
||||
"antarchy:flowing_ichor",
|
||||
"antarchy:lumen",
|
||||
"antarchy:flowing_lumen",
|
||||
"antarchy:bile",
|
||||
"antarchy:flowing_bile"
|
||||
]
|
||||
"values": []
|
||||
}
|
||||
Reference in new issue
Block a user