spigot/CraftBukkit-Patches/0035-Player-Collision-API.patch

93 lines
3.7 KiB
Diff
Raw Normal View History

2016-03-27 10:11:19 +11:00
From a97093cce7fdba9c3c264d266d75e947fab47870 Mon Sep 17 00:00:00 2001
2014-04-12 14:18:37 +10:00
From: md_5 <md_5@live.com.au>
Date: Sat, 3 Aug 2013 19:27:07 +1000
Subject: [PATCH] Player Collision API
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
2016-03-27 10:11:19 +11:00
index 588b782..6c6d45d 100644
2014-04-12 14:18:37 +10:00
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
2016-03-12 20:59:15 +11:00
@@ -377,6 +377,7 @@ public abstract class EntityHuman extends EntityLiving {
2014-04-12 14:18:37 +10:00
List list = this.world.getEntities(this, axisalignedbb);
2016-03-01 08:33:06 +11:00
+ if (this.isCollidable()) { // Spigot: Add isCollidable() condition (second !this.isDead near bottom of EntityLiving)
for (int i = 0; i < list.size(); ++i) {
Entity entity = (Entity) list.get(i);
2014-04-12 14:18:37 +10:00
2016-03-12 20:59:15 +11:00
@@ -384,6 +385,7 @@ public abstract class EntityHuman extends EntityLiving {
2016-03-01 08:33:06 +11:00
this.c(entity);
}
}
+ } // Spigot
}
}
2014-04-12 14:18:37 +10:00
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
2016-03-27 10:11:19 +11:00
index d0e2465..464788e 100644
2014-04-12 14:18:37 +10:00
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
2016-03-27 10:11:19 +11:00
@@ -1975,7 +1975,7 @@ public abstract class EntityLiving extends Entity {
2016-03-01 08:33:06 +11:00
protected void cn() {
List list = this.world.a((Entity) this, this.getBoundingBox(), IEntitySelector.a(this));
2014-04-12 14:18:37 +10:00
2015-02-28 11:36:22 +00:00
- if (!list.isEmpty()) {
2016-03-01 08:33:06 +11:00
+ if (this.isInteractable() && !list.isEmpty()) { // Spigot: Add isInteractable() condition
2014-04-12 14:18:37 +10:00
for (int i = 0; i < list.size(); ++i) {
Entity entity = (Entity) list.get(i);
2016-03-01 08:33:06 +11:00
// TODO better check now?
2014-04-12 14:18:37 +10:00
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
2016-03-27 10:11:19 +11:00
index 2ac8274..108f7d3 100644
2014-04-12 14:18:37 +10:00
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
2016-03-01 08:33:06 +11:00
@@ -65,6 +65,21 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
2014-04-12 14:18:37 +10:00
public double maxHealthCache;
public boolean joining = true;
// CraftBukkit end
+ // Spigot start
+ public boolean collidesWithEntities = true;
+
+ @Override
2016-03-01 08:33:06 +11:00
+ public boolean isInteractable()
2014-04-12 14:18:37 +10:00
+ {
2016-03-01 08:33:06 +11:00
+ return this.collidesWithEntities && super.isInteractable(); // (first !this.isDead near bottom of EntityLiving)
2014-04-12 14:18:37 +10:00
+ }
+
+ @Override
2016-03-01 08:33:06 +11:00
+ public boolean isCollidable()
2014-04-12 14:18:37 +10:00
+ {
2016-03-01 08:33:06 +11:00
+ return this.collidesWithEntities && super.isCollidable(); // (second !this.isDead near bottom of EntityLiving)
2014-04-12 14:18:37 +10:00
+ }
+ // Spigot end
public EntityPlayer(MinecraftServer minecraftserver, WorldServer worldserver, GameProfile gameprofile, PlayerInteractManager playerinteractmanager) {
super(worldserver, gameprofile);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
2016-03-27 10:11:19 +11:00
index 63ba9e0..bfe8ae0 100644
2014-04-12 14:18:37 +10:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
2016-03-27 10:11:19 +11:00
@@ -1406,6 +1406,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
2014-04-12 14:18:37 +10:00
// Spigot start
private final Player.Spigot spigot = new Player.Spigot()
{
+
+ @Override
+ public boolean getCollidesWithEntities()
+ {
+ return getHandle().collidesWithEntities;
+ }
+
+ @Override
+ public void setCollidesWithEntities(boolean collides)
+ {
+ getHandle().collidesWithEntities = collides;
2016-03-01 08:33:06 +11:00
+ getHandle().i = collides; // First boolean of Entity
2014-04-12 14:18:37 +10:00
+ }
};
public Player.Spigot spigot()
--
2016-03-01 08:33:06 +11:00
2.5.0
2014-04-12 14:18:37 +10:00