mirror of https://github.com/webbukkit/dynmap.git
134 lines
4.3 KiB
Java
134 lines
4.3 KiB
Java
package org.dynmap.forge_1_12_2;
|
|
|
|
import java.io.File;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import org.dynmap.DynmapCommonAPI;
|
|
import org.dynmap.DynmapCommonAPIListener;
|
|
import org.dynmap.Log;
|
|
import org.dynmap.forge_1_12_2.DynmapPlugin.OurLog;
|
|
|
|
import net.minecraft.server.MinecraftServer;
|
|
import net.minecraft.world.World;
|
|
import net.minecraftforge.common.ForgeChunkManager;
|
|
import net.minecraftforge.common.ForgeChunkManager.Ticket;
|
|
import net.minecraftforge.common.config.Configuration;
|
|
import net.minecraftforge.fml.common.Mod;
|
|
import net.minecraftforge.fml.common.Mod.EventHandler;
|
|
import net.minecraftforge.fml.common.Mod.Instance;
|
|
import net.minecraftforge.fml.common.SidedProxy;
|
|
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
|
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
|
import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
|
|
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
|
|
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
|
|
import net.minecraftforge.fml.common.network.NetworkCheckHandler;
|
|
import net.minecraftforge.fml.relauncher.Side;
|
|
|
|
@Mod(modid = "dynmap", name = "Dynmap", version = Version.VER)
|
|
public class DynmapMod
|
|
{
|
|
// The instance of your mod that Forge uses.
|
|
@Instance("dynmap")
|
|
public static DynmapMod instance;
|
|
|
|
// Says where the client and server 'proxy' code is loaded.
|
|
@SidedProxy(clientSide = "org.dynmap.forge_1_12_2.ClientProxy", serverSide = "org.dynmap.forge_1_12_2.Proxy")
|
|
public static Proxy proxy;
|
|
|
|
public static DynmapPlugin plugin;
|
|
public static File jarfile;
|
|
public static boolean useforcedchunks;
|
|
|
|
public class APICallback extends DynmapCommonAPIListener {
|
|
@Override
|
|
public void apiListenerAdded() {
|
|
if(plugin == null) {
|
|
plugin = proxy.startServer(server);
|
|
}
|
|
}
|
|
@Override
|
|
public void apiEnabled(DynmapCommonAPI api) {
|
|
}
|
|
}
|
|
|
|
public class LoadingCallback implements net.minecraftforge.common.ForgeChunkManager.LoadingCallback {
|
|
@Override
|
|
public void ticketsLoaded(List<Ticket> tickets, World world) {
|
|
if(tickets.size() > 0) {
|
|
DynmapPlugin.setBusy(world, tickets.get(0));
|
|
for(int i = 1; i < tickets.size(); i++) {
|
|
ForgeChunkManager.releaseTicket(tickets.get(i));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public DynmapMod() {
|
|
Log.setLogger(new OurLog());
|
|
org.dynmap.modsupport.ModSupportImpl.init();
|
|
}
|
|
|
|
@EventHandler
|
|
public void preInit(FMLPreInitializationEvent event)
|
|
{
|
|
jarfile = event.getSourceFile();
|
|
// Load configuration file - use suggested (config/WesterosBlocks.cfg)
|
|
Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
|
|
try {
|
|
cfg.load();
|
|
|
|
useforcedchunks = cfg.get("Settings", "UseForcedChunks", true).getBoolean(true);
|
|
}
|
|
finally
|
|
{
|
|
cfg.save();
|
|
}
|
|
|
|
}
|
|
|
|
@EventHandler
|
|
public void init(FMLInitializationEvent event)
|
|
{
|
|
/* Set up for chunk loading notice from chunk manager */
|
|
if(useforcedchunks) {
|
|
ForgeChunkManager.setForcedChunkLoadingCallback(DynmapMod.instance, new LoadingCallback());
|
|
}
|
|
else {
|
|
Log.warning("[Dynmap] World loading using forced chunks is disabled");
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void postInit(FMLPostInitializationEvent event)
|
|
{
|
|
}
|
|
|
|
private MinecraftServer server;
|
|
@EventHandler
|
|
public void serverStarting(FMLServerStartingEvent event) {
|
|
server = event.getServer();
|
|
}
|
|
|
|
@EventHandler
|
|
public void serverStarted(FMLServerStartedEvent event)
|
|
{
|
|
DynmapCommonAPIListener.register(new APICallback());
|
|
if(plugin == null)
|
|
plugin = proxy.startServer(server);
|
|
plugin.serverStarted();
|
|
}
|
|
@EventHandler
|
|
public void serverStopping(FMLServerStoppingEvent event)
|
|
{
|
|
proxy.stopServer(plugin);
|
|
plugin = null;
|
|
}
|
|
@NetworkCheckHandler
|
|
public boolean netCheckHandler(Map<String, String> mods, Side side) {
|
|
return true;
|
|
}
|
|
}
|