package hmggirlfront;

import java.io.File;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import hmggirlfront.biome.CollapseBiome;
import hmggirlfront.config.GFConfig;
import hmggirlfront.event.GFEventArmor;
import hmggirlfront.event.GFEventHUD;
import hmggirlfront.event.GFEventLiving;
import hmggirlfront.event.GFEventMAV;
import hmggirlfront.event.GFEventSOFLAM;
import hmggirlfront.event.level.GFEventLevel_WorldIn;
import hmggirlfront.gui.GuiHandlerGF;
import hmggirlfront.network.GFPacketHandler;
import hmggirlfront.potion.Collapse_Potion;
import hmggirlfront.world.GFEventWorld;
import hmggirlfront.world.WorldGenerator_BulldingBase;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemArmor.ArmorMaterial;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.potion.PotionType;
import net.minecraft.stats.StatBasic;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.biome.Biome;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.common.BiomeManager;
import net.minecraftforge.common.BiomeManager.BiomeEntry;
import net.minecraftforge.common.BiomeManager.BiomeType;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLConstructionEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;


@Mod(
		modid	= mod_GirlFront.MOD_ID,
		name	= mod_GirlFront.MOD_ID,
		version	= "1.12.2",
		acceptedMinecraftVersions="[1.12.2]",
		useMetadata=false,
		guiFactory = "hmggirlfront.config.GFGuiFactory"
		)
@EventBusSubscriber
public class mod_GirlFront 
{
	@SidedProxy(clientSide = "hmggirlfront.ClientProxyGF", serverSide = "hmggirlfront.CommonSideProxyGF")
	public static CommonSideProxyGF proxy;
	public static final String MOD_ID = "hmggirlfront";
	@Mod.Instance(MOD_ID)
	 
    public static mod_GirlFront INSTANCE;
	
	public static boolean isDebugMessage = true;
	
	
	public static Block bdoll_supplies;
	
	
	public static Item idoll_pad;
	
	public static Item idoll_hp;
	public static Item idoll_bullet;
	public static Item idoll_food;
	public static Item idoll_parts;
	public static Item idoll_doll_contract;
	public static Item idoll_doll_rapidcontract;
	public static Item idoll_doll_repair;
	public static Item idoll_doll_dismantling;
	public static Item idoll_doll_report;
	
	public static Item idoll_squad_cn;
	public static Item idoll_core;
	
	public static Item idoll_bullet_9;
	public static Item idoll_bullet_45;
	public static Item idoll_bullet_556;
	public static Item idoll_bullet_762;
	public static Item idoll_bullet_12g;
	public static Item idoll_bullet_40;
	
	public static Item idoll_bullet_57;
	public static Item idoll_bullet_473kr;
	
	public static Item idoll_grenade_n;
	public static Item idoll_grenade_f;
	public static Item idoll_grenade_s;
	public static Item idoll_grenade_fb;
	
	public static Item idoll_bandage;
	
	public static Item idoll_pledge;
	
	public static Item idoll_l_performance_circuit;
	public static Item idoll_h_performance_circuit;
	
	public static Item idoll_collapse_sample;
	
	
	public static Block bdoll_frontlinebase;
	
	
	public static Block bdoll_crafting;
	public static Block bdoll_dismantling;
	
	public static Block bdoll_doll_Restoring_machine;
	
	public static Block base_materials;
	public static Block bdoll_base_materials;
	public static Block bdoll_base_materials_em;
	
	public static Block base_munitionsdepot;
	public static Block bdoll_base_munitionsdepot;
	public static Block bdoll_base_munitionsdepot_em;
	
	public static Block base_fieldhospital;
	public static Block bdoll_base_fieldhospital;
	public static Block bdoll_base_fieldhospital_em;
	
	public static Block base_bunker;
	public static Block bdoll_base_bunker;
	public static Block bdoll_base_bunker_em;
	
	public static Block base_desert_camp;
	public static Block bdoll_base_desert_camp;
	public static Block bdoll_base_desert_camp_em;
	
	public static Block base_snow_camp;
	public static Block bdoll_base_snow_camp;
	public static Block bdoll_base_snow_camp_em;
	
	public static Block base_snow_camp2;
	public static Block bdoll_base_snow_camp2;
	public static Block bdoll_base_snow_camp2_em;
	
	public static Block base_snowforest_camp;
	public static Block bdoll_base_snowforest_camp;
	public static Block bdoll_base_snowforest_camp_em;
	
	
	
	
	
	public static Block base_helipad;
	public static Block bdoll_base_helipad;
	public static Block bdoll_base_helipad_em;
	
	public static Block base_substation;
	public static Block bdoll_base_substation;
	public static Block bdoll_base_substation_em;
	
	public static Block base_wastecollection;
	public static Block bdoll_base_wastecollection;
	public static Block bdoll_base_wastecollection_em;
	
	
	public static Block base_helipad_de;
	public static Block bdoll_base_helipad_de;
	public static Block bdoll_base_helipad_de_em;
	
	public static Block base_oilwell;
	public static Block bdoll_base_oilwell;
	public static Block bdoll_base_oilwell_em;
	
	
	
	public static Block base_helipad_mt;
	public static Block bdoll_base_helipad_mt;
	public static Block bdoll_base_helipad_mt_em;
	
	public static Block base_coalmine;
	public static Block bdoll_base_coalmine;
	public static Block bdoll_base_coalmine_em;
	
	
	public static Block base_helipad_se;
	public static Block bdoll_base_helipad_se;
	public static Block bdoll_base_helipad_se_em;
	
