CommandLoadChunks.java 文件源码

java
阅读 21 收藏 0 点赞 0 评论 0

项目:blockbuster 作者:
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException
{
    RenderGlobal render = Minecraft.getMinecraft().renderGlobal;
    Field frustumField = null;
    Field chunkyField = null;

    /* Find all fields */
    for (Field field : render.getClass().getDeclaredFields())
    {
        if (chunkyField == null && field.getType().equals(ChunkRenderDispatcher.class))
        {
            chunkyField = field;
            chunkyField.setAccessible(true);
        }

        if (frustumField == null && field.getType().equals(ViewFrustum.class))
        {
            frustumField = field;
            frustumField.setAccessible(true);
        }

        if (chunkyField != null && frustumField != null)
        {
            break;
        }
    }

    /* Force chunk loading */
    if (chunkyField != null && frustumField != null)
    {
        try
        {
            ChunkRenderDispatcher chunks = (ChunkRenderDispatcher) chunkyField.get(render);
            ViewFrustum frustum = (ViewFrustum) frustumField.get(render);

            for (RenderChunk chunk : frustum.renderChunks)
            {
                boolean isDummy = chunk.getCompiledChunk() == CompiledChunk.DUMMY;

                if (isDummy)
                {
                    chunks.updateChunkNow(chunk);
                }
            }

            L10n.info(sender, "commands.load_chunks");
        }
        catch (Exception e)
        {
            e.printStackTrace();

            L10n.error(sender, "commands.load_chunks");
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号