From c47f98f31f8dc8743baed022e07ee9b4fafdad07 Mon Sep 17 00:00:00 2001 From: Guntlet473 Date: Sat, 11 Apr 2026 21:31:30 +0800 Subject: [PATCH 1/6] added config for speed to damage --- src/main/java/edn/stratodonut/trackwork/TrackworkConfigs.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/edn/stratodonut/trackwork/TrackworkConfigs.java b/src/main/java/edn/stratodonut/trackwork/TrackworkConfigs.java index 43055a8..9a25a5b 100644 --- a/src/main/java/edn/stratodonut/trackwork/TrackworkConfigs.java +++ b/src/main/java/edn/stratodonut/trackwork/TrackworkConfigs.java @@ -23,6 +23,7 @@ public static class TServer extends ConfigBase { public final ConfigBase.ConfigBool enableTrackThrow = this.b(false, "enableTrackThrow", "Enable entire tracks being thrown off by explosions"); public final ConfigBase.ConfigInt wheelPairDist = this.i(7, 5, 15, "wheelPairDistance", "The max distance between wheels where steering, etc. will be paired"); public final ConfigBase.ConfigBool wheelRPMPassthrough = this.b(true, "wheelRPMPassthrough", "Allow wheels to transmit RPM through them when connected to kinetic network"); + public final ConfigBase.ConfigInt damageSpeed = this.i(256, "damageSpeed", "speed needed to damage"); @Override public String getName() { From d87e15535ca9a74740ecfa3b5cb7cf3954ef0f35 Mon Sep 17 00:00:00 2001 From: Guntlet473 Date: Sat, 11 Apr 2026 21:33:00 +0800 Subject: [PATCH 2/6] added speed config for damage --- .../stratodonut/trackwork/tracks/blocks/WheelBlockEntity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edn/stratodonut/trackwork/tracks/blocks/WheelBlockEntity.java b/src/main/java/edn/stratodonut/trackwork/tracks/blocks/WheelBlockEntity.java index 055c950..bdb640e 100644 --- a/src/main/java/edn/stratodonut/trackwork/tracks/blocks/WheelBlockEntity.java +++ b/src/main/java/edn/stratodonut/trackwork/tracks/blocks/WheelBlockEntity.java @@ -285,7 +285,7 @@ public void tick() { SuspensionTrackBlockEntity.push(e, worldPos); float speed = Math.abs(trackRPM); - if (speed > 1) e.hurt(TrackDamageSources.runOver(this.level), (speed / 16f) * AllConfigs.server().kinetics.crushingDamage.get()); + if (speed > TrackworkConfigs.server().damageSpeed.get()) e.hurt(TrackDamageSources.runOver(this.level), (speed / 16f) * AllConfigs.server().kinetics.crushingDamage.get()); if (e instanceof ServerPlayer p) p.connection.send(new ClientboundSetEntityMotionPacket(p)); } From bff7e4dfae7ebf988229e48df241b348f8bfe3aa Mon Sep 17 00:00:00 2001 From: Guntlet473 Date: Sat, 11 Apr 2026 21:34:10 +0800 Subject: [PATCH 3/6] added speed config to damage --- .../blocks/SuspensionTrackBlockEntity.java | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java b/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java index ecc7a76..31cc443 100644 --- a/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java +++ b/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java @@ -1,11 +1,36 @@ package edn.stratodonut.trackwork.tracks.blocks; +import java.util.List; +import java.util.Random; +import java.util.function.Supplier; + +import org.jetbrains.annotations.NotNull; +import org.joml.Intersectiond; +import org.joml.Math; +import org.joml.Vector3d; +import org.joml.Vector3dc; +import org.valkyrienskies.core.api.ships.LoadedServerShip; +import org.valkyrienskies.core.api.ships.Ship; +import org.valkyrienskies.core.impl.bodies.properties.BodyKinematicsImpl; +import org.valkyrienskies.mod.common.VSGameUtilsKt; +import static org.valkyrienskies.mod.common.util.VectorConversionsMCKt.toJOML; +import static org.valkyrienskies.mod.common.util.VectorConversionsMCKt.toMinecraft; + +import static com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock.AXIS; import com.simibubi.create.infrastructure.config.AllConfigs; -import edn.stratodonut.trackwork.*; + +import edn.stratodonut.trackwork.TrackAmbientGroups; +import edn.stratodonut.trackwork.TrackDamageSources; +import edn.stratodonut.trackwork.TrackPackets; +import static edn.stratodonut.trackwork.TrackSounds.SUSPENSION_CREAK; +import edn.stratodonut.trackwork.TrackworkConfigs; +import edn.stratodonut.trackwork.TrackworkUtil; +import static edn.stratodonut.trackwork.TrackworkUtil.accumulatedVelocity; import edn.stratodonut.trackwork.sounds.TrackSoundScapes; import edn.stratodonut.trackwork.tracks.ITrackPointProvider; import edn.stratodonut.trackwork.tracks.data.PhysTrackData; import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController; +import static edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController.UP; import edn.stratodonut.trackwork.tracks.network.SuspensionWheelPacket; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -19,39 +44,13 @@ import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.joml.Intersectiond; -import org.joml.Math; -import org.joml.Vector3d; -import org.joml.Vector3dc; -import org.valkyrienskies.core.api.ships.LoadedServerShip; -import org.valkyrienskies.core.api.ships.ServerShip; -import org.valkyrienskies.core.api.ships.Ship; -import org.valkyrienskies.core.impl.bodies.properties.BodyKinematicsImpl; -import org.valkyrienskies.mod.common.VSGameUtilsKt; -import org.valkyrienskies.mod.common.util.IEntityDraggingInformationProvider; - -import java.util.List; -import java.util.Random; -import java.util.function.Supplier; - -import static com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock.AXIS; -import static edn.stratodonut.trackwork.TrackSounds.SUSPENSION_CREAK; -import static edn.stratodonut.trackwork.TrackworkUtil.accumulatedVelocity; -import static edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController.UP; -import static org.valkyrienskies.mod.common.util.VectorConversionsMCKt.toJOML; -import static org.valkyrienskies.mod.common.util.VectorConversionsMCKt.toMinecraft; public class SuspensionTrackBlockEntity extends TrackBaseBlockEntity implements ITrackPointProvider { private float wheelRadius; @@ -264,7 +263,7 @@ public void tick() { push(e, worldPos); float speed = Math.abs(this.getSpeed()); - if (speed > 1) e.hurt(TrackDamageSources.runOver(this.level), (speed / 8f) * AllConfigs.server().kinetics.crushingDamage.get()); + if (speed > TrackworkConfigs.server().damageSpeed.get()) e.hurt(TrackDamageSources.runOver(this.level), (speed / 8f) * AllConfigs.server().kinetics.crushingDamage.get()); if (e instanceof ServerPlayer p) p.connection.send(new ClientboundSetEntityMotionPacket(p)); } From 709283b47b3e2754c07c2fd791f2b630d5cb6c9a Mon Sep 17 00:00:00 2001 From: Guntlet473 Date: Sat, 11 Apr 2026 21:34:42 +0800 Subject: [PATCH 4/6] added config for speed to damage --- .../trackwork/tracks/blocks/OleoWheelBlockEntity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edn/stratodonut/trackwork/tracks/blocks/OleoWheelBlockEntity.java b/src/main/java/edn/stratodonut/trackwork/tracks/blocks/OleoWheelBlockEntity.java index a315097..8a59c11 100644 --- a/src/main/java/edn/stratodonut/trackwork/tracks/blocks/OleoWheelBlockEntity.java +++ b/src/main/java/edn/stratodonut/trackwork/tracks/blocks/OleoWheelBlockEntity.java @@ -230,7 +230,7 @@ public void tick() { for (LivingEntity e : hits) { SuspensionTrackBlockEntity.push(e, worldPos); float speed = Math.abs(this.getWheelSpeed()); - if (speed > 1) e.hurt(TrackDamageSources.runOver(this.level), (speed / 16f) * AllConfigs.server().kinetics.crushingDamage.get()); + if (speed > TrackworkConfigs.server().damageSpeed.get()) e.hurt(TrackDamageSources.runOver(this.level), (speed / 16f) * AllConfigs.server().kinetics.crushingDamage.get()); if (e instanceof ServerPlayer p) p.connection.send(new ClientboundSetEntityMotionPacket(p)); } From 6aba5c86ffa961458ddcfea60ce393b8850d1909 Mon Sep 17 00:00:00 2001 From: Guntlet473 Date: Sat, 11 Apr 2026 21:49:04 +0800 Subject: [PATCH 5/6] Update SuspensionTrackBlockEntity.java --- .../blocks/SuspensionTrackBlockEntity.java | 60 +++++++++---------- 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java b/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java index 31cc443..d618549 100644 --- a/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java +++ b/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java @@ -1,56 +1,50 @@ package edn.stratodonut.trackwork.tracks.blocks; -import java.util.List; -import java.util.Random; -import java.util.function.Supplier; - -import org.jetbrains.annotations.NotNull; -import org.joml.Intersectiond; -import org.joml.Math; -import org.joml.Vector3d; -import org.joml.Vector3dc; -import org.valkyrienskies.core.api.ships.LoadedServerShip; -import org.valkyrienskies.core.api.ships.Ship; -import org.valkyrienskies.core.impl.bodies.properties.BodyKinematicsImpl; -import org.valkyrienskies.mod.common.VSGameUtilsKt; -import static org.valkyrienskies.mod.common.util.VectorConversionsMCKt.toJOML; -import static org.valkyrienskies.mod.common.util.VectorConversionsMCKt.toMinecraft; - -import static com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock.AXIS; import com.simibubi.create.infrastructure.config.AllConfigs; - -import edn.stratodonut.trackwork.TrackAmbientGroups; -import edn.stratodonut.trackwork.TrackDamageSources; -import edn.stratodonut.trackwork.TrackPackets; -import static edn.stratodonut.trackwork.TrackSounds.SUSPENSION_CREAK; -import edn.stratodonut.trackwork.TrackworkConfigs; -import edn.stratodonut.trackwork.TrackworkUtil; -import static edn.stratodonut.trackwork.TrackworkUtil.accumulatedVelocity; +import edn.stratodonut.trackwork.*; import edn.stratodonut.trackwork.sounds.TrackSoundScapes; import edn.stratodonut.trackwork.tracks.ITrackPointProvider; import edn.stratodonut.trackwork.tracks.data.PhysTrackData; import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController; -import static edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController.UP; import edn.stratodonut.trackwork.tracks.network.SuspensionWheelPacket; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.particles.BlockParticleOption; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.sounds.SoundSource; -import net.minecraft.tags.FluidTags; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.DistExecutor; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.joml.Intersectiond; +import org.joml.Math; +import org.joml.Vector3d; +import org.joml.Vector3dc; +import org.valkyrienskies.core.api.ships.LoadedServerShip; +import org.valkyrienskies.core.api.ships.ServerShip; +import org.valkyrienskies.core.api.ships.Ship; +import org.valkyrienskies.core.impl.bodies.properties.BodyKinematicsImpl; +import org.valkyrienskies.mod.common.VSGameUtilsKt; +import org.valkyrienskies.mod.common.util.IEntityDraggingInformationProvider; + +import java.util.List; +import java.util.Random; +import java.util.function.Supplier; + +import static com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock.AXIS; +import static edn.stratodonut.trackwork.TrackSounds.SUSPENSION_CREAK; +import static edn.stratodonut.trackwork.TrackworkUtil.accumulatedVelocity; +import static edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController.UP; +import static org.valkyrienskies.mod.common.util.VectorConversionsMCKt.toJOML; +import static org.valkyrienskies.mod.common.util.VectorConversionsMCKt.toMinecraft; public class SuspensionTrackBlockEntity extends TrackBaseBlockEntity implements ITrackPointProvider { private float wheelRadius; From d75b05b7273e83fc7f3d43404f83323c119874c6 Mon Sep 17 00:00:00 2001 From: Guntlet473 Date: Sat, 11 Apr 2026 21:51:24 +0800 Subject: [PATCH 6/6] Update SuspensionTrackBlockEntity.java --- .../tracks/blocks/SuspensionTrackBlockEntity.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java b/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java index d618549..2bde161 100644 --- a/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java +++ b/src/main/java/edn/stratodonut/trackwork/tracks/blocks/SuspensionTrackBlockEntity.java @@ -9,6 +9,13 @@ import edn.stratodonut.trackwork.tracks.network.SuspensionWheelPacket; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.particles.BlockParticleOption; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.FluidTags; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity;