mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 08:27:43 +01:00
Add Bee API
This commit is contained in:
@@ -1,178 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: SageSphinx63920 <sage@sagesphinx63920.dev>
|
|
||||||
Date: Mon, 25 Jul 2022 19:33:49 +0200
|
|
||||||
Subject: [PATCH] Add Bee API
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/event/entity/BeeFoundFlowerEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/BeeFoundFlowerEvent.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..7f631a41abee4640a37339a7896ce96e61747735
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/event/entity/BeeFoundFlowerEvent.java
|
|
||||||
@@ -0,0 +1,48 @@
|
|
||||||
+package org.purpurmc.purpur.event.entity;
|
|
||||||
+
|
|
||||||
+import org.bukkit.Location;
|
|
||||||
+import org.bukkit.entity.Bee;
|
|
||||||
+import org.bukkit.event.HandlerList;
|
|
||||||
+import org.bukkit.event.entity.EntityEvent;
|
|
||||||
+import org.jetbrains.annotations.ApiStatus;
|
|
||||||
+import org.jspecify.annotations.NullMarked;
|
|
||||||
+import org.jspecify.annotations.Nullable;
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Called when a bee targets a flower
|
|
||||||
+ */
|
|
||||||
+@NullMarked
|
|
||||||
+public class BeeFoundFlowerEvent extends EntityEvent {
|
|
||||||
+ private static final HandlerList handlers = new HandlerList();
|
|
||||||
+ private final Location location;
|
|
||||||
+
|
|
||||||
+ @ApiStatus.Internal
|
|
||||||
+ public BeeFoundFlowerEvent(Bee bee, @Nullable Location location) {
|
|
||||||
+ super(bee);
|
|
||||||
+ this.location = location;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public Bee getEntity() {
|
|
||||||
+ return (Bee) super.getEntity();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Returns the location of the flower that the bee targets
|
|
||||||
+ *
|
|
||||||
+ * @return The location of the flower
|
|
||||||
+ */
|
|
||||||
+ @Nullable
|
|
||||||
+ public Location getLocation() {
|
|
||||||
+ return location;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public HandlerList getHandlers() {
|
|
||||||
+ return handlers;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static HandlerList getHandlerList() {
|
|
||||||
+ return handlers;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/event/entity/BeeStartedPollinatingEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/BeeStartedPollinatingEvent.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..e260145d6dc556bbe9e3654296b965c4e393084d
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/event/entity/BeeStartedPollinatingEvent.java
|
|
||||||
@@ -0,0 +1,46 @@
|
|
||||||
+package org.purpurmc.purpur.event.entity;
|
|
||||||
+
|
|
||||||
+import org.bukkit.Location;
|
|
||||||
+import org.bukkit.entity.Bee;
|
|
||||||
+import org.bukkit.event.HandlerList;
|
|
||||||
+import org.bukkit.event.entity.EntityEvent;
|
|
||||||
+import org.jetbrains.annotations.ApiStatus;
|
|
||||||
+import org.jspecify.annotations.NullMarked;
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Called when a bee starts pollinating
|
|
||||||
+ */
|
|
||||||
+@NullMarked
|
|
||||||
+public class BeeStartedPollinatingEvent extends EntityEvent {
|
|
||||||
+ private static final HandlerList handlers = new HandlerList();
|
|
||||||
+ private final Location location;
|
|
||||||
+
|
|
||||||
+ @ApiStatus.Internal
|
|
||||||
+ public BeeStartedPollinatingEvent(Bee bee, Location location) {
|
|
||||||
+ super(bee);
|
|
||||||
+ this.location = location;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public Bee getEntity() {
|
|
||||||
+ return (Bee) super.getEntity();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Returns the location of the flower that the bee pollinates
|
|
||||||
+ *
|
|
||||||
+ * @return The location of the flower
|
|
||||||
+ */
|
|
||||||
+ public Location getLocation() {
|
|
||||||
+ return this.location;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public HandlerList getHandlers() {
|
|
||||||
+ return handlers;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static HandlerList getHandlerList() {
|
|
||||||
+ return handlers;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/event/entity/BeeStopPollinatingEvent.java b/src/main/java/org/purpurmc/purpur/event/entity/BeeStopPollinatingEvent.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..8b2b351d620c749cdf58d7e824b55cf55578fde6
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/event/entity/BeeStopPollinatingEvent.java
|
|
||||||
@@ -0,0 +1,60 @@
|
|
||||||
+package org.purpurmc.purpur.event.entity;
|
|
||||||
+
|
|
||||||
+import org.bukkit.Location;
|
|
||||||
+import org.bukkit.entity.Bee;
|
|
||||||
+import org.bukkit.event.HandlerList;
|
|
||||||
+import org.bukkit.event.entity.EntityEvent;
|
|
||||||
+import org.jetbrains.annotations.ApiStatus;
|
|
||||||
+import org.jspecify.annotations.NullMarked;
|
|
||||||
+import org.jspecify.annotations.Nullable;
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Called when a bee stops pollinating
|
|
||||||
+ */
|
|
||||||
+@NullMarked
|
|
||||||
+public class BeeStopPollinatingEvent extends EntityEvent {
|
|
||||||
+ private static final HandlerList handlers = new HandlerList();
|
|
||||||
+ private final Location location;
|
|
||||||
+ private final boolean success;
|
|
||||||
+
|
|
||||||
+ @ApiStatus.Internal
|
|
||||||
+ public BeeStopPollinatingEvent(Bee bee, @Nullable Location location, boolean success) {
|
|
||||||
+ super(bee);
|
|
||||||
+ this.location = location;
|
|
||||||
+ this.success = success;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public Bee getEntity() {
|
|
||||||
+ return (Bee) super.getEntity();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Returns the location of the flower that the bee stopped pollinating
|
|
||||||
+ *
|
|
||||||
+ * @return The location of the flower
|
|
||||||
+ */
|
|
||||||
+ @Nullable
|
|
||||||
+ public Location getLocation() {
|
|
||||||
+ return location;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Returns whether the bee successfully pollinated the flower
|
|
||||||
+ *
|
|
||||||
+ * @return True if the pollination was successful
|
|
||||||
+ */
|
|
||||||
+ public boolean wasSuccessful() {
|
|
||||||
+ return success;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public HandlerList getHandlers() {
|
|
||||||
+ return handlers;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static HandlerList getHandlerList() {
|
|
||||||
+ return handlers;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: SageSphinx63920 <sage@sagesphinx63920.dev>
|
|
||||||
Date: Mon, 25 Jul 2022 19:33:49 +0200
|
|
||||||
Subject: [PATCH] Add Bee API
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java
|
|
||||||
index 19d1facb4173c11bb3a1d519603e4ec6906cdaa3..d2ac2c3a2481ee216a491333b173625da3881737 100644
|
|
||||||
--- a/net/minecraft/world/entity/animal/Bee.java
|
|
||||||
+++ b/net/minecraft/world/entity/animal/Bee.java
|
|
||||||
@@ -991,6 +991,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
|
||||||
if (optional.isPresent()) {
|
|
||||||
Bee.this.savedFlowerPos = (BlockPos) optional.get();
|
|
||||||
Bee.this.navigation.moveTo((double) Bee.this.savedFlowerPos.getX() + 0.5D, (double) Bee.this.savedFlowerPos.getY() + 0.5D, (double) Bee.this.savedFlowerPos.getZ() + 0.5D, 1.2000000476837158D);
|
|
||||||
+ new org.purpurmc.purpur.event.entity.BeeFoundFlowerEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos)).callEvent(); // Purpur
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60);
|
|
||||||
@@ -1034,6 +1035,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
|
||||||
this.pollinating = false;
|
|
||||||
Bee.this.navigation.stop();
|
|
||||||
Bee.this.remainingCooldownBeforeLocatingNewFlower = 200;
|
|
||||||
+ new org.purpurmc.purpur.event.entity.BeeStopPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), Bee.this.savedFlowerPos == null ? null : io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos), Bee.this.hasNectar()).callEvent(); // Purpur
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@@ -1083,6 +1085,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
|
||||||
this.setWantedPos();
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (this.successfulPollinatingTicks == 0) new org.purpurmc.purpur.event.entity.BeeStartedPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos)).callEvent(); // Purpur
|
|
||||||
++this.successfulPollinatingTicks;
|
|
||||||
if (Bee.this.random.nextFloat() < 0.05F && this.successfulPollinatingTicks > this.lastSoundPlayedTick + 60) {
|
|
||||||
this.lastSoundPlayedTick = this.successfulPollinatingTicks;
|
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package org.purpurmc.purpur.event.entity;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Bee;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.entity.EntityEvent;
|
||||||
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
import org.jspecify.annotations.NullMarked;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a bee targets a flower
|
||||||
|
*/
|
||||||
|
@NullMarked
|
||||||
|
public class BeeFoundFlowerEvent extends EntityEvent {
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
private final Location location;
|
||||||
|
|
||||||
|
@ApiStatus.Internal
|
||||||
|
public BeeFoundFlowerEvent(Bee bee, @Nullable Location location) {
|
||||||
|
super(bee);
|
||||||
|
this.location = location;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Bee getEntity() {
|
||||||
|
return (Bee) super.getEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the location of the flower that the bee targets
|
||||||
|
*
|
||||||
|
* @return The location of the flower
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public Location getLocation() {
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
package org.purpurmc.purpur.event.entity;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Bee;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.entity.EntityEvent;
|
||||||
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
import org.jspecify.annotations.NullMarked;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a bee starts pollinating
|
||||||
|
*/
|
||||||
|
@NullMarked
|
||||||
|
public class BeeStartedPollinatingEvent extends EntityEvent {
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
private final Location location;
|
||||||
|
|
||||||
|
@ApiStatus.Internal
|
||||||
|
public BeeStartedPollinatingEvent(Bee bee, Location location) {
|
||||||
|
super(bee);
|
||||||
|
this.location = location;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Bee getEntity() {
|
||||||
|
return (Bee) super.getEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the location of the flower that the bee pollinates
|
||||||
|
*
|
||||||
|
* @return The location of the flower
|
||||||
|
*/
|
||||||
|
public Location getLocation() {
|
||||||
|
return this.location;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package org.purpurmc.purpur.event.entity;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Bee;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.event.entity.EntityEvent;
|
||||||
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
import org.jspecify.annotations.NullMarked;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a bee stops pollinating
|
||||||
|
*/
|
||||||
|
@NullMarked
|
||||||
|
public class BeeStopPollinatingEvent extends EntityEvent {
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
private final Location location;
|
||||||
|
private final boolean success;
|
||||||
|
|
||||||
|
@ApiStatus.Internal
|
||||||
|
public BeeStopPollinatingEvent(Bee bee, @Nullable Location location, boolean success) {
|
||||||
|
super(bee);
|
||||||
|
this.location = location;
|
||||||
|
this.success = success;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Bee getEntity() {
|
||||||
|
return (Bee) super.getEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the location of the flower that the bee stopped pollinating
|
||||||
|
*
|
||||||
|
* @return The location of the flower
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public Location getLocation() {
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the bee successfully pollinated the flower
|
||||||
|
*
|
||||||
|
* @return True if the pollination was successful
|
||||||
|
*/
|
||||||
|
public boolean wasSuccessful() {
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,3 +17,27 @@
|
|||||||
if (hasStung) {
|
if (hasStung) {
|
||||||
this.timeSinceSting++;
|
this.timeSinceSting++;
|
||||||
if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) {
|
if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) {
|
||||||
|
@@ -1136,6 +_,7 @@
|
||||||
|
Bee.this.savedFlowerPos = optional.get();
|
||||||
|
Bee.this.navigation
|
||||||
|
.moveTo(Bee.this.savedFlowerPos.getX() + 0.5, Bee.this.savedFlowerPos.getY() + 0.5, Bee.this.savedFlowerPos.getZ() + 0.5, 1.2F);
|
||||||
|
+ new org.purpurmc.purpur.event.entity.BeeFoundFlowerEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos)).callEvent(); // Purpur - Bee API
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60);
|
||||||
|
@@ -1182,6 +_,7 @@
|
||||||
|
this.pollinating = false;
|
||||||
|
Bee.this.navigation.stop();
|
||||||
|
Bee.this.remainingCooldownBeforeLocatingNewFlower = 200;
|
||||||
|
+ new org.purpurmc.purpur.event.entity.BeeStopPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), Bee.this.savedFlowerPos == null ? null : io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos), Bee.this.hasNectar()).callEvent(); // Purpur - Bee API
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@@ -1228,6 +_,7 @@
|
||||||
|
this.setWantedPos();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (this.successfulPollinatingTicks == 0) new org.purpurmc.purpur.event.entity.BeeStartedPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(Bee.this.level(), Bee.this.savedFlowerPos)).callEvent(); // Purpur - Bee API
|
||||||
|
this.successfulPollinatingTicks++;
|
||||||
|
if (Bee.this.random.nextFloat() < 0.05F && this.successfulPollinatingTicks > this.lastSoundPlayedTick + 60) {
|
||||||
|
this.lastSoundPlayedTick = this.successfulPollinatingTicks;
|
||||||
|
|||||||
Reference in New Issue
Block a user