Compare commits

..

1 Commits

Author SHA1 Message Date
d1aeef85d4 Implement restoring tags directly from a supplied block
- Reduces overhead when setting blocks via fallback
 - Also means blocks will not be accessed via world when they should be access via chunk (https://github.com/IntellectualSites/PlotSquared/pull/3612)
2022-05-10 01:46:47 +01:00
4 changed files with 26 additions and 9 deletions

View File

@ -282,7 +282,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
CompoundTag tag = block.getNbtData();
StateWrapper sw = new StateWrapper(tag);
sw.restoreTag(getWorld().getName(), existing.getX(), existing.getY(), existing.getZ());
sw.restoreTag(existing);
}
}
}

View File

@ -44,6 +44,7 @@ import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.ArrayList;
import java.util.HashMap;
@ -166,14 +167,32 @@ public class StateWrapper {
return str;
}
@SuppressWarnings("deprecation") // #setLine is needed for Spigot compatibility
/**
* Restore the TileEntity data to the given world at the given coordinates.
*
* @param worldName World name
* @param x x position
* @param y y position
* @param z z position
* @return true if successful
*/
public boolean restoreTag(String worldName, int x, int y, int z) {
if (this.tag == null) {
World world = BukkitUtil.getWorld(worldName);
if (world == null) {
return false;
}
World world = BukkitUtil.getWorld(worldName);
Block block = world.getBlockAt(x, y, z);
if (block == null) {
return restoreTag(world.getBlockAt(x, y, z));
}
/**
* Restore the TileEntity data to the given block
*
* @param block Block to restore to
* @return true if successful
*/
@SuppressWarnings("deprecation") // #setLine is needed for Spigot compatibility
public boolean restoreTag(@NonNull Block block) {
if (this.tag == null) {
return false;
}
org.bukkit.block.BlockState state = block.getState();

View File

@ -76,7 +76,7 @@ public class BukkitSetupUtils extends SetupUtils {
@Override
public void updateGenerators(final boolean force) {
if (loaded && !SetupUtils.generators.isEmpty() && !force) {
if (!SetupUtils.generators.isEmpty() && !force) {
return;
}
String testWorld = "CheckingPlotSquaredGenerator";
@ -100,7 +100,6 @@ public class BukkitSetupUtils extends SetupUtils {
e.printStackTrace();
}
}
loaded = true;
}
@Override

View File

@ -34,7 +34,6 @@ import java.util.HashMap;
public abstract class SetupUtils {
public static HashMap<String, GeneratorWrapper<?>> generators = new HashMap<>();
protected boolean loaded = false;
/**
* @since 6.1.0