	public static Block base_wastecarrier;
	public static Block bdoll_base_wastecarrier;
	public static Block bdoll_base_wastecarrier_em;
	
	
	
	public static Block base_containership;
	public static Block bdoll_base_containership;
	public static Block bdoll_base_containership_em;
	
	public static Block base_offshorecrane;
	public static Block bdoll_base_offshorecrane;
	public static Block bdoll_base_offshorecrane_em;
	
	public static Block base_antennabase;
	public static Block bdoll_base_antennabase;
	public static Block bdoll_base_antennabase_em;
	
	public static Block base_antennabase_de;
	public static Block bdoll_base_antennabase_de;
	public static Block bdoll_base_antennabase_de_em;
	
	public static Block base_antennabase_mt;
	public static Block bdoll_base_antennabase_mt;
	public static Block bdoll_base_antennabase_mt_em;
	
	
	
	
	
	
	
	
	public static Block base_headquarters;
	public static Block help_base_headquarters;
	public static Block bdoll_base_headquarters;
	public static Block bdoll_base_headquarters_em;
	
	public static Block base_oil_complex;
	public static Block help_base_oil_complex;
	public static Block bdoll_base_oil_complex;
	public static Block bdoll_base_oil_complex_em;
	
	public static Block base_desert_base;
	public static Block help_base_desert_base;
	public static Block bdoll_base_desert_base;
	public static Block bdoll_base_desert_base_em;
	
	public static Block base_forest_base;
	public static Block help_base_forest_base;
	public static Block bdoll_base_forest_base;
	public static Block bdoll_base_forest_base_em;
	
	public static Block base_amusement;
	public static Block help_base_amusement;
	public static Block bdoll_base_amusement;
	public static Block bdoll_base_amusement_em;
	
	/*public static Block base_mining_base;
	public static Block help_base_mining_base;
	public static Block bdoll_base_mining_base;
	public static Block bdoll_base_mining_base_em;*/
	public static Block base_observation_base;
	public static Block help_base_observation_base;
	public static Block bdoll_base_observation_base;
	public static Block bdoll_base_observation_base_em;
	
	
	public static Block base_sea_launch;
	public static Block help_base_sea_launch;
	public static Block bdoll_base_sea_launch;
	public static Block bdoll_base_sea_launch_em;
	
	public static Block base_mansion;
	public static Block help_base_mansion;
	public static Block bdoll_base_mansion;
	public static Block bdoll_base_mansion_em;
	
	
	public static Block base_missile_silo;
	public static Block help_base_missile_silo;
	public static Block bdoll_base_missile_silo;
	public static Block bdoll_base_missile_silo_em;
	

	
	public static Block b_goods_ibc01_break;
	public static Block b_goods_tank_break;
	
	public static Block b_block_collapse;
	public static Block b_block_collapse_grass;
	public static Block b_block_collapse_hv;
	
	
	
	
	public static Block b_block_ammobox1_df;
	public static Block b_block_barrel_drum1_df;
	public static Block b_block_barrel_drum2_df;
	public static Block b_block_hesco_df;
	public static Block b_block_laptop_df;
	public static Block b_block_monitor1_df;
	public static Block b_block_sincgars_df;
	public static Block b_block_toughbook_df;
	
	
	public static Block b_block_9mmpack_df;
	public static Block b_block_12gpack_df;
	public static Block b_block_40mmgr_ammo_df;
	public static Block b_block_556pack_df;
	public static Block b_block_ammobox2_df;
	public static Block b_block_box1_iop;
	
	public static Block b_block_camonet1_df;
	
	public static Block b_block_collapse_bombe;
	public static Block b_block_epiphyllum1;
	public static Block b_block_epiphyllum2;
	public static Block b_block_jutebag_df;
	public static Block b_block_medbag_df;
	public static Block b_block_rcc_df;
	
	public static Block b_block_416nui;
	public static Block b_block_g36nui;
	public static Block b_block_kalinui;
	public static Block b_block_mg36nui;
	public static Block b_block_roprowler;
	public static Block b_block_soptwonui;
	public static Block b_block_wa2000nui;
	
	public static Block b_block_rfbnui;
	
	
	public static Block b_block_gunrack_htgk;
	public static Block b_block_gunrack_rsgk;
	public static Block b_block_gunrack_rtgk1;
	
	public static Block b_block_57pack_df;
	public static Block b_block_114pack_df;
	public static Block b_block_473pack_df;
	public static Block b_block_762pack_df;
	public static Block b_block_at_obstacles2;//　チェコの針鼠
	public static Block b_block_barbed1_df;//　有刺鉄線
	public static Block b_block_barbed2_df;//　有刺鉄線
	public static Block b_block_fire_exti_df;//　消火器
	public static Block b_block_Jerrycan1_df;
	public static Block b_block_mil_cont1_df;
	public static Block b_block_mil_cont2_df;
	public static Block b_block_odunit_df;//　室外機
	public static Block b_block_sandbag_a1_df;
	public static Block b_block_sandbag_a2_df;
	public static Block b_block_sandbag_b1_df;
	public static Block b_block_sandbag_b2_df;
	public static Block b_block_server_cont1_df;
	public static Block b_block_server_cont2_df;
	public static Block b_block_t_wall1_df;
	public static Block b_block_t_wall2_df;
	
	
	
	
	
	
	
	
	
