package com.pixelutilitys;
import com.pixelutilitys.achievements.PixelUtilitysAchievements;
import com.pixelutilitys.commands.AddToGrassCommand;
import com.pixelutilitys.commands.PokecheckmeCommand;
import com.pixelutilitys.config.PixelUtilitysBlocks;
import com.pixelutilitys.config.PixelUtilitysConfig;
import com.pixelutilitys.config.PixelUtilitysRecipes;
import com.pixelutilitys.entitys.SeatEntity;
import com.pixelutilitys.events.CustomDrops;
import com.pixelutilitys.events.PUTickHandler;
import com.pixelutilitys.networking.PacketHandler;
import com.pixelutilitys.proxies.CommonProxy;
import com.pixelutilitys.radioplayer.VLCPlayer;
import com.pixelutilitys.tileentitys.*;
import com.pixelutilitys.worldgen.*;
import cpw.mods.fml.common.*;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.event.*;
import cpw.mods.fml.common.network.FMLEventChannel;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameData;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import net.minecraft.block.Block;
import net.minecraft.command.ServerCommandManager;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemArmor.ArmorMaterial;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.EnumHelper;
import uk.co.caprica.vlcj.discovery.NativeDiscovery;
import uk.co.caprica.vlcj.version.LibVlcVersion;
import uk.co.caprica.vlcj.version.Version;
import java.util.ArrayList;
import java.util.List;
@Mod(modid = Basemod.MODID, name = Basemod.NAME, version = Basemod.VERSION, dependencies = "after:pixelmon")
//change to "after" once we are non dependant
public class Basemod {
public static final String MODID = "pixelutilities";
public static final String NAME = "PixelUtilities";
public static final String VERSION = "3.2";
public static ToolMaterial FIRESTONE = EnumHelper.addToolMaterial("FIRESTONE", 3, 1561, 8.0F, 3.0F, 10);
public static ToolMaterial WATERSTONE = EnumHelper.addToolMaterial("WATERSTONE", 3, 1561, 8.0F, 3.0F, 10);
public static ToolMaterial LEAFSTONE = EnumHelper.addToolMaterial("LEAFSTONE", 2, 250, 6.0F, 2.0F, 14);
public static ToolMaterial RUBY = EnumHelper.addToolMaterial("RUBY", 2, 300, 6.5F, 2, 14);
public static ToolMaterial SAPHIRE = EnumHelper.addToolMaterial("SAPHIRE", 2, 300, 6.5F, 2, 14);
public static ToolMaterial AMETHYST = EnumHelper.addToolMaterial("AMETHYST", 2, 300, 6.5F, 2, 14);
public static ToolMaterial CRYSTAL = EnumHelper.addToolMaterial("CRYSTAL", 2, 300, 6.5F, 2, 14);
public static ArmorMaterial FIRESTONEA = EnumHelper.addArmorMaterial("FIRESTONEA", 40, new int[]{4, 8, 6, 4}, 10);
public static ArmorMaterial WATERSTONEA = EnumHelper.addArmorMaterial("WATERSTONEA", 40, new int[]{4, 8, 6, 4}, 10);
public static ArmorMaterial LEAFSTONEA = EnumHelper.addArmorMaterial("LEAFSTONEA", 15, new int[]{2, 6, 5, 2}, 9);
public static ArmorMaterial RUBYA = EnumHelper.addArmorMaterial("RUBYA", 200, new int[]{3, 7, 6, 3}, 10);
public static ArmorMaterial SAPHIREA = EnumHelper.addArmorMaterial("SAPHIREA", 200, new int[]{3, 7, 6, 3}, 10);
public static ArmorMaterial CRYSTALA = EnumHelper.addArmorMaterial("CRYSTALA", 200, new int[]{3, 7, 6, 3}, 10);
public static ArmorMaterial SILICONA = EnumHelper.addArmorMaterial("SILICONA", 200, new int[]{3, 7, 6, 3}, 10);
public static boolean vlcLoaded = false;
public static boolean pixelmonPresent = false;
public static boolean is64bit = Integer.parseInt(System.getProperty("sun.arch.data.model")) == 64;
public static boolean DEBUGMODE = false;
public static FMLEventChannel channel;
public static List<VLCPlayer> playerList = new ArrayList<>();
public static List<VLCPlayer> battleMusicList = new ArrayList<>();
public static VLCPlayer localMusicPlayer = null;
//In development biome //pokebiome
//Biomes
public static BiomeGenBase PokeBiome;
@Instance(Basemod.MODID)
public static Basemod instance;
@SidedProxy(clientSide = "com.pixelutilitys.proxies.ClientProxy",
serverSide = "com.pixelutilitys.proxies.CommonProxy")
public static CommonProxy proxy;
PixelUtilitysConfig config;
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
try {
if (Class.forName("com.pixelmonmod.pixelmon.Pixelmon") != null)
pixelmonPresent = true;
} catch (ClassNotFoundException e) {
FMLLog.warning("Pixelmon mod not found, pixelmon functions disabled.");
}
AddMeta(event);
config = PixelUtilitysConfig.getInstance();
config.setEvent(event);
PixelUtilitysAchievements.setupAchievements();
EntityRegistry.registerModEntity(SeatEntity.class, "Seat", 0, this, 3, 1, false);
}
@EventHandler
public void init(FMLInitializationEvent event) {
if (event.getSide().equals(Side.CLIENT)) {
PUTickHandler tickHandler = new PUTickHandler();
FMLCommonHandler.instance().bus().register(tickHandler);
MinecraftForge.EVENT_BUS.register(tickHandler);
initVLC();
}
PacketHandler.init();
}
private void initVLC() {
new NativeDiscovery().discover();
try {
Version vlcVersion = LibVlcVersion.getVersion();
System.out.println("VLC VERSION " + vlcVersion.toString());
vlcLoaded = true;
} catch (UnsatisfiedLinkError error) {
System.out.println("You need to install VLC for radio functions.");
}
}
@EventHandler
public void load(FMLInitializationEvent event) {
proxy.registerRenderThings();
GameRegistry.registerTileEntity(TreeEntity.class, "Tree");
GameRegistry.registerTileEntity(BolderEntity.class, "Bolder");
GameRegistry.registerTileEntity(BoxEntity.class, "Box");
GameRegistry.registerTileEntity(ClothedTableEntity.class, "ClothedTable");
GameRegistry.registerTileEntity(PokeballEntity.class, "Pokeball");
GameRegistry.registerTileEntity(RedCusionChairEntity.class, "RedCusionChair");
GameRegistry.registerTileEntity(TrashcanEntity.class, "Trashcan");
GameRegistry.registerTileEntity(YellowCusionChairEntity.class, "YellowCusionChair");
GameRegistry.registerTileEntity(TotodilePokedollEntity.class, "TotodileDoll");
GameRegistry.registerTileEntity(TileEntityRadio.class, "Radio");
GameRegistry.registerTileEntity(TileEntityConveyor.class, "Conveyor");
//Ore generation
GameRegistry.registerWorldGenerator(new RubyGenerator(), 0);
GameRegistry.registerWorldGenerator(new SaphireGenerator(), 0);
GameRegistry.registerWorldGenerator(new AmethystGenerator(), 0);
GameRegistry.registerWorldGenerator(new SiliconGenerator(), 0);
GameRegistry.registerWorldGenerator(new CrystalGenerator(), 0);
PixelUtilitysRecipes recipes = new PixelUtilitysRecipes();
recipes.addRecipes();
PixelUtilitysBlocks.RubyOre.setHarvestLevel("pickaxe", 2);
PixelUtilitysBlocks.SaphireOre.setHarvestLevel("pickaxe", 2);
PixelUtilitysBlocks.AmethystOre.setHarvestLevel("pickaxe", 2);
PixelUtilitysBlocks.SiliconOre.setHarvestLevel("pickaxe", 2);
PixelUtilitysBlocks.CrystalOre.setHarvestLevel("pickaxe", 2);
MinecraftForge.EVENT_BUS.register(new CustomDrops());
}
@Mod.EventHandler
public void onServerStart(FMLServerStartingEvent event) {
if (MinecraftServer.getServer().getCommandManager() instanceof ServerCommandManager) {
((ServerCommandManager) MinecraftServer.getServer().getCommandManager()).registerCommand(new PokecheckmeCommand());
((ServerCommandManager) MinecraftServer.getServer().getCommandManager()).registerCommand(new AddToGrassCommand());
}
if (DEBUGMODE) {
//Here be dragons.
for (Block block : (Iterable<Block>) GameData.getBlockRegistry()) {
if (GameRegistry.findUniqueIdentifierFor(block).modId.equals("minecraft"))
continue;
String localName = block.getLocalizedName();
if (localName.contains("tile")) {
System.out.println("Block " + block.getClass().getName() + " Doesn't seem to have a name set!");
System.out.println();
}
if (block.getCreativeTabToDisplayOn() == null) {
System.out.println("Block " + block.getClass().getName() + " Doesn't seem to have a creative tab set!");
System.out.println();
}
}
for (Item item : (Iterable<Item>) GameData.getItemRegistry()) {
ItemStack itemStack = new ItemStack(item, 0, 1);
String itemName = item.getItemStackDisplayName(itemStack);
if (!itemName.getClass().getName().contains(MODID))
return;
if (itemName.contains("item.")) {
System.out.println("Item " + itemName + " doesn't seem to have a name set");
}
}
}
//////////////////////////////////////////////////////
}
@Mod.EventHandler
public void serverStop(FMLServerStoppedEvent event) {
killAllStreams();
}
public static void killAllStreams() {
for (VLCPlayer p : playerList) {
p.stop();
}
for (VLCPlayer p : battleMusicList) {
p.stop();
}
PUTickHandler.playerRadio.stop();
}
/**
* Add Pack Meta Data
*/
private void AddMeta(FMLPreInitializationEvent event) {
ModMetadata m = event.getModMetadata(); // This is required or it will not work
m.autogenerated = false; // This is required otherwise it will not work
m.modId = Basemod.MODID;
m.version = Basemod.VERSION;
m.name = Basemod.NAME;
m.url = "http://www.pixelmonmod.com";
m.updateUrl = "http://www.pixelmonmod.com";
m.description = "A mod that adds Pokemon blocks and items into Pixelmon";
m.authorList.add("AnDwHaT5");
m.authorList.add("Clienthax");
m.credits = "The PixelUtilities Team";
}
}