Unicopia/src/main/java/com/minelittlepony/unicopia/Unicopia.java

116 lines
3.8 KiB
Java
Raw Normal View History

2018-09-12 01:29:49 +02:00
package com.minelittlepony.unicopia;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
2019-01-29 14:22:36 +01:00
import net.minecraft.world.biome.Biome;
import java.util.Map;
import java.util.function.Function;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.google.gson.JsonObject;
2020-01-16 12:35:46 +01:00
import com.minelittlepony.unicopia.ability.powers.PowersRegistry;
2018-09-19 09:09:30 +02:00
import com.minelittlepony.unicopia.advancements.UAdvancements;
2018-09-12 01:29:49 +02:00
import com.minelittlepony.unicopia.command.Commands;
import com.minelittlepony.unicopia.enchanting.AffineIngredients;
2019-02-08 16:56:28 +01:00
import com.minelittlepony.unicopia.enchanting.Pages;
import com.minelittlepony.unicopia.enchanting.SpecialRecipe;
import com.minelittlepony.unicopia.enchanting.SpellRecipe;
2020-01-16 12:35:46 +01:00
import com.minelittlepony.unicopia.inventory.gui.SpellBookContainer;
import com.minelittlepony.unicopia.inventory.gui.GuiSpellBook;
2018-09-12 01:29:49 +02:00
import com.minelittlepony.unicopia.network.MsgPlayerAbility;
import com.minelittlepony.unicopia.network.MsgPlayerCapabilities;
import com.minelittlepony.unicopia.network.MsgRequestCapabilities;
import com.minelittlepony.unicopia.util.crafting.CraftingManager;
2019-02-21 12:56:05 +01:00
import com.minelittlepony.unicopia.world.Hooks;
import com.minelittlepony.unicopia.world.UWorld;
2018-09-12 01:29:49 +02:00
public class Unicopia implements IGuiHandler {
2018-09-12 01:29:49 +02:00
public static final String MODID = "unicopia";
public static final String NAME = "@NAME@";
public static final String VERSION = "@VERSION@";
public static final Logger log = LogManager.getLogger();
2018-09-12 01:29:49 +02:00
private static IChannel channel;
2019-03-05 11:45:56 +01:00
private static CraftingManager craftingManager = new CraftingManager(MODID, "enchanting") {
@Override
protected void registerRecipeTypes(Map<String, Function<JsonObject, IRecipe>> types) {
super.registerRecipeTypes(types);
types.put("unicopia:crafting_spell", SpellRecipe::deserialize);
types.put("unicopia:crafting_special", SpecialRecipe::deserialize);
2019-03-05 11:45:56 +01:00
AffineIngredients.instance().load();
}
};
public static CraftingManager getCraftingManager() {
return craftingManager;
}
public static IChannel getConnection() {
return channel;
}
2019-02-16 16:49:55 +01:00
2018-09-12 01:29:49 +02:00
public void preInit(FMLPreInitializationEvent event) {
UConfig.init(event.getModConfigurationDirectory());
UClient.instance().preInit();
2019-02-16 16:49:55 +01:00
UWorld.instance().init();
}
public void onServerCreated(FMLServerAboutToStartEvent event) {
Fixes.init(event.getServer().getDataFixer());
}
public void onServerStart(FMLServerStartingEvent event) {
Commands.init(event);
}
2018-09-12 01:29:49 +02:00
public void init(FMLInitializationEvent event) {
channel = JumpingCastle.subscribeTo(MODID, () -> {})
2018-09-20 22:49:10 +02:00
.listenFor(MsgRequestCapabilities.class)
.listenFor(MsgPlayerCapabilities.class)
.listenFor(MsgPlayerAbility.class);
2018-09-12 01:29:49 +02:00
PowersRegistry.instance().init();
2018-09-19 09:09:30 +02:00
UAdvancements.init();
2018-09-12 01:29:49 +02:00
FBS.init();
NetworkRegistry.INSTANCE.registerGuiHandler(this, this);
UClient.instance().init();
}
2019-03-18 15:02:06 +01:00
public void postInit(FMLPostInitializationEvent event) {
2019-03-05 11:45:56 +01:00
craftingManager.load();
2019-01-29 14:22:36 +01:00
2019-02-08 16:56:28 +01:00
Pages.instance().load();
2019-01-29 14:22:36 +01:00
Biome.REGISTRY.forEach(UEntities::registerSpawnEntries);
2019-03-18 15:02:06 +01:00
UClient.instance().postInit();
UItems.fixRecipes();
2018-09-12 01:29:49 +02:00
}
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
switch (ID) {
2020-01-16 12:35:46 +01:00
case 0: return new SpellBookContainer(player.inventory, world, new BlockPos(x, y, z));
default: return null;
}
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
switch (ID) {
case 0: return new GuiSpellBook(player);
default: return null;
}
}
2018-09-12 01:29:49 +02:00
}