Skip to content

Commit

Permalink
impl for core, and 'skip chunk flag cleaning'
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed May 22, 2022
1 parent 6219e9a commit 4635077
Show file tree
Hide file tree
Showing 18 changed files with 55 additions and 10 deletions.
Expand Up @@ -421,7 +421,7 @@ else if (javaVersion.startsWith("17")) {
DenizenCore.tick(50); // Sadly, minecraft has no delta timing, so a tick is always 50ms.
}, 1, 1);
InventoryTag.setupInventoryTracker();
if (!CoreConfiguration.skipAllFlagCleanings) {
if (!CoreConfiguration.skipAllFlagCleanings && !Settings.skipChunkFlagCleaning) {
BukkitWorldScriptHelper.cleanAllWorldChunkFlags();
}
Bukkit.getPluginManager().registerEvents(new PlayerFlagHandler(), this);
Expand Down
@@ -1,6 +1,7 @@
package com.denizenscript.denizen.npc.traits;

import com.denizenscript.denizencore.flags.SavableMapFlagTracker;
import com.denizenscript.denizencore.utilities.CoreConfiguration;
import com.denizenscript.denizencore.utilities.text.StringHolder;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.persistence.PersistenceLoader;
Expand All @@ -26,7 +27,9 @@ public SavableMapFlagTracker create(DataKey dataKey) {
flag.canExpire = flag.string.startsWith("map@");
toRet.map.put(new StringHolder(key.name()), flag);
}
toRet.doTotalClean();
if (!CoreConfiguration.skipAllFlagCleanings) {
toRet.doTotalClean();
}
return toRet;
}

Expand Down
Expand Up @@ -706,6 +706,8 @@ public void applyProperty(Mechanism mechanism) {
@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);

// <--[mechanism]
// @object ChunkTag
// @name inhabited_time
Expand Down
Expand Up @@ -1484,6 +1484,8 @@ public void applyProperty(Mechanism mechanism) {
@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);

// <--[mechanism]
// @object CuboidTag
// @name set_member
Expand Down
Expand Up @@ -22,7 +22,7 @@
import java.util.List;
import java.util.function.Predicate;

public class EllipsoidTag implements ObjectTag, Notable, Cloneable, AreaContainmentObject, FlaggableObject {
public class EllipsoidTag implements ObjectTag, Notable, Cloneable, AreaContainmentObject, FlaggableObject, Adjustable {

// <--[ObjectType]
// @name EllipsoidTag
Expand Down Expand Up @@ -605,6 +605,21 @@ public boolean doesContainLocation(Location loc) {
return contains(loc);
}

public void applyProperty(Mechanism mechanism) {
if (NoteManager.isExactSavedObject(this)) {
mechanism.echoError("Cannot apply properties to noted objects.");
return;
}
adjust(mechanism);
}


@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);
}