	//attachment
	public static Item dollam_horo;
	public static Item dollam_dotsight;
	public static Item dollam_acog;
	public static Item dollam_scope;
	public static Item dollam_micro;
	public static Item dollam_coyote;
	public static Item dollam_kobra;
	public static Item dollam_lasersight;
	public static Item dollam_suppressor;
	public static Item dollam_grip;
	public static Item dollam_bipod;
	public static Item dollam_anglegrip;
	public static Item dollam_gripod;
	
	public static Item dollam_m1903onlyscope;
	public static Item dollam_oss_silencer;
	
	public static Item dollam_an_peq15;
	public static Item dollam_eot_exps3;
	public static Item dollam_eot_exps3_416;
	public static Item dollam_lam_unit;
	
	public static Item dollam_bullet_ap;
	public static Item dollam_bullet_hv;
	public static Item dollam_bullet_ap2;
	public static Item dollam_bullet_hv2;
	public static Item dollam_bullet_ap3;
	public static Item dollam_bullet_hv3;
	
	public static Item dollam_bullet_hp;
	public static Item dollam_bullet_hp2;
	public static Item dollam_bullet_hp3;
	
	public static Item dollam_bullet_backshot;
	public static Item dollam_bullet_backshot2;
	public static Item dollam_bullet_backshot3;
	public static Item dollam_bullet_srag;
	public static Item dollam_bullet_srag2;
	public static Item dollam_bullet_srag3;
	public static Item dollam_bullet_frag;
	public static Item dollam_bullet_frag2;
	public static Item dollam_bullet_frag3;
	
	public static Item dollam_frame_m;
	public static Item dollam_frame_x;
	public static Item dollam_frame_m2;
	public static Item dollam_frame_x2;
	public static Item dollam_frame_m3;
	public static Item dollam_frame_x3;
	
	public static Item dollam_bodyarmor;
	public static Item dollam_bodyarmor2;
	public static Item dollam_bodyarmor3;
	
	public static Item dollam_class_assalt;
	public static Item dollam_class_medic;
	public static Item dollam_class_support;
	public static Item dollam_class_scout;
	public static Item dollam_class_torcher;
	
	
	public static ToolMaterial doll_tool = EnumHelper.addToolMaterial("doll_tool", 2, 1561, 6.0F, 2.0F, 14);
	public static Item doll_tool_combatknife;
	public static Item doll_tool_mshovel;
	public static Item doll_tool_mpickaxe;
	public static Item doll_tool_maxe;
	
	public static Item doll_tool_soflam;
	
	
	public static Item subarm_tec9;
	public static Item subarm_ak12prt;
	public static Item subarm_ar15;
	public static Item subarm_m2c;
	public static Item subarm_pp2000;
	public static Item subarm_mk18c;
	
	
	
	//hg
	public static Item core_m1911;
	public static Item dollgun_m1911;
	public static Item core_p38;
	public static Item dollgun_p38;
	public static Item core_g17;
	public static Item dollgun_g17;
	public static Item core_m9;
	public static Item dollgun_m9;
	public static Item core_stechkin;
	public static Item dollgun_stechkin;
	public static Item core_fn57;
	public static Item dollgun_fn57;
	public static Item core_hk45;
	public static Item dollgun_hk45;
	public static Item core_astra;
	public static Item dollgun_astra;
	public static Item core_gr_mk23;
	public static Item dollgun_gr_mk23;
	public static Item core_welrod;
	public static Item dollgun_welrod;
	public static Item core_uspc;
	public static Item dollgun_uspc;
	public static Item core_pm;
	public static Item dollgun_pm;
	public static Item core_tt33;
	public static Item dollgun_tt33;
	public static Item core_ppk;
	public static Item dollgun_ppk;
	public static Item core_deserteagle;
	public static Item dollgun_deserteagle;
	public static Item core_p226;
	public static Item dollgun_p226;
	public static Item core_thunder;
	public static Item dollgun_thunder;
	public static Item core_m1895;
	public static Item dollgun_m1895;
	public static Item core_gsh18;
	public static Item dollgun_gsh18;
	public static Item core_spp1;
	public static Item dollgun_spp1;
	public static Item core_m327;
	public static Item dollgun_m327;
	public static Item core_p7;
	public static Item dollgun_p7;
	
	//ar
	public static Item core_m4a1;
	public static Item dollgun_m4a1;
	public static Item core_t95;
	public static Item dollgun_t95;
	public static Item core_t97;
	public static Item dollgun_t97;
	public static Item core_f2000;
	public static Item dollgun_f2000;
	public static Item core_galil;
	public static Item dollgun_galil;
	public static Item core_g36;
	public static Item dollgun_g36;
	public static Item core_l85a1;
	public static Item dollgun_l85a1;
	public static Item core_416;
	public static Item dollgun_416;
	public static Item core_gr_g11;
	public static Item dollgun_gr_g11;
	public static Item core_ff_fnc;
	public static Item dollgun_ff_fnc;
	public static Item core_gr_g3;
	public static Item dollgun_gr_g3;
	public static Item core_st_ar15;
	public static Item dollgun_st_ar15;
	public static Item core_hk33;
	public static Item dollgun_hk33;
	public static Item core_9a91;
	public static Item dollgun_9a91;
	public static Item core_stg44;
	public static Item dollgun_stg44;
	public static Item core_type64;
	public static Item dollgun_type64;
	public static Item core_am_rfb;
	public static Item dollgun_am_rfb;
	public static Item core_an94;
	public static Item dollgun_an94;
	public static Item core_fal;
	public static Item dollgun_fal;
	public static Item core_gr_g41;
	public static Item dollgun_gr_g41;
	public static Item core_type89_j;
	public static Item dollgun_type89_j;
	public static Item core_m16a1;
	public static Item dollgun_m16a1;
	public static Item core_m4sopmod;
	public static Item dollgun_m4sopmod;
	public static Item core_howa556;
	public static Item dollgun_howa556;
	public static Item core_ak12;
	public static Item dollgun_ak12;
	public static Item core_arx160;
	public static Item dollgun_arx160;
	public static Item core_sig_mcx;
	public static Item dollgun_sig_mcx;
	public static Item core_a91;
	public static Item dollgun_a91;
	public static Item core_ak74m;
	public static Item dollgun_ak74m;
	public static Item core_type56_1;
	public static Item dollgun_type56_1;
	public static Item core_xm177e2;
	public static Item dollgun_xm177e2;
	
