Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
import net.ess3.provider.providers.BlockMetaSpawnerItemProvider;
import net.ess3.provider.providers.BukkitMaterialTagProvider;
import net.ess3.provider.providers.BukkitSpawnerBlockProvider;
import net.ess3.provider.providers.BukkitTileEntityProvider;
import net.ess3.provider.providers.FixedHeightWorldInfoProvider;
import net.ess3.provider.providers.FlatSpawnEggProvider;
import net.ess3.provider.providers.LegacyBannerDataProvider;
Expand All @@ -96,6 +97,7 @@
import net.ess3.provider.providers.PaperSerializationProvider;
import net.ess3.provider.providers.PaperServerStateProvider;
import net.ess3.provider.providers.PaperTickCountProvider;
import net.ess3.provider.providers.PaperTileEntityProvider;
import net.ess3.provider.providers.PrehistoricPotionMetaProvider;
import net.essentialsx.api.v2.services.BalanceTop;
import net.essentialsx.api.v2.services.mail.MailService;
Expand Down Expand Up @@ -385,6 +387,9 @@ public void onEnable() {
// Biome Key Provider
providerFactory.registerProvider(PaperBiomeKeyProvider.class);

// Tile Entity Provider
providerFactory.registerProvider(BukkitTileEntityProvider.class, PaperTileEntityProvider.class);

// Tick Count Provider
providerFactory.registerProvider(PaperTickCountProvider.class);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.utils.DateUtil;
import com.earth2me.essentials.utils.NumberUtil;
import net.ess3.provider.TileEntityProvider;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
import org.bukkit.Server;
Expand Down Expand Up @@ -36,6 +37,7 @@ protected void run(final Server server, final CommandSource sender, final String
sender.sendTl("gcfree", Runtime.getRuntime().freeMemory() / 1024 / 1024);

final List<World> worlds = server.getWorlds();
final TileEntityProvider tileEntityProvider = ess.provider(TileEntityProvider.class);
for (final World w : worlds) {
String worldType = "World";
switch (w.getEnvironment()) {
Expand All @@ -51,7 +53,7 @@ protected void run(final Server server, final CommandSource sender, final String

try {
for (final Chunk chunk : w.getLoadedChunks()) {
tileEntities += chunk.getTileEntities().length;
tileEntities += tileEntityProvider.getTileEntities(chunk).length;
}
} catch (final java.lang.ClassCastException ex) {
ess.getLogger().log(Level.SEVERE, "Corrupted chunk data on world " + w, ex);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package net.ess3.provider;

import org.bukkit.Chunk;
import org.bukkit.block.BlockState;

public interface TileEntityProvider extends Provider {
BlockState[] getTileEntities(Chunk chunk);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package net.ess3.provider.providers;

import net.ess3.provider.TileEntityProvider;
import net.essentialsx.providers.ProviderData;
import org.bukkit.Chunk;
import org.bukkit.block.BlockState;

@ProviderData(description = "Bukkit Tile Entity Provider")
public class BukkitTileEntityProvider implements TileEntityProvider {
@Override
public BlockState[] getTileEntities(Chunk chunk) {
return chunk.getTileEntities();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package net.ess3.provider.providers;

import net.ess3.provider.TileEntityProvider;
import net.essentialsx.providers.ProviderData;
import net.essentialsx.providers.ProviderTest;
import org.bukkit.Chunk;
import org.bukkit.block.BlockState;

@ProviderData(description = "Paper 1.13+ Tile Entity Provider", weight = 1)
public class PaperTileEntityProvider implements TileEntityProvider {
@Override
public BlockState[] getTileEntities(Chunk chunk) {
return chunk.getTileEntities(false);
}

@ProviderTest
public static boolean test() {
try {
Chunk.class.getDeclaredMethod("getTileEntities", boolean.class);
return true;
} catch (final NoSuchMethodException ignored) {
return false;
}
}
}