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:
+
+ +
Fixes Minecarts flickering while moving + +Before:
+
+ + ## 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;