mirror of
https://github.com/SparklyPower/SparklyPaper.git
synced 2025-12-19 15:09:27 +00:00
Remove empty diff from the Blazing Simple Farm Checks patch
This commit is contained in:
@@ -4,19 +4,6 @@ Date: Mon, 20 Nov 2023 20:17:56 -0300
|
||||
Subject: [PATCH] Blazingly Simple Farm Checks
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 1148b3ab0a582fff17f0101516df4b5037b49aba..9bcd4069eed4fcfce82cab01a7c116dfe0cd8911 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -317,7 +317,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
public volatile boolean abnormalExit = false; // Paper
|
||||
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
|
||||
public final Set<Entity> entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run (concurrent because plugins may schedule tasks async)
|
||||
-
|
||||
+
|
||||
public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) {
|
||||
AtomicReference<S> atomicreference = new AtomicReference();
|
||||
Thread thread = new io.papermc.paper.util.TickThread(() -> { // Paper - rewrite chunk system
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
index 112d2feba5f75a2a873b595617780515945c10e4..d19d6e0082c3dba2581aab4911cfe9d36dc22453 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
||||
|
||||
@@ -10,17 +10,19 @@ Caches when Bat's spooky season starts and ends, and when Skeleton and Zombies h
|
||||
Avoids unnecessary date checks, even tho that this shouldn't really improve performance that much... unless you have a lot of bats/zombies/skeletons spawning.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 9bcd4069eed4fcfce82cab01a7c116dfe0cd8911..b635a473d2a19bbefc24e86455ec6735b9a8c9cc 100644
|
||||
index 1148b3ab0a582fff17f0101516df4b5037b49aba..b635a473d2a19bbefc24e86455ec6735b9a8c9cc 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -317,6 +317,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -317,7 +317,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
public volatile boolean abnormalExit = false; // Paper
|
||||
public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation
|
||||
public final Set<Entity> entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run (concurrent because plugins may schedule tasks async)
|
||||
-
|
||||
+ public net.sparklypower.sparklypaper.HalloweenManager halloweenManager = new net.sparklypower.sparklypaper.HalloweenManager(); // SparklyPaper - Spooky month optimizations
|
||||
|
||||
+
|
||||
public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) {
|
||||
AtomicReference<S> atomicreference = new AtomicReference();
|
||||
Thread thread = new io.papermc.paper.util.TickThread(() -> { // Paper - rewrite chunk system
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index ac8565be2334efe48d5bdc3f58bf60fb9f715da7..859faaf21635caca2a2ab471ac3d4569f04ba69b 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -205,3 +207,103 @@ index 0000000000000000000000000000000000000000..8dd82e727872c0d6c4d0827ac63d5fec
|
||||
+ }
|
||||
+}
|
||||
\ No newline at end of file
|
||||
diff --git a/src/src/main/kotlin/net/sparklypower/sparklypaper/HalloweenManager.kt b/src/src/main/kotlin/net/sparklypower/sparklypaper/HalloweenManager.kt
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..8dd82e727872c0d6c4d0827ac63d5fecb9218c61
|
||||
--- /dev/null
|
||||
+++ b/src/src/main/kotlin/net/sparklypower/sparklypaper/HalloweenManager.kt
|
||||
@@ -0,0 +1,93 @@
|
||||
+package net.sparklypower.sparklypaper
|
||||
+
|
||||
+import com.mojang.logging.LogUtils
|
||||
+import java.time.LocalDateTime
|
||||
+import java.time.Month
|
||||
+import java.time.ZoneOffset
|
||||
+import java.util.concurrent.*
|
||||
+
|
||||
+class HalloweenManager {
|
||||
+ companion object {
|
||||
+ private val LOGGER = LogUtils.getLogger()
|
||||
+ }
|
||||
+ private var spookySeasonStartEpoch = 0L
|
||||
+ private var spookySeasonEndEpoch = 0L
|
||||
+ private var halloweenStartEpoch = 0L
|
||||
+ private var halloweenEndEpoch = 0L
|
||||
+ private var executor = Executors.newSingleThreadScheduledExecutor(object: ThreadFactory {
|
||||
+ override fun newThread(p0: Runnable): Thread {
|
||||
+ val thread = Thread(p0)
|
||||
+ thread.name = "halloween-timer-updater"
|
||||
+ thread.priority = 1 // Minimum priority
|
||||
+ return thread
|
||||
+ }
|
||||
+ })
|
||||
+ private var latch = CountDownLatch(1)
|
||||
+
|
||||
+ fun startHalloweenEpochTask() {
|
||||
+ var isFirst = true
|
||||
+ executor.scheduleAtFixedRate({
|
||||
+ updateEpoch()
|
||||
+ if (isFirst)
|
||||
+ latch.countDown()
|
||||
+ isFirst = false
|
||||
+ }, 0L, 90L, TimeUnit.DAYS) // Every 90 days
|
||||
+ }
|
||||
+
|
||||
+ fun waitUntilEpochHasBeenUpdated() {
|
||||
+ latch.await()
|
||||
+ }
|
||||
+
|
||||
+ fun updateEpoch() {
|
||||
+ LOGGER.info("Updating Spooky Season and Halloween Time")
|
||||
+ this.spookySeasonStartEpoch = getEpochMillisAtDate(20, Month.OCTOBER, false)
|
||||
+ this.spookySeasonEndEpoch = getEpochMillisAtDate(3, Month.NOVEMBER, true)
|
||||
+ this.halloweenStartEpoch = getEpochMillisAtDate(31, Month.OCTOBER, false)
|
||||
+ this.halloweenEndEpoch = getEpochMillisAtDate(31, Month.OCTOBER, true)
|
||||
+ LOGGER.info("Updated Spooky Season and Halloween Time!")
|
||||
+ }
|
||||
+
|
||||
+ fun isSpookySeason() = System.currentTimeMillis() in spookySeasonStartEpoch until spookySeasonEndEpoch
|
||||
+ fun isHalloween() = System.currentTimeMillis() in halloweenStartEpoch until halloweenEndEpoch
|
||||
+
|
||||
+ private fun getEpochMillisAtDate(dayOfMonth: Int, month: Month, isEnd: Boolean): Long {
|
||||
+ // Get the current year
|
||||
+ val currentYear = LocalDateTime.now().year
|
||||
+
|
||||
+ // Define the target date (20/10/CurrentYear at midnight)
|
||||
+ val targetDate = LocalDateTime.of(
|
||||
+ currentYear,
|
||||
+ month,
|
||||
+ dayOfMonth,
|
||||
+ if (isEnd)
|
||||
+ 23
|
||||
+ else
|
||||
+ 0,
|
||||
+ if (isEnd)
|
||||
+ 59
|
||||
+ else
|
||||
+ 0,
|
||||
+ if (isEnd)
|
||||
+ 59
|
||||
+ else
|
||||
+ 0,
|
||||
+ if (isEnd)
|
||||
+ 999_999_999
|
||||
+ else
|
||||
+ 0,
|
||||
+ )
|
||||
+
|
||||
+ // Check if the target date is in the past
|
||||
+ val now = LocalDateTime.now()
|
||||
+ val adjustedDate = if (now.isAfter(targetDate)) {
|
||||
+ // If in the past, adjust to the same date in the next year
|
||||
+ targetDate.plusYears(1)
|
||||
+ } else {
|
||||
+ // If in the future or today, use the original target date
|
||||
+ targetDate
|
||||
+ }
|
||||
+
|
||||
+ // Convert the adjusted date to epoch time in milliseconds
|
||||
+ return adjustedDate.atZone(ZoneOffset.systemDefault()).toInstant().toEpochMilli()
|
||||
+ }
|
||||
+}
|
||||
\ No newline at end of file
|
||||
|
||||
Reference in New Issue
Block a user