	public static Item core_ots14;
	public static Item dollgun_ots14;
	public static Item core_type63;
	public static Item dollgun_type63;
	public static Item core_ak15;
	public static Item dollgun_ak15;
	public static Item core_aug;
	public static Item dollgun_aug;
	
	public static Item core_magal;
	public static Item dollgun_magal;
	
	
	
	//smg
	public static Item core_mp40;
	public static Item dollgun_mp40;
	public static Item core_idw;
	public static Item dollgun_idw;
	public static Item core_t100;
	public static Item dollgun_t100;
	public static Item core_m10;
	public static Item dollgun_m10;
	public static Item core_vector;
	public static Item dollgun_vector;
	public static Item core_ump9;
	public static Item dollgun_ump9;
	public static Item core_ump45;
	public static Item dollgun_ump45;
	public static Item core_tmp;
	public static Item dollgun_tmp;
	public static Item core_mab38;
	public static Item dollgun_mab38;
	public static Item core_z62;
	public static Item dollgun_z62;
	public static Item core_suomi;
	public static Item dollgun_suomi;
	public static Item core_ro635;
	public static Item dollgun_ro635;
	public static Item core_sr3mp;
	public static Item dollgun_sr3mp;
	public static Item core_vz61;
	public static Item dollgun_vz61;
	public static Item core_stenmk2;
	public static Item dollgun_stenmk2;
	public static Item core_gr_g36c;
	public static Item dollgun_gr_g36c;
	public static Item core_gr_mp5;
	public static Item dollgun_gr_mp5;
	public static Item core_ump40;
	public static Item dollgun_ump40;
	public static Item core_pps43;
	public static Item dollgun_pps43;
	public static Item core_mat49;
	public static Item dollgun_mat49;
	public static Item core_type79;
	public static Item dollgun_type79;
	public static Item core_kpist_m45;
	public static Item dollgun_kpist_m45;
	public static Item core_gr_mp7;
	public static Item dollgun_gr_mp7;
	public static Item core_p90;
	public static Item dollgun_p90;
	public static Item core_cms;
	public static Item dollgun_cms;
	public static Item core_fmg9;
	public static Item dollgun_fmg9;
	public static Item core_ar57;
	public static Item dollgun_ar57;
	public static Item core_m1928a1;
	public static Item dollgun_m1928a1;
	public static Item core_pp19;
	public static Item dollgun_pp19;
	public static Item core_ppsh41;
	public static Item dollgun_ppsh41;
	public static Item core_m3;
	public static Item dollgun_m3;
	
	public static Item core_apc9k;
	public static Item dollgun_apc9k;
	public static Item core_aug_para;
	public static Item dollgun_aug_para;
	public static Item core_micro_uzi;
	public static Item dollgun_micro_uzi;
	
	
	
	//rf
	public static Item core_m14;
	public static Item dollgun_m14;
	public static Item core_fn49;
	public static Item dollgun_fn49;
	public static Item core_wa2000;
	public static Item dollgun_wa2000;
	public static Item core_supersass;
	public static Item dollgun_supersass;
	public static Item core_gr_g28;
	public static Item dollgun_gr_g28;
	public static Item core_sks;
	public static Item dollgun_sks;
	public static Item core_m200;
	public static Item dollgun_m200;
	public static Item core_svd;
	public static Item dollgun_svd;
	public static Item core_sm1;
	public static Item dollgun_sm1;
	public static Item core_m1903;
	public static Item dollgun_m1903;
	public static Item core_sv98;
	public static Item dollgun_sv98;
	public static Item core_iws2000;
	public static Item dollgun_iws2000;
	public static Item core_type4_j;
	public static Item dollgun_type4_j;
	public static Item core_falcon;
	public static Item dollgun_falcon;
	public static Item core_kar98k;
	public static Item dollgun_kar98k;
	public static Item core_vsk94;
	public static Item dollgun_vsk94;
	public static Item core_ntw20;
	public static Item dollgun_ntw20;
	public static Item core_gm6;
	public static Item dollgun_gm6;
	public static Item core_m1_garand;
	public static Item dollgun_m1_garand;
	public static Item core_r93;
	public static Item dollgun_r93;
	
