mirror of
https://github.com/GTNewHorizons/Botania.git
synced 2026-11-14 01:04:16 +00:00
Added the Rod of the Molten Core.
This commit is contained in:
1 parent
bec0603ce3
commit
1dd20a8a11
11 files changed
+174
-20
No files matched your search
@@ -83,6 +83,7 @@ public final class BotaniaCreativeTab extends CreativeTabs {
|
||||
addItem(ModItems.rainbowRod);
|
||||
addItem(ModItems.tornadoRod);
|
||||
addItem(ModItems.fireRod);
|
||||
addItem(ModItems.smeltRod);
|
||||
addItem(ModItems.diviningRod);
|
||||
addItem(ModItems.gravityRod);
|
||||
addItem(ModItems.missileRod);
|
||||
|
||||
@@ -217,6 +217,7 @@ public final class ModCraftingRecipes {
|
||||
public static IRecipe recipeMonocle;
|
||||
public static IRecipe recipeClip;
|
||||
public static IRecipe recipeCobbleRod;
|
||||
public static IRecipe recipeSmeltRod;
|
||||
|
||||
public static void init() {
|
||||
// Lexicon Recipe
|
||||
@@ -1419,6 +1420,14 @@ public final class ModCraftingRecipes {
|
||||
'C', new ItemStack(Blocks.cobblestone));
|
||||
recipeCobbleRod = BotaniaAPI.getLatestAddedRecipe();
|
||||
|
||||
// Rod of the Molten Core Recipe
|
||||
addOreDictRecipe(new ItemStack(ModItems.smeltRod),
|
||||
" BF", " TB", "T ",
|
||||
'B', new ItemStack(Items.blaze_rod),
|
||||
'F', LibOreDict.RUNE[1],
|
||||
'T', LibOreDict.LIVINGWOOD_TWIG);
|
||||
recipeSmeltRod = BotaniaAPI.getLatestAddedRecipe();
|
||||
|
||||
// Storage Block Recipes
|
||||
addOreDictRecipe(new ItemStack(ModBlocks.storage, 1, 0),
|
||||
"III", "III", "III",
|
||||
|
||||
@@ -87,6 +87,7 @@ import vazkii.botania.common.item.rod.ItemGravityRod;
|
||||
import vazkii.botania.common.item.rod.ItemMissileRod;
|
||||
import vazkii.botania.common.item.rod.ItemRainbowRod;
|
||||
import vazkii.botania.common.item.rod.ItemSkyDirtRod;
|
||||
import vazkii.botania.common.item.rod.ItemSmeltRod;
|
||||
import vazkii.botania.common.item.rod.ItemTerraformRod;
|
||||
import vazkii.botania.common.item.rod.ItemTornadoRod;
|
||||
import vazkii.botania.common.item.rod.ItemWaterRod;
|
||||
@@ -194,6 +195,7 @@ public final class ModItems {
|
||||
public static Item monocle;
|
||||
public static Item clip;
|
||||
public static Item cobbleRod;
|
||||
public static Item smeltRod;
|
||||
|
||||
public static void init() {
|
||||
lexicon = new ItemLexicon();
|
||||
@@ -296,6 +298,7 @@ public final class ModItems {
|
||||
monocle = new ItemMonocle();
|
||||
clip = new ItemClip();
|
||||
cobbleRod = new ItemCobbleRod();
|
||||
smeltRod = new ItemSmeltRod();
|
||||
|
||||
OreDictionary.registerOre(LibOreDict.LEXICON, lexicon);
|
||||
for(int i = 0; i < 16; i++) {
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
/**
|
||||
* This class was created by <Vazkii>. It's distributed as
|
||||
* part of the Botania Mod. Get the Source Code in github:
|
||||
* https://github.com/Vazkii/Botania
|
||||
*
|
||||
* Botania is Open Source and distributed under a
|
||||
* Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License
|
||||
* (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB)
|
||||
*
|
||||
* File Created @ [Jan 24, 2015, 11:05:41 PM (GMT)]
|
||||
*/
|
||||
package vazkii.botania.common.item.rod;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.EnumAction;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import vazkii.botania.api.mana.IManaUsingItem;
|
||||
import vazkii.botania.api.mana.ManaItemHandler;
|
||||
import vazkii.botania.common.Botania;
|
||||
import vazkii.botania.common.core.helper.Vector3;
|
||||
import vazkii.botania.common.item.ItemMod;
|
||||
import vazkii.botania.common.item.equipment.tool.ToolCommons;
|
||||
import vazkii.botania.common.lib.LibItemNames;
|
||||
|
||||
public class ItemSmeltRod extends ItemMod implements IManaUsingItem {
|
||||
|
||||
private static final int TIME = 10;
|
||||
private static final int COST = 300;
|
||||
private static final int COST_PER_TICK = COST / TIME;
|
||||
|
||||
public static Map<EntityPlayer, SmeltData> playerData = new WeakHashMap();
|
||||
|
||||
public ItemSmeltRod() {
|
||||
setUnlocalizedName(LibItemNames.SMELT_ROD);
|
||||
setMaxStackSize(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumAction getItemUseAction(ItemStack par1ItemStack) {
|
||||
return EnumAction.bow;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxItemUseDuration(ItemStack par1ItemStack) {
|
||||
return 72000;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {
|
||||
par3EntityPlayer.setItemInUse(par1ItemStack, getMaxItemUseDuration(par1ItemStack));
|
||||
return par1ItemStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUsingTick(ItemStack stack, EntityPlayer p, int time) {
|
||||
if(!ManaItemHandler.requestManaExact(stack, p, COST_PER_TICK, false))
|
||||
return;
|
||||
|
||||
MovingObjectPosition pos = ToolCommons.raytraceFromEntity(p.worldObj, p, false, 32);
|
||||
|
||||
if(pos != null) {
|
||||
Block block = p.worldObj.getBlock(pos.blockX, pos.blockY, pos.blockZ);
|
||||
int meta = p.worldObj.getBlockMetadata(pos.blockX, pos.blockY, pos.blockZ);
|
||||
|
||||
ItemStack blockStack = new ItemStack(block, 1, meta);
|
||||
ItemStack result = FurnaceRecipes.smelting().getSmeltingResult(blockStack);
|
||||
|
||||
if(result != null && result.getItem() instanceof ItemBlock) {
|
||||
boolean decremented = false;
|
||||
|
||||
if(playerData.containsKey(p)) {
|
||||
SmeltData data = playerData.get(p);
|
||||
|
||||
if(data.equalPos(pos)) {
|
||||
data.progress--;
|
||||
decremented = true;
|
||||
if(data.progress <= 0) {
|
||||
if(!p.worldObj.isRemote) {
|
||||
p.worldObj.setBlock(pos.blockX, pos.blockY, pos.blockZ, Block.getBlockFromItem(result.getItem()), result.getItemDamage(), 1 | 2);
|
||||
p.worldObj.playSoundAtEntity(p, "fire.ignite", 0.6F, 1F);
|
||||
p.worldObj.playSoundAtEntity(p, "fire.fire", 1F, 1F);
|
||||
|
||||
ManaItemHandler.requestManaExact(stack, p, COST_PER_TICK, true);
|
||||
playerData.remove(p.getGameProfile().getName());
|
||||
decremented = false;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 25; i++) {
|
||||
double x = pos.blockX + Math.random();
|
||||
double y = pos.blockY + Math.random();
|
||||
double z = pos.blockZ + Math.random();
|
||||
|
||||
Botania.proxy.wispFX(p.worldObj, x, y, z, 1F, 0.2F, 0.2F, 0.5F, (float) -Math.random() / 10F);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!decremented)
|
||||
playerData.put(p, new SmeltData(pos, TIME));
|
||||
else for(int i = 0; i < 2; i++) {
|
||||
double x = pos.blockX + Math.random();
|
||||
double y = pos.blockY + Math.random();
|
||||
double z = pos.blockZ + Math.random();
|
||||
p.worldObj.playSoundAtEntity(p, "fire.fire", (float) Math.random() / 2F + 0.5F, 1F);
|
||||
Botania.proxy.wispFX(p.worldObj, x, y, z, 1F, 0.2F, 0.2F, 0.5F, (float) -Math.random() / 10F);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFull3D() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean usesMana(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static class SmeltData {
|
||||
public MovingObjectPosition pos;
|
||||
public int progress;
|
||||
|
||||
public SmeltData(MovingObjectPosition pos, int progress) {
|
||||
this.pos = pos;
|
||||
this.progress = progress;
|
||||
}
|
||||
|
||||
public boolean equalPos(MovingObjectPosition pos) {
|
||||
return pos.blockX == this.pos.blockX && pos.blockY == this.pos.blockY && pos.blockZ == this.pos.blockZ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -154,7 +154,8 @@ public final class LexiconData {
|
||||
public static LexiconEntry craftingHalo;
|
||||
public static LexiconEntry clip;
|
||||
public static LexiconEntry cobbleRod;
|
||||
|
||||
public static LexiconEntry smeltRod;
|
||||
|
||||
public static LexiconEntry baublesIntro;
|
||||
public static LexiconEntry tinyPlanet;
|
||||
public static LexiconEntry manaRing;
|
||||
@@ -591,6 +592,9 @@ public final class LexiconData {
|
||||
cobbleRod = new BLexiconEntry(LibLexicon.TOOL_COBBLE_ROD, categoryTools);
|
||||
cobbleRod.setLexiconPages(new PageText("0"), new PageCraftingRecipe("1", ModCraftingRecipes.recipeCobbleRod));
|
||||
|
||||
smeltRod = new BLexiconEntry(LibLexicon.TOOL_SMELT_ROD, categoryTools);
|
||||
smeltRod.setLexiconPages(new PageText("0"), new PageCraftingRecipe("1", ModCraftingRecipes.recipeSmeltRod));
|
||||
|
||||
// BAUBLES ENTRIES
|
||||
baublesIntro = new BLexiconEntry(LibLexicon.BAUBLE_INTRO, categoryBaubles);
|
||||
baublesIntro.setPriority().setLexiconPages(new PageText("0"), new PageImage("1", LibResources.ENTRY_BAUBLES), new PageText("2"));
|
||||
|
||||
@@ -114,7 +114,8 @@ public final class LibItemNames {
|
||||
public static final String MONOCLE = "monocle";
|
||||
public static final String CLIP = "clip";
|
||||
public static final String COBBLE_ROD = "cobbleRod";
|
||||
|
||||
public static final String SMELT_ROD = "smeltRod";
|
||||
|
||||
public static final String[] LENS_NAMES = new String[] {
|
||||
"lensNormal",
|
||||
"lensSpeed",
|
||||
|
||||
@@ -135,6 +135,7 @@ public final class LibLexicon {
|
||||
public static final String TOOL_CRAFTING_HALO = "craftingHalo";
|
||||
public static final String TOOL_CLIP = "clip";
|
||||
public static final String TOOL_COBBLE_ROD = "cobbleRod";
|
||||
public static final String TOOL_SMELT_ROD = "smeltRod";
|
||||
|
||||
public static final String BAUBLE_INTRO = "bIntro";
|
||||
public static final String BAUBLE_TINY_PLANET = "tinyPlanet";
|
||||
|
||||
Reference in new issue
Block a user