More more more more more more more more work
This commit is contained in:
parent
e131aff8ad
commit
11709feb21
6 changed files with 26 additions and 26 deletions
|
@ -1,148 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: BillyGalbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Mon, 3 Sep 2018 18:13:53 -0500
|
||||
Subject: [PATCH] Add ray tracing methods to LivingEntity
|
||||
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/block/TargetBlockInfo.java b/src/main/java/com/destroystokyo/paper/block/TargetBlockInfo.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..18a96dbb01d3b34476652264b2d6be3782a154ec
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/block/TargetBlockInfo.java
|
||||
@@ -0,0 +1,54 @@
|
||||
+package com.destroystokyo.paper.block;
|
||||
+
|
||||
+import org.bukkit.block.Block;
|
||||
+import org.bukkit.block.BlockFace;
|
||||
+import org.jetbrains.annotations.NotNull;
|
||||
+
|
||||
+/**
|
||||
+ * Represents information about a targeted block
|
||||
+ */
|
||||
+public class TargetBlockInfo {
|
||||
+ private final Block block;
|
||||
+ private final BlockFace blockFace;
|
||||
+
|
||||
+ public TargetBlockInfo(@NotNull Block block, @NotNull BlockFace blockFace) {
|
||||
+ this.block = block;
|
||||
+ this.blockFace = blockFace;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the block that is targeted
|
||||
+ *
|
||||
+ * @return Targeted block
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public Block getBlock() {
|
||||
+ return block;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the targeted BlockFace
|
||||
+ *
|
||||
+ * @return Targeted blockface
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public BlockFace getBlockFace() {
|
||||
+ return blockFace;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the relative Block to the targeted block on the side it is targeted at
|
||||
+ *
|
||||
+ * @return Block relative to targeted block
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public Block getRelativeBlock() {
|
||||
+ return block.getRelative(blockFace);
|
||||
+ }
|
||||
+
|
||||
+ public enum FluidMode {
|
||||
+ NEVER,
|
||||
+ SOURCE_ONLY,
|
||||
+ ALWAYS
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
|
||||
index 6d8d96976bcef4e176453fede81a529478f11234..ad885a0775b387e3e8ca6bfae80c18465038056c 100644
|
||||
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
|
||||
@@ -82,6 +82,77 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
|
||||
@NotNull
|
||||
public Block getTargetBlock(@Nullable Set<Material> transparent, int maxDistance);
|
||||
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Gets the block that the living entity has targeted, ignoring fluids
|
||||
+ *
|
||||
+ * @param maxDistance this is the maximum distance to scan
|
||||
+ * @return block that the living entity has targeted,
|
||||
+ * or null if no block is within maxDistance
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public default Block getTargetBlock(int maxDistance) {
|
||||
+ return getTargetBlock(maxDistance, com.destroystokyo.paper.block.TargetBlockInfo.FluidMode.NEVER);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the block that the living entity has targeted
|
||||
+ *
|
||||
+ * @param maxDistance this is the maximum distance to scan
|
||||
+ * @param fluidMode whether to check fluids or not
|
||||
+ * @return block that the living entity has targeted,
|
||||
+ * or null if no block is within maxDistance
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public Block getTargetBlock(int maxDistance, @NotNull com.destroystokyo.paper.block.TargetBlockInfo.FluidMode fluidMode);
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the blockface of that block that the living entity has targeted, ignoring fluids
|
||||
+ *
|
||||
+ * @param maxDistance this is the maximum distance to scan
|
||||
+ * @return blockface of the block that the living entity has targeted,
|
||||
+ * or null if no block is targeted
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public default org.bukkit.block.BlockFace getTargetBlockFace(int maxDistance) {
|
||||
+ return getTargetBlockFace(maxDistance, com.destroystokyo.paper.block.TargetBlockInfo.FluidMode.NEVER);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets the blockface of that block that the living entity has targeted
|
||||
+ *
|
||||
+ * @param maxDistance this is the maximum distance to scan
|
||||
+ * @param fluidMode whether to check fluids or not
|
||||
+ * @return blockface of the block that the living entity has targeted,
|
||||
+ * or null if no block is targeted
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public org.bukkit.block.BlockFace getTargetBlockFace(int maxDistance, @NotNull com.destroystokyo.paper.block.TargetBlockInfo.FluidMode fluidMode);
|
||||
+
|
||||
+ /**
|
||||
+ * Gets information about the block the living entity has targeted, ignoring fluids
|
||||
+ *
|
||||
+ * @param maxDistance this is the maximum distance to scan
|
||||
+ * @return TargetBlockInfo about the block the living entity has targeted,
|
||||
+ * or null if no block is targeted
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public default com.destroystokyo.paper.block.TargetBlockInfo getTargetBlockInfo(int maxDistance) {
|
||||
+ return getTargetBlockInfo(maxDistance, com.destroystokyo.paper.block.TargetBlockInfo.FluidMode.NEVER);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Gets information about the block the living entity has targeted
|
||||
+ *
|
||||
+ * @param maxDistance this is the maximum distance to scan
|
||||
+ * @param fluidMode whether to check fluids or not
|
||||
+ * @return TargetBlockInfo about the block the living entity has targeted,
|
||||
+ * or null if no block is targeted
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public com.destroystokyo.paper.block.TargetBlockInfo getTargetBlockInfo(int maxDistance, @NotNull com.destroystokyo.paper.block.TargetBlockInfo.FluidMode fluidMode);
|
||||
+ // Paper end
|
||||
+
|
||||
/**
|
||||
* Gets the last two blocks along the living entity's line of sight.
|
||||
* <p>
|
|
@ -1,37 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: BillyGalbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Tue, 4 Sep 2018 15:01:54 -0500
|
||||
Subject: [PATCH] Expose attack cooldown methods for Player
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
|
||||
index ac529faeb4e4be2e62228cc931a793f2ff0a28af..1bace560fc0632c702ff820a15defa730272ba75 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Player.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Player.java
|
||||
@@ -2089,6 +2089,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* @param profile The new profile to use
|
||||
*/
|
||||
void setPlayerProfile(@NotNull PlayerProfile profile);
|
||||
+
|
||||
+ /**
|
||||
+ * Returns the amount of ticks the current cooldown lasts
|
||||
+ *
|
||||
+ * @return Amount of ticks cooldown will last
|
||||
+ */
|
||||
+ float getCooldownPeriod();
|
||||
+
|
||||
+ /**
|
||||
+ * Returns the percentage of attack power available based on the cooldown (zero to one).
|
||||
+ *
|
||||
+ * @param adjustTicks Amount of ticks to add to cooldown counter for this calculation
|
||||
+ * @return Percentage of attack power available
|
||||
+ */
|
||||
+ float getCooledAttackStrength(float adjustTicks);
|
||||
+
|
||||
+ /**
|
||||
+ * Reset the cooldown counter to 0, effectively starting the cooldown period.
|
||||
+ */
|
||||
+ void resetCooldown();
|
||||
// Paper end
|
||||
|
||||
// Spigot start
|
|
@ -1,203 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Phoenix616 <mail@moep.tv>
|
||||
Date: Tue, 21 Aug 2018 01:32:28 +0100
|
||||
Subject: [PATCH] Improve death events
|
||||
|
||||
This adds the ability to cancel the death events and to modify the sound
|
||||
an entity makes when dying. (In cases were no sound should it will be
|
||||
called with shouldPlaySound set to false allowing unsilencing of silent
|
||||
entities)
|
||||
|
||||
It makes handling of entity deaths a lot nicer as you no longer need
|
||||
to listen on the damage event and calculate if the entity dies yourself
|
||||
to cancel the death which has the benefit of also receiving the dropped
|
||||
items and experience which is otherwise only properly possible by using
|
||||
internal code.
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java b/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java
|
||||
index a5984ab06cce95d30e70511e125f69339b574c04..e19a3df9aa2204b44c0b029bda141ae6306f60a1 100644
|
||||
--- a/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java
|
||||
@@ -5,14 +5,24 @@ import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* Thrown whenever a LivingEntity dies
|
||||
*/
|
||||
-public class EntityDeathEvent extends EntityEvent {
|
||||
+public class EntityDeathEvent extends EntityEvent implements org.bukkit.event.Cancellable { // Paper - make cancellable
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private final List<ItemStack> drops;
|
||||
private int dropExp = 0;
|
||||
+ // Paper start - make cancellable
|
||||
+ private boolean cancelled;
|
||||
+ private double reviveHealth = 0;
|
||||
+ private boolean shouldPlayDeathSound;
|
||||
+ @Nullable private org.bukkit.Sound deathSound;
|
||||
+ @Nullable private org.bukkit.SoundCategory deathSoundCategory;
|
||||
+ private float deathSoundVolume;
|
||||
+ private float deathSoundPitch;
|
||||
+ // Paper end
|
||||
|
||||
public EntityDeathEvent(@NotNull final LivingEntity entity, @NotNull final List<ItemStack> drops) {
|
||||
this(entity, drops, 0);
|
||||
@@ -74,4 +84,134 @@ public class EntityDeathEvent extends EntityEvent {
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
+
|
||||
+ // Paper start - make cancellable
|
||||
+ @Override
|
||||
+ public boolean isCancelled() {
|
||||
+ return cancelled;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setCancelled(boolean cancel) {
|
||||
+ cancelled = cancel;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the amount of health that the entity should revive with after cancelling the event.
|
||||
+ * Set to the entity's max health by default.
|
||||
+ *
|
||||
+ * @return The amount of health
|
||||
+ */
|
||||
+ public double getReviveHealth() {
|
||||
+ return reviveHealth;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Set the amount of health that the entity should revive with after cancelling the event.
|
||||
+ * Revive health value must be between 0 (exclusive) and the entity's max health (inclusive).
|
||||
+ *
|
||||
+ * @param reviveHealth The amount of health
|
||||
+ * @throws IllegalArgumentException Thrown if the health is {@literal <= 0 or >} max health
|
||||
+ */
|
||||
+ public void setReviveHealth(double reviveHealth) throws IllegalArgumentException {
|
||||
+ double maxHealth = ((LivingEntity) entity).getAttribute(org.bukkit.attribute.Attribute.GENERIC_MAX_HEALTH).getValue();
|
||||
+ if ((maxHealth != 0 && reviveHealth <= 0) || (reviveHealth > maxHealth)) {
|
||||
+ throw new IllegalArgumentException("Health must be between 0 (exclusive) and " + maxHealth + " (inclusive), but was " + reviveHealth);
|
||||
+ }
|
||||
+ this.reviveHealth = reviveHealth;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ /**
|
||||
+ * Whether or not the death sound should play when the entity dies. If the event is cancelled it does not play!
|
||||
+ *
|
||||
+ * @return Whether or not the death sound should play. Event is called with this set to false if the entity is silent.
|
||||
+ */
|
||||
+ public boolean shouldPlayDeathSound() {
|
||||
+ return shouldPlayDeathSound;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Set whether or not the death sound should play when the entity dies. If the event is cancelled it does not play!
|
||||
+ *
|
||||
+ * @param playDeathSound Enable or disable the death sound
|
||||
+ */
|
||||
+ public void setShouldPlayDeathSound(boolean playDeathSound) {
|
||||
+ this.shouldPlayDeathSound = playDeathSound;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the sound that the entity makes when dying
|
||||
+ *
|
||||
+ * @return The sound that the entity makes
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public org.bukkit.Sound getDeathSound() {
|
||||
+ return deathSound;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Set the sound that the entity makes when dying
|
||||
+ *
|
||||
+ * @param sound The sound that the entity should make when dying
|
||||
+ */
|
||||
+ public void setDeathSound(@Nullable org.bukkit.Sound sound) {
|
||||
+ deathSound = sound;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the sound category that the death sound should play in
|
||||
+ *
|
||||
+ * @return The sound category
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public org.bukkit.SoundCategory getDeathSoundCategory() {
|
||||
+ return deathSoundCategory;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Set the sound category that the death sound should play in.
|
||||
+ *
|
||||
+ * @param soundCategory The sound category
|
||||
+ */
|
||||
+ public void setDeathSoundCategory(@Nullable org.bukkit.SoundCategory soundCategory) {
|
||||
+ this.deathSoundCategory = soundCategory;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the volume that the death sound will play at.
|
||||
+ *
|
||||
+ * @return The volume the death sound will play at
|
||||
+ */
|
||||
+ public float getDeathSoundVolume() {
|
||||
+ return deathSoundVolume;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Set the volume the death sound should play at. If the event is cancelled this will not play the sound!
|
||||
+ *
|
||||
+ * @param volume The volume the death sound should play at
|
||||
+ */
|
||||
+ public void setDeathSoundVolume(float volume) {
|
||||
+ this.deathSoundVolume = volume;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the pitch that the death sound will play with.
|
||||
+ *
|
||||
+ * @return The pitch the death sound will play with
|
||||
+ */
|
||||
+ public float getDeathSoundPitch() {
|
||||
+ return deathSoundPitch;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * GSetet the pitch that the death sound should play with.
|
||||
+ *
|
||||
+ * @param pitch The pitch the death sound should play with
|
||||
+ */
|
||||
+ public void setDeathSoundPitch(float pitch) {
|
||||
+ this.deathSoundPitch = pitch;
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
|
||||
index a01d4c21bedc7f1a54f5a330bb4c2909ce3a18e4..48f272747b8d5ab43f79a9d474713aca79f121b7 100644
|
||||
--- a/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/entity/PlayerDeathEvent.java
|
||||
@@ -63,6 +63,17 @@ public class PlayerDeathEvent extends EntityDeathEvent {
|
||||
}
|
||||
|
||||
// Paper start
|
||||
+ /**
|
||||
+ * Clarity method for getting the player. Not really needed except
|
||||
+ * for reasons of clarity.
|
||||
+ *
|
||||
+ * @return Player who is involved in this event
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public Player getPlayer() {
|
||||
+ return getEntity();
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* Set the death message that will appear to everyone on the server.
|
||||
*
|
Loading…
Add table
Add a link
Reference in a new issue