diff --git a/README.md b/README.md
index 8a96123..2e8fc48 100644
--- a/README.md
+++ b/README.md
@@ -128,6 +128,27 @@ After:
+Fixes Minecarts hardstopping when hitting arrows or dropped items on tracks
+
+Before:
+
+
+After:
+
+
+
+
+Fixes Minecarts flickering while moving
+
+Before:
+
+
+After:
+
+
+
+
+
## Troubleshooting
**Q: My achievements screen is all messed up**
diff --git a/src/main/java/xyz/pixelatedw/betterbeta/WyHelper.java b/src/main/java/xyz/pixelatedw/betterbeta/WyHelper.java
index 45dae82..6427589 100644
--- a/src/main/java/xyz/pixelatedw/betterbeta/WyHelper.java
+++ b/src/main/java/xyz/pixelatedw/betterbeta/WyHelper.java
@@ -4,8 +4,6 @@ import java.lang.management.ManagementFactory;
import java.util.Random;
import net.minecraft.entity.player.Player;
-import net.minecraft.item.ItemInstance;
-import net.minecraft.item.ItemType;
public class WyHelper {
@@ -26,7 +24,10 @@ public class WyHelper {
Random rand = new Random();
// player.level.playSound(player, "random.break", 1, (rand.nextFloat() - rand.nextFloat()) * 0.2F + 1.0F);
- player.dropItem(new ItemInstance(ItemType.fishingRod, 1), false);
+// player.dropItem(new ItemInstance(ItemType.minecart, 1), false);
+
+// player.dropItem(new ItemInstance(ItemType.bow, 1), false);
+// player.dropItem(new ItemInstance(ItemType.arrow, 64), false);
// player.dropItem(new ItemInstance(Tile.STONE, 64), false);
// player.level.playLevelEvent((Player)null, 1005, (int)player.x, (int)player.y, (int)player.z, 0);
diff --git a/src/main/java/xyz/pixelatedw/betterbeta/mixin/MinecartMixin.java b/src/main/java/xyz/pixelatedw/betterbeta/mixin/MinecartMixin.java
index 50c68f9..7d9863b 100644
--- a/src/main/java/xyz/pixelatedw/betterbeta/mixin/MinecartMixin.java
+++ b/src/main/java/xyz/pixelatedw/betterbeta/mixin/MinecartMixin.java
@@ -4,15 +4,27 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.Minecart;
+import net.minecraft.entity.projectile.Arrow;
import net.minecraft.tile.RailTile;
+import net.minecraft.util.maths.Box;
import net.minecraft.util.maths.MathsHelper;
import xyz.pixelatedw.betterbeta.WyHelper;
@Mixin(Minecart.class)
public class MinecartMixin {
+ @Inject(method = "method_1379", at = @At("HEAD"), cancellable = true)
+ public void onCollision(Entity other, CallbackInfoReturnable ci) {
+ if(other instanceof ItemEntity || other instanceof Arrow) {
+ ci.setReturnValue(null);
+ }
+ }
+
@Inject(method = "tick", at = @At("TAIL"))
public void tick(CallbackInfo ci) {
Minecart minecart = (Minecart) (Object) this;
@@ -21,6 +33,11 @@ public class MinecartMixin {
int z = MathsHelper.floor(minecart.z);
int tileId = minecart.level.getTileId(x, y, z);
if (RailTile.method_1107(tileId)) {
+
+ if(minecart.passenger != null) {
+ minecart.boundingBox.set(minecart.boundingBox.minX - 0.5, minecart.boundingBox.minY - 0.5, minecart.boundingBox.minZ - 0.5, minecart.boundingBox.maxX + 0.5, minecart.boundingBox.maxY + 0.5, minecart.boundingBox.maxZ + 0.5);
+ }
+
float speed = MathsHelper.sqrt(minecart.velocityX * minecart.velocityX + minecart.velocityZ * minecart.velocityZ);
float volume = 0;
float pitch = 0;