// Path: src/main/java/myessentials/MyEssentialsCore.java
// @Mod(modid = "MyEssentials-Core", name = "MyEssentials-Core", version = "@VERSION@", dependencies = "required-after:Forge", acceptableRemoteVersions = "*")
// public class MyEssentialsCore {
//     @Instance("MyEssentials-Core")
//     public static MyEssentialsCore instance;
// 
//     public Local LOCAL;
//     public Logger LOG;
// 
//     @EventHandler
//     public void preInit(FMLPreInitializationEvent ev) {
// 
//         LOG = ev.getModLog();
//         Constants.CONFIG_FOLDER = ev.getModConfigurationDirectory().getPath() + "/MyEssentials-Core/";
//         Constants.DATABASE_FOLDER = ev.getModConfigurationDirectory().getParent() + "/databases/";
//         // Load Configs
//         Config.instance.init(Constants.CONFIG_FOLDER + "/Core.cfg", "MyEssentials-Core");
//         // REF: The localization can simply take the whole config instance to get the localization needed.
//         LOCAL = new Local(Constants.CONFIG_FOLDER + "/localization/", Config.instance.localization.get(), "/myessentials/localization/", MyEssentialsCore.class);
//         LocalManager.register(LOCAL, "myessentials");
// 
//         // Register handlers/trackers
//         FMLCommonHandler.instance().bus().register(PlayerTracker.instance);
//         MinecraftForge.EVENT_BUS.register(PlayerTracker.instance);
// 
//         FMLCommonHandler.instance().bus().register(ToolManager.instance);
//         MinecraftForge.EVENT_BUS.register(ToolManager.instance);
// 
//         FMLCommonHandler.instance().bus().register(SignManager.instance);
//         MinecraftForge.EVENT_BUS.register(SignManager.instance);
//     }
// }
// 
// Path: src/main/java/myessentials/chat/api/IChatFormat.java
// public interface IChatFormat {
// 
//     IChatComponent toChatMessage();
// 
// }
// 
// Path: src/main/java/myessentials/json/api/SerializerTemplate.java
// public abstract class SerializerTemplate<T> implements JsonSerializer<T>, JsonDeserializer<T> {
// 
//     public GsonBuilder createBuilder() {
//         GsonBuilder builder = new GsonBuilder();
//         register(builder);
//         return builder;
//     }
// 
//     public abstract void register(GsonBuilder builder);
// }


