Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-11-15 04:20:04 +01:00
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.
Dieser Commit ist enthalten in:
Ursprung
4f29a0ce0a
Commit
ed61b2982e
133
Spigot-API-Patches/0112-Add-SentientNPC-Interface-to-Entities.patch
Normale Datei
133
Spigot-API-Patches/0112-Add-SentientNPC-Interface-to-Entities.patch
Normale Datei
@ -0,0 +1,133 @@
|
||||
From 8290a8cef4bf55a6db5d39202d919ef8b1c38d4e 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..a0bdf855
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/entity/SentientNPC.java
|
||||
@@ -0,0 +1,37 @@
|
||||
+/*
|
||||
+ * 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;
|
||||
+
|
||||
+/**
|
||||
+ * 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 {
|
||||
+}
|
||||
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..77cbefcb 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
|
||||
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
|
||||
diff --git a/src/main/java/org/bukkit/entity/WaterMob.java b/src/main/java/org/bukkit/entity/WaterMob.java
|
||||
index 3e89ca0c..8d105e72 100644
|
||||
--- a/src/main/java/org/bukkit/entity/WaterMob.java
|
||||
+++ b/src/main/java/org/bukkit/entity/WaterMob.java
|
||||
@@ -3,4 +3,5 @@ package org.bukkit.entity;
|
||||
/**
|
||||
* Represents a Water Mob
|
||||
*/
|
||||
-public interface WaterMob extends LivingEntity {}
|
||||
+public interface WaterMob extends LivingEntity, com.destroystokyo.paper.entity.SentientNPC { // Paper
|
||||
+}
|
||||
--
|
||||
2.17.1
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren