NOT FINISHED! She compiles, and she... suffers the wrath of chunkgen...
This commit is contained in:
parent
3bcba64d28
commit
84c98c2ba8
422 changed files with 972 additions and 1950 deletions
|
@ -0,0 +1,157 @@
|
|||
From ae233d1060a039c57855d6b48ad29ee9f16534e5 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 16 Jun 2018 13:41:00 -0400
|
||||
Subject: [PATCH] Add SentientNPC Interface to Entities
|
||||
|
||||
Used to determine ACTUAL Living NPC's. Spigot mistakenly inversed the conditions for LivingEntity, and
|
||||
used LivingEntity for Insentient Entities, and named the actual EntityLiving class EntityInsentient.
|
||||
|
||||
This should of all been inversed on the implementation side. To make matters worse, Spigot never
|
||||
exposed the differentiator that there are entities with AI that are not sentient/alive such as
|
||||
Armor stands and Players are the only things that do not implement the REAL EntityLiving class (named Insentient internally)
|
||||
|
||||
This interface lets you identify NPC entities capable of sentience, and able to move about and react to the world.
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/entity/SentientNPC.java b/src/main/java/com/destroystokyo/paper/entity/SentientNPC.java
|
||||
new file mode 100644
|
||||
index 00000000..7e393254
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/entity/SentientNPC.java
|
||||
@@ -0,0 +1,57 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2018 Daniel Ennis (Aikar) MIT License
|
||||
+ *
|
||||
+ * Permission is hereby granted, free of charge, to any person obtaining
|
||||
+ * a copy of this software and associated documentation files (the
|
||||
+ * "Software"), to deal in the Software without restriction, including
|
||||
+ * without limitation the rights to use, copy, modify, merge, publish,
|
||||
+ * distribute, sublicense, and/or sell copies of the Software, and to
|
||||
+ * permit persons to whom the Software is furnished to do so, subject to
|
||||
+ * the following conditions:
|
||||
+ *
|
||||
+ * The above copyright notice and this permission notice shall be
|
||||
+ * included in all copies or substantial portions of the Software.
|
||||
+ *
|
||||
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
+ */
|
||||
+
|
||||
+package com.destroystokyo.paper.entity;
|
||||
+
|
||||
+import org.bukkit.entity.LivingEntity;
|
||||
+
|
||||
+/**
|
||||
+ * Used to determine ACTUAL Living NPC's. Spigot mistakenly inversed the conditions for LivingEntity, and
|
||||
+ * used LivingEntity for Insentient Entities, and named the actual EntityLiving class EntityInsentient.
|
||||
+ *
|
||||
+ * This should of all been inversed on the implementation side. To make matters worse, Spigot never
|
||||
+ * exposed the differentiator that there are entities with AI that are not sentient/alive such as
|
||||
+ * Armor stands and Players are the only things that do not implement the REAL EntityLiving class (named Insentient internally)
|
||||
+ *
|
||||
+ * This interface lets you identify NPC entities capable of sentience, and able to move about and react to the world.
|
||||
+ */
|
||||
+public interface SentientNPC extends LivingEntity {
|
||||
+
|
||||
+ /**
|
||||
+ * Instructs this Creature to set the specified LivingEntity as its
|
||||
+ * target.
|
||||
+ * <p>
|
||||
+ * Hostile creatures may attack their target, and friendly creatures may
|
||||
+ * follow their target.
|
||||
+ *
|
||||
+ * @param target New LivingEntity to target, or null to clear the target
|
||||
+ */
|
||||
+ public void setTarget(LivingEntity target);
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the current target of this Creature
|
||||
+ *
|
||||
+ * @return Current target of this creature, or null if none exists
|
||||
+ */
|
||||
+ public LivingEntity getTarget();
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/entity/Ambient.java b/src/main/java/org/bukkit/entity/Ambient.java
|
||||
index 779e3897..ef548fb4 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Ambient.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Ambient.java
|
||||
@@ -3,4 +3,5 @@ package org.bukkit.entity;
|
||||
/**
|
||||
* Represents an ambient mob
|
||||
*/
|
||||
-public interface Ambient extends LivingEntity {}
|
||||
+public interface Ambient extends LivingEntity, com.destroystokyo.paper.entity.SentientNPC { // Paper
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/entity/ComplexLivingEntity.java b/src/main/java/org/bukkit/entity/ComplexLivingEntity.java
|
||||
index f74411c3..1f00923e 100644
|
||||
--- a/src/main/java/org/bukkit/entity/ComplexLivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/entity/ComplexLivingEntity.java
|
||||
@@ -6,7 +6,7 @@ import java.util.Set;
|
||||
* Represents a complex living entity - one that is made up of various smaller
|
||||
* parts
|
||||
*/
|
||||
-public interface ComplexLivingEntity extends LivingEntity {
|
||||
+public interface ComplexLivingEntity extends LivingEntity, com.destroystokyo.paper.entity.SentientNPC { // Paper
|
||||
/**
|
||||
* Gets a list of parts that belong to this complex entity
|
||||
*
|
||||
diff --git a/src/main/java/org/bukkit/entity/Creature.java b/src/main/java/org/bukkit/entity/Creature.java
|
||||
index f223f55b..bbfb248e 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Creature.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Creature.java
|
||||
@@ -4,7 +4,7 @@ package org.bukkit.entity;
|
||||
* Represents a Creature. Creatures are non-intelligent monsters or animals
|
||||
* which have very simple abilities.
|
||||
*/
|
||||
-public interface Creature extends LivingEntity {
|
||||
+public interface Creature extends LivingEntity, com.destroystokyo.paper.entity.SentientNPC { // Paper
|
||||
|
||||
/**
|
||||
* Instructs this Creature to set the specified LivingEntity as its
|
||||
@@ -15,12 +15,12 @@ public interface Creature extends LivingEntity {
|
||||
*
|
||||
* @param target New LivingEntity to target, or null to clear the target
|
||||
*/
|
||||
- public void setTarget(LivingEntity target);
|
||||
+ //public void setTarget(LivingEntity target); // Paper - moved to SentientNPC
|
||||
|
||||
/**
|
||||
* Gets the current target of this Creature
|
||||
*
|
||||
* @return Current target of this creature, or null if none exists
|
||||
*/
|
||||
- public LivingEntity getTarget();
|
||||
+ //public LivingEntity getTarget(); // Paper - moved to SentientNPC
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/entity/Flying.java b/src/main/java/org/bukkit/entity/Flying.java
|
||||
index 4f16a26c..207e9922 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Flying.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Flying.java
|
||||
@@ -3,4 +3,6 @@ package org.bukkit.entity;
|
||||
/**
|
||||
* Represents a Flying Entity.
|
||||
*/
|
||||
-public interface Flying extends LivingEntity {}
|
||||
+public interface Flying extends LivingEntity, com.destroystokyo.paper.entity.SentientNPC { // Paper
|
||||
+
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/entity/Slime.java b/src/main/java/org/bukkit/entity/Slime.java
|
||||
index 0d87d203..d4eee19c 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Slime.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Slime.java
|
||||
@@ -3,7 +3,7 @@ package org.bukkit.entity;
|
||||
/**
|
||||
* Represents a Slime.
|
||||
*/
|
||||
-public interface Slime extends LivingEntity {
|
||||
+public interface Slime extends LivingEntity, com.destroystokyo.paper.entity.SentientNPC { // Paper
|
||||
|
||||
/**
|
||||
* @return The size of the slime
|
||||
--
|
||||
2.18.0
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue