diff --git a/build.gradle b/build.gradle index ea7290a6..b23b1fe6 100644 --- a/build.gradle +++ b/build.gradle @@ -32,6 +32,10 @@ repositories { name "RX14" url "http://mvn.rx14.co.uk/repo/" } + maven { + name "Tterrag" + url "http://maven.tterrag.com" + } } apply plugin: 'forge' @@ -55,7 +59,9 @@ dependencies { compile 'com.mod-buildcraft:buildcraft:6.4.16:dev' compile 'net.industrial-craft:industrialcraft-2:2.2.727-experimental:api' compile 'Azanor:Thaumcraft:4.2.3.5:deobf@jar' - compile name: "Botania" , group: "vazkii.botania", version: "r1.6-190.6", classifier: "deobf" + compile 'team.chisel:Chisel:2.9.0.3:deobf' + compile 'team.chisel.ctmlib:CTMLib:MC1.7.10-1.3.0.2:deobf' + compile name: "Botania", group: "vazkii.botania", version: "r1.6-190.6", classifier: "deobf" compile files("libs/Railcraft_1.7.10-9.7.0.0-dev.jar") } diff --git a/src/main/java/steamcraft/common/Steamcraft.java b/src/main/java/steamcraft/common/Steamcraft.java index 4d86f2e9..903fba94 100755 --- a/src/main/java/steamcraft/common/Steamcraft.java +++ b/src/main/java/steamcraft/common/Steamcraft.java @@ -12,50 +12,31 @@ */ package steamcraft.common; -import java.io.File; - -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.Item; -import net.minecraft.world.gen.structure.MapGenStructureIO; - +import boilerplate.client.GuiHandler; +import boilerplate.common.compathandler.FMPCompatHandler; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; 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; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLMissingMappingsEvent; +import cpw.mods.fml.common.event.*; import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.GameRegistry.Type; - +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.world.gen.structure.MapGenStructureIO; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.MinecraftForge; - -import boilerplate.client.GuiHandler; -import boilerplate.common.compathandler.FMPCompatHandler; import steamcraft.common.compat.CompatabilityLayer; +import steamcraft.common.compat.CompatibilityHandler; import steamcraft.common.config.Config; import steamcraft.common.config.ConfigGeneral; import steamcraft.common.config.ConfigWorldGen; -import steamcraft.common.init.InitAchievements; -import steamcraft.common.init.InitBiomes; -import steamcraft.common.init.InitBlocks; -import steamcraft.common.init.InitEntities; -import steamcraft.common.init.InitItems; -import steamcraft.common.init.InitMisc; -import steamcraft.common.init.InitPackets; -import steamcraft.common.init.InitRecipes; -import steamcraft.common.lib.BucketHandler; -import steamcraft.common.lib.CommandSteamcraft; -import steamcraft.common.lib.CreativeTabSteamcraft; -import steamcraft.common.lib.LoggerSteamcraft; -import steamcraft.common.lib.ModInfo; +import steamcraft.common.init.*; +import steamcraft.common.lib.*; import steamcraft.common.lib.events.EventHandlerClient; import steamcraft.common.lib.events.EventHandlerFML; import steamcraft.common.lib.events.EventHandlerForge; @@ -65,6 +46,8 @@ import steamcraft.common.worldgen.structure.MapGenCustomScatteredFeature; import steamcraft.common.worldgen.structure.StructureUndercityPieces; import steamcraft.common.worldgen.structure.StructureUndercityStart; +import java.io.File; + /** * @author Surseance * @commentary by Arnold @@ -96,6 +79,7 @@ public class Steamcraft MinecraftForge.EVENT_BUS.register(new BucketHandler()); CompatabilityLayer.initCompatItems(); + CompatibilityHandler.preInit(event); LoggerSteamcraft.info("Finished Preinit"); } @@ -134,6 +118,7 @@ public class Steamcraft InitBiomes.init(); FMPCompatHandler.doRegister(); + CompatibilityHandler.init(event); LoggerSteamcraft.info("Finished Init"); } @@ -158,6 +143,7 @@ public class Steamcraft if (Loader.isModLoaded("ImmersiveEngineering")) LoggerSteamcraft.info("Evening to the distingushed ladies and gentlemen of the ImmersiveEngineering club!"); + CompatibilityHandler.postInit(event); /* * if(event.getSide() == Side.CLIENT) { // Autopopulate item/block lists * from creative tab Iterator iterator = Item.itemRegistry.iterator(); diff --git a/src/main/java/steamcraft/common/compat/CompatibilityHandler.java b/src/main/java/steamcraft/common/compat/CompatibilityHandler.java new file mode 100644 index 00000000..c0bb4320 --- /dev/null +++ b/src/main/java/steamcraft/common/compat/CompatibilityHandler.java @@ -0,0 +1,64 @@ +package steamcraft.common.compat; + +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLPostInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import steamcraft.common.compat.chisel.ChiselCompat; +import steamcraft.common.lib.LoggerSteamcraft; + +import java.util.ArrayList; + +/** + * Created by Skylar on 9/2/2015. + */ +public class CompatibilityHandler +{ + private static ArrayList MODCOMPAT_ENABLED = new ArrayList(); + + public static ArrayList getModCompat() { + if(MODCOMPAT_ENABLED.isEmpty()) { + MODCOMPAT_ENABLED.add(new ChiselCompat()); + } + return MODCOMPAT_ENABLED; + } + + public static void preInit(FMLPreInitializationEvent event) + { + for(ModCompat modCompat : getModCompat()) + { + if(!modCompat.areRequirementsMet() && modCompat.getIsActive()) + { + modCompat.setIsActive(false); + LoggerSteamcraft.error("Requirements are not met for " + modCompat.getName() + ". Deactivating"); + } + if(modCompat.getIsActive()) + { + LoggerSteamcraft.info("Loading " + modCompat.getName() + " module"); + } + } + + for(ModCompat modCompat : getModCompat()) + { + if(modCompat.getIsActive()) + modCompat.preInit(event); + } + } + + public static void init(FMLInitializationEvent event) + { + for(ModCompat modCompat : getModCompat()) + { + if(modCompat.getIsActive()) + modCompat.init(event); + } + } + + public static void postInit(FMLPostInitializationEvent event) + { + for(ModCompat modCompat : getModCompat()) + { + if(modCompat.getIsActive()) + modCompat.postInit(event); + } + } +} diff --git a/src/main/java/steamcraft/common/compat/ModCompat.java b/src/main/java/steamcraft/common/compat/ModCompat.java new file mode 100644 index 00000000..ec561934 --- /dev/null +++ b/src/main/java/steamcraft/common/compat/ModCompat.java @@ -0,0 +1,51 @@ +package steamcraft.common.compat; + +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLPostInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; + +/** + * Created by Skylar on 9/2/2015. + */ +public abstract class ModCompat +{ + boolean isActive = true; + + public abstract String getName(); + + public boolean areRequirementsMet() { + return true; + } + + + + public String dependencies() + { + return ""; + } + + public void preInit(FMLPreInitializationEvent fmlPreInitializationEvent) + { + + } + + public void init(FMLInitializationEvent fmlInitializationEvent) + { + + } + + public void postInit(FMLPostInitializationEvent fmlPostInitializationEvent) + { + + } + + public void setIsActive(Boolean isActive) + { + this.isActive = isActive; + } + + public Boolean getIsActive() + { + return isActive; + } +} diff --git a/src/main/java/steamcraft/common/compat/chisel/ChiselCompat.java b/src/main/java/steamcraft/common/compat/chisel/ChiselCompat.java new file mode 100644 index 00000000..a2094005 --- /dev/null +++ b/src/main/java/steamcraft/common/compat/chisel/ChiselCompat.java @@ -0,0 +1,33 @@ +package steamcraft.common.compat.chisel; + +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.registry.GameRegistry; +import steamcraft.common.compat.ModCompat; + +/** + * Created by Skylar on 9/2/2015. + */ +public class ChiselCompat extends ModCompat +{ + public ItemSteamChisel itemSteamChisel; + + @Override + public String getName() + { + return "Chisel"; + } + + @Override + public boolean areRequirementsMet() + { + return Loader.isModLoaded("chisel"); + } + + @Override + public void preInit(FMLPreInitializationEvent event) + { + itemSteamChisel = new ItemSteamChisel(); + GameRegistry.registerItem(itemSteamChisel, itemSteamChisel.getUnlocalizedName()); + } +} diff --git a/src/main/java/steamcraft/common/compat/chisel/ItemSteamChisel.java b/src/main/java/steamcraft/common/compat/chisel/ItemSteamChisel.java new file mode 100644 index 00000000..452f90ef --- /dev/null +++ b/src/main/java/steamcraft/common/compat/chisel/ItemSteamChisel.java @@ -0,0 +1,122 @@ +package steamcraft.common.compat.chisel; + +import boilerplate.common.baseclasses.items.BaseSteamItem; +import com.cricketcraft.chisel.api.IChiselItem; +import com.cricketcraft.chisel.api.carving.ICarvingVariation; +import cpw.mods.fml.common.Optional; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidContainerItem; +import steamcraft.common.Steamcraft; +import steamcraft.common.lib.ModInfo; + +import java.util.List; + +/** + * Created by Skylar on 9/2/2015. + */ +@Optional.Interface(iface = "com.cricketcraft.chisel.api.IChiselItem", modid = "chisel") +public class ItemSteamChisel extends BaseSteamItem implements IChiselItem +{ + + public ItemSteamChisel() + { + super(32000); + this.setCreativeTab(Steamcraft.tabSC2); + this.setUnlocalizedName("itemChiselSteam"); + this.setFull3D(); + this.setNoRepair(); + } + + @SideOnly(Side.CLIENT) + @Override + public void registerIcons(IIconRegister par1IconRegister) + { + this.itemIcon = par1IconRegister.registerIcon(ModInfo.PREFIX + "tools/" + this.getUnlocalizedName().substring(5)); + } + + @SideOnly(Side.CLIENT) + @SuppressWarnings("unchecked") + public void getSubItems(Item item, CreativeTabs creativeTabs, List list) { + list.add(new ItemStack(item, 1)); + if(item instanceof IFluidContainerItem) + { + ItemStack itemStack = new ItemStack(item, 1); + IFluidContainerItem iFluidContainerItem = (IFluidContainerItem)item; + iFluidContainerItem.fill(itemStack, FluidRegistry.getFluidStack("steam", iFluidContainerItem.getCapacity(itemStack)), true); + list.add(itemStack); + } + } + + @SuppressWarnings("all") + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean flag) + { + if ((this.getFluidAmount(stack) > 0)) + { + String str = this.getFluid(stack).getFluid().getName(); + int amount = this.getFluidAmount(stack); + + list.add("Holding " + amount + "mB of " + str); + } + else + list.add("Empty"); + } + + + @Override + @Optional.Method(modid = "chisel") + public boolean canOpenGui(World world, EntityPlayer player, ItemStack chisel) + { + return getFluidLevel(chisel) > 100; + } + + @Override + @Optional.Method(modid = "chisel") + public boolean onChisel(World world, ItemStack chisel, ICarvingVariation target) + { + return consumeSteamFromCanister(chisel, 100); + } + + @Override + @Optional.Method(modid = "chisel") + public boolean canChisel(World world, ItemStack chisel, ICarvingVariation target) + { + return getFluidLevel(chisel) > 100; + } + + @Override + @Optional.Method(modid = "chisel") + public boolean canChiselBlock(World world, EntityPlayer player, int x, int y, int z, Block block, int metadata) + { + ItemStack currentItem = player.getCurrentEquippedItem(); + return getFluidLevel(currentItem) > 100; + } + + @Override + @Optional.Method(modid = "chisel") + public boolean hasModes(ItemStack chisel) + { + return false; + } + + private int getFluidLevel(ItemStack chisel) + { + if (chisel != null && chisel.getItem() instanceof IFluidContainerItem) + { + FluidStack fluidStack = ((IFluidContainerItem) chisel.getItem()).getFluid(chisel); + return fluidStack != null ? fluidStack.amount : 0; + } + return 0; + } +} diff --git a/src/main/java/steamcraft/common/init/InitItems.java b/src/main/java/steamcraft/common/init/InitItems.java index 3fcb6715..d5c9e608 100755 --- a/src/main/java/steamcraft/common/init/InitItems.java +++ b/src/main/java/steamcraft/common/init/InitItems.java @@ -12,95 +12,29 @@ */ package steamcraft.common.init; +import boilerplate.common.utils.helpers.RegistryHelper; +import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.util.StatCollector; - -import cpw.mods.fml.common.registry.GameRegistry; - import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; - -import boilerplate.common.utils.helpers.RegistryHelper; import steamcraft.common.Steamcraft; -import steamcraft.common.items.BaseItem; -import steamcraft.common.items.ItemCanister; -import steamcraft.common.items.ItemChisel; -import steamcraft.common.items.ItemCoin; -import steamcraft.common.items.ItemCustomBucket; -import steamcraft.common.items.ItemCustomFood; -import steamcraft.common.items.ItemDimensionalPocket; -import steamcraft.common.items.ItemFieldManipulator; -import steamcraft.common.items.ItemFirearm; -import steamcraft.common.items.ItemGrappleGun; -import steamcraft.common.items.ItemGunPart; -import steamcraft.common.items.ItemHandbook; -import steamcraft.common.items.ItemIngot; -import steamcraft.common.items.ItemLoreBook; -import steamcraft.common.items.ItemMachinePart; -import steamcraft.common.items.ItemMatch; -import steamcraft.common.items.ItemMobBottle; -import steamcraft.common.items.ItemMonsterSpawner; -import steamcraft.common.items.ItemNugget; -import steamcraft.common.items.ItemParts; -import steamcraft.common.items.ItemPowder; -import steamcraft.common.items.ItemResource; -import steamcraft.common.items.ItemRocket; -import steamcraft.common.items.ItemRocketLauncher; -import steamcraft.common.items.ItemSheet; -import steamcraft.common.items.ItemSpanner; -import steamcraft.common.items.ItemSplashLightningBottle; -import steamcraft.common.items.ItemTeaSeed; -import steamcraft.common.items.ItemTeacup; -import steamcraft.common.items.ItemTeapot; -import steamcraft.common.items.ItemTimeClock; -import steamcraft.common.items.ItemVanillaPowder; -import steamcraft.common.items.ItemVanillaSheet; -import steamcraft.common.items.ItemWatch; -import steamcraft.common.items.ItemWithCraftingDurability; -import steamcraft.common.items.armor.ItemBrassArmor; -import steamcraft.common.items.armor.ItemBrassGoggles; -import steamcraft.common.items.armor.ItemClockworkWings; -import steamcraft.common.items.armor.ItemDivingHelmet; -import steamcraft.common.items.armor.ItemMonocle; -import steamcraft.common.items.armor.ItemNormalArmor; -import steamcraft.common.items.armor.ItemSteamJetpack; +import steamcraft.common.items.*; +import steamcraft.common.items.armor.*; import steamcraft.common.items.compat.ItemSteamcraftCluster; import steamcraft.common.items.compat.ItemThaumicMonocle; import steamcraft.common.items.electric.ElectricItem; import steamcraft.common.items.electric.ItemRayGun; import steamcraft.common.items.electric.ItemShrinkray; -import steamcraft.common.items.modules.ItemAqualung; -import steamcraft.common.items.modules.ItemAutofeeder; -import steamcraft.common.items.modules.ItemClimbingSpikes; -import steamcraft.common.items.modules.ItemEmergencyTank; -import steamcraft.common.items.modules.ItemFlippers; -import steamcraft.common.items.modules.ItemFreezeBoots; -import steamcraft.common.items.modules.ItemGogglesModule; -import steamcraft.common.items.modules.ItemLastResort; -import steamcraft.common.items.modules.ItemLegBraces; -import steamcraft.common.items.modules.ItemLifeVest; -import steamcraft.common.items.modules.ItemParachute; -import steamcraft.common.items.modules.ItemPistonBoots; -import steamcraft.common.items.modules.ItemReactivePistonPlating; -import steamcraft.common.items.modules.ItemRollerSkates; -import steamcraft.common.items.modules.ItemSpringHeels; -import steamcraft.common.items.modules.ItemSteelPlating; -import steamcraft.common.items.modules.ItemSuperFreezeBoots; -import steamcraft.common.items.modules.ItemWatchDisplay; -import steamcraft.common.items.modules.ItemWingpackModule; +import steamcraft.common.items.modules.*; import steamcraft.common.items.tools.ItemElectricDrill; import steamcraft.common.items.tools.ItemElectrifiedSword; -import steamcraft.common.items.tools.steam.ItemSteamAxe; -import steamcraft.common.items.tools.steam.ItemSteamDrill; -import steamcraft.common.items.tools.steam.ItemSteamHoe; -import steamcraft.common.items.tools.steam.ItemSteamPickaxe; -import steamcraft.common.items.tools.steam.ItemSteamShovel; -import steamcraft.common.items.tools.steam.ItemSteamSword; +import steamcraft.common.items.tools.steam.*; import steamcraft.common.items.vanity.ItemTopHat; import steamcraft.common.lib.BucketHandler; import steamcraft.common.lib.ModInfo; diff --git a/src/main/resources/assets/steamcraft/lang/en_US.lang b/src/main/resources/assets/steamcraft/lang/en_US.lang index a55650f9..05c18f97 100755 --- a/src/main/resources/assets/steamcraft/lang/en_US.lang +++ b/src/main/resources/assets/steamcraft/lang/en_US.lang @@ -523,6 +523,7 @@ item.itemAutofeeder.desc=Automatically consume food from your inventory. Fairly item.itemSteamcraftCluster.0.name=Native Aluminum Cluster item.itemSteamcraftCluster.1.name=Native Zinc Cluster item.itemThaumicMonocle.name=Thaumic Monocle +item.itemChiselSteam.name=Steam-Powered Chisel #Tabs itemGroup.steamcraft2=Steamcraft 2 diff --git a/src/main/resources/assets/steamcraft/lang/zh_CN.lang b/src/main/resources/assets/steamcraft/lang/zh_CN.lang index cc5fd8a9..c5f8adb3 100644 --- a/src/main/resources/assets/steamcraft/lang/zh_CN.lang +++ b/src/main/resources/assets/steamcraft/lang/zh_CN.lang @@ -511,6 +511,7 @@ item.itemFreezeBoots.desc=将你脚下的水冻成冰 item.itemSteamcraftCluster.0.name=Native Aluminum Cluster item.itemSteamcraftCluster.1.name=Native Zinc Cluster item.itemThaumicMonocle.name=Thaumic Monocle +item.itemChiselSteam.name=Steam-Powered Chisel #Tabs itemGroup.steamcraft=蒸汽工艺 2