import com.google.gson.*;
import myessentials.MyEssentialsCore;
import myessentials.chat.api.IChatFormat;
import myessentials.json.api.SerializerTemplate;
import net.minecraft.util.IChatComponent;
import net.minecraftforge.common.util.ForgeDirection;
import java.lang.reflect.Type;
            z1 = (minZ < other.getMinZ()) ? other.getMinZ() : minZ;
            x2 = (maxX > other.getMaxX()) ? other.getMaxX() : maxX;
            y2 = (maxY > other.getMaxY()) ? other.getMaxY() : maxY;
            z2= (maxZ > other.getMaxZ()) ? other.getMaxZ() : maxZ;

            return new Volume(x1, y1, z1, x2, y2, z2);
        }
        return null;
    }

    public int getVolumeAmount() {
        return (maxX - minX + 1) * (maxY - minY + 1) * (maxZ - minZ + 1);
    }

    @Override
    public boolean equals(Object obj) {
        if(obj instanceof Volume) {
            Volume other = (Volume)obj;
            return other.minX == minX && other.minY == minY && other.minZ == minZ && other.maxX == maxX && other.maxY == maxY && other.maxZ == maxZ;
        }
        return super.equals(obj);
    }

    @Override
    public String toString() {
        return toChatMessage().getUnformattedText();
    }

    @Override
    public IChatComponent toChatMessage() {
// Path: src/main/java/myessentials/MyEssentialsCore.java
// @Mod(modid = "MyEssentials-Core", name = "MyEssentials-Core", version = "@VERSION@", dependencies = "required-after:Forge", acceptableRemoteVersions = "*")
// public class MyEssentialsCore {
//     @Instance("MyEssentials-Core")
//     public static MyEssentialsCore instance;
// 
//     public Local LOCAL;
//     public Logger LOG;
// 
//     @EventHandler
//     public void preInit(FMLPreInitializationEvent ev) {
// 
//         LOG = ev.getModLog();
//         Constants.CONFIG_FOLDER = ev.getModConfigurationDirectory().getPath() + "/MyEssentials-Core/";
//         Constants.DATABASE_FOLDER = ev.getModConfigurationDirectory().getParent() + "/databases/";
//         // Load Configs
//         Config.instance.init(Constants.CONFIG_FOLDER + "/Core.cfg", "MyEssentials-Core");
//         // REF: The localization can simply take the whole config instance to get the localization needed.
//         LOCAL = new Local(Constants.CONFIG_FOLDER + "/localization/", Config.instance.localization.get(), "/myessentials/localization/", MyEssentialsCore.class);
//         LocalManager.register(LOCAL, "myessentials");
// 
//         // Register handlers/trackers
//         FMLCommonHandler.instance().bus().register(PlayerTracker.instance);
//         MinecraftForge.EVENT_BUS.register(PlayerTracker.instance);
// 
//         FMLCommonHandler.instance().bus().register(ToolManager.instance);
//         MinecraftForge.EVENT_BUS.register(ToolManager.instance);
// 
//         FMLCommonHandler.instance().bus().register(SignManager.instance);
//         MinecraftForge.EVENT_BUS.register(SignManager.instance);
//     }
// }
// 
// Path: src/main/java/myessentials/chat/api/IChatFormat.java
// public interface IChatFormat {
// 
//     IChatComponent toChatMessage();
// 
// }
// 
// Path: src/main/java/myessentials/json/api/SerializerTemplate.java
// public abstract class SerializerTemplate<T> implements JsonSerializer<T>, JsonDeserializer<T> {
// 
//     public GsonBuilder createBuilder() {
//         GsonBuilder builder = new GsonBuilder();
//         register(builder);
//         return builder;
//     }
// 
//     public abstract void register(GsonBuilder builder);
// }


// Path: src/main/java/myessentials/entities/api/Volume.java
import com.google.gson.*;
import myessentials.MyEssentialsCore;
import myessentials.chat.api.IChatFormat;
import myessentials.json.api.SerializerTemplate;
import net.minecraft.util.IChatComponent;
import net.minecraftforge.common.util.ForgeDirection;
import java.lang.reflect.Type;

            z1 = (minZ < other.getMinZ()) ? other.getMinZ() : minZ;
            x2 = (maxX > other.getMaxX()) ? other.getMaxX() : maxX;
            y2 = (maxY > other.getMaxY()) ? other.getMaxY() : maxY;
            z2= (maxZ > other.getMaxZ()) ? other.getMaxZ() : maxZ;

            return new Volume(x1, y1, z1, x2, y2, z2);
        }
        return null;
    }

    public int getVolumeAmount() {
        return (maxX - minX + 1) * (maxY - minY + 1) * (maxZ - minZ + 1);
    }

    @Override
    public boolean equals(Object obj) {
        if(obj instanceof Volume) {
            Volume other = (Volume)obj;
            return other.minX == minX && other.minY == minY && other.minZ == minZ && other.maxX == maxX && other.maxY == maxY && other.maxZ == maxZ;
        }
        return super.equals(obj);
    }

    @Override
    public String toString() {
        return toChatMessage().getUnformattedText();
    }

    @Override
    public IChatComponent toChatMessage() {
        return MyEssentialsCore.instance.LOCAL.getLocalization("myessentials.format.volume", minX, minY, minZ, maxX, maxY, maxZ);