@@ -47,17 +47,9 @@ public boolean isPoweringRail(BlockState state, Block block) {
4747 }
4848 }
4949
50- @ Redirect (
51- method = "moveAlongTrack" ,
52- at = @ At (value = "INVOKE" , target = "Ljava/lang/Math;min(DD)D" ))
53- private double newMin (double min , double hozDist ) {
54- return Math .min (getMaxRailSpeed () / (3 /4 ), hozDist );
55- }
56-
5750 @ Unique
58- public double getMaxRailSpeed (/*BlockState blockState*/ ) {
59- // Block block = blockState.getBlock();
60- Block block = this .minecart .getInBlockState ().getBlock ();
51+ public double getMaxRailSpeed (BlockState blockState ) {
52+ Block block = blockState .getBlock ();
6153 if (block == ModBlocks .COPPER_RAIL || block == ModBlocks .WAXED_COPPER_RAIL ) {
6254 return CopperRailsConfig .COPPER_SPEED ;
6355 } else if (block == ModBlocks .EXPOSED_COPPER_RAIL || block == ModBlocks .WAXED_EXPOSED_COPPER_RAIL ) {
@@ -79,32 +71,29 @@ public double getMaxRailSpeed(/*BlockState blockState*/) {
7971 * @reason Rewrite all getMaxSpeed (very short) to increase max speed
8072 */
8173 @ Overwrite
82- public double getMaxSpeed (ServerLevel $$0 ) {
83- // return (this.minecart.isInWater() ? CopperRailsConfig.NORMAL_RAIL_SPEED / 2.0 : CopperRailsConfig.NORMAL_RAIL_SPEED);
84- double maxSpeed = getMaxRailSpeed ();
85- return (this .minecart .isInWater () ? maxSpeed / 2.0 : maxSpeed );
74+ public double getMaxSpeed (ServerLevel serverLevel ) {
75+ return (this .minecart .isInWater () ? CopperRailsConfig .NORMAL_RAIL_SPEED / 2.0 : CopperRailsConfig .NORMAL_RAIL_SPEED );
8676 }
8777
88- // @Unique
89- // private double convergeAbs(double speed, double targetSpeed) {
90- // if (Math.abs(speed) > targetSpeed) {
91- // return Math.signum(speed) * Math.min(Math.abs(speed) * 1 /*0.7*/, targetSpeed);
92- // } else {
93- // return speed;
94- // }
95- // }
96- //
97- // @Redirect(
98- // method = "moveAlongTrack",
99- // at = @At(
100- // value = "INVOKE",
101- // target = "Lnet/minecraft/world/entity/vehicle/OldMinecartBehavior;setDeltaMovement(Lnet/minecraft/world/phys/Vec3;)V",
102- // ordinal = 9))
103- // public void setVelocityClamp(OldMinecartBehavior minecart, Vec3 velocity) {
104- //// double maxSpeed = getMaxRailSpeed(minecart.minecart.getInBlockState());
105- // double maxSpeed = getMaxRailSpeed();
106- // minecart.setDeltaMovement(convergeAbs(velocity.x, maxSpeed), velocity.y, convergeAbs(velocity.z, maxSpeed));
107- // }
78+ @ Unique
79+ private double convergeAbs (double speed , double targetSpeed ) {
80+ if (Math .abs (speed ) > targetSpeed ) {
81+ return Math .signum (speed ) * Math .max (Math .abs (speed ) * 0.7 , targetSpeed );
82+ } else {
83+ return speed ;
84+ }
85+ }
86+
87+ @ Redirect (
88+ method = "moveAlongTrack" ,
89+ at = @ At (
90+ value = "INVOKE" ,
91+ target = "Lnet/minecraft/world/entity/vehicle/OldMinecartBehavior;setDeltaMovement(Lnet/minecraft/world/phys/Vec3;)V" ,
92+ ordinal = 9 ))
93+ public void setVelocityClamp (OldMinecartBehavior minecart , Vec3 velocity ) {
94+ double maxSpeed = getMaxRailSpeed (this .minecart .getInBlockState ());
95+ minecart .setDeltaMovement (convergeAbs (velocity .x , maxSpeed ), velocity .y , convergeAbs (velocity .z , maxSpeed ));
96+ }
10897
10998 @ Redirect (
11099 method = "moveAlongTrack" ,
0 commit comments