Fix anvil collisions
This fixes the server incorrectly moving the player out of an anvil when touching it on the side. The server used the rotation of the last placed anvil instead the of the rotation of the anvil the player was touching. By: Thinkofdeath <thethinkofdeath@gmail.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 023df056c334c6f5e41eea9b32c722dc85d7622c Mon Sep 17 00:00:00 2001
|
||||
From 728698cfb07683d5ce15c07ea8cf32591cc4c95c Mon Sep 17 00:00:00 2001
|
||||
From: md_5 <md_5@live.com.au>
|
||||
Date: Sun, 1 Dec 2013 15:10:48 +1100
|
||||
Subject: [PATCH] mc-dev imports
|
||||
@@ -289,6 +289,91 @@ index 0000000..b048d6c
|
||||
+ this.b(1, this.o, 16, 16);
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockAnvil.java b/src/main/java/net/minecraft/server/BlockAnvil.java
|
||||
new file mode 100644
|
||||
index 0000000..9e1ce2f
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/minecraft/server/BlockAnvil.java
|
||||
@@ -0,0 +1,79 @@
|
||||
+package net.minecraft.server;
|
||||
+
|
||||
+public class BlockAnvil extends BlockFalling {
|
||||
+
|
||||
+ public static final String[] a = new String[] { "intact", "slightlyDamaged", "veryDamaged"};
|
||||
+ private static final String[] N = new String[] { "anvil_top_damaged_0", "anvil_top_damaged_1", "anvil_top_damaged_2"};
|
||||
+
|
||||
+ protected BlockAnvil() {
|
||||
+ super(Material.HEAVY);
|
||||
+ this.g(0);
|
||||
+ this.a(CreativeModeTab.c);
|
||||
+ }
|
||||
+
|
||||
+ public boolean d() {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ public boolean c() {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ public void postPlace(World world, int i, int j, int k, EntityLiving entityliving, ItemStack itemstack) {
|
||||
+ int l = MathHelper.floor((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||
+ int i1 = world.getData(i, j, k) >> 2;
|
||||
+
|
||||
+ ++l;
|
||||
+ l %= 4;
|
||||
+ if (l == 0) {
|
||||
+ world.setData(i, j, k, 2 | i1 << 2, 2);
|
||||
+ }
|
||||
+
|
||||
+ if (l == 1) {
|
||||
+ world.setData(i, j, k, 3 | i1 << 2, 2);
|
||||
+ }
|
||||
+
|
||||
+ if (l == 2) {
|
||||
+ world.setData(i, j, k, 0 | i1 << 2, 2);
|
||||
+ }
|
||||
+
|
||||
+ if (l == 3) {
|
||||
+ world.setData(i, j, k, 1 | i1 << 2, 2);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public boolean interact(World world, int i, int j, int k, EntityHuman entityhuman, int l, float f, float f1, float f2) {
|
||||
+ if (world.isStatic) {
|
||||
+ return true;
|
||||
+ } else {
|
||||
+ entityhuman.openAnvil(i, j, k);
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public int b() {
|
||||
+ return 35;
|
||||
+ }
|
||||
+
|
||||
+ public int getDropData(int i) {
|
||||
+ return i >> 2;
|
||||
+ }
|
||||
+
|
||||
+ public void updateShape(IBlockAccess iblockaccess, int i, int j, int k) {
|
||||
+ int l = iblockaccess.getData(i, j, k) & 3;
|
||||
+
|
||||
+ if (l != 3 && l != 1) {
|
||||
+ this.a(0.125F, 0.0F, 0.0F, 0.875F, 1.0F, 1.0F);
|
||||
+ } else {
|
||||
+ this.a(0.0F, 0.0F, 0.125F, 1.0F, 1.0F, 0.875F);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ protected void a(EntityFallingBlock entityfallingblock) {
|
||||
+ entityfallingblock.a(true);
|
||||
+ }
|
||||
+
|
||||
+ public void a(World world, int i, int j, int k, int l) {
|
||||
+ world.triggerEffect(1022, i, j, k, 0);
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/net/minecraft/server/BlockBrewingStand.java b/src/main/java/net/minecraft/server/BlockBrewingStand.java
|
||||
new file mode 100644
|
||||
index 0000000..3287d77
|
||||
|
||||
Reference in New Issue
Block a user