	public static Item core_general_liu;
	public static Item dollgun_general_liu;
	public static Item core_type81;
	public static Item dollgun_type81;
	public static Item core_dsr50;
	public static Item dollgun_dsr50;
	
	
	//mg
	public static Item core_pkm;
	public static Item dollgun_pkm;
	public static Item core_gr_mg4;
	public static Item dollgun_gr_mg4;
	public static Item core_mg34;
	public static Item dollgun_mg34;
	public static Item core_mg36;
	public static Item dollgun_mg36;
	public static Item core_negev;
	public static Item dollgun_negev;
	public static Item core_gr_mg5;
	public static Item dollgun_gr_mg5;
	public static Item core_gr_mg23;
	public static Item dollgun_gr_mg23;
	public static Item core_mg42;
	public static Item dollgun_mg42;
	public static Item core_dp28;
	public static Item dollgun_dp28;
	public static Item core_rpd;
	public static Item dollgun_rpd;
	public static Item core_pkp;
	public static Item dollgun_pkp;
	public static Item core_lewis;
	public static Item dollgun_lewis;
	public static Item core_lwmmg;
	public static Item dollgun_lwmmg;
	public static Item core_aek999;
	public static Item dollgun_aek999;
	public static Item core_m249saw;
	public static Item dollgun_m249saw;
	public static Item core_m1918;
	public static Item dollgun_m1918;
	public static Item core_kord;
	public static Item dollgun_kord;
	
	public static Item core_rpk16;
	public static Item dollgun_rpk16;
	
	
	//sg
	public static Item core_m1014;
	public static Item dollgun_m1014;
	public static Item core_aa12;
	public static Item dollgun_aa12;
	public static Item core_usas12;
	public static Item dollgun_usas12;
	public static Item core_m1897;
	public static Item dollgun_m1897;
	public static Item core_rmb93;
	public static Item dollgun_rmb93;
	public static Item core_m590;
	public static Item dollgun_m590;
	public static Item core_six12;
	public static Item dollgun_six12;
	public static Item core_am_ksg;
	public static Item dollgun_am_ksg;
	public static Item core_spas12;
	public static Item dollgun_spas12;
	public static Item core_sat8;
	public static Item dollgun_sat8;
	public static Item core_dp12;
	public static Item dollgun_dp12;
	
	//gl
	public static Item core_m79;
	public static Item dollgun_m79;
	public static Item core_m320;
	public static Item dollgun_m320;
	public static Item core_xm25;
	public static Item dollgun_xm25;
	
	public static Item core_lmt_m203_12inch;
	public static Item dollgun_lmt_m203_12inch;
	public static Item core_lmt_shorty_40;
	public static Item dollgun_lmt_shorty_40;
	
	
	//hoplites
	public static Item core_at4;
	public static Item dollgun_at4;
	
	public static Item core_ags30;
	public static Item dollgun_ags30;
	
	public static Item core_bgm71;
	public static Item dollgun_bgm71;
	
	public static Item core_m2m;
	public static Item dollgun_m2m;
	
	public static Item core_mk47;
	public static Item dollgun_mk47;
	
	public static Item core_2b14;
	public static Item dollgun_2b14;
	
	
	
	//drone
	public static Item item_drone;
	public static Item drone_command;
	public static Item drone_mortar;
	public static Item drone_airborne;
	public static Item drone_bomber;
	public static Item drone_decoy;
	
	
	
	
	//public static Item comand_drone;
	
	
	public static ArmorMaterial armor_gk_uniform;
	public static Item armor_gk_uniform_head;
	public static Item armor_gk_uniform_chest;
	public static Item armor_gk_uniform_legs;
	public static Item armor_gk_uniform_feet;
	
	
	public static ArmorMaterial pmc_armor;
	public static Item armor_pmc_head;
	public static Item armor_pmc_chest;
	public static Item armor_pmc_legs;
	public static Item armor_pmc_feet;
	
	public static ArmorMaterial anticollapse_armor;
	public static Item armor_anticollapse_head;
	public static Item armor_anticollapse_chest;
	public static Item armor_anticollapse_legs;
	public static Item armor_anticollapse_feet;
	
	public static ArmorMaterial army_h;
	public static Item armor_army_h_head;
	public static Item armor_army_h_chest;
	public static Item armor_army_h_legs;
	public static Item armor_army_h_feet;
	
	public static ArmorMaterial army_m;
	public static Item armor_army_m_head;
	public static Item armor_army_m_chest;
	public static Item armor_army_m_legs;
	public static Item armor_army_m_feet;
	
	
	public static Item ibc01;
	public static Item ibc02;
	public static Item ibc03;
	public static Item ibc04;
	public static Item dollgun_ibc04smg;
	public static Item ibc05;
	public static Item dollgun_ibc05ar;
	public static Item ibc06;
	public static Item dollgun_ibc06rf;
	public static Item ibc07;
	public static Item dollgun_ibc07hg;
	public static Item dollgun_ibc07sd;
	public static Item ibc08;
	public static Item dollgun_ibc08sw;
	public static Item dollgun_ibc08sd;
	public static Item ibc09;
	public static Item ibc10;
	public static Item ibc11;
	public static Item ibc12;
	public static Item ibc13;
	public static Item dollgun_ibc13glg;
	public static Item ibc14;
	public static Item dollgun_ibc14sw;
	
	public static Item ibc01turret;
	public static Item ibc10turret;
	
	public static Item ibc_jupiter;
	public static Item ibc_generator;
	
	
	public static Item ibc_boss01;
	public static Item ibc_boss02;
	public static Item dollgun_ibcboss02hg;
	public static Item dollgun_ibcboss02sw;
	
	public static Item ibc_boss03;
	
	public static Item ibc_boss04;
	public static Item dollgun_ibcboss04glg;
	
	public static Item ibc_boss05;
	
	public static Item ibc_boss06;
	
	public static Item ibc_boss07;
	public static Item dollgun_ibcboss07rf;
	
	public static Item ibc_boss08;
	
	
	public static Block bdoll_ibc01;
	public static Block bdoll_ibc02;
	public static Block bdoll_ibc03;
	public static Block bdoll_ibc04;
	public static Block bdoll_ibc05;
	public static Block bdoll_ibc06;
	public static Block bdoll_ibc07;
	
