Stored Bee API

This commit is contained in:
EOT3000
2025-01-12 17:39:50 -08:00
committed by granny
parent 7e8af548ea
commit 9235733eca
7 changed files with 312 additions and 344 deletions

View File

@@ -0,0 +1,28 @@
--- a/src/main/java/org/bukkit/block/EntityBlockStorage.java
+++ b/src/main/java/org/bukkit/block/EntityBlockStorage.java
@@ -47,6 +_,25 @@
@NotNull
List<T> releaseEntities();
+ // Purpur start - Stored Bee API
+ /**
+ * Releases a stored entity, and returns the entity in the world.
+ *
+ * @param entity Entity to release
+ * @return The entity which was released, or null if the stored entity is not in the hive
+ */
+ @org.jetbrains.annotations.Nullable
+ T releaseEntity(@NotNull org.purpurmc.purpur.entity.StoredEntity<T> entity);
+
+ /**
+ * Gets all the entities currently stored in the block.
+ *
+ * @return List of all entities which are stored in the block
+ */
+ @NotNull
+ List<org.purpurmc.purpur.entity.StoredEntity<T>> getEntities();
+ // Purpur end - Stored Bee API
+
/**
* Add an entity to the block.
*

View File

@@ -0,0 +1,52 @@
package org.purpurmc.purpur.entity;
import org.bukkit.Nameable;
import org.bukkit.block.EntityBlockStorage;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.persistence.PersistentDataHolder;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Represents an entity stored in a block
*
* @see org.bukkit.block.EntityBlockStorage
*/
public interface StoredEntity<T extends Entity> extends PersistentDataHolder, Nameable {
/**
* Checks if this entity has been released yet
*
* @return if this entity has been released
*/
boolean hasBeenReleased();
/**
* Releases the entity from its stored block
*
* @return the released entity, or null if unsuccessful (including if this entity has already been released)
*/
@Nullable
T release();
/**
* Returns the block in which this entity is stored
*
* @return the EntityBlockStorage in which this entity is stored, or null if it has been released
*/
@Nullable
EntityBlockStorage<T> getBlockStorage();
/**
* Gets the entity type of this stored entity
*
* @return the type of entity this stored entity represents
*/
@NotNull
EntityType getType();
/**
* Writes data to the block entity snapshot. {@link EntityBlockStorage#update()} must be run in order to update the block in game.
*/
void update();
}