mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-22 16:39:22 +00:00
46 lines
3.2 KiB
Diff
46 lines
3.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: MrPowerGamerBR <git@mrpowergamerbr.com>
|
|
Date: Fri, 17 Nov 2023 14:22:41 -0300
|
|
Subject: [PATCH] SparklyPaper: Skip "MapItem#update()" if the map does not
|
|
have the CraftMapRenderer present
|
|
|
|
Original project: https://github.com/SparklyPower/SparklyPaper
|
|
|
|
Optimizes "image in map" maps, without requiring the map to be locked, which some old map plugins may not do
|
|
|
|
This has the disadvantage that the vanilla map data will never be updated while the CraftMapRenderer is not present, but that's not a huuuge problem for u
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/item/MapItem.java b/src/main/java/net/minecraft/world/item/MapItem.java
|
|
index 8d3c1897044f9a2bbe1911e1a72dc9a00fb246df..03112a42d1cf3460af5d5ce9d1fdd03854d5e8c1 100644
|
|
--- a/src/main/java/net/minecraft/world/item/MapItem.java
|
|
+++ b/src/main/java/net/minecraft/world/item/MapItem.java
|
|
@@ -325,7 +325,7 @@ public class MapItem extends ComplexItem {
|
|
worldmap.tickCarriedBy(entityhuman, stack);
|
|
}
|
|
|
|
- if (!worldmap.locked && (selected || entity instanceof Player && ((Player) entity).getOffhandItem() == stack)) {
|
|
+ if (!worldmap.locked && (!org.dreeam.leaf.LeafConfig.skipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer || worldmap.mapView.getRenderers().stream().anyMatch(mapRenderer -> mapRenderer.getClass() == org.bukkit.craftbukkit.map.CraftMapRenderer.class)) && (selected || entity instanceof Player && ((Player) entity).getOffhandItem() == stack)) { // SparklyPaper - don't update maps if they don't have the CraftMapRenderer in the render list
|
|
this.update(world, entity, worldmap);
|
|
}
|
|
|
|
diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java
|
|
index 490b8916ccb23424b4a8d7fec3f629f5fd191879..f6d99128ea36aa3fb7f48abdd48401debb1656d6 100644
|
|
--- a/src/main/java/org/dreeam/leaf/LeafConfig.java
|
|
+++ b/src/main/java/org/dreeam/leaf/LeafConfig.java
|
|
@@ -206,6 +206,7 @@ public class LeafConfig {
|
|
public static int asyncPathfindingMaxThreads = 0;
|
|
public static int asyncPathfindingKeepalive = 60;
|
|
public static boolean cacheMinecartCollision = false;
|
|
+ public static boolean skipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer = true;
|
|
private static void performance() {
|
|
boolean asyncMobSpawning = getBoolean("performance.enable-async-mob-spawning", enableAsyncMobSpawning,
|
|
"Whether or not asynchronous mob spawning should be enabled.",
|
|
@@ -268,6 +269,7 @@ public class LeafConfig {
|
|
Bukkit.getLogger().log(Level.INFO, "Using " + asyncPathfindingMaxThreads + " threads for Async Pathfinding");
|
|
cacheMinecartCollision = getBoolean("performance.cache-minecart-collision", cacheMinecartCollision,
|
|
"Cache the minecart collision result to prevent massive stacked minecart lag the server.");
|
|
+ skipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer = getBoolean("performance.skip-map-item-data-updates-if-map-does-not-have-craftmaprenderer", skipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer);
|
|
}
|
|
|
|
public static boolean jadeProtocol = false;
|