@Override
public boolean advancedMatches(String matcher) {
String matcherLow = CoreUtilities.toLowerCase(matcher);
Expand Down
Expand Up @@ -494,8 +494,11 @@ public String getReasonNotFlaggable() {

@Override
public void reapplyTracker(AbstractFlagTracker tracker) {
if (CoreConfiguration.skipAllFlagCleanings) {
return;
}
if (cleanRateProtect + 60000 > DenizenCore.serverTimeMillis) {
((DataPersistenceFlagTracker) tracker).doTotalClean();
tracker.doTotalClean();
cleanRateProtect = DenizenCore.serverTimeMillis;
}
}
Expand Down Expand Up @@ -2981,6 +2984,8 @@ public void applyProperty(Mechanism mechanism) {
@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);

if (isGeneric()) {
mechanisms.add(mechanism);
mechanism.fulfill();
Expand Down
Expand Up @@ -2346,6 +2346,7 @@ public void applyProperty(Mechanism mechanism) {
@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);
CoreUtilities.autoPropertyMechanism(this, mechanism);

// <--[mechanism]
Expand Down
Expand Up @@ -779,6 +779,8 @@ public void applyProperty(Mechanism mechanism) {
@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);

// <--[mechanism]
// @object ItemTag
// @name material
Expand Down
Expand Up @@ -4216,6 +4216,8 @@ public void applyProperty(Mechanism mechanism) {
@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);

// <--[mechanism]
// @object LocationTag
// @name block_facing
Expand Down
Expand Up @@ -1291,6 +1291,8 @@ public void applyProperty(Mechanism mechanism) {
@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);

// TODO: For all the mechanism tags, add the @Mechanism link!

// <--[mechanism]
Expand Down
Expand Up @@ -2500,6 +2500,8 @@ public void applyProperty(Mechanism mechanism) {
@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);

// <--[mechanism]
// @object PlayerTag
// @name noclip
Expand Down
Expand Up @@ -729,6 +729,8 @@ public void applyProperty(Mechanism mechanism) {
@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);

// <--[mechanism]
// @object PolygonTag
// @name add_corner
Expand Down
Expand Up @@ -962,6 +962,8 @@ public void applyProperty(Mechanism mechanism) {
@Override
public void adjust(Mechanism mechanism) {

AbstractFlagTracker.tryFlagAdjusts(this, mechanism);

// <--[mechanism]
// @object WorldTag
// @name ambient_spawn_limit
Expand Down
Expand Up @@ -106,7 +106,7 @@ public void playerQuit(PlayerQuitEvent event) {

@EventHandler
public void chunkLoadEvent(ChunkLoadEvent event) {
if (CoreConfiguration.skipAllFlagCleanings) {
if (CoreConfiguration.skipAllFlagCleanings || Settings.skipChunkFlagCleaning) {
return;
}
new DataPersistenceFlagTracker(event.getChunk()).doTotalClean();
Expand Down
Expand Up @@ -59,6 +59,7 @@ public static void refillCache() {
}
}
// Spigot
skipChunkFlagCleaning = config.getBoolean("Saves.Skip chunk flag cleaning", false);
cache_overrideHelp = config.getBoolean("Debug.Override help", true);
cache_useDefaultScriptPath = config.getBoolean("Scripts location.Use default script folder", true);
cache_showExHelp = config.getBoolean("Debug.Ex command help", true);
Expand Down Expand Up @@ -120,6 +121,8 @@ public static void refillCache() {
}
}

public static boolean skipChunkFlagCleaning = false;

public static boolean cache_overrideHelp, cache_useDefaultScriptPath,
cache_showExHelp, cache_showExDebug, cache_canRecordStats,
cache_defaultDebugMode, cache_healthTraitEnabledByDefault, cache_healthTraitAnimatedDeathEnabled,
Expand Down
Expand Up @@ -3,12 +3,14 @@
import com.denizenscript.denizen.Denizen;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.utilities.DataPersistenceHelper;
import com.denizenscript.denizen.utilities.Settings;
import com.denizenscript.denizencore.flags.MapTagBasedFlagTracker;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.MapTag;
import com.denizenscript.denizencore.utilities.AsciiMatcher;
import com.denizenscript.denizencore.utilities.CoreConfiguration;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import org.bukkit.Chunk;
import org.bukkit.NamespacedKey;
import org.bukkit.persistence.PersistentDataHolder;
import org.bukkit.persistence.PersistentDataType;
Expand Down Expand Up @@ -60,10 +62,8 @@ public Collection<String> listAllFlags() {

public static NamespacedKey expireNeededKey = new NamespacedKey(Denizen.getInstance(), "expire_flag_check_needed");

@Override
public void doTotalClean() {
if (CoreConfiguration.skipAllFlagCleanings) {
return;
}
if (!holder.getPersistentDataContainer().has(expireNeededKey, PersistentDataType.STRING)) {
return;
}
Expand Down
Expand Up @@ -169,7 +169,7 @@ public static AbstractFlagTracker getTrackerFor(UUID id) {
}
playerFlagTrackerCache.put(id, cache);
loadFlags(id, cache);
if (cache.tracker != null) {
if (cache.tracker != null && !CoreConfiguration.skipAllFlagCleanings) {
cache.tracker.doTotalClean();
}
}
Expand Down Expand Up @@ -239,7 +239,7 @@ public void run() {
if (CoreConfiguration.debugVerbose) {
Debug.echoError("Verbose - flag tracker async loaded " + id);
}
if (newCache.tracker != null) {
if (newCache.tracker != null && !CoreConfiguration.skipAllFlagCleanings) {
newCache.tracker.doTotalClean();
}
});
Expand Down
2 changes: 2 additions & 0 deletions plugin/src/main/resources/config.yml
Expand Up @@ -249,6 +249,8 @@ Saves:
# When set to 'true', all automatic flag cleanups will be skipped.
# This might save some processing time on servers that rarely use flag expirations, but otherwise should be left as 'false'.
Skip flag cleaning: false
# When set to 'true', skips flag cleaning for ChunkTag and LocationTag flags.
Skip chunk flag cleaning: false

Packets:
# Whether to allow Denizen to intercept packets from and to player clients.
Expand Down

0 comments on commit 4635077

Please sign in to comment.