update
This commit is contained in:
parent
6fe6b7913e
commit
38085d0b01
|
@ -60,7 +60,7 @@ public class Config {
|
|||
|
||||
Suspension_Stiffness_LIMIT = builder
|
||||
.comment("track suspension stiffness")
|
||||
.defineInRange("SuspensionStiffness", 4, 0, 20);
|
||||
.defineInRange("SuspensionStiffness", 4, 1, 20);
|
||||
|
||||
builder.pop();
|
||||
COMMON_CONFIG = builder.build();
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
package space.eptaproject.vmodaddon;
|
||||
|
||||
import space.eptaproject.vmodaddon.mixins.SimpleWheelControllerAccessor;
|
||||
|
||||
public interface ISimpleWheelController extends SimpleWheelControllerAccessor {
|
||||
}
|
|
@ -1,13 +1,17 @@
|
|||
package space.eptaproject.vmodaddon.block;
|
||||
|
||||
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
|
||||
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.joml.Vector3d;
|
||||
import org.joml.Vector3dc;
|
||||
import org.valkyrienskies.core.api.ships.ServerShip;
|
||||
import org.valkyrienskies.mod.common.VSGameUtilsKt;
|
||||
import space.eptaproject.vmodaddon.IPhysicsTrackController;
|
||||
import space.eptaproject.vmodaddon.ISimpleWheelController;
|
||||
import space.eptaproject.vmodaddon.Vmodaddon;
|
||||
|
||||
public class TBBE extends BlockEntity {
|
||||
|
@ -20,9 +24,21 @@ public class TBBE extends BlockEntity {
|
|||
super.saveAdditional(tag);
|
||||
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos());
|
||||
if (ship != null) {
|
||||
PhysicsTrackController controller = ship.getAttachment(PhysicsTrackController.class);
|
||||
if (controller != null) {
|
||||
tag.putFloat("SuspensionStiffness", ((IPhysicsTrackController) controller).getSuspensionStiffness());
|
||||
PhysicsTrackController physicsTrackController = ship.getAttachment(PhysicsTrackController.class);
|
||||
IPhysicsTrackController controller = (IPhysicsTrackController) physicsTrackController;
|
||||
if (physicsTrackController != null) {
|
||||
tag.putFloat("SuspensionStiffness", controller.getSuspensionStiffness());
|
||||
{
|
||||
CompoundTag suspensionAdjust = new CompoundTag();
|
||||
|
||||
Vector3dc vec = controller.getSuspensionAdjust();
|
||||
|
||||
suspensionAdjust.putDouble("x", vec.x());
|
||||
suspensionAdjust.putDouble("y", vec.y());
|
||||
suspensionAdjust.putDouble("z", vec.z());
|
||||
|
||||
tag.put("suspensionAdjust", suspensionAdjust);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,12 +47,22 @@ public class TBBE extends BlockEntity {
|
|||
public void load(CompoundTag tag) {
|
||||
super.load(tag);
|
||||
|
||||
if (tag.contains("SuspensionStiffness")) {
|
||||
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos());
|
||||
if (ship != null) {
|
||||
PhysicsTrackController controller = PhysicsTrackController.getOrCreate(ship);
|
||||
SimpleWheelController controller2 = SimpleWheelController.getOrCreate(ship);
|
||||
if (tag.contains("SuspensionStiffness")) {
|
||||
((IPhysicsTrackController) controller).setSuspensionStiffness(tag.getFloat("SuspensionStiffness"));
|
||||
}
|
||||
|
||||
if (tag.contains("suspensionAdjust")) {
|
||||
CompoundTag suspensionAdjust = tag.getCompound("suspensionAdjust");
|
||||
|
||||
Vector3dc vector3dc = new Vector3d(suspensionAdjust.getDouble("x"), suspensionAdjust.getDouble("y"), suspensionAdjust.getDouble("z"));
|
||||
|
||||
((IPhysicsTrackController) controller).setSuspensionAdjust(new Vector3d(vector3dc));
|
||||
((ISimpleWheelController) controller2).setSuspensionAdjust(new Vector3d(vector3dc));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package space.eptaproject.vmodaddon.mixins;
|
||||
|
||||
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
|
||||
import org.joml.Vector3dc;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
|
@ -11,4 +12,10 @@ public interface PhysicsTrackControllerAccessor {
|
|||
|
||||
@Accessor(value = "suspensionStiffness", remap = false)
|
||||
void setSuspensionStiffness(float val);
|
||||
|
||||
@Accessor(value = "suspensionAdjust", remap = false)
|
||||
Vector3dc getSuspensionAdjust();
|
||||
|
||||
@Accessor(value = "suspensionAdjust", remap = false)
|
||||
void setSuspensionAdjust(Vector3dc vector3d);
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ public abstract class PhysicsTrackControllerMixin implements IPhysicsTrackContro
|
|||
*/
|
||||
@Overwrite(remap = false)
|
||||
public final float setDamperCoefficient(float delta) {
|
||||
this.suspensionStiffness = Math.clamp(0, Config.Suspension_Stiffness_LIMIT.get(), this.suspensionStiffness + delta);
|
||||
this.suspensionStiffness = Math.clamp(1, Config.Suspension_Stiffness_LIMIT.get(), this.suspensionStiffness + delta);
|
||||
return this.suspensionStiffness;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
package space.eptaproject.vmodaddon.mixins;
|
||||
|
||||
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
|
||||
import org.joml.Vector3dc;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(SimpleWheelController.class)
|
||||
public interface SimpleWheelControllerAccessor {
|
||||
@Accessor(value = "suspensionAdjust", remap = false)
|
||||
Vector3dc getSuspensionAdjust();
|
||||
|
||||
@Accessor(value = "suspensionAdjust", remap = false)
|
||||
void setSuspensionAdjust(Vector3dc vector3d);
|
||||
}
|
Loading…
Reference in New Issue