PlayerNaturallySpawnCreaturesEvent
This event can be used for when you want to exclude a certain player from triggering monster spawns on a server. Also a highly more effecient way to blanket block spawns in a world
This commit is contained in:
parent
b98f8232e8
commit
6068eb129f
2 changed files with 113 additions and 0 deletions
|
@ -0,0 +1,80 @@
|
||||||
|
From 3fcb573b25e7ea1c5ded854f96b6b6b39114c8de Mon Sep 17 00:00:00 2001
|
||||||
|
From: Aikar <aikar@aikar.co>
|
||||||
|
Date: Sun, 14 Jan 2018 17:31:37 -0500
|
||||||
|
Subject: [PATCH] PlayerNaturallySpawnCreaturesEvent
|
||||||
|
|
||||||
|
This event can be used for when you want to exclude a certain player
|
||||||
|
from triggering monster spawns on a server.
|
||||||
|
|
||||||
|
Also a highly more effecient way to blanket block spawns in a world
|
||||||
|
|
||||||
|
diff --git a/src/main/java/com/destroystokyo/paper/event/entity/PlayerNaturallySpawnCreaturesEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/PlayerNaturallySpawnCreaturesEvent.java
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..7c6953a7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/com/destroystokyo/paper/event/entity/PlayerNaturallySpawnCreaturesEvent.java
|
||||||
|
@@ -0,0 +1,61 @@
|
||||||
|
+package com.destroystokyo.paper.event.entity;
|
||||||
|
+
|
||||||
|
+import org.bukkit.entity.Player;
|
||||||
|
+import org.bukkit.event.Cancellable;
|
||||||
|
+import org.bukkit.event.Event;
|
||||||
|
+import org.bukkit.event.HandlerList;
|
||||||
|
+import org.bukkit.event.player.PlayerEvent;
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * Fired when the server is calculating what chunks to try to spawn monsters in every Monster Spawn Tick event
|
||||||
|
+ */
|
||||||
|
+public class PlayerNaturallySpawnCreaturesEvent extends PlayerEvent implements Cancellable {
|
||||||
|
+ private byte radius;
|
||||||
|
+
|
||||||
|
+ public PlayerNaturallySpawnCreaturesEvent(Player player, byte radius) {
|
||||||
|
+ super(player);
|
||||||
|
+ this.radius = radius;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * @return The radius of chunks around this player to be included in natural spawn selection
|
||||||
|
+ */
|
||||||
|
+ public byte getSpawnRadius() {
|
||||||
|
+ return radius;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * @param radius The radius of chunks around this player to be included in natural spawn selection
|
||||||
|
+ */
|
||||||
|
+ public void setSpawnRadius(byte radius) {
|
||||||
|
+ this.radius = radius;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static final HandlerList handlers = new HandlerList();
|
||||||
|
+
|
||||||
|
+ public HandlerList getHandlers() {
|
||||||
|
+ return handlers;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static HandlerList getHandlerList() {
|
||||||
|
+ return handlers;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private boolean cancelled = false;
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * @return If this players chunks will be excluded from natural spawns
|
||||||
|
+ */
|
||||||
|
+ @Override
|
||||||
|
+ public boolean isCancelled() {
|
||||||
|
+ return cancelled;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * @param cancel true if you wish to cancel this event, and not include this players chunks for natural spawning
|
||||||
|
+ */
|
||||||
|
+ @Override
|
||||||
|
+ public void setCancelled(boolean cancel) {
|
||||||
|
+ cancelled = cancel;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
--
|
||||||
|
2.15.1
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
From 178935c622db79435acdabb55ac60b361b26a5a7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Aikar <aikar@aikar.co>
|
||||||
|
Date: Sun, 14 Jan 2018 17:36:02 -0500
|
||||||
|
Subject: [PATCH] PlayerNaturallySpawnCreaturesEvent
|
||||||
|
|
||||||
|
This event can be used for when you want to exclude a certain player
|
||||||
|
from triggering monster spawns on a server.
|
||||||
|
|
||||||
|
Also a highly more effecient way to blanket block spawns in a world
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
|
||||||
|
index 1137dda86..e205f591c 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
|
||||||
|
@@ -72,6 +72,15 @@ public final class SpawnerCreature {
|
||||||
|
byte b0 = worldserver.spigotConfig.mobSpawnRange;
|
||||||
|
b0 = ( b0 > worldserver.spigotConfig.viewDistance ) ? (byte) worldserver.spigotConfig.viewDistance : b0;
|
||||||
|
b0 = ( b0 > 8 ) ? 8 : b0;
|
||||||
|
+ // Paper start
|
||||||
|
+ com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent event;
|
||||||
|
+ event = new com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent(
|
||||||
|
+ (org.bukkit.entity.Player) entityhuman.getBukkitEntity(), b0);
|
||||||
|
+ if (!event.callEvent()) {
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ b0 = event.getSpawnRadius();
|
||||||
|
+ // Paperr end
|
||||||
|
|
||||||
|
for (int i1 = -b0; i1 <= b0; ++i1) {
|
||||||
|
for (k = -b0; k <= b0; ++k) {
|
||||||
|
--
|
||||||
|
2.15.1
|
||||||
|
|
Loading…
Reference in a new issue