package com.bergerkiller.bukkit.common.reflection.classes;
import org.bukkit.World;
import com.bergerkiller.bukkit.common.conversion.Conversion;
import com.bergerkiller.bukkit.common.reflection.ClassTemplate;
import com.bergerkiller.bukkit.common.reflection.MethodAccessor;
import com.bergerkiller.bukkit.common.reflection.NMSClassTemplate;
import com.bergerkiller.bukkit.common.utils.CommonUtil;
public class ChunkRegionLoaderRef {
public static final ClassTemplate<?> TEMPLATE = NMSClassTemplate.create("ChunkRegionLoader");
private static final ClassTemplate<?> ChunkIOExecutor = ClassTemplate.create(CommonUtil.getCBClass("chunkio.ChunkIOExecutor"));
private static final MethodAccessor<Boolean> chunkExists = TEMPLATE.getMethod("chunkExists", WorldRef.TEMPLATE.getType(), int.class, int.class);
private static final MethodAccessor<Void> queueChunkLoad = ChunkIOExecutor.getMethod("queueChunkLoad", WorldRef.TEMPLATE.getType(),
ChunkRegionLoaderRef.TEMPLATE.getType(), ChunkProviderServerRef.TEMPLATE.getType(), int.class, int.class, Runnable.class);
public static boolean chunkExists(Object chunkRegionLoader, World world, int x, int z) {
return chunkExists.invoke(chunkRegionLoader, Conversion.toWorldHandle.convert(world), x, z);
}
public static void queueChunkLoad(Object chunkRegionLoader, World world, Object chunkProviderServer, int x, int z, Runnable taskWhenFinished) {
queueChunkLoad.invoke(null, Conversion.toWorldHandle.convert(world), chunkRegionLoader, chunkProviderServer, x, z, taskWhenFinished);
}
}