mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-05 18:27:17 +01:00
[Bleeding] Added EntityType to replace CreatureType.
By: Celtic Minstrel <celtic.minstrel.ca@some.place>
This commit is contained in:
parent
c6050ff89d
commit
6e054ddf7f
8 changed files with 261 additions and 16 deletions
|
@ -310,6 +310,16 @@ public interface World extends PluginMessageRecipient {
|
|||
* @param type The creature to spawn
|
||||
* @return Resulting LivingEntity of this method, or null if it was unsuccessful
|
||||
*/
|
||||
public LivingEntity spawnCreature(Location loc, EntityType type);
|
||||
|
||||
/**
|
||||
* Creates a creature at the given {@link Location}
|
||||
*
|
||||
* @param loc The location to spawn the creature
|
||||
* @param type The creature to spawn
|
||||
* @return Resulting LivingEntity of this method, or null if it was unsuccessful
|
||||
*/
|
||||
@Deprecated
|
||||
public LivingEntity spawnCreature(Location loc, CreatureType type);
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.bukkit.block;
|
||||
|
||||
import org.bukkit.entity.CreatureType;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
/**
|
||||
* Represents a creature spawner.
|
||||
|
@ -11,21 +12,41 @@ public interface CreatureSpawner extends BlockState {
|
|||
* Get the spawner's creature type.
|
||||
*
|
||||
* @return The creature type.
|
||||
* @deprecated In favour of {@link #getSpawnedType()}.
|
||||
*/
|
||||
@Deprecated
|
||||
public CreatureType getCreatureType();
|
||||
|
||||
/**
|
||||
* Get the spawner's creature type.
|
||||
*
|
||||
* @return The creature type.
|
||||
*/
|
||||
public EntityType getSpawnedType();
|
||||
|
||||
/**
|
||||
* Set the spawner's creature type.
|
||||
*
|
||||
* @param creatureType The creature type.
|
||||
*/
|
||||
public void setSpawnedType(EntityType creatureType);
|
||||
|
||||
/**
|
||||
* Set the spawner creature type.
|
||||
*
|
||||
* @param creatureType The creature type.
|
||||
* @deprecated In favour of {@link #setSpawnedType(EntityType}.
|
||||
*/
|
||||
@Deprecated
|
||||
public void setCreatureType(CreatureType creatureType);
|
||||
|
||||
/**
|
||||
* Get the spawner's creature type.
|
||||
*
|
||||
* @return The creature type's name.
|
||||
* @deprecated Use {@link #getCreatureTypeName()}.
|
||||
*/
|
||||
@Deprecated
|
||||
public String getCreatureTypeId();
|
||||
|
||||
/**
|
||||
|
@ -33,6 +54,22 @@ public interface CreatureSpawner extends BlockState {
|
|||
*
|
||||
* @param creatureType The creature type's name.
|
||||
*/
|
||||
public void setCreatureTypeByName(String creatureType);
|
||||
|
||||
/**
|
||||
* Get the spawner's creature type.
|
||||
*
|
||||
* @return The creature type's name.
|
||||
*/
|
||||
public String getCreatureTypeName();
|
||||
|
||||
/**
|
||||
* Set the spawner mob type.
|
||||
*
|
||||
* @param creatureType The creature type's name.
|
||||
* @deprecated Use {@link #setCreatureTypeByName(String)}.
|
||||
*/
|
||||
@Deprecated
|
||||
public void setCreatureTypeId(String creatureType);
|
||||
|
||||
/**
|
||||
|
|
|
@ -4,6 +4,11 @@ import java.util.EnumSet;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Represents a type of creature.
|
||||
* @deprecated Use EntityType instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public enum CreatureType {
|
||||
// These strings MUST match the strings in nms.EntityTypes and are case sensitive.
|
||||
CREEPER("Creeper", Creeper.class, 50),
|
||||
|
@ -74,4 +79,13 @@ public enum CreatureType {
|
|||
}
|
||||
return ID_MAP.get((short) id);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public EntityType toEntityType() {
|
||||
return EntityType.fromName(getName());
|
||||
}
|
||||
|
||||
public static CreatureType fromEntityType(EntityType creatureType) {
|
||||
return fromName(creatureType.getName());
|
||||
}
|
||||
}
|
|
@ -226,4 +226,10 @@ public interface Entity {
|
|||
* @param type Effect to play.
|
||||
*/
|
||||
public void playEffect(EntityEffect type);
|
||||
|
||||
/**
|
||||
* Get the type of the entity.
|
||||
* @return The entity type.
|
||||
*/
|
||||
public EntityType getType();
|
||||
}
|
||||
|
|
129
paper-api/src/main/java/org/bukkit/entity/EntityType.java
Normal file
129
paper-api/src/main/java/org/bukkit/entity/EntityType.java
Normal file
|
@ -0,0 +1,129 @@
|
|||
package org.bukkit.entity;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.World;
|
||||
|
||||
public enum EntityType {
|
||||
// These strings MUST match the strings in nms.EntityTypes and are case sensitive.
|
||||
DROPPED_ITEM("Item", Item.class, 1, false),
|
||||
EXPERIENCE_ORB("XPOrb", ExperienceOrb.class, 2),
|
||||
PAINTING("Painting", Painting.class, 9),
|
||||
ARROW("Arrow", Arrow.class, 10),
|
||||
SNOWBALL("Snowball", Snowball.class, 11),
|
||||
FIREBALL("Fireball", Fireball.class, 12),
|
||||
SMALL_FIREBALL("SmallFireball", SmallFireball.class, 13),
|
||||
ENDER_PEARL("ThrownEnderpearl", EnderPearl.class, 14),
|
||||
ENDER_SIGNAL("EyeOfEnderSignal", EnderSignal.class, 15),
|
||||
PRIMED_TNT("PrimedTnt", TNTPrimed.class, 20),
|
||||
FALLING_BLOCK("FallingSand", FallingSand.class, 21, false),
|
||||
MINECART("Minecart", Minecart.class, 40),
|
||||
BOAT("Boat", Boat.class, 41),
|
||||
CREEPER("Creeper", Creeper.class, 50),
|
||||
SKELETON("Skeleton", Skeleton.class, 51),
|
||||
SPIDER("Spider", Spider.class, 52),
|
||||
GIANT("Giant", Giant.class, 53),
|
||||
ZOMBIE("Zombie", Zombie.class, 54),
|
||||
SLIME("Slime", Slime.class, 55),
|
||||
GHAST("Ghast", Ghast.class, 56),
|
||||
PIG_ZOMBIE("PigZombie", PigZombie.class, 57),
|
||||
ENDERMAN("Enderman", Enderman.class, 58),
|
||||
CAVE_SPIDER("CaveSpider", CaveSpider.class, 59),
|
||||
SILVERFISH("Silverfish", Silverfish.class, 60),
|
||||
BLAZE("Blaze", Blaze.class, 61),
|
||||
MAGMA_CUBE("LavaSlime", MagmaCube.class, 62),
|
||||
ENDER_DRAGON("EnderDragon", EnderDragon.class, 63),
|
||||
PIG("Pig", Pig.class, 90),
|
||||
SHEEP("Sheep", Sheep.class, 91),
|
||||
COW("Cow", Cow.class, 92),
|
||||
CHICKEN("Chicken", Chicken.class, 93),
|
||||
SQUID("Squid", Squid.class, 94),
|
||||
WOLF("Wolf", Wolf.class, 95),
|
||||
MUSHROOM_COW("MushroomCow", MushroomCow.class, 96),
|
||||
SNOWMAN("SnowMan", Snowman.class, 97),
|
||||
VILLAGER("Villager", Villager.class, 120),
|
||||
ENDER_CRYSTAL("EnderCrystal", EnderCrystal.class, 200),
|
||||
// These don't have an entity ID in nms.EntityTypes.
|
||||
SPLASH_POTION(null, ThrownPotion.class, -1, false),
|
||||
EGG(null, Egg.class, -1, false),
|
||||
FISHING_HOOK(null, Fish.class, -1, false),
|
||||
/**
|
||||
* Spawn with {@link World#strikeLightning(org.bukkit.Location)}.
|
||||
*/
|
||||
LIGHTNING(null, LightningStrike.class, -1, false),
|
||||
WEATHER(null, Weather.class, -1, false),
|
||||
PLAYER(null, Player.class, -1, false),
|
||||
COMPLEX_PART(null, ComplexEntityPart.class, -1, false),
|
||||
/**
|
||||
* An unknown entity without an Entity Class
|
||||
*/
|
||||
UNKNOWN(null, null, -1, false);
|
||||
|
||||
private String name;
|
||||
private Class<? extends Entity> clazz;
|
||||
private short typeId;
|
||||
private boolean independent, living;
|
||||
|
||||
private static final Map<String, EntityType> NAME_MAP = new HashMap<String, EntityType>();
|
||||
private static final Map<Short, EntityType> ID_MAP = new HashMap<Short, EntityType>();
|
||||
|
||||
static {
|
||||
for (EntityType type : EnumSet.allOf(EntityType.class)) {
|
||||
NAME_MAP.put(type.name, type);
|
||||
NAME_MAP.put(type.name(), type);
|
||||
if (type.typeId != 0) {
|
||||
ID_MAP.put(type.typeId, type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private EntityType(String name, Class<? extends Entity> clazz, int typeId) {
|
||||
this(name, clazz, typeId, true);
|
||||
}
|
||||
|
||||
private EntityType(String name, Class<? extends Entity> clazz, int typeId, boolean independent) {
|
||||
this.name = name;
|
||||
this.clazz = clazz;
|
||||
this.typeId = (short) typeId;
|
||||
this.independent = independent;
|
||||
this.living = LivingEntity.class.isAssignableFrom(clazz);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public Class<? extends Entity> getEntityClass() {
|
||||
return clazz;
|
||||
}
|
||||
|
||||
public short getTypeId() {
|
||||
return typeId;
|
||||
}
|
||||
|
||||
public static EntityType fromName(String name) {
|
||||
return NAME_MAP.get(name);
|
||||
}
|
||||
|
||||
public static EntityType fromId(int id) {
|
||||
if (id > Short.MAX_VALUE) {
|
||||
return null;
|
||||
}
|
||||
return ID_MAP.get((short) id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Some entities cannot be spawned using {@link World#spawn(org.bukkit.Location, EntityType)}, usually
|
||||
* because they require additional information in order to spawn.
|
||||
* @return False if the entity type cannot be spawned
|
||||
*/
|
||||
public boolean isSpawnable() {
|
||||
return independent;
|
||||
}
|
||||
|
||||
public boolean isAlive() {
|
||||
return living;
|
||||
}
|
||||
}
|
|
@ -1,8 +1,10 @@
|
|||
package org.bukkit.event.entity;
|
||||
|
||||
import org.bukkit.entity.CreatureType;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
|
@ -13,18 +15,20 @@ import org.bukkit.event.HandlerList;
|
|||
*/
|
||||
public class CreatureSpawnEvent extends EntityEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private final Location location;
|
||||
private boolean canceled;
|
||||
private final CreatureType creatureType;
|
||||
private final SpawnReason spawnReason;
|
||||
|
||||
public CreatureSpawnEvent(final Entity spawnee, final CreatureType mobtype, final Location loc, final SpawnReason spawnReason) {
|
||||
public CreatureSpawnEvent(final LivingEntity spawnee, final SpawnReason spawnReason) {
|
||||
super(spawnee);
|
||||
this.creatureType = mobtype;
|
||||
this.location = loc;
|
||||
this.spawnReason = spawnReason;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public CreatureSpawnEvent(Entity spawnee, CreatureType type, Location loc, SpawnReason reason) {
|
||||
super(spawnee);
|
||||
spawnReason = reason;
|
||||
}
|
||||
|
||||
public boolean isCancelled() {
|
||||
return canceled;
|
||||
}
|
||||
|
@ -39,7 +43,18 @@ public class CreatureSpawnEvent extends EntityEvent implements Cancellable {
|
|||
* @return The location at which the creature is spawning
|
||||
*/
|
||||
public Location getLocation() {
|
||||
return location;
|
||||
return getEntity().getLocation();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the type of creature being spawned.
|
||||
*
|
||||
* @return A CreatureType value detailing the type of creature being spawned
|
||||
* @deprecated In favour of {@link #getSpawnedType()}.
|
||||
*/
|
||||
@Deprecated
|
||||
public CreatureType getCreatureType() {
|
||||
return CreatureType.fromEntityType(getSpawnedType());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -47,8 +62,8 @@ public class CreatureSpawnEvent extends EntityEvent implements Cancellable {
|
|||
*
|
||||
* @return A CreatureType value detailing the type of creature being spawned
|
||||
*/
|
||||
public CreatureType getCreatureType() {
|
||||
return creatureType;
|
||||
public EntityType getSpawnedType() {
|
||||
return getEntity().getType();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -2,6 +2,7 @@ package org.bukkit.event.player;
|
|||
|
||||
import org.bukkit.entity.CreatureType;
|
||||
import org.bukkit.entity.Egg;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
|
@ -12,15 +13,20 @@ public class PlayerEggThrowEvent extends PlayerEvent {
|
|||
private static final HandlerList handlers = new HandlerList();
|
||||
private final Egg egg;
|
||||
private boolean hatching;
|
||||
private CreatureType hatchType;
|
||||
private EntityType hatchType;
|
||||
private byte numHatches;
|
||||
|
||||
public PlayerEggThrowEvent(final Player player, final Egg egg, final boolean hatching, final byte numHatches, final CreatureType hatchType) {
|
||||
public PlayerEggThrowEvent(final Player player, final Egg egg, final boolean hatching, final byte numHatches, final EntityType hatchingType) {
|
||||
super(player);
|
||||
this.egg = egg;
|
||||
this.hatching = hatching;
|
||||
this.numHatches = numHatches;
|
||||
this.hatchType = hatchType;
|
||||
this.hatchType = hatchingType;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public PlayerEggThrowEvent(Player player, Egg egg, boolean hatching, byte numHatches, CreatureType hatchingType) {
|
||||
this(player, egg, hatching, numHatches, hatchingType.toEntityType());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -53,12 +59,34 @@ public class PlayerEggThrowEvent extends PlayerEvent {
|
|||
}
|
||||
|
||||
/**
|
||||
* Get the type of the mob being hatched (CreatureType.CHICKEN by default)
|
||||
* Get the type of the mob being hatched (EntityType.CHICKEN by default)
|
||||
*
|
||||
* @return The type of the mob being hatched by the egg
|
||||
* @deprecated In favour of {@link #getHatchingType()}.
|
||||
*/
|
||||
@Deprecated
|
||||
public CreatureType getHatchType() {
|
||||
return CreatureType.fromEntityType(hatchType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the type of the mob being hatched (EntityType.CHICKEN by default)
|
||||
*
|
||||
* @return The type of the mob being hatched by the egg
|
||||
*/
|
||||
public CreatureType getHatchType() {
|
||||
return CreatureType.fromName(hatchType.getName());
|
||||
public EntityType getHatchingType() {
|
||||
return hatchType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the type of mob being hatched by the egg
|
||||
*
|
||||
* @param hatchType The type of the mob being hatched by the egg
|
||||
* @deprecated In favour of {@link #setHatchingType(EntityType)}.
|
||||
*/
|
||||
@Deprecated
|
||||
public void setHatchType(CreatureType hatchType) {
|
||||
this.hatchType = hatchType.toEntityType();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -66,7 +94,8 @@ public class PlayerEggThrowEvent extends PlayerEvent {
|
|||
*
|
||||
* @param hatchType The type of the mob being hatched by the egg
|
||||
*/
|
||||
public void setHatchType(CreatureType hatchType) {
|
||||
public void setHatchingType(EntityType hatchType) {
|
||||
if(!hatchType.isSpawnable()) throw new IllegalArgumentException("Can't spawn that entity type from an egg!");
|
||||
this.hatchType = hatchType;
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ import org.bukkit.block.Block;
|
|||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Egg;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Snowball;
|
||||
import org.bukkit.entity.Vehicle;
|
||||
|
@ -648,4 +649,8 @@ public class TestPlayer implements Player {
|
|||
public Collection<PotionEffect> getActivePotionEffects() {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
public EntityType getType() {
|
||||
return EntityType.PLAYER;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue