mirror of
https://github.com/LeavesMC/Leaves.git
synced 2025-12-19 14:59:32 +00:00
--------- Co-authored-by: Lumine1909 <133463833+Lumine1909@users.noreply.github.com> Co-authored-by: violetc <58360096+s-yh-china@users.noreply.github.com> Co-authored-by: Helvetica Volubi <88063803+Suisuroru@users.noreply.github.com>
59 lines
3.8 KiB
Diff
59 lines
3.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: MC_XiaoHei <xor7xiaohei@gmail.com>
|
|
Date: Wed, 8 Oct 2025 18:07:47 +0800
|
|
Subject: [PATCH] Old minecart motion behavior
|
|
|
|
This patch is Powered by [CPCA](https://github.com/liuyuexiaoyu1/carpet_pc_additon)
|
|
|
|
This patch is based on the following mixins:
|
|
* "com/pigconnon/carpet_pc_addition/mixin/MinecartMotionFix/EntityMixin.java"
|
|
* "com/pigconnon/carpet_pc_addition/mixin/MinecartMotionFix/NetherPortalBlockMixin.java"
|
|
By: liuyuexiaoyu1
|
|
As part of: CPCA (https://github.com/liuyuexiaoyu1/carpet_pc_additon)
|
|
Licensed under: MIT (https://mit-license.org)
|
|
|
|
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
|
index 50c143bb15108f02918fbacdff1eebfc14ee8aa6..7e4cf37e85b15be40e74aaa5a5d2227d4d837c7c 100644
|
|
--- a/net/minecraft/world/entity/Entity.java
|
|
+++ b/net/minecraft/world/entity/Entity.java
|
|
@@ -4174,7 +4174,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
|
|
teleportTransition.relatives().contains(Relative.Y) ? 0.0 : vec3.y(),
|
|
teleportTransition.relatives().contains(Relative.Z) ? 0.0 : vec3.z()
|
|
);
|
|
- return teleportTransition.withPosition(vec31).withRotation(f, f1).transitionAsPassenger();
|
|
+ return org.leavesmc.leaves.LeavesConfig.modify.oldMC.oldMinecartMotionBehavior ? new TeleportTransition(teleportTransition.newLevel(), teleportTransition.position(), teleportTransition.deltaMovement(), 0, 0, teleportTransition.postTeleportTransition()) : teleportTransition.withPosition(vec31).withRotation(f, f1).transitionAsPassenger(); // Leaves - old minecart motion behavior
|
|
}
|
|
|
|
private void sendTeleportTransitionToRidingPlayers(TeleportTransition teleportTransition) {
|
|
diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java
|
|
index 1ad863dc255a7b91d0b163000b6bb5d43e2ad204..512416c99e46d6eecc1fa4ca43f329923ceae868 100644
|
|
--- a/net/minecraft/world/level/block/NetherPortalBlock.java
|
|
+++ b/net/minecraft/world/level/block/NetherPortalBlock.java
|
|
@@ -259,14 +259,24 @@ public class NetherPortalBlock extends Block implements Portal {
|
|
double d = rectangle.axis1Size;
|
|
double d1 = rectangle.axis2Size;
|
|
EntityDimensions dimensions = entity.getDimensions(entity.getPose());
|
|
- int i = axis == axis1 ? 0 : 90;
|
|
+ // Leaves start - old minecart motion behavior
|
|
+ int i;
|
|
+ Vec3 vec3d3;
|
|
+ if (org.leavesmc.leaves.LeavesConfig.modify.oldMC.oldMinecartMotionBehavior) {
|
|
+ vec3d3 = axis == axis1 ? entity.getDeltaMovement() : new Vec3(entity.getDeltaMovement().z, entity.getDeltaMovement().y, -entity.getDeltaMovement().x);
|
|
+ i = 0;
|
|
+ } else {
|
|
+ vec3d3 = Vec3.ZERO;
|
|
+ i = axis == axis1 ? 0 : 90;
|
|
+ }
|
|
double d2 = dimensions.width() / 2.0 + (d - dimensions.width()) * offset.x();
|
|
double d3 = (d1 - dimensions.height()) * offset.y();
|
|
double d4 = 0.5 + offset.z();
|
|
boolean flag = axis1 == Direction.Axis.X;
|
|
Vec3 vec3 = new Vec3(blockPos.getX() + (flag ? d2 : d4), blockPos.getY() + d3, blockPos.getZ() + (flag ? d4 : d2));
|
|
Vec3 vec31 = PortalShape.findCollisionFreePosition(vec3, level, entity, dimensions);
|
|
- return new TeleportTransition(level, vec31, Vec3.ZERO, i, 0.0F, Relative.union(Relative.DELTA, Relative.ROTATION), postTeleportTransition, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.NETHER_PORTAL); // CraftBukkit
|
|
+ return new TeleportTransition(level, vec31, vec3d3, i, 0.0F, Relative.union(Relative.DELTA, Relative.ROTATION), postTeleportTransition, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.NETHER_PORTAL); // CraftBukkit
|
|
+ // Leaves end - old minecart motion behavior
|
|
}
|
|
|
|
@Override
|