	public static Block bdoll_ibc08;
	public static Block bdoll_ibc09;
	public static Block bdoll_ibc01turret;
	public static Block bdoll_ibc10turret;
	public static Block bdoll_ibc11;
	public static Block bdoll_ibc12;
	public static Block bdoll_ibc13;
	public static Block bdoll_ibc14;
	public static Block bdoll_ibcml;
	public static Block bdoll_ibc_jupiter;
	public static Block bdoll_ibc_generator;
	public static Block bdoll_ibc_boss01;
	public static Block bdoll_ibc_boss02;
	public static Block bdoll_ibc_boss03;
	public static Block bdoll_ibc_boss04;
	public static Block bdoll_ibc_boss05;
	public static Block bdoll_ibc_boss06;
	public static Block bdoll_ibc_boss07;
	public static Block bdoll_ibc_boss08;
	
	
	
	
	public static Block b_spanwer_ibc01;
	public static Block b_spanwer_ibc04;
	public static Block b_spanwer_ibc05;
	public static Block b_spanwer_ibc06;
	public static Block b_spanwer_ibc07;
	public static Block b_spanwer_ibc13;
	public static Block b_spanwer_ibc14;
	
	
	public static Item socom_cyclops;
	public static Item socom_aegis;
	public static Item socom_cerynitis;
	public static Item socom_hydra;
	
	public static Block bsocom_cyclops;
	public static Block bsocom_aegis;
	public static Block bsocom_cerynitis;
	public static Block bsocom_hydra;
	
	
	
	
	public static Item elid_zombie;
	public static Item elid_skeleten;
	
	
	public static Item paradeus_nyto_obelisk;
	public static Item paradeus_nyto_polarday;
	public static Item paradeus_nyto_nomal;
	public static Item paradeus_nyto_eot_1;
	
	
	
	
	
	
	public static Item gk_kalina;
	public static Item mission_card_1;
	public static Item mission_card_2;
	public static Item mission_card_3;
	public static Item mission_card_4;
	public static Item mission_card_5;
	public static Item mission_card_6;
	
	public static Item helianthus;
	public static Item story_mission_card_1;
	public static Block story_mission_1_npc;
	
	public static Item story_mission_card_2;
	public static Block story_mission_2_npc;
	
	public static Item story_mission_card_3;
	
	public static Item gk_kryuger;
	
	public static Item gk_springfield;
	
	public static Item ve_weaponchange;
	
	public static Item ve_heli;
	public static Item ve_apc;
	public static Item ve_bike;
	public static Item ve_ifv;
	public static Item ve_truck;
	public static Item ve_hmmwv;
	public static Item ve_rhib;
	public static Item ve_cb90;
	
	public static Item npc_isomer;
	public static Block b_npc_isomer;
	
	
	public static Block bdoll_point;
	
	public static Potion collapse_potion;
	public static PotionType collapse_potiontype;
	
	
	protected static File configFile;
	public static boolean cfg_canspawn;
	public static int cfg_spawn_limit_s;
	public static boolean cfg_Prevention_of_lost_child;
	public static boolean cfg_hud;
	public static boolean cfg_building;
	public static int cfg_spawner_limit;
	public static int cfg_spawner_time;
	public static int cfg_spawner_range;
	public static int cfg_spawner_limit_easy;
	public static int cfg_spawner_limit_normal;
	public static int cfg_spawner_limit_hard;
	public static boolean cfg_canspawn_underground;
	public static boolean cfg_spawner_one_time_onry;
	public static int cfg_building_rand;//200
	public static int cfg_building_rand_goods;//100
	public static int cfg_building_rand_base;//1200
	
	public static boolean cfg_building_intervals;
	public static int cfg_building_base_range;//896
	
	public static int cfg_biome_collapse;//50
	
	public static int cfg_doll_followrange;
	public static boolean cfg_spawn_original;
	public static boolean cfg_spawn_hell;
	public static boolean cfg_friendlyfire_player_to_doll;
	
	public static boolean cfg_relief_recipe;
	
	public static boolean cfg_vehicle_breakblock;
	
	public static boolean cfg_doll_other_vanillapotion;
	
	
	
	public static String cfg_key_up;
	public static String cfg_key_down;
	public static String cfg_key_right;
	public static String cfg_key_left;
	
	public static boolean cfg_doll_debag;
	
	public static boolean cfg_worldlevel_debag;
	
	public static final CreativeTabs tabgg = new GFCreativeTab("GFTab");
	public static final CreativeTabs tabgg_am = new GFCreativeTab_am("GFTab_am");
	public static final CreativeTabs tabgg_gun = new GFCreativeTab_gun("GFTab_gun");
	public static final CreativeTabs tabgg_core = new GFCreativeTab_core("GFTab_core");
	public static final CreativeTabs tabgg_mob = new GFCreativeTab_mob("GFTab_mob");
	public static final CreativeTabs tabgg_block = new GFCreativeTab_block("GFTab_block");
	public static final CreativeTabs tabgg_building = new GFCreativeTab_building("GFTab_building");
	
	public static int hg_id = 0;
	public static int[] hg_rare = new int[1024];
	public static Item[] hg_item = new Item[1024];
	
	public static int ar_id = 0;
	public static int[] ar_rare = new int[1024];
	public static Item[] ar_item = new Item[1024];
	public static int ar_id_gun = 0;
	public static Item[] ar_item_gun = new Item[1024];
	
	public static int smg_id = 0;
	public static int[] smg_rare = new int[1024];
	public static Item[] smg_item = new Item[1024];
	
