From 9d40d4e0f246368f90dc9d4fe89f0ac75ff0ea95 Mon Sep 17 00:00:00 2001 From: Jakubk15 <77227023+Jakubk15@users.noreply.github.com> Date: Tue, 19 Aug 2025 21:59:52 +0200 Subject: [PATCH 01/19] Add sleep controllers for ignore sleeping and preventing spawn of phantoms when holding appropriate permission --- .../feature/sleep/PhantomSpawnController.java | 34 +++++++++++++ .../sleep/PlayerJoinSleepController.java | 25 +++++++++ .../phantom/PhantomEventInitializer.java | 17 +++++++ .../paper/phantom/PhantomEventWrapper.java | 25 +++++++++ .../phantom/PhantomSpawnAttemptEvent.java | 51 +++++++++++++++++++ 5 files changed, 152 insertions(+) create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java create mode 100644 eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomEventInitializer.java create mode 100644 eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomEventWrapper.java create mode 100644 eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java new file mode 100644 index 000000000..96640cf34 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java @@ -0,0 +1,34 @@ +package com.eternalcode.core.feature.sleep; + +import com.eternalcode.annotations.scan.permission.PermissionDocs; +import com.eternalcode.core.injector.annotations.Inject; +import com.eternalcode.core.injector.annotations.component.Controller; +import com.eternalcode.paper.phantom.PhantomEventInitializer; +import com.eternalcode.paper.phantom.PhantomSpawnAttemptEvent; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.plugin.Plugin; + +@Controller +@PermissionDocs( + name = "Phantom Spawn Ignore", + permission = "eternalcore.sleep.noinsomnia", + description = "Allows the player holding the permission to not spawn phantoms when not sleeping for 3+ nights" +) +public class PhantomSpawnController implements Listener { + + @Inject + public PhantomSpawnController(Plugin plugin) { + new PhantomEventInitializer(plugin).initialize(); + } + + @EventHandler + void onPhantomSpawnAttempt(PhantomSpawnAttemptEvent event) { + if (event.getSpawningEntity() instanceof Player player) { + if (player.hasPermission("eternalcore.sleep.noinsomnia")) { + event.setCancelled(true); + } + } + } +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java new file mode 100644 index 000000000..b982a22ed --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java @@ -0,0 +1,25 @@ +package com.eternalcode.core.feature.sleep; + +import com.eternalcode.annotations.scan.permission.PermissionDocs; +import com.eternalcode.core.injector.annotations.component.Controller; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; + +@Controller +@PermissionDocs( + name = "Sleep Ignore", + permission = "eternalcore.sleepignore", + description = "Allows the player holding the permission to be ignored while sleeping in the night" +) +public class PlayerJoinSleepController implements Listener { + + private static final String SLEEP_IGNORE_PERMISSION = "eternalcore.sleep.ignore"; + + @EventHandler + void onPlayerJoin(PlayerJoinEvent event) { + if (event.getPlayer().hasPermission(SLEEP_IGNORE_PERMISSION)) { + event.getPlayer().setSleepingIgnored(true); + } + } +} diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomEventInitializer.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomEventInitializer.java new file mode 100644 index 000000000..af78a1680 --- /dev/null +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomEventInitializer.java @@ -0,0 +1,17 @@ +package com.eternalcode.paper.phantom; + +import org.bukkit.Bukkit; +import org.bukkit.plugin.Plugin; + +public class PhantomEventInitializer { + + private final Plugin plugin; + + public PhantomEventInitializer(Plugin plugin) { + this.plugin = plugin; + } + + public void initialize() { + Bukkit.getPluginManager().registerEvents(new PhantomEventWrapper(), this.plugin); + } +} diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomEventWrapper.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomEventWrapper.java new file mode 100644 index 000000000..78e957414 --- /dev/null +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomEventWrapper.java @@ -0,0 +1,25 @@ +package com.eternalcode.paper.phantom; + +import com.destroystokyo.paper.event.entity.PhantomPreSpawnEvent; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; + +class PhantomEventWrapper implements Listener { + + @EventHandler(priority = EventPriority.HIGH) + void onPhantomSpawn(PhantomPreSpawnEvent event) { + PhantomSpawnAttemptEvent attemptEvent = new PhantomSpawnAttemptEvent( + event.getSpawningEntity(), + event.getSpawnLocation(), + event.getReason() + ); + + Bukkit.getPluginManager().callEvent(attemptEvent); + + if (attemptEvent.isCancelled()) { + event.setCancelled(true); + } + } +} diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java new file mode 100644 index 000000000..110a242a1 --- /dev/null +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java @@ -0,0 +1,51 @@ +package com.eternalcode.paper.phantom; + +import org.bukkit.Location; +import org.bukkit.entity.Entity; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; +import org.jetbrains.annotations.NotNull; + +public class PhantomSpawnAttemptEvent extends Event implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + + private final Entity player; + private final Location spawnLocation; + private final SpawnReason spawnReason; + private boolean cancelled = false; + + public PhantomSpawnAttemptEvent(Entity entity, Location spawnLocation, SpawnReason spawnReason) { + this.player = entity; + this.spawnLocation = spawnLocation; + this.spawnReason = spawnReason; + } + + public Entity getSpawningEntity() { + return player; + } + + public Location getSpawnLocation() { + return spawnLocation; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + + @Override + public @NotNull HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} From f747830cc137a582194ab384631a14ff70123e32 Mon Sep 17 00:00:00 2001 From: Jakubk15 <77227023+Jakubk15@users.noreply.github.com> Date: Tue, 19 Aug 2025 22:01:44 +0200 Subject: [PATCH 02/19] Add a new line between static field and class declaration --- .../com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java | 1 + 1 file changed, 1 insertion(+) diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java index 110a242a1..659a287ae 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java @@ -9,6 +9,7 @@ import org.jetbrains.annotations.NotNull; public class PhantomSpawnAttemptEvent extends Event implements Cancellable { + private static final HandlerList handlers = new HandlerList(); private final Entity player; From 0deac502d401aa0c5f89048d036e96bbe65e2051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Tue, 19 Aug 2025 23:06:28 +0200 Subject: [PATCH 03/19] Update eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../core/feature/sleep/PlayerJoinSleepController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java index b982a22ed..7ef140500 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java @@ -9,7 +9,7 @@ @Controller @PermissionDocs( name = "Sleep Ignore", - permission = "eternalcore.sleepignore", + permission = "eternalcore.sleep.ignore", description = "Allows the player holding the permission to be ignored while sleeping in the night" ) public class PlayerJoinSleepController implements Listener { From 6d4cf6f9cd5b45a378179aa988bdde10c17d6624 Mon Sep 17 00:00:00 2001 From: Jakubk15 <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 20 Aug 2025 09:08:04 +0200 Subject: [PATCH 04/19] improve event fields and add javadoc --- .../paper/phantom/PhantomSpawnAttemptEvent.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java index 659a287ae..5b6ebb305 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java @@ -8,23 +8,26 @@ import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; import org.jetbrains.annotations.NotNull; +/** + * Internal event of {@link com.destroystokyo.paper.event.entity.PhantomPreSpawnEvent} + */ public class PhantomSpawnAttemptEvent extends Event implements Cancellable { private static final HandlerList handlers = new HandlerList(); - private final Entity player; + private final Entity spawningEntity; private final Location spawnLocation; private final SpawnReason spawnReason; private boolean cancelled = false; - public PhantomSpawnAttemptEvent(Entity entity, Location spawnLocation, SpawnReason spawnReason) { - this.player = entity; + public PhantomSpawnAttemptEvent(Entity spawningEntity, Location spawnLocation, SpawnReason spawnReason) { + this.spawningEntity = spawningEntity; this.spawnLocation = spawnLocation; this.spawnReason = spawnReason; } public Entity getSpawningEntity() { - return player; + return spawningEntity; } public Location getSpawnLocation() { From c6f9eb2d8de1d85d001d4139087633f8d4d52d1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 20 Aug 2025 11:34:03 +0200 Subject: [PATCH 05/19] Update PhantomSpawnAttemptEvent.java Co-authored-by: Piotr Zych <77621271+P1otrulla@users.noreply.github.com> --- .../com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java index 5b6ebb305..f1ef2b7d6 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java @@ -13,7 +13,7 @@ */ public class PhantomSpawnAttemptEvent extends Event implements Cancellable { - private static final HandlerList handlers = new HandlerList(); + private static final HandlerList HANDLER_LIST = new HandlerList(); private final Entity spawningEntity; private final Location spawnLocation; From f52b685b1a7f6c9537eebd2fd7f844f5220ca35c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 20 Aug 2025 11:34:15 +0200 Subject: [PATCH 06/19] Update PhantomSpawnAttemptEvent.java Co-authored-by: Piotr Zych <77621271+P1otrulla@users.noreply.github.com> --- .../com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java index f1ef2b7d6..df54ccb5a 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java @@ -50,6 +50,6 @@ public void setCancelled(boolean cancelled) { } public static HandlerList getHandlerList() { - return handlers; + return HANDLER_LIST; } } From 2128916cb1bb564eb740afc0396b17f7348d4b21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 20 Aug 2025 11:34:26 +0200 Subject: [PATCH 07/19] Update PhantomSpawnAttemptEvent.java Co-authored-by: Piotr Zych <77621271+P1otrulla@users.noreply.github.com> --- .../paper/phantom/PhantomSpawnAttemptEvent.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java index df54ccb5a..e89666fb0 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java @@ -26,7 +26,13 @@ public PhantomSpawnAttemptEvent(Entity spawningEntity, Location spawnLocation, S this.spawnReason = spawnReason; } - public Entity getSpawningEntity() { + public Entity getEntity() { + return this.entity; + } + + public Location getLocation() { + return this.location; + } return spawningEntity; } From acdfd079861e48dc83452bb598673ca5e8ebfc01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 20 Aug 2025 11:34:35 +0200 Subject: [PATCH 08/19] Update PhantomSpawnAttemptEvent.java Co-authored-by: Piotr Zych <77621271+P1otrulla@users.noreply.github.com> --- .../com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java index e89666fb0..4360c0e6b 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java @@ -16,7 +16,7 @@ public class PhantomSpawnAttemptEvent extends Event implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); private final Entity spawningEntity; - private final Location spawnLocation; + private final Location location; private final SpawnReason spawnReason; private boolean cancelled = false; From 37295b7ccf6e2e99598121faa41e2ee342a219fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 20 Aug 2025 11:34:42 +0200 Subject: [PATCH 09/19] Update PhantomSpawnAttemptEvent.java Co-authored-by: Piotr Zych <77621271+P1otrulla@users.noreply.github.com> --- .../com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java index 4360c0e6b..d0c250568 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java @@ -15,7 +15,7 @@ public class PhantomSpawnAttemptEvent extends Event implements Cancellable { private static final HandlerList HANDLER_LIST = new HandlerList(); - private final Entity spawningEntity; + private final Entity entity; private final Location location; private final SpawnReason spawnReason; private boolean cancelled = false; From 8ce86d6dc2164d98072e48ca185133f1c8276782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 20 Aug 2025 11:37:15 +0200 Subject: [PATCH 10/19] Update PlayerJoinSleepController.java Co-authored-by: Piotr Zych <77621271+P1otrulla@users.noreply.github.com> --- .../core/feature/sleep/PlayerJoinSleepController.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java index 7ef140500..4a3619375 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java @@ -17,6 +17,12 @@ public class PlayerJoinSleepController implements Listener { private static final String SLEEP_IGNORE_PERMISSION = "eternalcore.sleep.ignore"; @EventHandler + void onPlayerJoin(PlayerJoinEvent event) { + Player player = event.getPlayer(); + if (player.hasPermission(SLEEP_IGNORE_PERMISSION)) { + player.setSleepingIgnored(true); + } + } void onPlayerJoin(PlayerJoinEvent event) { if (event.getPlayer().hasPermission(SLEEP_IGNORE_PERMISSION)) { event.getPlayer().setSleepingIgnored(true); From 532b1307bcefd4f146395531cab0879ed9b0b198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 20 Aug 2025 11:38:11 +0200 Subject: [PATCH 11/19] Update PhantomSpawnAttemptEvent.java Co-authored-by: Piotr Zych <77621271+P1otrulla@users.noreply.github.com> --- .../com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java index d0c250568..97b357f19 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java @@ -52,7 +52,7 @@ public void setCancelled(boolean cancelled) { @Override public @NotNull HandlerList getHandlers() { - return handlers; + return HANDLER_LIST; } public static HandlerList getHandlerList() { From 15b88150d9b497f53635d92741ea8dbdb88abcd3 Mon Sep 17 00:00:00 2001 From: Jakubk15 <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:33:26 +0200 Subject: [PATCH 12/19] Adjust event field names to P1otrulla's demands --- .../paper/phantom/PhantomSpawnAttemptEvent.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java index 97b357f19..30e5b17d4 100644 --- a/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java +++ b/eternalcore-paper/src/main/java/com/eternalcode/paper/phantom/PhantomSpawnAttemptEvent.java @@ -20,9 +20,9 @@ public class PhantomSpawnAttemptEvent extends Event implements Cancellable { private final SpawnReason spawnReason; private boolean cancelled = false; - public PhantomSpawnAttemptEvent(Entity spawningEntity, Location spawnLocation, SpawnReason spawnReason) { - this.spawningEntity = spawningEntity; - this.spawnLocation = spawnLocation; + public PhantomSpawnAttemptEvent(Entity entity, Location location, SpawnReason spawnReason) { + this.entity = entity; + this.location = location; this.spawnReason = spawnReason; } @@ -33,11 +33,9 @@ public Entity getEntity() { public Location getLocation() { return this.location; } - return spawningEntity; - } - public Location getSpawnLocation() { - return spawnLocation; + public SpawnReason getSpawnReason() { + return this.spawnReason; } @Override From e6826c9fbd119cf5b488d9aaa8a40e22dea8a7fe Mon Sep 17 00:00:00 2001 From: Jakubk15 <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:39:22 +0200 Subject: [PATCH 13/19] remove duplicate code to fix build --- .../core/feature/sleep/PhantomSpawnController.java | 6 ++++-- .../core/feature/sleep/PlayerJoinSleepController.java | 6 +----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java index 96640cf34..089063bf4 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java @@ -18,6 +18,8 @@ ) public class PhantomSpawnController implements Listener { + private static final String NO_INSOMNIA_PERMISSION = "eternalcore.sleep.noinsomnia"; + @Inject public PhantomSpawnController(Plugin plugin) { new PhantomEventInitializer(plugin).initialize(); @@ -25,8 +27,8 @@ public PhantomSpawnController(Plugin plugin) { @EventHandler void onPhantomSpawnAttempt(PhantomSpawnAttemptEvent event) { - if (event.getSpawningEntity() instanceof Player player) { - if (player.hasPermission("eternalcore.sleep.noinsomnia")) { + if (event.getEntity() instanceof Player player) { + if (player.hasPermission(NO_INSOMNIA_PERMISSION)) { event.setCancelled(true); } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java index 4a3619375..1797385fb 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java @@ -2,6 +2,7 @@ import com.eternalcode.annotations.scan.permission.PermissionDocs; import com.eternalcode.core.injector.annotations.component.Controller; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; @@ -23,9 +24,4 @@ void onPlayerJoin(PlayerJoinEvent event) { player.setSleepingIgnored(true); } } - void onPlayerJoin(PlayerJoinEvent event) { - if (event.getPlayer().hasPermission(SLEEP_IGNORE_PERMISSION)) { - event.getPlayer().setSleepingIgnored(true); - } - } } From 1de082ef97cc8ee55e66e58c5a62fb2bfeb45e9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 27 Aug 2025 20:43:13 +0200 Subject: [PATCH 14/19] Update eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java Co-authored-by: Norbert Dejlich --- .../eternalcode/core/feature/sleep/PhantomSpawnController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java index 089063bf4..c37050062 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java @@ -16,7 +16,7 @@ permission = "eternalcore.sleep.noinsomnia", description = "Allows the player holding the permission to not spawn phantoms when not sleeping for 3+ nights" ) -public class PhantomSpawnController implements Listener { +class PhantomSpawnController implements Listener { private static final String NO_INSOMNIA_PERMISSION = "eternalcore.sleep.noinsomnia"; From 38f7704211406617ebbfd040737fa10455a23624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 27 Aug 2025 20:43:22 +0200 Subject: [PATCH 15/19] Update eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java Co-authored-by: Norbert Dejlich --- .../core/feature/sleep/PlayerJoinSleepController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java index 1797385fb..8a7f8db6a 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java @@ -13,7 +13,7 @@ permission = "eternalcore.sleep.ignore", description = "Allows the player holding the permission to be ignored while sleeping in the night" ) -public class PlayerJoinSleepController implements Listener { +class PlayerJoinSleepController implements Listener { private static final String SLEEP_IGNORE_PERMISSION = "eternalcore.sleep.ignore"; From 477acf214862743db94b89d5137ebc63631fab4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 27 Aug 2025 20:44:28 +0200 Subject: [PATCH 16/19] Update eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java Co-authored-by: Norbert Dejlich --- .../eternalcode/core/feature/sleep/PhantomSpawnController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java index c37050062..5d36fc1f3 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java @@ -21,7 +21,7 @@ class PhantomSpawnController implements Listener { private static final String NO_INSOMNIA_PERMISSION = "eternalcore.sleep.noinsomnia"; @Inject - public PhantomSpawnController(Plugin plugin) { + PhantomSpawnController(Plugin plugin) { new PhantomEventInitializer(plugin).initialize(); } From 97554efea7657a6899dafe3d757f73733d7a5266 Mon Sep 17 00:00:00 2001 From: Jakubk15 <77227023+Jakubk15@users.noreply.github.com> Date: Wed, 27 Aug 2025 20:48:23 +0200 Subject: [PATCH 17/19] inline field --- .../core/feature/sleep/PhantomSpawnController.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java index 5d36fc1f3..349f823e7 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java @@ -18,8 +18,6 @@ ) class PhantomSpawnController implements Listener { - private static final String NO_INSOMNIA_PERMISSION = "eternalcore.sleep.noinsomnia"; - @Inject PhantomSpawnController(Plugin plugin) { new PhantomEventInitializer(plugin).initialize(); @@ -28,7 +26,7 @@ class PhantomSpawnController implements Listener { @EventHandler void onPhantomSpawnAttempt(PhantomSpawnAttemptEvent event) { if (event.getEntity() instanceof Player player) { - if (player.hasPermission(NO_INSOMNIA_PERMISSION)) { + if (player.hasPermission("eternalcore.sleep.noinsomnia")) { event.setCancelled(true); } } From cb0afc5308581c2c92d17ef4565fad731cf353dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:51:39 +0200 Subject: [PATCH 18/19] Update PhantomSpawnController.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Wojtas <80779749+CitralFlo@users.noreply.github.com> --- .../eternalcode/core/feature/sleep/PhantomSpawnController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java index 349f823e7..118c76a21 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PhantomSpawnController.java @@ -14,7 +14,7 @@ @PermissionDocs( name = "Phantom Spawn Ignore", permission = "eternalcore.sleep.noinsomnia", - description = "Allows the player holding the permission to not spawn phantoms when not sleeping for 3+ nights" + description = "Player with this permission will not spawn phantoms" ) class PhantomSpawnController implements Listener { From 446aa810ca77eca6f4691c1f3d6cd751e4449d90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=99dziora?= <77227023+Jakubk15@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:51:53 +0200 Subject: [PATCH 19/19] Update PlayerJoinSleepController.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Wojtas <80779749+CitralFlo@users.noreply.github.com> --- .../core/feature/sleep/PlayerJoinSleepController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java index 8a7f8db6a..f108ffc1e 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/sleep/PlayerJoinSleepController.java @@ -11,7 +11,7 @@ @PermissionDocs( name = "Sleep Ignore", permission = "eternalcore.sleep.ignore", - description = "Allows the player holding the permission to be ignored while sleeping in the night" + description = "Player with this permission will ignore sleep count needed to skip the night" ) class PlayerJoinSleepController implements Listener {