diff options
Diffstat (limited to 'src/Java/miscutil')
21 files changed, 732 insertions, 65 deletions
diff --git a/src/Java/miscutil/core/handler/COMPAT_HANDLER.java b/src/Java/miscutil/core/handler/COMPAT_HANDLER.java index 5ca2ea5c4a..3a9d687057 100644 --- a/src/Java/miscutil/core/handler/COMPAT_HANDLER.java +++ b/src/Java/miscutil/core/handler/COMPAT_HANDLER.java @@ -81,7 +81,6 @@ public class COMPAT_HANDLER { if (Gregtech) { new MetaGeneratedGregtechItems(); new RECIPES_LaserEngraver(); - //new MetaGeneratedGregtechTools(); GregtechEnergyBuffer.run(); GregtechConduits.run(); GregtechSteamCondenser.run(); diff --git a/src/Java/miscutil/core/item/ModItems.java b/src/Java/miscutil/core/item/ModItems.java index 566a90015e..0760bd12c8 100644 --- a/src/Java/miscutil/core/item/ModItems.java +++ b/src/Java/miscutil/core/item/ModItems.java @@ -243,8 +243,7 @@ Gold Tool: 22*/ } - - UtilsItems.generateSpawnEgg("minecraft", "villager", Utils.generateSingularRandomHexValue(), Utils.generateSingularRandomHexValue()); + UtilsItems.generateSpawnEgg("ic2", "boatcarbon", Utils.generateSingularRandomHexValue(), Utils.generateSingularRandomHexValue()); diff --git a/src/Java/miscutil/core/lib/LoadedMods.java b/src/Java/miscutil/core/lib/LoadedMods.java index b1b95a6af3..40862648a8 100644 --- a/src/Java/miscutil/core/lib/LoadedMods.java +++ b/src/Java/miscutil/core/lib/LoadedMods.java @@ -1,6 +1,7 @@ package miscutil.core.lib; import miscutil.core.util.Utils; +import miscutil.core.xmod.gregtech.api.enums.GregtechTextures; import miscutil.core.xmod.gregtech.recipes.GregtechRecipeAdder; import cpw.mods.fml.common.Loader; @@ -39,7 +40,10 @@ public class LoadedMods { if (Gregtech){ try { CORE.sRecipeAdder = CORE.RA = new GregtechRecipeAdder(); - Utils.LOG_INFO("Created a Gregtech recipe handler."); + Utils.LOG_INFO("Created Gregtech recipe handler."); + GregtechTextures.BlockIcons.VOID.name(); + GregtechTextures.ItemIcons.VOID.name(); + Utils.LOG_INFO("Created Gregtech texture handler."); } catch (NullPointerException e){ Utils.LOG_INFO("Could NOT create a Gregtech recipe handler."); } diff --git a/src/Java/miscutil/core/recipe/RECIPES_GREGTECH.java b/src/Java/miscutil/core/recipe/RECIPES_GREGTECH.java index 33d2250bd1..300b66fa88 100644 --- a/src/Java/miscutil/core/recipe/RECIPES_GREGTECH.java +++ b/src/Java/miscutil/core/recipe/RECIPES_GREGTECH.java @@ -126,4 +126,8 @@ public class RECIPES_GREGTECH { //CORE.RA.addFuel(GT_ModHandler.getModItem("EnderIO", "bucketFire_water", 1L, 1), null, 2800, 0); //System.exit(1); } + + private static void registerSkookumChoocher(){ + //GT_ModHandler.addCraftingRecipe(GT_OreDictUnificator.get(OrePrefixes.toolHeadUniversalSpade, aMaterial, 1L), tBits, new Object[]{"fX", Character.valueOf('X'), OrePrefixes.toolHeadShovel.get(aMaterial)}); + } }
\ No newline at end of file diff --git a/src/Java/miscutil/core/xmod/gregtech/HANDLER_GT.java b/src/Java/miscutil/core/xmod/gregtech/HANDLER_GT.java index 7e027636fc..be30c8e9b7 100644 --- a/src/Java/miscutil/core/xmod/gregtech/HANDLER_GT.java +++ b/src/Java/miscutil/core/xmod/gregtech/HANDLER_GT.java @@ -3,6 +3,7 @@ package miscutil.core.xmod.gregtech; import gregtech.api.util.GT_Config; import miscutil.core.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials; import miscutil.core.xmod.gregtech.common.blocks.fluid.GregtechFluidHandler; +import miscutil.core.xmod.gregtech.common.items.MetaGeneratedGregtechTools; public class HANDLER_GT { @@ -12,6 +13,7 @@ public class HANDLER_GT { if (mMaterialProperties != null){ GT_Materials.init(mMaterialProperties); GregtechFluidHandler.run(); + new MetaGeneratedGregtechTools(); //new Processing_Ingot1(); //new Processing_Plate1(); //new Processing_Block(); diff --git a/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechOrePrefixes.java b/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechOrePrefixes.java index 29621f7a23..67a3ff4332 100644 --- a/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechOrePrefixes.java +++ b/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechOrePrefixes.java @@ -67,6 +67,10 @@ public enum GregtechOrePrefixes { gemExquisite("Exquisite Gemstones", "Exquisite ", "", true, true, true, false, false, false, true, true, false, false, B[2], M * 4, 16, 62), // A regular Gem worth four Dusts. Introduced by TerraFirmaCraft stick("Sticks/Rods", "", " Rod", true, true, false, false, false, false, true, true, false, false, B[1] | B[2], M / 2, 64, 23), // Stick made of half an Ingot. Introduced by Eloraam + + toolSkookumChoocher("Skookum Choocher", "", " Skookum Choocher", true, true, false, false, false, false, true, true, false, false, B[6], M * 6, 16, 37), // consisting out of 6 Ingots. + + batterySingleuse("Single Use Batteries", "", "", false, true, false, false, false, false, false, false, false, false, 0, -1, 64, -1), battery("Reusable Batteries", "", "", false, true, false, false, false, false, false, false, false, false, 0, -1, 64, -1), // Introduced by Calclavia diff --git a/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechTextureSet.java b/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechTextureSet.java index 5f2f8b5236..c5473ea958 100644 --- a/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechTextureSet.java +++ b/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechTextureSet.java @@ -13,7 +13,7 @@ public class GregtechTextureSet { public GregtechTextureSet(String aSetName) { mSetName = aSetName; mTextures[0] = new Textures.ItemIcons.CustomIcon("materialicons/" + mSetName + "/turbineBlade"); - mTextures[1] = new Textures.ItemIcons.CustomIcon("materialicons/" + mSetName + "/void"); + mTextures[1] = new Textures.ItemIcons.CustomIcon("materialicons/" + mSetName + "/toolHeadSkookumChoocher"); mTextures[2] = new Textures.ItemIcons.CustomIcon("materialicons/" + mSetName + "/void"); mTextures[3] = new Textures.ItemIcons.CustomIcon("materialicons/" + mSetName + "/void"); mTextures[4] = new Textures.ItemIcons.CustomIcon("materialicons/" + mSetName + "/void"); diff --git a/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechTextures.java b/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechTextures.java index eaa76c36e7..c927fea1a3 100644 --- a/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechTextures.java +++ b/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechTextures.java @@ -1,18 +1,18 @@ package miscutil.core.xmod.gregtech.api.enums; -import static gregtech.api.enums.GT_Values.RES_PATH_BLOCK; import gregtech.api.GregTech_API; -import gregtech.api.interfaces.IIconContainer; -import gregtech.api.interfaces.ITexture; -import gregtech.api.objects.GT_RenderedTexture; import miscutil.core.lib.CORE; +import miscutil.core.xmod.gregtech.api.interfaces.internal.Interface_IconContainer; +import miscutil.core.xmod.gregtech.api.interfaces.internal.Interface_Texture; +import miscutil.core.xmod.gregtech.api.objects.GregtechRenderedTexture; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; public class GregtechTextures { - public enum BlockIcons implements IIconContainer, Runnable { + public enum BlockIcons implements Interface_IconContainer, Runnable { + VOID, LARGECENTRIFUGE1, LARGECENTRIFUGE2, LARGECENTRIFUGE3, LARGECENTRIFUGE4, LARGECENTRIFUGE5, LARGECENTRIFUGE6, @@ -21,9 +21,9 @@ public class GregtechTextures { LARGECENTRIFUGE_ACTIVE4, LARGECENTRIFUGE_ACTIVE5, LARGECENTRIFUGE_ACTIVE6, LARGECENTRIFUGE_ACTIVE7, LARGECENTRIFUGE_ACTIVE8, LARGECENTRIFUGE_ACTIVE9; - public static final IIconContainer[] + public static final Interface_IconContainer[] - CENTRIFUGE = new IIconContainer[]{ + CENTRIFUGE = new Interface_IconContainer[]{ LARGECENTRIFUGE1, LARGECENTRIFUGE2, LARGECENTRIFUGE3, @@ -34,7 +34,7 @@ public class GregtechTextures { LARGECENTRIFUGE8, LARGECENTRIFUGE9 }, - CENTRIFUGE_ACTIVE = new IIconContainer[]{ + CENTRIFUGE_ACTIVE = new Interface_IconContainer[]{ LARGECENTRIFUGE_ACTIVE1, LARGECENTRIFUGE_ACTIVE2, LARGECENTRIFUGE_ACTIVE3, @@ -46,8 +46,8 @@ public class GregtechTextures { LARGECENTRIFUGE_ACTIVE9 }; - public static ITexture[] - GT_CASING_BLOCKS = new ITexture[64]; + public static Interface_Texture[] + GT_CASING_BLOCKS = new Interface_Texture[64]; protected IIcon mIcon; @@ -67,7 +67,7 @@ public class GregtechTextures { @Override public void run() { - mIcon = GregTech_API.sBlockIcons.registerIcon(RES_PATH_BLOCK + "iconsets/" + this); + mIcon = GregTech_API.sBlockIcons.registerIcon(CORE.MODID + ":" + "iconsets/" + this); } @Override @@ -75,7 +75,7 @@ public class GregtechTextures { return TextureMap.locationBlocksTexture; } - public static class CustomIcon implements IIconContainer, Runnable { + public static class CustomIcon implements Interface_IconContainer, Runnable { protected IIcon mIcon; protected String mIconName; @@ -96,7 +96,7 @@ public class GregtechTextures { @Override public void run() { - mIcon = CORE.GT_BlockIcons.registerIcon(CORE.RES_PATH_BLOCK + mIconName); + mIcon = CORE.GT_BlockIcons.registerIcon(CORE.MODID + ":" + mIconName); } @Override @@ -107,11 +107,35 @@ public class GregtechTextures { } - public enum ItemIcons implements IIconContainer, Runnable { - VOID, RENDERING_ERROR, // The Empty Texture - TURBINE, TURBINE_SMALL, TURBINE_LARGE, TURBINE_HUGE; - - public static final ITexture[] ERROR_RENDERING = new ITexture[]{new GT_RenderedTexture(RENDERING_ERROR)}; + public enum ItemIcons implements Interface_IconContainer, Runnable { + VOID // The Empty Texture + , RENDERING_ERROR, SKOOKUMCHOOCHER, DURABILITY_BAR_0, DURABILITY_BAR_1, DURABILITY_BAR_2, DURABILITY_BAR_3, DURABILITY_BAR_4, DURABILITY_BAR_5, DURABILITY_BAR_6, DURABILITY_BAR_7, DURABILITY_BAR_8, ENERGY_BAR_0, ENERGY_BAR_1, ENERGY_BAR_2, ENERGY_BAR_3, ENERGY_BAR_4, ENERGY_BAR_5, ENERGY_BAR_6, ENERGY_BAR_7, ENERGY_BAR_8, TURBINE, TURBINE_SMALL, TURBINE_LARGE, TURBINE_HUGE; + + public static final Interface_IconContainer[] + DURABILITY_BAR = new Interface_IconContainer[]{ + DURABILITY_BAR_0, + DURABILITY_BAR_1, + DURABILITY_BAR_2, + DURABILITY_BAR_3, + DURABILITY_BAR_4, + DURABILITY_BAR_5, + DURABILITY_BAR_6, + DURABILITY_BAR_7, + DURABILITY_BAR_8, + }, + ENERGY_BAR = new Interface_IconContainer[]{ + ENERGY_BAR_0, + ENERGY_BAR_1, + ENERGY_BAR_2, + ENERGY_BAR_3, + ENERGY_BAR_4, + ENERGY_BAR_5, + ENERGY_BAR_6, + ENERGY_BAR_7, + ENERGY_BAR_8, + }; + + public static final Interface_Texture[] ERROR_RENDERING = new Interface_Texture[]{new GregtechRenderedTexture(RENDERING_ERROR)}; protected IIcon mIcon, mOverlay; @@ -136,35 +160,11 @@ public class GregtechTextures { @Override public void run() { - mIcon = GregTech_API.sItemIcons.registerIcon(CORE.MODID+":" + "iconsets/" + this); - if (mIcon != null){ - //Utils.LOG_INFO("Found Texture at "+CORE.MODID+":" + "iconsets/" + this); - } - else if (mIcon == null){ - mIcon = GregTech_API.sItemIcons.registerIcon(CORE.RES_PATH_ITEM + "iconsets/" + this); - if (mIcon != null){ - //Utils.LOG_INFO("Found Texture at "+CORE.RES_PATH_ITEM + "iconsets/" + this); - } - else { - //Utils.LOG_INFO("Did not find Texture at "+CORE.RES_PATH_ITEM + "iconsets/" + this); - } - } - mOverlay = GregTech_API.sItemIcons.registerIcon(CORE.MODID+":" + "iconsets/" + this + "_OVERLAY"); - if (mOverlay != null){ - //Utils.LOG_INFO("Found Texture at "+CORE.MODID+":" + "iconsets/" + this+ "_OVERLAY"); - } - else if (mOverlay == null){ - mOverlay = GregTech_API.sItemIcons.registerIcon(CORE.RES_PATH_ITEM + "iconsets/" + this+ "_OVERLAY"); - if (mOverlay != null){ - //Utils.LOG_INFO("Found Texture at "+CORE.RES_PATH_ITEM + "iconsets/" + this+ "_OVERLAY"); - } - else { - //Utils.LOG_INFO("Did not find Texture at "+CORE.RES_PATH_ITEM + "iconsets/" + this+ "_OVERLAY"); - } - } + mIcon = GregTech_API.sItemIcons.registerIcon(CORE.MODID+ ":" + "iconsets/" + this); + mOverlay = GregTech_API.sItemIcons.registerIcon(CORE.MODID+ ":" + "iconsets/" + this + "_OVERLAY"); } - public static class CustomIcon implements IIconContainer, Runnable { + public static class CustomIcon implements Interface_IconContainer, Runnable { protected IIcon mIcon, mOverlay; protected String mIconName; @@ -185,8 +185,8 @@ public class GregtechTextures { @Override public void run() { - mIcon = GregTech_API.sItemIcons.registerIcon(CORE.MODID+":" + mIconName); - mOverlay = GregTech_API.sItemIcons.registerIcon(CORE.MODID+":" + mIconName + "_OVERLAY"); + mIcon = GregTech_API.sItemIcons.registerIcon(CORE.MODID+ ":" + mIconName); + mOverlay = GregTech_API.sItemIcons.registerIcon(CORE.MODID+ ":" + mIconName + "_OVERLAY"); } @Override diff --git a/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechToolDictNames.java b/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechToolDictNames.java new file mode 100644 index 0000000000..25831f9a48 --- /dev/null +++ b/src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechToolDictNames.java @@ -0,0 +1,7 @@ +package miscutil.core.xmod.gregtech.api.enums; + +public enum GregtechToolDictNames { + + craftingToolSkookumChoocher; + +}
\ No newline at end of file diff --git a/src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_IconContainer.java b/src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_IconContainer.java new file mode 100644 index 0000000000..4609a981dc --- /dev/null +++ b/src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_IconContainer.java @@ -0,0 +1,21 @@ +package miscutil.core.xmod.gregtech.api.interfaces.internal; + +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; + +public interface Interface_IconContainer { + /** + * @return A regular Icon. + */ + public IIcon getIcon(); + + /** + * @return Icon of the Overlay (or null if there is no Icon) + */ + public IIcon getOverlayIcon(); + + /** + * @return the Default Texture File for this Icon. + */ + public ResourceLocation getTextureFile(); +}
\ No newline at end of file diff --git a/src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_Texture.java b/src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_Texture.java new file mode 100644 index 0000000000..5e70e9b2b2 --- /dev/null +++ b/src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_Texture.java @@ -0,0 +1,20 @@ +package miscutil.core.xmod.gregtech.api.interfaces.internal; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; + +public interface Interface_Texture { + public void renderXPos(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ); + + public void renderXNeg(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ); + + public void renderYPos(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ); + + public void renderYNeg(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ); + + public void renderZPos(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ); + + public void renderZNeg(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ); + + public boolean isValidTexture(); +}
\ No newline at end of file diff --git a/src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_ToolStats.java b/src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_ToolStats.java index ff3952ba96..e2a7c4b5cf 100644 --- a/src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_ToolStats.java +++ b/src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_ToolStats.java @@ -152,4 +152,9 @@ public interface Interface_ToolStats { public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack); public short[] getRGBa(boolean aIsToolHead, ItemStack aStack); + + /** + * Called when this gets added to a Tool Item + */ + //public void onStatsAddedToTool(GT_MetaGenerated_Tool aItem, int aID); }
\ No newline at end of file diff --git a/src/Java/miscutil/core/xmod/gregtech/api/items/types/ToolType_Base.java b/src/Java/miscutil/core/xmod/gregtech/api/items/types/ToolType_Base.java new file mode 100644 index 0000000000..e0899d22c0 --- /dev/null +++ b/src/Java/miscutil/core/xmod/gregtech/api/items/types/ToolType_Base.java @@ -0,0 +1,84 @@ +package miscutil.core.xmod.gregtech.api.items.types; + +import gregtech.api.enums.SubTag; + +import java.util.List; + +import miscutil.core.xmod.gregtech.api.interfaces.internal.Interface_ItemBehaviour; +import miscutil.core.xmod.gregtech.api.items.Gregtech_MetaItem_Base; +import net.minecraft.block.BlockDispenser; +import net.minecraft.dispenser.BehaviorDefaultDispenseItem; +import net.minecraft.dispenser.IBlockSource; +import net.minecraft.dispenser.IPosition; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.world.World; + +public class ToolType_Base implements Interface_ItemBehaviour<Gregtech_MetaItem_Base> { + @Override + public boolean onLeftClickEntity(Gregtech_MetaItem_Base aItem, ItemStack aStack, EntityPlayer aPlayer, Entity aEntity) { + return false; + } + + @Override + public boolean onItemUse(Gregtech_MetaItem_Base aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) { + return false; + } + + @Override + public boolean onItemUseFirst(Gregtech_MetaItem_Base aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) { + return false; + } + + @Override + public ItemStack onItemRightClick(Gregtech_MetaItem_Base aItem, ItemStack aStack, World aWorld, EntityPlayer aPlayer) { + return aStack; + } + + @Override + public List<String> getAdditionalToolTips(Gregtech_MetaItem_Base aItem, List<String> aList, ItemStack aStack) { + return aList; + } + + @Override + public void onUpdate(Gregtech_MetaItem_Base aItem, ItemStack aStack, World aWorld, Entity aPlayer, int aTimer, boolean aIsInHand) { + } + + @Override + public boolean isItemStackUsable(Gregtech_MetaItem_Base aItem, ItemStack aStack) { + return true; + } + + @Override + public boolean canDispense(Gregtech_MetaItem_Base aItem, IBlockSource aSource, ItemStack aStack) { + return false; + } + + @Override + public ItemStack onDispense(Gregtech_MetaItem_Base aItem, IBlockSource aSource, ItemStack aStack) { + EnumFacing enumfacing = BlockDispenser.func_149937_b(aSource.getBlockMetadata()); + IPosition iposition = BlockDispenser.func_149939_a(aSource); + ItemStack itemstack1 = aStack.splitStack(1); + BehaviorDefaultDispenseItem.doDispense(aSource.getWorld(), itemstack1, 6, enumfacing, iposition); + return aStack; + } + + @Override + public boolean hasProjectile(Gregtech_MetaItem_Base aItem, SubTag aProjectileType, ItemStack aStack) { + return false; + } + + @Override + public EntityArrow getProjectile(Gregtech_MetaItem_Base aItem, SubTag aProjectileType, ItemStack aStack, World aWorld, double aX, double aY, double aZ) { + return null; + } + + @Override + public EntityArrow getProjectile(Gregtech_MetaItem_Base aItem, SubTag aProjectileType, ItemStack aStack, World aWorld, EntityLivingBase aEntity, float aSpeed) { + return null; + } +} diff --git a/src/Java/miscutil/core/xmod/gregtech/api/items/types/ToolType_HardHammer.java b/src/Java/miscutil/core/xmod/gregtech/api/items/types/ToolType_HardHammer.java new file mode 100644 index 0000000000..ff9ef0a208 --- /dev/null +++ b/src/Java/miscutil/core/xmod/gregtech/api/items/types/ToolType_HardHammer.java @@ -0,0 +1,127 @@ +package miscutil.core.xmod.gregtech.api.items.types; + +import gregtech.api.GregTech_API; +import gregtech.api.enums.Materials; +import gregtech.api.items.GT_MetaBase_Item; +import gregtech.api.items.GT_MetaGenerated_Tool; +import gregtech.api.objects.ItemData; +import gregtech.api.util.GT_LanguageManager; +import gregtech.api.util.GT_ModHandler; +import gregtech.api.util.GT_OreDictUnificator; +import gregtech.api.util.GT_Utility; +import gregtech.common.blocks.GT_Block_Ores; +import gregtech.common.blocks.GT_TileEntity_Ores; + +import java.util.List; +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.IFluidBlock; + +public class ToolType_HardHammer + extends ToolType_Base { + private final int mVanillaCosts; + private final int mEUCosts; + private final String mTooltip = GT_LanguageManager.addStringLocalization("gt.behaviour.prospecting", "Usable for Prospecting"); + + public ToolType_HardHammer(int aVanillaCosts, int aEUCosts) { + this.mVanillaCosts = aVanillaCosts; + this.mEUCosts = aEUCosts; + } + + public boolean onItemUseFirst(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) { + if (aWorld.isRemote) { + return false; + } + Block aBlock = aWorld.getBlock(aX, aY, aZ); + if (aBlock == null) { + return false; + } + byte aMeta = (byte) aWorld.getBlockMetadata(aX, aY, aZ); + + + ItemData tAssotiation = GT_OreDictUnificator.getAssociation(new ItemStack(aBlock, 1, aMeta)); + if ((tAssotiation != null) && (tAssotiation.mPrefix.toString().startsWith("ore"))) { + GT_Utility.sendChatToPlayer(aPlayer, "This is " + tAssotiation.mMaterial.mMaterial.mDefaultLocalName + " Ore."); + GT_Utility.sendSoundToPlayers(aWorld, (String) GregTech_API.sSoundList.get(Integer.valueOf(1)), 1.0F, -1.0F, aX, aY, aZ); + return true; + } + if ((aBlock.isReplaceableOreGen(aWorld, aX, aY, aZ, Blocks.stone)) || (aBlock.isReplaceableOreGen(aWorld, aX, aY, aZ, GregTech_API.sBlockGranites)) || (aBlock.isReplaceableOreGen(aWorld, aX, aY, aZ, Blocks.netherrack)) || (aBlock.isReplaceableOreGen(aWorld, aX, aY, aZ, Blocks.end_stone))) { + if (GT_ModHandler.damageOrDechargeItem(aStack, this.mVanillaCosts, this.mEUCosts, aPlayer)) { + GT_Utility.sendSoundToPlayers(aWorld, (String) GregTech_API.sSoundList.get(Integer.valueOf(1)), 1.0F, -1.0F, aX, aY, aZ); + int tX = aX; + int tY = aY; + int tZ = aZ; + int tMetaID = 0; + int tQuality = (aItem instanceof GT_MetaGenerated_Tool) ? ((GT_MetaGenerated_Tool) aItem).getHarvestLevel(aStack, "") : 0; + + int i = 0; + for (int j = 6 + tQuality; i < j; i++) { + tX -= ForgeDirection.getOrientation(aSide).offsetX; + tY -= ForgeDirection.getOrientation(aSide).offsetY; + tZ -= ForgeDirection.getOrientation(aSide).offsetZ; + + Block tBlock = aWorld.getBlock(tX, tY, tZ); + if ((tBlock == Blocks.lava) || (tBlock == Blocks.flowing_lava)) { + GT_Utility.sendChatToPlayer(aPlayer, "There is Lava behind this Rock."); + break; + } + if ((tBlock == Blocks.water) || (tBlock == Blocks.flowing_water) || ((tBlock instanceof IFluidBlock))) { + GT_Utility.sendChatToPlayer(aPlayer, "There is a Liquid behind this Rock."); + break; + } + if ((tBlock == Blocks.monster_egg) || (!GT_Utility.hasBlockHitBox(aWorld, tX, tY, tZ))) { + GT_Utility.sendChatToPlayer(aPlayer, "There is an Air Pocket behind this Rock."); + break; + } + if (tBlock != aBlock) { + if (i >= 4) { + break; + } + GT_Utility.sendChatToPlayer(aPlayer, "Material is changing behind this Rock."); + break; + } + } + Random tRandom = new Random(aX ^ aY ^ aZ ^ aSide); + i = 0; + for (int j = 9 + 2 * tQuality; i < j; i++) { + tX = aX - 4 - tQuality + tRandom.nextInt(j); + tY = aY - 4 - tQuality + tRandom.nextInt(j); + tZ = aZ - 4 - tQuality + tRandom.nextInt(j); + Block tBlock = aWorld.getBlock(tX, tY, tZ); + if ((tBlock instanceof GT_Block_Ores)) { + TileEntity tTileEntity = aWorld.getTileEntity(tX, tY, tZ); + if ((tTileEntity instanceof GT_TileEntity_Ores)) { + Materials tMaterial = GregTech_API.sGeneratedMaterials[(((GT_TileEntity_Ores) tTileEntity).mMetaData % 1000)]; + if ((tMaterial != null) && (tMaterial != Materials._NULL)) { + GT_Utility.sendChatToPlayer(aPlayer, "Found traces of " + tMaterial.mDefaultLocalName + " Ore."); + return true; + } + } + } else { + tMetaID = aWorld.getBlockMetadata(tX, tY, tZ); + tAssotiation = GT_OreDictUnificator.getAssociation(new ItemStack(tBlock, 1, tMetaID)); + if ((tAssotiation != null) && (tAssotiation.mPrefix.toString().startsWith("ore"))) { + GT_Utility.sendChatToPlayer(aPlayer, "Found traces of " + tAssotiation.mMaterial.mMaterial.mDefaultLocalName + " Ore."); + return true; + } + } + } + GT_Utility.sendChatToPlayer(aPlayer, "No Ores found."); + } + return true; + } + return false; + } + + public List<String> getAdditionalToolTips(GT_MetaBase_Item aItem, List<String> aList, ItemStack aStack) { + aList.add(this.mTooltip); + return aList; + } +} diff --git a/src/Java/miscutil/core/xmod/gregtech/api/items/types/ToolType_Wrench.java b/src/Java/miscutil/core/xmod/gregtech/api/items/types/ToolType_Wrench.java new file mode 100644 index 0000000000..ade388b894 --- /dev/null +++ b/src/Java/miscutil/core/xmod/gregtech/api/items/types/ToolType_Wrench.java @@ -0,0 +1,149 @@ +package miscutil.core.xmod.gregtech.api.items.types; + +import gregtech.api.GregTech_API; +import gregtech.api.items.GT_MetaBase_Item; +import gregtech.api.items.GT_MetaGenerated_Tool; +import gregtech.api.util.GT_LanguageManager; +import gregtech.api.util.GT_ModHandler; +import gregtech.api.util.GT_Utility; +import ic2.api.tile.IWrenchable; + +import java.util.Arrays; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class ToolType_Wrench + extends ToolType_Base { + private final int mCosts; + private final String mTooltip = GT_LanguageManager.addStringLocalization("gt.behaviour.wrench", "Rotates Blocks on Rightclick"); + + public ToolType_Wrench(int aCosts) { + this.mCosts = aCosts; + } + + public boolean onItemUseFirst(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) { + if (aWorld.isRemote) { + return false; + } + Block aBlock = aWorld.getBlock(aX, aY, aZ); + if (aBlock == null) { + return false; + } + byte aMeta = (byte) aWorld.getBlockMetadata(aX, aY, aZ); + byte aTargetSide = GT_Utility.determineWrenchingSide((byte) aSide, hitX, hitY, hitZ); + TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); + try { + if ((aTileEntity != null) && ((aTileEntity instanceof IWrenchable))) { + if (((IWrenchable) aTileEntity).wrenchCanSetFacing(aPlayer, aTargetSide)) { + if ((aPlayer.capabilities.isCreativeMode) || (((GT_MetaGenerated_Tool) aItem).doDamage(aStack, this.mCosts))) { + ((IWrenchable) aTileEntity).setFacing((short) aTargetSide); + GT_Utility.sendSoundToPlayers(aWorld, (String) GregTech_API.sSoundList.get(Integer.valueOf(100)), 1.0F, -1.0F, aX, aY, aZ); + } + return true; + } + if (((IWrenchable) aTileEntity).wrenchCanRemove(aPlayer)) { + int tDamage = ((IWrenchable) aTileEntity).getWrenchDropRate() < 1.0F ? 10 : 3; + if ((aPlayer.capabilities.isCreativeMode) || (((GT_MetaGenerated_Tool) aItem).doDamage(aStack, tDamage * this.mCosts))) { + |