	public static int rf_id = 0;
	public static int[] rf_rare = new int[1024];
	public static Item[] rf_item = new Item[1024];
	
	public static int lmg_id = 0;
	public static int[] lmg_rare = new int[1024];
	public static Item[] lmg_item = new Item[1024];
	
	public static int sg_id = 0;
	public static int[] sg_rare = new int[1024];
	public static Item[] sg_item = new Item[1024];
	
	public static int gl_id = 0;
	public static int[] gl_rare = new int[1024];
	public static Item[] gl_item = new Item[1024];
	
	public static boolean isDebug = false;
	
	public static int difficult_level = -1;
	public static int difficult_doll_kazu = 0;
	
	
	public static final Logger logger = LogManager.getLogger(MOD_ID);
	public static GFConfig CONFIG = new GFConfig();
	public static Configuration config;
	
	public static float test_x = 0;//-90
	public static float test_y = 0;//80
	public static float test_z = 0;
	
	public static float test_2_x = 0;
	public static float test_2_y = 0;
	public static float test_2_z = 0;
	
	public static final StatBasic Doll_kazu = (StatBasic)(new StatBasic("hmggirlfront.stat.doll_kazu", new TextComponentTranslation("hmggirlfront.stat.doll_kazu", new Object[0])))
			.registerStat();
	
	@Mod.EventHandler
    public void construct(FMLConstructionEvent event) {
        MinecraftForge.EVENT_BUS.register(this);
        GFPacketHandler.init();
    }

	@Mod.EventHandler
	public void preInit(FMLPreInitializationEvent pEvent) {
		configFile = pEvent.getSuggestedConfigurationFile();
		Configuration lconf = new Configuration(pEvent.getSuggestedConfigurationFile());
		lconf.load();
		/*isDebug	= lconf.get("Debug", "isDebug", false).getBoolean(false);
		cfg_canspawn	= lconf.get("entity", "cfg_canspawn", true).getBoolean(true);
		cfg_Prevention_of_lost_child	= lconf.get("entity", "cfg_Prevention_of_lost_child", true).getBoolean(true);
		cfg_spawn_limit_s	= lconf.get("entity", "cfg_spawn_limit_soldier", 20).getInt(20);
		cfg_spawn_original	= lconf.get("entity", "cfg_spawn_original", false).getBoolean(false);
		cfg_hud	= lconf.get("HUD", "cfg_hud", true).getBoolean(true);
		cfg_spawner_limit	= lconf.get("spawner", "cfg_spawner_limit", 3).getInt(3);
		cfg_spawner_time	= lconf.get("spawner", "cfg_spawner_time", 600).getInt(600);
		cfg_spawner_range	= lconf.get("spawner", "cfg_spawner_range", 40).getInt(40);
		cfg_building	= lconf.get("building", "cfg_building", true).getBoolean(true);
		cfg_building_rand	= lconf.get("building", "cfg_building_rand", 200).getInt(200);
		cfg_building_rand_base	= lconf.get("building", "cfg_building_rand_base", 1200).getInt(1200);
		cfg_doll_followrange	= lconf.get("doll", "cfg_doll_followrange", 3).getInt(3);
		
		cfg_key_up	= lconf.get("doll", "cfg_key_up", "UP").getString();
		cfg_key_down	= lconf.get("doll", "cfg_key_down", "DOWN").getString();
		cfg_key_right	= lconf.get("doll", "cfg_key_right", "RIGHT").getString();
		cfg_key_left	= lconf.get("doll", "cfg_key_left", "LEFT").getString();*/
		lconf.save();
		
		
		loadConfig();
		syncConfig();
		
		
		
		{
			 //ポーションの登録。登録文字列はMOD内で被らなければ何でも良い。
			collapse_potion = new Collapse_Potion().registerPotionAttributeModifier(SharedMonsterAttributes.ARMOR, MathHelper.getRandomUUID().toString(), 1.0D, 1);
			ForgeRegistries.POTIONS.register(collapse_potion);
	        //GameRegistry.register(collapse_potion, new ResourceLocation(MOD_ID, "collapse_potion"));
	        //ポーションタイプの登録。登録文字列はMOD内で被らなければ何でも良い。
	        collapse_potiontype = new PotionType("collapse_potion", new PotionEffect[] {new PotionEffect(collapse_potion, 2400)}).setRegistryName("collapse_potion");
	       // GameRegistry.register(collapse_potiontype, new ResourceLocation(MOD_ID, "collapse_potion"));
	        ForgeRegistries.POTION_TYPES.register(collapse_potiontype);
		}
	}
	
	@SubscribeEvent
	public static void registerSoundEvents(RegistryEvent.Register<SoundEvent> event) {	
		GFSoundEvent.registerSounds(event);
	}
	
	@SubscribeEvent
    protected static void registerItems(RegistryEvent.Register<Item> event){
		System.out.println(String.format("input"));
		GFItemRegistry.registry(INSTANCE, event);
		GFItemRegistry2.registry(INSTANCE, event);
		GFItemRegistry3.registry(INSTANCE, event);
		GFItemBlockRegistry.registry(INSTANCE, event);
		
		GFItemAttachmentRegistry.registry(INSTANCE, event);
		
		GFItemGunRegistry.registry(INSTANCE, event);
		GFItemGunSMG_Registry.registry(INSTANCE, event);
		GFItemGunAR_Registry.registry(INSTANCE, event);
		GFItemGunRF_Registry.registry(INSTANCE, event);
		GFItemGunMG_Registry.registry(INSTANCE, event);
		GFItemGunSG_Registry.registry(INSTANCE, event);
		GFItemGunGL_Registry.registry(INSTANCE, event);
		
		GFItemGunHL_Registry.registry(INSTANCE, event);
		
		GFItemDrone_Registry.registry(INSTANCE, event);
	}
	
