finizhed chisel and sledgehammer feature plus fixed some bugs

This commit is contained in:
Mohammad-Ali Minaie
2018-10-06 18:55:02 -04:00
parent 14fc81e64b
commit 03d0724cd2
16 changed files with 295 additions and 348 deletions

View File

@@ -8,13 +8,14 @@
## Current Feature
- [x] SledgeHammer and Chisel item and blocks
- [ ] Chisel Bounding Box changes
- [ ] SledgeHammer Supid Damage Modifier
- [x] ToolTip rawLongbow
- [x] Update Recipes with oreDict for slackLime
- [x] Chisel Bounding Box changes
- [x] SledgeHammer Supid Damage Modifier
- [x] SledgeHammer and Chisel crafting
- [x] SledgeHammer and Chisel assets
- [ ] SoftCrucible Color Issues
- [ ] Play a sound when bloomery or forge finishes
- [ ] Hardness and Resistance calculation for durability damage
- [x] SoftCrucible Color Issues
- [ ] Add heat version of sledgehammer
- [ ] Craft Tweaker Support
- [ ] Config to map only wrought iron to vanilla iron or wrought iron to another iron
- [ ] Copper Gladius
@@ -33,6 +34,8 @@
- [ ] Create lock assembly item
## Backlog
- [ ] Play a sound when bloomery or forge finishes
- [ ] Hardness and Resistance calculation for durability damage
- [ ] Hardened Leather Helmet Inventory Model
- [ ] Add Achievements
- [ ] Bloomery Print out

View File

@@ -6,7 +6,7 @@ org.gradle.jvmargs=-Xmx3G
mod_group=nmd.primal.forgecraft
mod_name=ForgeCraft
mod_version=1.6.20
mod_version=1.6.21
forge_version=14.23.4.2744
mcp_mappings=snapshot_20171003
mc_version=1.12.2

View File

