update
This commit is contained in:
parent
6fe6b7913e
commit
38085d0b01
|
@ -60,7 +60,7 @@ public class Config {
|
||||||
|
|
||||||
Suspension_Stiffness_LIMIT = builder
|
Suspension_Stiffness_LIMIT = builder
|
||||||
.comment("track suspension stiffness")
|
.comment("track suspension stiffness")
|
||||||
.defineInRange("SuspensionStiffness", 4, 0, 20);
|
.defineInRange("SuspensionStiffness", 4, 1, 20);
|
||||||
|
|
||||||
builder.pop();
|
builder.pop();
|
||||||
COMMON_CONFIG = builder.build();
|
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;
|
package space.eptaproject.vmodaddon.block;
|
||||||
|
|
||||||
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
|
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
|
||||||
|
import edn.stratodonut.trackwork.tracks.forces.SimpleWheelController;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
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.core.api.ships.ServerShip;
|
||||||
import org.valkyrienskies.mod.common.VSGameUtilsKt;
|
import org.valkyrienskies.mod.common.VSGameUtilsKt;
|
||||||
import space.eptaproject.vmodaddon.IPhysicsTrackController;
|
import space.eptaproject.vmodaddon.IPhysicsTrackController;
|
||||||
|
import space.eptaproject.vmodaddon.ISimpleWheelController;
|
||||||
import space.eptaproject.vmodaddon.Vmodaddon;
|
import space.eptaproject.vmodaddon.Vmodaddon;
|
||||||
|
|
||||||
public class TBBE extends BlockEntity {
|
public class TBBE extends BlockEntity {
|
||||||
|
@ -20,9 +24,21 @@ public class TBBE extends BlockEntity {
|
||||||
super.saveAdditional(tag);
|
super.saveAdditional(tag);
|
||||||
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos());
|
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos());
|
||||||
if (ship != null) {
|
if (ship != null) {
|
||||||
PhysicsTrackController controller = ship.getAttachment(PhysicsTrackController.class);
|
PhysicsTrackController physicsTrackController = ship.getAttachment(PhysicsTrackController.class);
|
||||||
if (controller != null) {
|
IPhysicsTrackController controller = (IPhysicsTrackController) physicsTrackController;
|
||||||
tag.putFloat("SuspensionStiffness", ((IPhysicsTrackController) controller).getSuspensionStiffness());
|
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) {
|
public void load(CompoundTag tag) {
|
||||||
super.load(tag);
|
super.load(tag);
|
||||||
|
|
||||||
if (tag.contains("SuspensionStiffness")) {
|
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos());
|
||||||
ServerShip ship = (ServerShip) VSGameUtilsKt.getShipObjectManagingPos(this.level, getBlockPos());
|
if (ship != null) {
|
||||||
if (ship != null) {
|
PhysicsTrackController controller = PhysicsTrackController.getOrCreate(ship);
|
||||||
PhysicsTrackController controller = PhysicsTrackController.getOrCreate(ship);
|
SimpleWheelController controller2 = SimpleWheelController.getOrCreate(ship);
|
||||||
|
if (tag.contains("SuspensionStiffness")) {
|
||||||
((IPhysicsTrackController) controller).setSuspensionStiffness(tag.getFloat("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;
|
package space.eptaproject.vmodaddon.mixins;
|
||||||
|
|
||||||
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
|
import edn.stratodonut.trackwork.tracks.forces.PhysicsTrackController;
|
||||||
|
import org.joml.Vector3dc;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
@ -11,4 +12,10 @@ public interface PhysicsTrackControllerAccessor {
|
||||||
|
|
||||||
@Accessor(value = "suspensionStiffness", remap = false)
|
@Accessor(value = "suspensionStiffness", remap = false)
|
||||||
void setSuspensionStiffness(float val);
|
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)
|
@Overwrite(remap = false)
|
||||||
public final float setDamperCoefficient(float delta) {
|
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;
|
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