	@SubscribeEvent
    protected static void registerBlocks(RegistryEvent.Register<Block> event){
		GFBlockRegistry.registry(INSTANCE, event);
	}
	
	
	public static Biome Collapse;
	public static Biome Collapse_DEEP;
    @SubscribeEvent
    public static void registerBiome(RegistryEvent.Register<Biome> event) {
    	{
    		Collapse = new CollapseBiome(CollapseBiome.Type.NORMAL, new Biome.BiomeProperties("Collapse")
    				.setBaseHeight(0.01F).setHeightVariation(0.1F).setTemperature(0.5F).setRainfall(0.9F).setWaterColor(14745518).setRainDisabled());
        	Collapse.setRegistryName(mod_GirlFront.MOD_ID, "Collapse");
            event.getRegistry().register(Collapse);
            //BiomeDictionary.addTypes(Collapse, BiomeDictionary.Type.DRY, BiomeDictionary.Type.PLAINS, BiomeDictionary.Type.WET, BiomeDictionary.Type.FOREST, BiomeDictionary.Type.SANDY);
            BiomeDictionary.addTypes(Collapse, BiomeDictionary.Type.FOREST, BiomeDictionary.Type.VOID);
            BiomeManager.addBiome(BiomeType.WARM, new BiomeEntry(Collapse, cfg_biome_collapse));//cfg_biome_collapse
            BiomeManager.addSpawnBiome(Collapse);
    	}
    	{
    		Collapse_DEEP = new CollapseBiome(CollapseBiome.Type.DEEP, new Biome.BiomeProperties("Collapse_DEEP")
    				.setBaseHeight(0.01F).setHeightVariation(0.1F).setTemperature(0.5F).setRainfall(0.9F).setWaterColor(4145725).setRainDisabled());
    		Collapse_DEEP.setRegistryName(mod_GirlFront.MOD_ID, "Collapse_DEEP");
            event.getRegistry().register(Collapse_DEEP);
            //BiomeDictionary.addTypes(Collapse, BiomeDictionary.Type.DRY, BiomeDictionary.Type.PLAINS, BiomeDictionary.Type.WET, BiomeDictionary.Type.FOREST, BiomeDictionary.Type.SANDY);
            BiomeDictionary.addTypes(Collapse_DEEP, BiomeDictionary.Type.VOID);
            BiomeManager.addBiome(BiomeType.WARM, new BiomeEntry(Collapse_DEEP, cfg_biome_collapse/2));//cfg_biome_collapse
            BiomeManager.addSpawnBiome(Collapse_DEEP);
    	}
    }
	
	
	
	@SubscribeEvent
    @SideOnly(Side.CLIENT)
    public void registerModels(ModelRegistryEvent event) {
		GFModelRegistry.registry(INSTANCE, event);
		
	}
	
	
	
	@EventHandler
	public void init(FMLInitializationEvent pEvent) {
		int D = Short.MAX_VALUE;
		
		//GFRecipeRegistrys.recipe();
		GFRecipeRegistrys_New.recipe();
		GFEntityRegistrys.registrys();
		NetworkRegistry.INSTANCE.registerGuiHandler(this.INSTANCE, new GuiHandlerGF());
		
		FMLCommonHandler.instance().bus().register(this);
		proxy.reisterRenderers();
		proxy.getClient();
		proxy.getCilentWorld();
		proxy.registerTileEntity();
		proxy.InitRendering();
		proxy.jumped();
		proxy.keyx();
		proxy.keyg();
		proxy.leftclick();
		proxy.rightclick();
		//proxy.canattack();
		proxy.left();
		proxy.right();
		proxy.up();
		proxy.down();
		proxy.ProxyFile();
		proxy.getEntityPlayerInstance();
		MinecraftForge.EVENT_BUS.register(new GFEventLiving());
		MinecraftForge.EVENT_BUS.register(new GFEventArmor());
		MinecraftForge.EVENT_BUS.register(new GFEventWorld());
		
		//MinecraftForge.EVENT_BUS.register(new GFEventMAV());
		
		 if (pEvent.getSide().isClient()) {
			 MinecraftForge.EVENT_BUS.register(new GFEventHUD());
			 MinecraftForge.EVENT_BUS.register(new GFEventSOFLAM());
		 }
		 
		 MinecraftForge.EVENT_BUS.register(new GFEventLevel_WorldIn());
		 
		 if(cfg_building){
				GameRegistry.registerWorldGenerator(new WorldGenerator_BulldingBase(),10);
		}
	}
	public static void loadConfig()
	{
		File configFile = new File(Loader.instance().getConfigDir(), "hmggirlfront.cfg");
		if (!configFile.exists())
		{
			try
			{
				configFile.createNewFile();
			} catch (Exception e)
			{
				logger.warn("Could not create a hmggirlfront config file.");
				logger.warn(e.getLocalizedMessage());
			}
		}
		config = new Configuration(configFile);
		config.load();
	}

	public static void syncConfig()
	{
		CONFIG.init(config, INSTANCE);
		config.save();
	}

	@SubscribeEvent
	public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent event)
	{
		if (event.getModID().equalsIgnoreCase(mod_GirlFront.MOD_ID))
		{
			mod_GirlFront.syncConfig();
		}
	}
}

	
	
