summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorTaylor Kelly <tkelly910@gmail.com>2011-01-11 18:53:54 -0500
committerTaylor Kelly <tkelly910@gmail.com>2011-01-11 18:53:54 -0500
commitb13da8518235a172e3e6e9f4e00f4ec78036b17b (patch)
tree7c2f139a1df828322947270e2310c1de481180c6 /src/main
parentc3cd1d735f0599764ea49ea86217ab142a550b8b (diff)
parente35b9b594addc7c5dd6580082d4e9e00f215286b (diff)
downloadbukkit-b13da8518235a172e3e6e9f4e00f4ec78036b17b.tar
bukkit-b13da8518235a172e3e6e9f4e00f4ec78036b17b.tar.gz
bukkit-b13da8518235a172e3e6e9f4e00f4ec78036b17b.tar.lz
bukkit-b13da8518235a172e3e6e9f4e00f4ec78036b17b.tar.xz
bukkit-b13da8518235a172e3e6e9f4e00f4ec78036b17b.zip
Merge branch 'master' of https://github.com/tkelly910/Bukkit into tkelly910-master
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/bukkit/MobType.java25
-rw-r--r--src/main/java/org/bukkit/event/Event.java130
-rw-r--r--src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java87
-rw-r--r--src/main/java/org/bukkit/event/player/PlayerListener.java8
-rw-r--r--src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java3
5 files changed, 192 insertions, 61 deletions
diff --git a/src/main/java/org/bukkit/MobType.java b/src/main/java/org/bukkit/MobType.java
new file mode 100644
index 00000000..0290c926
--- /dev/null
+++ b/src/main/java/org/bukkit/MobType.java
@@ -0,0 +1,25 @@
+package org.bukkit;
+
+public enum MobType {
+ CHICKEN("Chicken"),
+ COW("Cow"),
+ CREEPER("Creeper"),
+ GHAST("Ghast"),
+ PIG("Pig"),
+ PIG_ZOMBIE("PigZombie"),
+ SHEEP("Sheep"),
+ SKELETON("Skeleton"),
+ SPIDER("Spider"),
+ ZOMBIE("Zombie");
+
+ private String name;
+
+ private MobType(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+}
diff --git a/src/main/java/org/bukkit/event/Event.java b/src/main/java/org/bukkit/event/Event.java
index 61bebb4e..89b43b46 100644
--- a/src/main/java/org/bukkit/event/Event.java
+++ b/src/main/java/org/bukkit/event/Event.java
@@ -13,13 +13,13 @@ public abstract class Event {
this.type = type;
this.name = null;
}
-
+
protected Event(final String name) {
exAssert(name != null, "name is null");
this.type = Type.CUSTOM_EVENT;
this.name = name;
}
-
+
/**
* Gets the Type of this event
* @return Event type that this object represents
@@ -27,11 +27,11 @@ public abstract class Event {
public final Type getType() {
return type;
}
-
+
private void exAssert(boolean b, String s) {
if(!b) throw new IllegalArgumentException(s);
}
-
+
/**
* Gets the event's name. Should only be used if getType() == Type.CUSTOM
*
@@ -129,7 +129,7 @@ public abstract class Event {
/**
* Provides a lookup for all core events
- *
+ *
* @see org.bukkit.event.
*/
public enum Type {
@@ -137,65 +137,72 @@ public abstract class Event {
* PLAYER EVENTS
*/
- /**
+ /**
* Called when a player joins a server
- *
+ *
* @see org.bukkit.event.player.PlayerEvent
*/
PLAYER_JOIN (Category.PLAYER),
/**
* Called when a player is attempting to join a server
- *
+ *
* @see org.bukkit.event.player.PlayerLoginEvent
*/
PLAYER_LOGIN (Category.PLAYER),
/**
* Called when a player sends a chat message
- *
+ *
* @see org.bukkit.event.player.PlayerChatEvent
*/
PLAYER_CHAT (Category.PLAYER),
/**
* Called when a player attempts to use a command
- *
+ *
* @see org.bukkit.event.player.PlayerChatEvent
*/
PLAYER_COMMAND (Category.PLAYER),
/**
* Called when a player leaves a server
- *
+ *
* @see org.bukkit.event.player.PlayerEvent
*/
PLAYER_QUIT (Category.PLAYER),
/**
* Called when a player moves position in the world
- *
+ *
* @see org.bukkit.event.player.PlayerMoveEvent
*/
PLAYER_MOVE (Category.PLAYER),
/**
* Called when a player undergoes an animation, such as arm swinging
- *
+ *
* @todo: add javadoc see comment
*/
PLAYER_ANIMATION (Category.PLAYER),
-
+
/**
* Called when a player uses an item
- *
+ *
* @see org.bukkit.event.player.PlayerItemEvent
*/
PLAYER_ITEM (Category.PLAYER),
-
+
+ /**
+ * Called when a player throws an egg and it might hatch
+ *
+ * @see org.bukkit.event.player.PlayerEggThrowEvent
+ */
+ PLAYER_EGG_THROW (Category.PLAYER),
+
/**
* Called when a player teleports from one position to another
- *
+ *
* @see org.bukkit.event.player.PlayerMoveEvent
*/
PLAYER_TELEPORT (Category.PLAYER),
@@ -204,9 +211,10 @@ public abstract class Event {
* BLOCK EVENTS
*/
- /**
+ /**
* Called when a block is damaged (hit by a player)
- * @todo: Add Javadoc see note here.
+ *
+ * @see org.bukkit.event.block.BlockDamagedEvent
*/
BLOCK_DAMAGED (Category.BLOCK),
@@ -215,7 +223,7 @@ public abstract class Event {
* check on whether it can be built
*
* For example, cacti cannot be built on grass unless overridden here
- *
+ *
* @see org.bukkit.event.block.BlockCanBuildEvent
*/
BLOCK_CANBUILD (Category.BLOCK),
@@ -223,7 +231,7 @@ public abstract class Event {
/**
* Called when a block of water or lava attempts to flow into another
* block
- *
+ *
* @see org.bukkit.event.block.BlockFromToEvent
*/
BLOCK_FLOW (Category.BLOCK),
@@ -231,7 +239,7 @@ public abstract class Event {
/**
* Called when a block is being set on fire from another block, such as
* an adjacent block of fire attempting to set fire to wood
- *
+ *
* @see org.bukkit.event.block.BlockIgniteEvent
*/
BLOCK_IGNITE (Category.BLOCK),
@@ -241,35 +249,35 @@ public abstract class Event {
*
* A physics check is commonly called when an adjacent block changes
* type
- *
+ *
* @see org.bukkit.event.block.BlockPhysicsEvent
*/
BLOCK_PHYSICS (Category.BLOCK),
-
+
/**
* Called when a player is attempting to place a block
- *
+ *
* @see org.bukkit.event.block.BlockRightClickedEvent
*/
BLOCK_RIGHTCLICKED (Category.BLOCK),
-
+
/**
* Called when a player is attempting to place a block
- *
+ *
* @see org.bukkit.event.block.BlockPlacedEvent
*/
BLOCK_PLACED (Category.BLOCK),
/**
* Called when an entity interacts with a block (lever, door, pressure plate, chest, furnace)
- *
+ *
* @see org.bukkit.event.block.BlockInteractEvent
*/
BLOCK_INTERACT (Category.BLOCK),
-
+
/**
* Called when leaves are decaying naturally
- *
+ *
* @see org.bukkit.event.block.LeavesDecayEvent
*/
LEAVES_DECAY (Category.BLOCK),
@@ -277,7 +285,7 @@ public abstract class Event {
/**
* Called when a liquid attempts to flow into a block which already
* contains a "breakable" block, such as redstone wire
- *
+ *
* @todo: add javadoc see comment
*/
LIQUID_DESTROY (Category.BLOCK),
@@ -286,7 +294,7 @@ public abstract class Event {
* Called when a block changes redstone current. Only triggered on blocks
* that are actually capable of transmitting or carrying a redstone
* current
- *
+ *
* @see org.bukkit.event.block.BlockFromToEvent
*/
REDSTONE_CHANGE (Category.BLOCK),
@@ -295,37 +303,37 @@ public abstract class Event {
* INVENTORY EVENTS
*/
- /**
+ /**
* Called when a player opens an inventory
- *
+ *
* @todo: add javadoc see comment
*/
INVENTORY_OPEN (Category.INVENTORY),
/**
* Called when a player closes an inventory
- *
+ *
* @todo: add javadoc see comment
*/
INVENTORY_CLOSE (Category.INVENTORY),
/**
* Called when a player clicks on an inventory slot
- *
+ *
* @todo: add javadoc see comment
*/
INVENTORY_CLICK (Category.INVENTORY),
/**
* Called when an inventory slot changes values or type
- *
+ *
* @todo: add javadoc see comment
*/
INVENTORY_CHANGE (Category.INVENTORY),
/**
* Called when a player is attempting to perform an inventory transaction
- *
+ *
* @todo: add javadoc see comment
*/
INVENTORY_TRANSACTION (Category.INVENTORY),
@@ -336,14 +344,14 @@ public abstract class Event {
/**
* Called when a plugin is enabled
- *
+ *
* @see org.bukkit.event.server.PluginEvent
*/
PLUGIN_ENABLE (Category.SERVER),
/**
* Called when a plugin is disabled
- *
+ *
* @see org.bukkit.event.server.PluginEvent
*/
PLUGIN_DISABLE (Category.SERVER),
@@ -357,28 +365,28 @@ public abstract class Event {
*
* If a new chunk is being generated for loading, it will call
* Type.CHUNK_GENERATION and then Type.CHUNK_LOADED upon completion
- *
+ *
* @see org.bukkit.event.world.ChunkLoadedEvent
*/
CHUNK_LOADED (Category.WORLD),
/**
* Called when a chunk is unloaded
- *
+ *
* @see org.bukkit.event.world.ChunkUnloadedEvent
*/
CHUNK_UNLOADED (Category.WORLD),
/**
* Called when a chunk needs to be generated
- *
+ *
* @todo: add javadoc see comment
*/
CHUNK_GENERATION (Category.WORLD),
/**
* Called when an ItemEntity spawns in the world
- *
+ *
* @todo: add javadoc see comment
*/
ITEM_SPAWN (Category.WORLD),
@@ -387,10 +395,10 @@ public abstract class Event {
* LIVING_ENTITY EVENTS
*/
- /**
+ /**
* Called when a creature, either hostile or neutral, attempts to spawn
* in the world "naturally"
- *
+ *
* @todo: add javadoc see comment
*/
CREATURE_SPAWN (Category.LIVING_ENTITY),
@@ -398,35 +406,35 @@ public abstract class Event {
/**
* Called when a LivingEntity is damaged by the environment (for example,
* falling or lava)
- *
+ *
* @see org.bukkit.event.entity.EntityDamagedByBlockEvent
*/
ENTITY_DAMAGEDBY_BLOCK (Category.LIVING_ENTITY),
/**
* Called when a LivingEntity is damaged by another LivingEntity
- *
+ *
* @see org.bukkit.event.entity.EntityDamagedByEntityEvent
*/
ENTITY_DAMAGEDBY_ENTITY (Category.LIVING_ENTITY),
/**
* Called when a LivingEntity is damaged with no source.
- *
+ *
* @see org.bukkit.event.entity.EntityDamagedEvent
*/
ENTITY_DAMAGED(Category.LIVING_ENTITY),
/**
* Called when a LivingEntity dies
- *
+ *
* @todo: add javadoc see comment
*/
ENTITY_DEATH (Category.LIVING_ENTITY),
-
+
/**
* Called when a Skeleton or Zombie catch fire due to the sun
- *
+ *
* @todo: add javadoc see comment
*/
ENTITY_COMBUST (Category.LIVING_ENTITY),
@@ -435,51 +443,51 @@ public abstract class Event {
* VEHICLE EVENTS
*/
- /**
+ /**
* Called when a vehicle is placed by a player
- *
+ *
* @see org.bukkit.event.vehicle.VehicleCreateEvent
*/
VEHICLE_CREATE (Category.VEHICLE),
/**
* Called when a vehicle is damaged by a LivingEntity
- *
+ *
* @see org.bukkit.event.vehicle.VehicleDamageEvent
*/
VEHICLE_DAMAGE (Category.VEHICLE),
/**
* Called when a vehicle collides with an Entity
- *
+ *
* @see org.bukkit.event.vehicle.VehicleCollisionEvent
*/
VEHICLE_COLLISION_ENTITY (Category.VEHICLE),
/**
* Called when a vehicle collides with a Block
- *
+ *
* @see org.bukkit.event.vehicle.VehicleBlockCollisionEvent
*/
VEHICLE_COLLISION_BLOCK (Category.VEHICLE),
/**
* Called when a vehicle is entered by a LivingEntity
- *
+ *
* @see org.bukkit.event.vehicle.VehicleEnterEvent
*/
VEHICLE_ENTER (Category.VEHICLE),
/**
* Called when a vehicle is exited by a LivingEntity
- *
+ *
* @see org.bukkit.event.vehicle.VehicleExitEvent
*/
VEHICLE_EXIT (Category.VEHICLE),
/**
* Called when a vehicle moves position in the world
- *
+ *
* @see org.bukkit.event.vehicle.VehicleMoveEvent
*/
VEHICLE_MOVE (Category.VEHICLE),
@@ -494,7 +502,7 @@ public abstract class Event {
CUSTOM_EVENT (Category.MISCELLANEOUS);
private final Category category;
-
+
private Type(Category category) {
this.category = category;
}
diff --git a/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java b/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java
new file mode 100644
index 00000000..f1c26b93
--- /dev/null
+++ b/src/main/java/org/bukkit/event/player/PlayerEggThrowEvent.java
@@ -0,0 +1,87 @@
+package org.bukkit.event.player;
+
+import org.bukkit.MobType;
+import org.bukkit.Player;
+
+
+/**
+ *
+ * @author tkelly
+ *
+ */
+public class PlayerEggThrowEvent extends PlayerEvent {
+ private boolean hatching;
+ private MobType hatchType;
+ private byte numHatches;
+
+ public PlayerEggThrowEvent(Type type, Player player, boolean hatching, byte numHatches, MobType hatchType) {
+ super(type, player);
+ this.hatching = hatching;
+ this.numHatches = numHatches;
+ this.hatchType = hatchType;
+ }
+
+ /**
+ * Grabs whether the egg is hatching or not. Will be what the server
+ * would've done without interaction.
+ *
+ * @return boolean Whether the egg is going to hatch or not
+ */
+ public boolean isHatching() {
+ return hatching;
+ }
+
+ /**
+ * Sets whether the egg will hatch.
+ *
+ * @param hatching true if you want the egg to hatch
+ * false if you want it not to
+ */
+ public void setHatching(boolean hatching) {
+ this.hatching = hatching;
+ }
+
+ /**
+ * Get the type of the mob being hatched (MobType.CHICKEN by default)
+ *
+ * @return The type of the mob being hatched by the egg
+ */
+ public MobType getHatchType() {
+ return hatchType;
+ }
+
+ /**
+ * Change the type of mob being hatched by the egg
+ *
+ * @param hatchType The type of the mob being hatched by the egg
+ */
+ public void setHatchType(MobType hatchType) {
+ this.hatchType = hatchType;
+ }
+
+ /**
+ * Get the number of mob hatches from the egg. By default the number
+ * will be he number the server would've done
+ *
+ * 7/8 chance of being 0
+ * 31/256 ~= 1/8 chance to be 1
+ * 1/256 chance to be 4
+ *
+ * @return The number of mobs going to be hatched by the egg
+ */
+ public byte getNumHatches() {
+ return numHatches;
+ }
+
+ /**
+ * Change the number of mobs coming out of the hatched egg
+ *
+ * The boolean hatching will override this number.
+ * Ie. If hatching = false, this number will not matter
+ *
+ * @param numHatches The number of mobs coming out of the egg
+ */
+ public void setNumHatches(byte numHatches) {
+ this.numHatches = numHatches;
+ }
+}
diff --git a/src/main/java/org/bukkit/event/player/PlayerListener.java b/src/main/java/org/bukkit/event/player/PlayerListener.java
index b5da4b97..08a59016 100644
--- a/src/main/java/org/bukkit/event/player/PlayerListener.java
+++ b/src/main/java/org/bukkit/event/player/PlayerListener.java
@@ -73,4 +73,12 @@ public class PlayerListener implements Listener {
*/
public void onPlayerLogin(PlayerLoginEvent event) {
}
+
+ /**
+ * Called when a player throws an egg and it might hatch
+ *
+ * @param event Relevant event details
+ */
+ public void onPlayerEggThrow(PlayerEggThrowEvent event) {
+ }
}
diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
index 5ec11716..c0cef03a 100644
--- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
+++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
@@ -126,6 +126,9 @@ public final class JavaPluginLoader implements PluginLoader {
case PLAYER_LOGIN:
trueListener.onPlayerLogin((PlayerLoginEvent)event);
break;
+ case PLAYER_EGG_THROW:
+ trueListener.onPlayerEggThrow((PlayerEggThrowEvent)event);
+ break;
}
} else if (listener instanceof BlockListener) {
BlockListener trueListener = (BlockListener)listener;