74 lines
3.3 KiB
Diff
74 lines
3.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: AlphaKR93 <dev@alpha93.kr>
|
|
Date: Sun, 27 Oct 2024 00:16:25 +0900
|
|
Subject: [PATCH] Optimize advancement criteria triggering
|
|
|
|
Based on bigenergy/achievements-optimizer
|
|
Copyright (C) 2024 bigenergy, Licensed under MIT License
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
SOFTWARE.
|
|
|
|
diff --git a/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java b/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
|
|
index ebbad97920df3d1645637e646a98e16cb04d361e..a149c949a042e1d1e504d9f5ce0bfa6df92db2fc 100644
|
|
--- a/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
|
|
+++ b/src/main/java/net/minecraft/advancements/critereon/InventoryChangeTrigger.java
|
|
@@ -22,7 +22,21 @@ public class InventoryChangeTrigger extends SimpleCriterionTrigger<InventoryChan
|
|
return InventoryChangeTrigger.TriggerInstance.CODEC;
|
|
}
|
|
|
|
+ // Plazma start - Optimize advancement criteria triggering
|
|
+ public static int idleTick;
|
|
+ private int ticksSkipped;
|
|
+
|
|
+ private boolean shouldTick() {
|
|
+ if (++this.ticksSkipped <= idleTick) return false;
|
|
+
|
|
+ this.ticksSkipped = 0;
|
|
+ return true;
|
|
+ }
|
|
+ // Plazma end - Optimize advancement criteria triggering
|
|
+
|
|
public void trigger(ServerPlayer player, Inventory inventory, ItemStack stack) {
|
|
+ if (idleTick > 0 && !this.shouldTick()) return; // Plazma - Optimize advancement criteria triggering
|
|
+
|
|
int i = 0;
|
|
int j = 0;
|
|
int k = 0;
|
|
diff --git a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
index 7f30fa1928e1a7e59ee5acfdfd2334f810c30243..ba2c7b679f68d49add77731383bf68292fe9614a 100644
|
|
--- a/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
+++ b/src/main/java/org/plazmamc/plazma/configurations/GlobalConfiguration.java
|
|
@@ -139,4 +139,16 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
|
|
}
|
|
|
|
+ public Advancements advancements;
|
|
+ public class Advancements extends ConfigurationPart {
|
|
+
|
|
+ int criteriaTriggerIdleTick = OPTIMIZE ? 5 : 0;
|
|
+
|
|
+ @PostProcess
|
|
+ void post() {
|
|
+ net.minecraft.advancements.critereon.InventoryChangeTrigger.idleTick = this.criteriaTriggerIdleTick;
|
|
+ }
|
|
+
|
|
+ }
|
|
+
|
|
}
|