2014-12-15 00:11:48 +00:00
package com.cricketcraft.chisel ;
2014-12-14 20:05:39 +00:00
2015-01-07 19:50:18 -05:00
import java.io.File ;
import java.util.ArrayList ;
import java.util.List ;
import net.minecraft.block.Block ;
import net.minecraft.entity.player.EntityPlayer ;
import net.minecraft.item.Item ;
import net.minecraft.tileentity.TileEntity ;
import net.minecraft.world.World ;
import net.minecraftforge.common.MinecraftForge ;
import net.minecraftforge.common.config.Configuration ;
2014-12-15 00:11:48 +00:00
import com.cricketcraft.chisel.block.BlockCarvable ;
import com.cricketcraft.chisel.block.tileentity.TileEntityAutoChisel ;
import com.cricketcraft.chisel.block.tileentity.TileEntityPresent ;
import com.cricketcraft.chisel.client.gui.GuiAutoChisel ;
import com.cricketcraft.chisel.client.gui.GuiChisel ;
import com.cricketcraft.chisel.client.gui.GuiPresent ;
import com.cricketcraft.chisel.compat.Compatibility ;
import com.cricketcraft.chisel.compat.FMPIntegration ;
import com.cricketcraft.chisel.compat.ModIntegration ;
2015-01-08 05:46:10 -05:00
import com.cricketcraft.chisel.config.Configurations ;
import com.cricketcraft.chisel.init.ChiselBlocks ;
import com.cricketcraft.chisel.init.ChiselTabs ;
2015-01-08 16:31:13 -05:00
import com.cricketcraft.chisel.init.Features ;
2014-12-15 00:11:48 +00:00
import com.cricketcraft.chisel.inventory.ContainerAutoChisel ;
import com.cricketcraft.chisel.inventory.ContainerChisel ;
import com.cricketcraft.chisel.inventory.ContainerPresent ;
import com.cricketcraft.chisel.inventory.InventoryChiselSelection ;
import com.cricketcraft.chisel.proxy.CommonProxy ;
import com.cricketcraft.chisel.utils.General ;
2015-01-05 19:15:35 -05:00
import com.cricketcraft.chisel.world.GeneratorChisel ;
2015-01-07 19:50:18 -05:00
2014-12-14 20:05:39 +00:00
import cpw.mods.fml.client.event.ConfigChangedEvent ;
import cpw.mods.fml.common.FMLCommonHandler ;
import cpw.mods.fml.common.FMLLog ;
import cpw.mods.fml.common.Mod ;
import cpw.mods.fml.common.Mod.EventHandler ;
import cpw.mods.fml.common.Mod.Instance ;
import cpw.mods.fml.common.SidedProxy ;
2015-01-07 19:50:18 -05:00
import cpw.mods.fml.common.event.FMLInitializationEvent ;
import cpw.mods.fml.common.event.FMLInterModComms ;
import cpw.mods.fml.common.event.FMLMissingMappingsEvent ;
2014-12-14 20:05:39 +00:00
import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping ;
2015-01-07 19:50:18 -05:00
import cpw.mods.fml.common.event.FMLPostInitializationEvent ;
import cpw.mods.fml.common.event.FMLPreInitializationEvent ;
2014-12-14 20:05:39 +00:00
import cpw.mods.fml.common.eventhandler.SubscribeEvent ;
import cpw.mods.fml.common.network.IGuiHandler ;
import cpw.mods.fml.common.network.NetworkRegistry ;
import cpw.mods.fml.common.registry.GameRegistry ;
import cpw.mods.fml.common.registry.GameRegistry.Type ;
import cpw.mods.fml.relauncher.Side ;
import cpw.mods.fml.relauncher.SideOnly ;
2014-04-21 19:13:15 +01:00
2015-01-07 19:50:18 -05:00
@Mod ( modid = Chisel . MOD_ID , name = Chisel . MOD_NAME , version = Chisel . VERSION , guiFactory = "com.cricketcraft.chisel.client.gui.GuiFactory" , dependencies = "after:ForgeMultipart;after:Thaumcraft" )
public class Chisel {
public static final List < String > modsSupported = new ArrayList < String > ();
public static final String MOD_ID = "chisel" ;
public static final BlockCarvable . SoundType soundTempleFootstep = new BlockCarvable . SoundType ( "dig.stone" , MOD_ID + ":step.templeblock" , 1 . 0f , 1 . 0f );
public static final String MOD_NAME = "Chisel 2" ;
public static final String VERSION = "2.2.2" ;
public static final BlockCarvable . SoundType soundHolystoneFootstep = new BlockCarvable . SoundType ( "holystone" , 1 . 0f , 1 . 0f );
public static final BlockCarvable . SoundType soundMetalFootstep = new BlockCarvable . SoundType ( "metal" , 1 . 0f , 1 . 0f );
public static boolean multipartLoaded = false ;
2015-01-08 01:59:50 -05:00
public static int renderEldritchId ;
public static int renderCTMId ;
public static int renderCarpetId ;
public static int renderAutoChiselId ;
2015-01-07 19:50:18 -05:00
@Instance ( MOD_ID )
public static Chisel instance ;
@SidedProxy ( clientSide = "com.cricketcraft.chisel.proxy.ClientProxy" , serverSide = "com.cricketcraft.chisel.proxy.CommonProxy" )
public static CommonProxy proxy ;
@SideOnly ( Side . CLIENT )
private static void initModIntegration () {
if ( Configurations . enableFMP ) {
ModIntegration . addMod ( FMPIntegration . class );
}
ModIntegration . init ();
}
@EventHandler
public void missingMapping ( FMLMissingMappingsEvent event ) {
BlockNameConversion . init ();
for ( MissingMapping m : event . get ()) {
// This bug was introduced along with Chisel 1.5.2, and was fixed in
// 1.5.3.
// Ice Stairs were called null.0-7 instead of other names, and
// Marble/Limestone stairs did not exist.
// This fixes the bug.
if ( m . name . startsWith ( "null." ) && m . name . length () == 6 && m . type == Type . BLOCK ) {
m . warn (); // (Action.WARN);
}
// Fix mapping of snakestoneSand, snakestoneStone, limestoneStairs,
// marbleStairs when loading an old (1.5.4) save
else if ( m . type == Type . BLOCK ) {
final Block block = BlockNameConversion . findBlock ( m . name );
if ( block != null ) {
m . remap ( block );
FMLLog . getLogger (). info ( "Remapping block " + m . name + " to " + General . getName ( block ));
} else
FMLLog . getLogger (). warn ( "Block " + m . name + " could not get remapped." );
} else if ( m . type == Type . ITEM ) {
final Item item = BlockNameConversion . findItem ( m . name );
if ( item != null ) {
m . remap ( item );
FMLLog . getLogger (). info ( "Remapping item " + m . name + " to " + General . getName ( item ));
} else
FMLLog . getLogger (). warn ( "Item " + m . name + " could not get remapped." );
}
}
}
@EventHandler
public void preInit ( FMLPreInitializationEvent event ) {
modsSupported . add ( "Thaumcraft" );
2015-01-08 16:31:13 -05:00
modsSupported . add ( "AWWayOfTime" );
2015-01-07 22:33:27 -08:00
2015-01-08 16:31:13 -05:00
/*
* These mods will enable no blocks in chisel. IF YOU REENABLE THESE BLOCKS, THE GAME WILL CRASH UPON TRYING TO RENDER MISSING BLOCK IN THE CREATIVE TABS! See issue #106 for more info! ~Drull
*
* modsSupported.add("Twilight Forest"); modsSupported.add("appliedenergistics2"); modsSupported.add("Railcraft");
*/
2015-01-07 19:50:18 -05:00
File configFile = event . getSuggestedConfigurationFile ();
Configurations . configExists = configFile . exists ();
Configurations . config = new Configuration ( configFile );
Configurations . config . load ();
Configurations . refreshConfig ();
2015-01-08 15:27:15 -05:00
ChiselTabs . preInit ();
2015-01-08 05:46:10 -05:00
Features . preInit ();
2015-01-07 19:50:18 -05:00
PacketHandler . init ();
proxy . preInit ();
}
@EventHandler
public void init ( FMLInitializationEvent event ) {
2015-01-08 05:46:10 -05:00
Features . init ();
2015-01-07 19:50:18 -05:00
NetworkRegistry . INSTANCE . registerGuiHandler ( this , new IGuiHandler () {
@Override
public Object getServerGuiElement ( int ID , EntityPlayer player , World world , int x , int y , int z ) {
switch ( ID ) {
case 0 :
return new ContainerChisel ( player . inventory , new InventoryChiselSelection ( null ));
case 1 :
TileEntity tileentity = world . getTileEntity ( x , y , z );
if ( tileentity instanceof TileEntityAutoChisel )
return new ContainerAutoChisel ( player . inventory , ( TileEntityAutoChisel ) tileentity );
case 2 :
TileEntity tileEntity = world . getTileEntity ( x , y , z );
if ( tileEntity instanceof TileEntityPresent )
return new ContainerPresent ( player . inventory , ( TileEntityPresent ) tileEntity );
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 GuiChisel ( player . inventory , new InventoryChiselSelection ( null ));
case 1 :
TileEntity tileentity = world . getTileEntity ( x , y , z );
if ( tileentity instanceof TileEntityAutoChisel )
return new GuiAutoChisel ( player . inventory , ( TileEntityAutoChisel ) tileentity );
case 2 :
TileEntity tileEntity = world . getTileEntity ( x , y , z );
if ( tileEntity instanceof TileEntityPresent )
return new GuiPresent ( player . inventory , ( TileEntityPresent ) tileEntity );
default :
return null ;
}
}
});
2015-01-08 16:31:13 -05:00
registerWorldgen ( Features . MARBLE , ChiselBlocks . marble , Configurations . marbleAmount );
registerWorldgen ( Features . LIMESTONE , ChiselBlocks . limestone , Configurations . limestoneAmount );
registerWorldgen ( Features . ANDESITE , ChiselBlocks . andesite , Configurations . andesiteAmount );
registerWorldgen ( Features . GRANITE , ChiselBlocks . granite , Configurations . graniteAmount );
registerWorldgen ( Features . DIORITE , ChiselBlocks . diorite , Configurations . dioriteAmount );
2015-01-07 19:50:18 -05:00
if ( event . getSide () == Side . CLIENT ) {
initModIntegration ();
}
proxy . init ();
MinecraftForge . EVENT_BUS . register ( this );
FMLCommonHandler . instance (). bus (). register ( instance );
FMLInterModComms . sendMessage ( "Waila" , "register" , "com.cricketcraft.chisel.Waila.register" );
}
2015-01-08 16:31:13 -05:00
private void registerWorldgen ( Features feature , Block block , int amount ) {
if ( feature . enabled ()) {
GameRegistry . registerWorldGenerator ( new GeneratorChisel ( block , 32 , amount ), 1000 );
}
}
2015-01-07 19:50:18 -05:00
@EventHandler
public void postInit ( FMLPostInitializationEvent event ) {
2015-01-08 15:27:15 -05:00
ChiselTabs . postInit ();
2015-01-07 19:50:18 -05:00
ModIntegration . postInit ();
Compatibility . init ( event );
}
@SubscribeEvent
public void onConfigChanged ( ConfigChangedEvent . OnConfigChangedEvent event ) {
if ( event . modID . equals ( "chisel" )) {
Configurations . refreshConfig ();
}
}
2014-04-21 19:13:15 +01:00
}