@@ -21,7 +21,7 @@ public class ModInfo {
//public static final String MOD_PREFIX = MOD_ID + ":";
public static final String MOD_CHANNEL = MOD_ID;
public static final String MOD_VERSION = "1.6.20";
public static final String MOD_VERSION = "1.6.21";
public static final String MC_VERSIONS = "[1.12.0, 1.13.0)";
public static final String DEPENDENCIES = "required-after:forge@[14.21.1.2400,);" + "required-after:primal@[0.6.69,);";

View File

@@ -11,6 +11,7 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import nmd.primal.core.common.items.tools.Gallagher;
import nmd.primal.forgecraft.init.ModItems;
import nmd.primal.forgecraft.items.SledgeHammer;
import nmd.primal.forgecraft.tiles.TileAnvil;
/**
@@ -34,7 +35,6 @@ public class AnvilStone extends AnvilBase {
ItemStack stack12 = tile.getSlotStack(12).copy();
if (!world.isRemote) {
if (hand.equals(hand.MAIN_HAND)) {
if (!stack12.isEmpty()) {
if (tile != null) {
if ((pItem.getItem() instanceof Gallagher) || (pItem.getItem() == ModItems.forgehammer)) {
@@ -113,15 +113,16 @@ public class AnvilStone extends AnvilBase {
}
}
}
if ((pItem.getItem() instanceof Gallagher) || (pItem.getItem() == ModItems.forgehammer)) {
ItemStack[] tempArray = new ItemStack[25];
for (int i = 0; i < 25; i++) {
tempArray[i] = tile.getSlotStack(i);
//if(! (pItem.getItem() instanceof SledgeHammer) ) {
if ((pItem.getItem() instanceof Gallagher) || (pItem.getItem() == ModItems.forgehammer)) {
ItemStack[] tempArray = new ItemStack[25];
for (int i = 0; i < 25; i++) {
tempArray[i] = tile.getSlotStack(i);
}
doAnvilRecipe(pItem, stack12, tempArray, world, tile, pos, player);
return true;
}
doAnvilRecipe(pItem, stack12, tempArray, world, tile, pos, player);
return true;
}
//}
doAnvilInventoryManager(pItem, world, tile, pos, hitx, hity, hitz, state, player);
return true;

View File

@@ -50,11 +50,23 @@ public class Chisel extends CustomFacing {
0.625D, 0.4375D, 0.4375D,
1.0D, 0.5625D, 0.5625D);
private AxisAlignedBB boundBoxWest = new AxisAlignedBB(
0.0D, 0.4375D, 0.0D,
1.0D, 0.5625D, 1.0D);
0.0D, 0.4375D, 0.4375D,
0.875D, 0.5625D, 0.5625D);
private AxisAlignedBB boundBoxWestActive = new AxisAlignedBB(
0.0D, 0.4375D, 0.0D,
1.0D, 0.5625D, 1.0D);
0.0D, 0.4375D, 0.4375D,
0.375D, 0.5625D, 0.5625D);
private AxisAlignedBB boundBoxNorth = new AxisAlignedBB(
0.4375D, 0.4375D, 0.0D,
0.5625D, 0.5625D, 0.875D);
private AxisAlignedBB boundBoxNorthActive = new AxisAlignedBB(
0.4375D, 0.4375D, 0.0D,
0.5625D, 0.5625D, 0.375D);
private AxisAlignedBB boundBoxSouth = new AxisAlignedBB(
0.4375D, 0.4375D, 0.125D,
0.5625D, 0.5625D, 1.0D);
private AxisAlignedBB boundBoxSouthActive = new AxisAlignedBB(
0.4375D, 0.4375D, 0.625D,
0.5625D, 0.5625D, 1.0D);
private Item.ToolMaterial realMaterial;
@@ -93,6 +105,18 @@ public class Chisel extends CustomFacing {
if(state.getValue(FACING)==EnumFacing.WEST && state.getValue(PrimalAPI.States.ACTIVE)){
return boundBoxWestActive;
}
if(state.getValue(FACING)==EnumFacing.NORTH && !state.getValue(PrimalAPI.States.ACTIVE)){
return boundBoxNorth;
}
if(state.getValue(FACING)==EnumFacing.NORTH && state.getValue(PrimalAPI.States.ACTIVE)){
return boundBoxNorthActive;
}
if(state.getValue(FACING)==EnumFacing.SOUTH && !state.getValue(PrimalAPI.States.ACTIVE)){
return boundBoxSouth;
}
if(state.getValue(FACING)==EnumFacing.SOUTH && state.getValue(PrimalAPI.States.ACTIVE)){
return boundBoxSouthActive;
}
return boundBoxDown;
}
@@ -372,7 +396,10 @@ public class Chisel extends CustomFacing {
private void doBreaking(World world, BlockPos movePos, IBlockState state, EntityPlayer player){
if (!(state.getBlock().equals(Blocks.AIR))) {
if(world.getBlockState(movePos).getBlock().getBlockHardness(state, world, movePos)>0) {
world.destroyBlock(movePos, player.canHarvestBlock(state));
ItemStack playerStack = player.inventory.getCurrentItem();
int toolHarvestLevel = playerStack.getItem().getHarvestLevel(playerStack, "pickaxe", player, state);
world.destroyBlock(movePos, compareHarvestLevel(toolHarvestLevel, state.getBlock().getHarvestLevel(state)));
world.sendBlockBreakProgress(player.getEntityId()+PrimalAPI.getRandom().nextInt(100), movePos, 0);
}
}
@@ -386,6 +413,12 @@ public class Chisel extends CustomFacing {
}
}
private boolean compareHarvestLevel(int inputLevel, int compareHarvest){
if(inputLevel >= compareHarvest){
return true;
} else return false;
}
private void makeParticles(World world, BlockPos pos, EnumParticleTypes particle, EnumFacing facing){
double d0 = (double)pos.getX() + 0.5D;

View File

@@ -100,5 +100,7 @@ public class ModJEI implements IModPlugin
//registry.addIngredientInfo(new OreIngredient("oreIron"), OreIngredient.class, "jei.info.forgecraft.oreiron");
registry.addIngredientInfo(new ItemStack(ModBlocks.castingform, 1, OreDictionary.WILDCARD_VALUE), ItemStack.class, "jei.info.forgecraft.casting");
registry.addIngredientInfo(new ItemStack(ModBlocks.stoneanvil, 1, OreDictionary.WILDCARD_VALUE), ItemStack.class, "jei.info.forgecraft.anvil");
}
}

View File

@@ -306,7 +306,7 @@ public final class RecipesCrucible {
recipes.register (new CrucibleCrafting(
new OreIngredient("dustIron"),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CARBONATE_SLACK, 1)),
new OreIngredient("slackLime"),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
@@ -533,7 +533,7 @@ public final class RecipesCrucible {
recipes.register (new CrucibleCrafting(
new OreIngredient("oreCopper"),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CARBONATE_SLACK, 1)),
new OreIngredient("slackLime"),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
@@ -613,7 +613,7 @@ public final class RecipesCrucible {
recipes.register (new CrucibleCrafting(
new OreIngredient("oreCopper"),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CARBONATE_SLACK, 1)),
new OreIngredient("slackLime"),
new OreIngredient("dustRedstone"),
Ingredient.EMPTY,
Ingredient.EMPTY,
@@ -625,7 +625,7 @@ public final class RecipesCrucible {
recipes.register (new CrucibleCrafting(
new OreIngredient("oreCopper"),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CARBONATE_SLACK, 1)),
new OreIngredient("slackLime"),
new OreIngredient("flakeDiamond"),
Ingredient.EMPTY,
Ingredient.EMPTY,
@@ -637,7 +637,7 @@ public final class RecipesCrucible {
recipes.register (new CrucibleCrafting(
new OreIngredient("oreCopper"),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CARBONATE_SLACK, 1)),
new OreIngredient("slackLime"),
new OreIngredient("flakeEmerald"),
Ingredient.EMPTY,
Ingredient.EMPTY,
@@ -649,7 +649,7 @@ public final class RecipesCrucible {
recipes.register (new CrucibleCrafting(
new OreIngredient("oreCopper"),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CARBONATE_SLACK, 1)),
new OreIngredient("slackLime"),
new OreIngredient("gemLapis"),
Ingredient.EMPTY,
Ingredient.EMPTY,

View File

@@ -75,7 +75,7 @@ public class ModBlocks {
pistonbellowsacacia = new PistonBellows(Material.WOOD, "pistonbellowsacacia");
stoneanvil = new AnvilStone(Material.ANVIL, "stoneanvil", 5.0f, true);
ironanvil = new AnvilIron(Material.ANVIL, "ironanvil", 6.0f, true);
//ironanvil = new AnvilIron(Material.ANVIL, "ironanvil", 6.0f, true);
yewstave = new YewStave(Material.WOOD, "yewstave", 3.0F);
@@ -106,7 +106,7 @@ public class ModBlocks {
registerBlockWithItem(pistonbellowsacacia);
registerBlockWithItem(stoneanvil);
registerBlockWithItem(ironanvil);
//registerBlockWithItem(ironanvil);
registerBlockWithItem(yewstave);
}
@@ -137,7 +137,7 @@ public class ModBlocks {
registerRender(bloomery_adobe);
registerRender(stoneanvil);
registerRender(ironanvil);
//registerRender(ironanvil);
registerRender(yewstave);

View File

@@ -228,6 +228,12 @@ public class ModCrafting{
coppershovelhead = toolArray[22];
copperhoehead = toolArray[23];
ItemStack ironsledgehammer = new ItemStack(ModItems.ironsledgehammer, 1);
ItemStack cleanironsledgehammer = new ItemStack(ModItems.cleanironsledgehammer, 1);
ItemStack steelsledgehammer = new ItemStack(ModItems.steelsledgehammer, 1);
ItemStack wootzsledgehammer = new ItemStack(ModItems.wootzsledgehammer, 1);
for(ItemStack temp : hotToolArray) {
//NBTTagCompound newTag = new NBTTagCompound();
NBTTagCompound tags = new NBTTagCompound();

View File

@@ -20,10 +20,7 @@ import nmd.primal.forgecraft.items.tools.CustomAxe;
import nmd.primal.forgecraft.items.tools.CustomHoe;
import nmd.primal.forgecraft.items.tools.CustomPickaxe;
import nmd.primal.forgecraft.items.tools.CustomShovel;
import nmd.primal.forgecraft.items.weapons.CustomShield;
import nmd.primal.forgecraft.items.weapons.CustomSword;
import nmd.primal.forgecraft.items.weapons.Longbow;
import nmd.primal.forgecraft.items.weapons.SlayerSword;
import nmd.primal.forgecraft.items.weapons.*;
/**
* Created by kitsu on 11/26/2016.
@@ -172,7 +169,7 @@ public class ModItems {
forgehammer = new ForgeHammer("forgehammer");
castingmud = new BaseItem("castingmud");
rawlongbow = new BaseItem("rawlongbow");
rawlongbow = new RawLongbow("rawlongbow");
unstrunglongbow = new BaseItem("unstrunglongbow");
longbow = new Longbow("longbow");
//matchlockmusket = new Musket("matchlock_musket");
@@ -217,37 +214,37 @@ public class ModItems {
copperaxe = new CustomAxe("copperaxe", PrimalAPI.ToolMaterials.TOOL_COPPER, brokencoppertool, 4, -2.6F);
coppershovel = new CustomShovel("coppershovel", PrimalAPI.ToolMaterials.TOOL_COPPER, brokencoppertool);
copperhoe = new CustomHoe("copperhoe", PrimalAPI.ToolMaterials.TOOL_COPPER, brokencoppertool);
coppersledgehammer = new SledgeHammer("coppersledgehammer", PrimalAPI.ToolMaterials.TOOL_COPPER);
coppersledgehammer = new SledgeHammer("coppersledgehammer", PrimalAPI.ToolMaterials.TOOL_COPPER, 12, -3.7D);
bronzepickaxe = new CustomPickaxe("bronzepickaxe", PrimalAPI.ToolMaterials.TOOL_BRONZE, bronzepickaxehead);
bronzeaxe = new CustomAxe("bronzeaxe", PrimalAPI.ToolMaterials.TOOL_BRONZE, bronzeaxehead, 5, -2.4f);
bronzeshovel = new CustomShovel("bronzeshovel", PrimalAPI.ToolMaterials.TOOL_BRONZE, bronzeshovelhead);
bronzehoe = new CustomHoe("bronzehoe", PrimalAPI.ToolMaterials.TOOL_BRONZE, bronzehoehead);
bronzesledgehammer = new SledgeHammer("bronzesledgehammer", PrimalAPI.ToolMaterials.TOOL_BRONZE);
bronzesledgehammer = new SledgeHammer("bronzesledgehammer", PrimalAPI.ToolMaterials.TOOL_BRONZE, 12, -3.7D);
ironpickaxe = new CustomPickaxe("ironpickaxe", PrimalAPI.ToolMaterials.TOOL_WROUGHT_IRON, pickaxehead);
ironaxe = new CustomAxe("ironaxe", PrimalAPI.ToolMaterials.TOOL_WROUGHT_IRON, ironaxehead, 5, -3.6f);
ironshovel = new CustomShovel("ironshovel", PrimalAPI.ToolMaterials.TOOL_WROUGHT_IRON, ironshovelhead);
ironhoe = new CustomHoe("ironhoe", PrimalAPI.ToolMaterials.TOOL_WROUGHT_IRON, ironhoehead);
ironsledgehammer = new SledgeHammer("ironsledgehammer", PrimalAPI.ToolMaterials.TOOL_WROUGHT_IRON);
ironsledgehammer = new SledgeHammer("ironsledgehammer", PrimalAPI.ToolMaterials.TOOL_WROUGHT_IRON, 12, -3.7D);
cleanironpickaxe = new CustomPickaxe("cleanironpickaxe", PrimalAPI.ToolMaterials.TOOL_CLEAN_IRON, cleanironpickaxehead);
cleanironaxe = new CustomAxe("cleanironaxe", PrimalAPI.ToolMaterials.TOOL_CLEAN_IRON, cleanironaxehead, 6, -3.2f);
cleanironshovel = new CustomShovel("cleanironshovel", PrimalAPI.ToolMaterials.TOOL_CLEAN_IRON, cleanironshovelhead);
cleanironhoe = new CustomHoe("cleanironhoe", PrimalAPI.ToolMaterials.TOOL_CLEAN_IRON, cleanironhoehead);
cleanironsledgehammer = new SledgeHammer("cleanironsledgehammer", PrimalAPI.ToolMaterials.TOOL_CLEAN_IRON);
cleanironsledgehammer = new SledgeHammer("cleanironsledgehammer", PrimalAPI.ToolMaterials.TOOL_CLEAN_IRON, 12, -3.7D);
steelpickaxe = new CustomPickaxe("steelpickaxe", PrimalAPI.ToolMaterials.TOOL_BASIC_STEEL, steelpickaxehead);
steelaxe = new CustomAxe("steelaxe", PrimalAPI.ToolMaterials.TOOL_BASIC_STEEL, steelaxehead, 7, -2.8f);
steelshovel = new CustomShovel("steelshovel", PrimalAPI.ToolMaterials.TOOL_BASIC_STEEL, steelshovelhead);
steelhoe = new CustomHoe("steelhoe", PrimalAPI.ToolMaterials.TOOL_BASIC_STEEL, steelhoehead);
steelsledgehammer = new SledgeHammer("steelsledgehammer", PrimalAPI.ToolMaterials.TOOL_BASIC_STEEL);
steelsledgehammer = new SledgeHammer("steelsledgehammer", PrimalAPI.ToolMaterials.TOOL_BASIC_STEEL, 12, -3.5D);
wootzpickaxe = new CustomPickaxe("wootzpickaxe", PrimalAPI.ToolMaterials.TOOL_WOOTZ_STEEL, wootzpickaxehead);
wootzaxe = new CustomAxe("wootzaxe", PrimalAPI.ToolMaterials.TOOL_WOOTZ_STEEL, wootzaxehead, 8, -2.4f);
wootzshovel = new CustomShovel("wootzshovel", PrimalAPI.ToolMaterials.TOOL_WOOTZ_STEEL, wootzshovelhead);
wootzhoe = new CustomHoe("wootzhoe", PrimalAPI.ToolMaterials.TOOL_WOOTZ_STEEL, wootzhoehead);
wootzsledgehammer = new SledgeHammer("wootzsledgehammer", PrimalAPI.ToolMaterials.TOOL_WOOTZ_STEEL);
wootzsledgehammer = new SledgeHammer("wootzsledgehammer", PrimalAPI.ToolMaterials.TOOL_WOOTZ_STEEL, 12, -3.4D);
/**********
WEAPONS

View File

@@ -1,186 +0,0 @@
package nmd.primal.forgecraft.init.recipes;
/**
* Created by mminaie on 9/15/18.
*/
/*
@GameRegistry.ObjectHolder(ModInfo.MOD_ID)
@Mod.EventBusSubscriber
public final class CrucibleRecipes {
@SubscribeEvent
public static void registerRecipes(RegistryEvent.Register<CrucibleCrafting> event)
{
final IForgeRegistry<CrucibleCrafting> registry = event.getRegistry();
/***Default Recipe***/
/**
registry.register(new CrucibleCrafting(
).setRecipeName(""));
***/
/*
registry.register(new CrucibleCrafting(
new OreIngredient("oreIron"),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
new ItemStack(Blocks.IRON_ORE, 1),
new ItemStack(ModItems.ironingotball, 1),
100,
100,
1000).setRecipeName("wroughtiron"));
registry.register(new CrucibleCrafting(
new OreIngredient("dustIron"),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CARBONATE_SLACK, 1)),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
new ItemStack(PrimalAPI.Items.IRON_DUST, 1),
new ItemStack(ModItems.ironcleaningotball, 1),
100,
100,
1000).setRecipeName("cleaniron"));
registry.register(new CrucibleCrafting(
Ingredient.fromStacks(new ItemStack(ModItems.ironcleaningotball, 1)),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CHARCOAL_HIGH, 1)),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
new ItemStack(ModItems.ironcleaningotball, 1),
new ItemStack(ModItems.steelingotball, 1),
100,
100,
1000
).setRecipeName("steel"));
registry.register(new CrucibleCrafting(
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CHARCOAL_PURE, 1)),
Ingredient.fromStacks(new ItemStack(Blocks.LEAVES, 1, 15)),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CHARCOAL_PURE, 1)),
Ingredient.fromStacks(new ItemStack(Blocks.LEAVES, 1, 15)),
new OreIngredient("dustMagnetite"),
new ItemStack(PrimalAPI.Blocks.ORE_MAGNETITE, 1),
new ItemStack(ModItems.wootzingotball, 1),
100,
100,
1000
).setRecipeName("damascus"));
registry.register(new CrucibleCrafting(
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CHARCOAL_PURE, 1)),
Ingredient.fromStacks(new ItemStack(Blocks.LEAVES, 1, 15)),
Ingredient.fromStacks(new ItemStack(PrimalAPI.Items.CHARCOAL_PURE, 1)),
Ingredient.fromStacks(new ItemStack(Blocks.LEAVES, 1, 15)),
new OreIngredient("magnetite"),
new ItemStack(PrimalAPI.Blocks.ORE_MAGNETITE, 1),
new ItemStack(ModItems.wootzingotball, 1),
100,
100,
1000
).setRecipeName("damascus"));
registry.register(new CrucibleCrafting(
new OreIngredient("dustCopper"),
new OreIngredient("dustCopper"),
new OreIngredient("dustCopper"),
new OreIngredient("dustTin"),
Ingredient.EMPTY,
new ItemStack(PrimalAPI.Items.SLAG, 1),
new ItemStack(ModItems.bronzeingotball, 1),
100,
100,
1000
).setRecipeName("bronzebasic"));
NBTTagCompound tagBronzeDefault = new NBTTagCompound();
tagBronzeDefault.setString("upgrades", "");
ItemStack defaultBronze = new ItemStack(ModItems.bronzeingotball, 1);
defaultBronze.setTagCompound(tagBronzeDefault.copy());
registry.register(new CrucibleCrafting(
new OreIngredient("oreBronze"),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
new ItemStack(PrimalAPI.Items.SLAG, 1),
defaultBronze,
100,
100,
1000
).setRecipeName("defaultbronze"));
NBTTagCompound tag = new NBTTagCompound();
tag.setString("upgrades", "redstone");
ItemStack redBronze = new ItemStack(ModItems.bronzeingotball, 1);
registry.register(new CrucibleCrafting(
new OreIngredient("ingotBronze"),
new OreIngredient("dustRedstone"),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
new ItemStack(PrimalAPI.Items.SLAG, 1),
redBronze,
100,
100,
100
).setRecipeName("redbronze"));
NBTTagCompound diamondBronzeTag = new NBTTagCompound();
tag.setString("upgrades", "diamond");
ItemStack diamondBronze = new ItemStack(ModItems.bronzeingotball, 1);
diamondBronze.setTagCompound(diamondBronzeTag.copy());
registry.register(new CrucibleCrafting(
new OreIngredient("ingotBronze"),
new OreIngredient("dustDiamond"),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
new ItemStack(PrimalAPI.Items.SLAG, 1),
diamondBronze,
100,
100,
100
).setRecipeName("diamondbronze"));
NBTTagCompound emeraldBronzeTag = new NBTTagCompound();
tag.setString("upgrades", "emerald");
ItemStack emeraldBronze = new ItemStack(ModItems.bronzeingotball, 1);
emeraldBronze.setTagCompound(emeraldBronzeTag.copy());
registry.register(new CrucibleCrafting(
new OreIngredient("ingotBronze"),
new OreIngredient("dustEmerald"),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
new ItemStack(PrimalAPI.Items.SLAG, 1),
diamondBronze,
100,
100,
100
).setRecipeName("emeraldbronze"));
NBTTagCompound tagBronzeLapis = new NBTTagCompound();
tagBronzeDefault.setString("upgrades", "lapis");
ItemStack lapisBronze = new ItemStack(ModItems.bronzeingotball, 1);
lapisBronze.setTagCompound(tagBronzeLapis.copy());
registry.register(new CrucibleCrafting(
new OreIngredient("oreBronze"),
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
Ingredient.EMPTY,
new ItemStack(PrimalAPI.Items.SLAG, 1),
lapisBronze,
100,
100,
1000
).setRecipeName("lapisbronze"));
}
}
*/

View File

@@ -1,42 +1,62 @@
package nmd.primal.forgecraft.items;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.mojang.realmsclient.gui.ChatFormatting;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.MobEffects;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.core.api.PrimalAPI;
import nmd.primal.core.common.items.tools.Gallagher;
import nmd.primal.core.common.recipes.irecipe.ToolCraftingRecipe;
import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.blocks.Anvil.AnvilBase;
import nmd.primal.forgecraft.blocks.Chisel;
import nmd.primal.forgecraft.util.ToolMaterialMap;
import javax.annotation.Nullable;
import java.util.List;
public class SledgeHammer extends BaseItem implements ToolMaterialMap {
public class SledgeHammer extends Gallagher implements ToolMaterialMap {
private int attack;
private double speed;
private ToolMaterial material;
public SledgeHammer(String registryName, Item.ToolMaterial material) {
super(registryName);
public SledgeHammer(String name, Item.ToolMaterial material, Integer attack, Double speed) {
super(material, ToolCraftingRecipe.EnumToolType.MALLET_METAL);
this.setUnlocalizedName(name);
this.setRegistryName(name);
this.setMaxDamage(material.getMaxUses()*3);
this.setHarvestLevel("pickaxe", material.getHarvestLevel());
this.setHarvestLevel("pickaxe" , material.getHarvestLevel());
this.material=material;
this.attack = attack;
this.speed = speed;
this.setCreativeTab(ModInfo.TAB_FORGECRAFT);
}
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) {
if(!world.isRemote){
EntityPlayer player = (EntityPlayer) entity;
if(player.inventory.getCurrentItem().getItem().equals(stack.getItem())) {
if(player.isPotionActive(MobEffects.MINING_FATIGUE)) {
if (!player.isSwingInProgress) {
@@ -51,17 +71,21 @@ public class SledgeHammer extends BaseItem implements ToolMaterialMap {
}
@Override
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand)
public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing face, float hitx, float hity, float hitz)
{
if(!world.isRemote) {
if (!player.isSwingInProgress) {
int tempInt = 0;
player.addPotionEffect(new PotionEffect(MobEffects.MINING_FATIGUE, (100/(materialModifiers.get(this.getMaterial())+tempInt)), 100));
player.swingArm(hand);
return new ActionResult<ItemStack>(EnumActionResult.PASS, player.getHeldItem(hand));
IBlockState state = world.getBlockState(pos);
Block block = world.getBlockState(pos).getBlock();
if(!(block instanceof AnvilBase)) {
if (!player.isSwingInProgress) {
int tempInt = 0;
player.addPotionEffect(new PotionEffect(MobEffects.MINING_FATIGUE, (100 - ((materialModifiers.get(this.getMaterial()) * 13) + tempInt)), 100));
player.swingArm(hand);
return EnumActionResult.PASS;
}
}
}
return new ActionResult<ItemStack>(EnumActionResult.FAIL, player.getHeldItem(hand));
return EnumActionResult.PASS;
}
public ToolMaterial getMaterial() {
@@ -75,4 +99,36 @@ public class SledgeHammer extends BaseItem implements ToolMaterialMap {
tooltip.add(ChatFormatting.LIGHT_PURPLE + "Damage: " + item.getItemDamage() );
}
@SideOnly(Side.CLIENT)
@Override
public boolean hasEffect(ItemStack stack)
{
return false;
}
@Override
public boolean isRepairable()
{
return false;
}
public int getItemEnchantability(ItemStack stack)
{
return 0;
}
@Override
public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot)
{
Multimap<String, AttributeModifier> multimap = HashMultimap.<String, AttributeModifier>create();
if (equipmentSlot == EntityEquipmentSlot.MAINHAND)
{
multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", this.attack, 0));
multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", this.speed, 0));
}
return multimap;
}
}

View File

@@ -0,0 +1,28 @@
package nmd.primal.forgecraft.items.weapons;
import com.mojang.realmsclient.gui.ChatFormatting;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.forgecraft.items.BaseItem;
import javax.annotation.Nullable;
import java.util.List;
public class RawLongbow extends BaseItem {
public RawLongbow(String registryName) {
super(registryName);
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
tooltip.add(ChatFormatting.GRAY + "Stack two Yew Staves in-world and Sneak right-click the bottom Yew Stave with a Work Blade");
}
}

View File

@@ -18,6 +18,7 @@ import nmd.primal.forgecraft.crafting.AnvilCrafting;
import nmd.primal.forgecraft.init.ModItems;
import nmd.primal.forgecraft.items.BaseMultiItem;
import nmd.primal.forgecraft.items.ForgeHammer;
import nmd.primal.forgecraft.items.SledgeHammer;
import nmd.primal.forgecraft.items.SlottedTongs;
import nmd.primal.forgecraft.items.parts.ToolPart;
import nmd.primal.forgecraft.tiles.TileAnvil;
@@ -273,128 +274,127 @@ public interface AnvilHandler extends ToolMaterialMap {
static boolean doWork(ItemStack pItem, Integer counter, TileAnvil tile, World world, BlockPos pos, EntityPlayer player) {
if (pItem.getItem().equals(ModItems.slottedtongs)) {
if (pItem.getItem().equals(ModItems.slottedtongs)) {
IItemHandler inventory = pItem.getCapability(ITEM_HANDLER, null);
ItemStack tongStack = inventory.getStackInSlot(0).copy();
SlottedTongs itemstackItem = (SlottedTongs) pItem.getItem();
IItemHandler inventory = pItem.getCapability(ITEM_HANDLER, null);
ItemStack tongStack = inventory.getStackInSlot(0).copy();
SlottedTongs itemstackItem = (SlottedTongs) pItem.getItem();
if (tongStack.isEmpty()) {
if (!tile.getSlotStack(counter).isEmpty()) {
ItemStack tempStack = tile.getSlotStack(counter).copy();
inventory.insertItem(0,tempStack, false);
tile.setSlotStack(counter, ItemStack.EMPTY);
itemstackItem.markDirty(pItem);
return true;
}
}
if (!tongStack.isEmpty()) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, inventory.extractItem(0, 1, false));
itemstackItem.markDirty(pItem);
return true;
}
}
}
if (pItem.getItem().equals(Items.AIR) && player.isSneaking()) {
if (tile.getSlotStack(counter).getItem().equals(Items.DIAMOND)) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (tile.getSlotStack(counter).getItem().equals(PrimalAPI.Items.DIAMOND_KNAPP)) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (tile.getSlotStack(counter).getItem().equals(Items.EMERALD)) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (tile.getSlotStack(counter).getItem().equals(PrimalAPI.Items.EMERALD_KNAPP)) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (tile.getSlotStack(counter).getItem().equals(Items.REDSTONE)) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (tile.getSlotStack(counter).getItem().equals(Items.DYE) && tile.getSlotStack(counter).getItemDamage() == EnumDyeColor.BLUE.getDyeDamage()) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (tile.getSlotStack(counter).getItem() instanceof BaseMultiItem) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
}
if(tile.getSlotStack(counter).getItem() instanceof ToolPart){
if (tile.getSlotStack(counter).getSubCompound("tags").getBoolean("hot") == false) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
if (tongStack.isEmpty()) {
if (!tile.getSlotStack(counter).isEmpty()) {
ItemStack tempStack = tile.getSlotStack(counter).copy();
inventory.insertItem(0,tempStack, false);
tile.setSlotStack(counter, ItemStack.EMPTY);
itemstackItem.markDirty(pItem);
return true;
}
}
if (pItem.getItem().equals(Items.DIAMOND)) {
if (!tongStack.isEmpty()) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1));
pItem.shrink(1);
tile.setSlotStack(counter, inventory.extractItem(0, 1, false));
itemstackItem.markDirty(pItem);
return true;
}
}
}
if (pItem.getItem().equals(Items.AIR) && player.isSneaking()) {
if (tile.getSlotStack(counter).getItem().equals(Items.DIAMOND)) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (tile.getSlotStack(counter).getItem().equals(PrimalAPI.Items.DIAMOND_KNAPP)) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (tile.getSlotStack(counter).getItem().equals(Items.EMERALD)) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (tile.getSlotStack(counter).getItem().equals(PrimalAPI.Items.EMERALD_KNAPP)) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (tile.getSlotStack(counter).getItem().equals(Items.REDSTONE)) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (pItem.getItem().equals(Items.EMERALD)) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1));
pItem.shrink(1);
return true;
}
if (tile.getSlotStack(counter).getItem().equals(Items.DYE) && tile.getSlotStack(counter).getItemDamage() == EnumDyeColor.BLUE.getDyeDamage()) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
if (pItem.getItem().equals(PrimalAPI.Items.EMERALD_KNAPP)) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1));
pItem.shrink(1);
return true;
}
if (tile.getSlotStack(counter).getItem() instanceof BaseMultiItem) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
}
if(tile.getSlotStack(counter).getItem() instanceof ToolPart){
if (tile.getSlotStack(counter).getSubCompound("tags").getBoolean("hot") == false) {
CommonUtils.spawnItemEntityFromWorld(world, pos, tile.getSlotStack(counter));
tile.setSlotStack(counter, ItemStack.EMPTY);
return true;
}
}
if (pItem.getItem().equals(PrimalAPI.Items.DIAMOND_KNAPP)) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1));
pItem.shrink(1);
return true;
}
if (pItem.getItem().equals(Items.DIAMOND)) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1));
pItem.shrink(1);
return true;
}
}
if (pItem.getItem().equals(Items.REDSTONE)) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1));
pItem.shrink(1);
return true;
}
if (pItem.getItem().equals(Items.EMERALD)) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1));
pItem.shrink(1);
return true;
}
}
if (pItem.getItem().equals(Items.DYE) && pItem.getItemDamage() == EnumDyeColor.BLUE.getDyeDamage()) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1, pItem.getItemDamage()));
pItem.shrink(1);
return true;
}
if (pItem.getItem().equals(PrimalAPI.Items.EMERALD_KNAPP)) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1));
pItem.shrink(1);
return true;
}
}
if (pItem.getItem().equals(PrimalAPI.Items.DIAMOND_KNAPP)) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1));
pItem.shrink(1);
return true;
}
}
if (pItem.getItem().equals(Items.REDSTONE)) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1));
pItem.shrink(1);
return true;
}
}
if (pItem.getItem().equals(Items.DYE) && pItem.getItemDamage() == EnumDyeColor.BLUE.getDyeDamage()) {
if (tile.getSlotStack(counter).isEmpty()) {
tile.setSlotStack(counter, new ItemStack(pItem.getItem(), 1, pItem.getItemDamage()));
pItem.shrink(1);
return true;
}
}
return false;
}
@@ -409,7 +409,6 @@ public interface AnvilHandler extends ToolMaterialMap {
double offsetX = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D;
double offsetY = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D;
double offsetZ = world.rand.nextFloat() * offset + (1.0F - offset) * 0.5D;
System.out.println(stack);
EntityItem itemDrop = new EntityItem(world, pos.getX() + offsetX, pos.getY() + offsetY, pos.getZ() + offsetZ, stack);
itemDrop.setDefaultPickupDelay();
world.spawnEntity(itemDrop);

View File

@@ -20,11 +20,12 @@ tile.pistonbellowsspruce.name=Spruce Piston Bellows
tile.pistonbellowsdarkoak.name=Dark Oak Piston Bellows
tile.pistonbellowsacacia.name=Acacia Piston Bellows
tile.emptycruciblehot.name=Empty Hot Crucible
tile.emptycrucible.name=Empty Crucible
tile.emptycruciblehit.name=Hot Empty Crucible
tile.emptycruciblecracked.name= Cracked Empty Crucible
tile.emptycruciblecrackedhot.name=Cracked Hot Empty Crucible
tile.steelchisel.name=Steel Chisel
tile.wootzchisel.name= Damascus Chisel
tile.cleanironchisel.name=Clean Iron Chisel
tile.ironchisel.name=Wrought Iron Chisel
tile.copperchisel.name=Copper Chisel
tile.bronzechisel.name=Bronze Chisel
item.bronzeingotball.name=Bronze Ingot
item.bronzechunk.name=Bronze Chunk
@@ -134,6 +135,13 @@ item.coppergladius.name=Copper Gladius
item.leatherhelmet.name=Hardened Leather Helmet
item.wootzsledgehammer.name=Damascus SledgeHammer
item.steelsledgehammer.name=Steel SledgeHammer
item.cleanironsledgehammer.name=Clean Iron SledgeHammer
item.ironsledgehammer.name=Wrough Iron SledgeHammer
item.bronzesledgehammer.name=Bronze SledgeHammer
item.coppersledgehammer.name=Copper SledgeHammer
# -- configuration -- #
forgecraft.config.title=ForgeCraft Config

View File

@@ -2,7 +2,7 @@
"modid": "forgecraft",
"name": "Kitsu's Forgecraft",
"description": "Forged with sweat and blood",
"version": "1.6.20",
"version": "1.6.21",
"mcversion": "1.12.2",
"url": "",
"updateUrl": "",