diff --git a/kfc/To-Dos.md b/kfc/To-Dos.md index 3725acd3..019f7112 100644 --- a/kfc/To-Dos.md +++ b/kfc/To-Dos.md @@ -8,10 +8,15 @@ ## Current Feature -- [ ] weapon upgrades -- [ ] Grinding Bench -- [ ] Grinding Wheel Crafting Slack, Clay, Sand +- [x] weapon upgrades +- [x] Grinding Bench +- [x] Repair ToolHead +- [x] Grinding Wheel Crafting Slack, Clay, Sand +- [x] Grinding Bench Recipe +- [x] Dissasemble recipes for weapons +- [x] Chisel Pickup - [ ] Damascus Workblade Recipe + - [ ] Untick Bloomery and Forge - [ ] Craft Tweaker Support - [ ] Recipe Handler for Block Breaker diff --git a/kfc/gradle.properties b/kfc/gradle.properties index 801dd48e..a2aadd16 100644 --- a/kfc/gradle.properties +++ b/kfc/gradle.properties @@ -6,7 +6,7 @@ org.gradle.jvmargs=-Xmx3G mod_group=nmd.primal.forgecraft mod_name=ForgeCraft -mod_version=1.6.33 +mod_version=1.6.40 forge_version=14.23.4.2765 mcp_mappings=snapshot_20171003 mc_version=1.12.2 diff --git a/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java b/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java index 105c952d..69b9e9e9 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/ModInfo.java @@ -22,7 +22,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.33"; + public static final String MOD_VERSION = "1.6.40"; 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,);"; diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/Chisel.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/Chisel.java index bcc33250..c3d9ad67 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/Chisel.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/Chisel.java @@ -8,6 +8,7 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.MobEffects; +import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; @@ -24,6 +25,7 @@ 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.helper.PlayerHelper; import nmd.primal.forgecraft.init.ModSounds; import nmd.primal.forgecraft.items.SledgeHammer; import nmd.primal.forgecraft.util.ToolMaterialMap; @@ -146,6 +148,13 @@ public class Chisel extends CustomFacing implements ToolMaterialMap { ItemStack playerStack = player.inventory.getCurrentItem(); ItemStack offStack = player.inventory.offHandInventory.get(0); int toolHarvestLevel = playerStack.getItem().getHarvestLevel(playerStack, "pickaxe", player, state); + if(player.getActiveItemStack().isEmpty()){ + if(player.isSneaking()){ + PlayerHelper.spawnItemOnPlayer(world, player, new ItemStack(Item.getItemFromBlock(state.getBlock()), 1)); + world.setBlockToAir(pos); + return true; + } + } if (hand.equals(hand.MAIN_HAND) && offStack == ItemStack.EMPTY) { if(!player.isSwingInProgress) { if(player.getActivePotionEffect(MobEffects.MINING_FATIGUE ) == null){ diff --git a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/SharpBench.java b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/SharpBench.java index 4be5161a..18e5d0f0 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/SharpBench.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/blocks/machine/SharpBench.java @@ -9,6 +9,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; +import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; @@ -17,6 +18,7 @@ import nmd.primal.core.api.PrimalAPI; import nmd.primal.core.common.helper.PlayerHelper; import nmd.primal.forgecraft.blocks.CustomContainerFacingActive; import nmd.primal.forgecraft.init.ModItems; +import nmd.primal.forgecraft.items.parts.ToolPart; import nmd.primal.forgecraft.items.parts.WeaponPart; import nmd.primal.forgecraft.items.weapons.CustomSword; import nmd.primal.forgecraft.items.weapons.SlayerSword; @@ -28,10 +30,10 @@ import javax.annotation.Nullable; public class SharpBench extends CustomContainerFacingActive { - protected static final AxisAlignedBB boundBoxNorth = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 10 / 16D, 8 / 16D); - protected static final AxisAlignedBB boundBoxSouth = new AxisAlignedBB(0.0D, 0.0D, 8 / 16D, 1.0D, 10 / 16D, 1.0D); - protected static final AxisAlignedBB boundBoxEast = new AxisAlignedBB(8 / 16D, 0.0D, 0.0D, 1.0D, 10 / 16D, 1.0D); - protected static final AxisAlignedBB boundBoxWest = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 8 / 16D, 10 / 16D, 1.0D); + protected static final AxisAlignedBB boundBoxNorth = new AxisAlignedBB(0.28125D, 0.0D, 1/16D, 0.71875D, 11 / 16D, 11 / 16D); + protected static final AxisAlignedBB boundBoxSouth = new AxisAlignedBB(0.28125D, 0.0D, 5/16D, 0.71875D, 11 / 16D, 15 / 16D); + protected static final AxisAlignedBB boundBoxEast = new AxisAlignedBB(5/16D, 0.0D, 0.28125D, 15/16D, 11 / 16D, 0.71875D); + protected static final AxisAlignedBB boundBoxWest = new AxisAlignedBB(1/16D, 0.0D, 0.28125D, 11/16D, 11 / 16D, 0.71875D); public SharpBench(Material material, String registryName) { super(material, registryName); @@ -63,6 +65,7 @@ public class SharpBench extends CustomContainerFacingActive { if(tile.getSlotStack(0).getItem().equals(ModItems.grindingwheel)){ PlayerHelper.spawnItemOnGround(world, pos, tile.getSlotStack(0)); tile.clearSlot(0); + world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, false), 2); } } } @@ -80,18 +83,25 @@ public class SharpBench extends CustomContainerFacingActive { TileSharpBench tile = (TileSharpBench) world.getTileEntity(pos); if(state.getValue(PrimalAPI.States.ACTIVE) && tile.getSlotStack(0).getItem().equals(ModItems.grindingwheel)){ ItemStack playerStack = player.inventory.getCurrentItem(); - if(playerStack.getItem() instanceof CustomSword || - playerStack.getItem() instanceof SlayerSword){ + if( + playerStack.getItem() instanceof CustomSword || + playerStack.getItem() instanceof ToolPart + ){ if(playerStack.getItemDamage() > 0){ if (!world.isRemote) { - if (PrimalAPI.getRandom().nextInt(1, 4) == 1) { + if (PrimalAPI.getRandom().nextInt(1, 3) == 1) { playerStack.setItemDamage(playerStack.getItemDamage() - 1); tile.getSlotStack(0).setItemDamage(tile.getSlotStack(0).getItemDamage() + 1); - WeaponNBT.removeAndSetEnchantsForStack(playerStack); + if(tile.getSlotStack(0).getItemDamage()>= tile.getSlotStack(0).getMaxDamage()){ + tile.clearSlot(0); + } + if(playerStack.getItem() instanceof CustomSword) { + WeaponNBT.removeAndSetEnchantsForStack(playerStack); + } } } if (world.isRemote) { - //TODO make sparks + makeSparks(world, pos, state); } } } @@ -150,4 +160,26 @@ public class SharpBench extends CustomContainerFacingActive { super.breakBlock(world, pos, state); } + private void makeSparks(World world, BlockPos pos, IBlockState state){ + double d0 = (double)pos.getX() + 0.5D; + double d1 = (double)pos.getY() + 0.75D; + double d2 = (double)pos.getZ() + 0.5D; + double d3 = 0.52D; + //double d4 = PrimalAPI.getRandom().nextDouble(0.066, 0.33); + double ySpeed = PrimalAPI.getRandom().nextDouble(0.05, 0.20); + double zSpeed = PrimalAPI.getRandom().nextDouble(0.05, 0.20); + if(state.getValue(FACING) == EnumFacing.NORTH) { + world.spawnParticle(EnumParticleTypes.FIREWORKS_SPARK, d0, d1, d2, 0.0D, ySpeed, -zSpeed, new int[0]); + } + if(state.getValue(FACING) == EnumFacing.SOUTH) { + world.spawnParticle(EnumParticleTypes.FIREWORKS_SPARK, d0, d1, d2, 0.0D, ySpeed, zSpeed, new int[0]); + } + if(state.getValue(FACING) == EnumFacing.EAST) { + world.spawnParticle(EnumParticleTypes.FIREWORKS_SPARK, d0, d1, d2, zSpeed, ySpeed, 0.0D, new int[0]); + } + if(state.getValue(FACING) == EnumFacing.WEST) { + world.spawnParticle(EnumParticleTypes.FIREWORKS_SPARK, d0, d1, d2, -zSpeed, ySpeed, 0.0D, new int[0]); + } + } + } \ No newline at end of file diff --git a/kfc/src/main/java/nmd/primal/forgecraft/compat/jei/ModJEI.java b/kfc/src/main/java/nmd/primal/forgecraft/compat/jei/ModJEI.java index 850d4959..36951381 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/compat/jei/ModJEI.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/compat/jei/ModJEI.java @@ -101,10 +101,11 @@ public class ModJEI implements IModPlugin // Info // ***************************************************************************** // //registry.addIngredientInfo(ItemStack.EMPTY, ItemStack.class, "jei.info.forgecraft.crucible"); - registry.addIngredientInfo(new ItemStack(ModBlocks.nbtCrucible, 1, OreDictionary.WILDCARD_VALUE), ItemStack.class, "jei.info.forgecraft.crucible"); + //registry.addIngredientInfo(new ItemStack(ModBlocks.nbtCrucible, 1, OreDictionary.WILDCARD_VALUE), ItemStack.class, "jei.info.forgecraft.crucible"); //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"); + registry.addIngredientInfo(new ItemStack(ModBlocks.sharpbench, 1, OreDictionary.WILDCARD_VALUE), ItemStack.class, "jei.info.forgecraft.sharpbench"); + //registry.addIngredientInfo(new ItemStack(ModBlocks.stoneanvil, 1, OreDictionary.WILDCARD_VALUE), ItemStack.class, "jei.info.forgecraft.anvil"); } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/compat/jei/workbench/WorkbenchRecipeCategory.java b/kfc/src/main/java/nmd/primal/forgecraft/compat/jei/workbench/WorkbenchRecipeCategory.java index 0710fc86..acef96c2 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/compat/jei/workbench/WorkbenchRecipeCategory.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/compat/jei/workbench/WorkbenchRecipeCategory.java @@ -6,6 +6,7 @@ import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.ingredients.IIngredients; import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -45,7 +46,7 @@ public class WorkbenchRecipeCategory extends AbstractCategory +{ + public BaseSingleItem(String registryName, int damage) + { + super(registryName); + this.setMaxStackSize(1); + this.canRepair = false; + this.setMaxDamage(damage); + } + + public String getName() { + return this.getRegistryName().toString(); + } + + public static boolean isHidden() + { + return false; + } + + // ***************************************************************************** // + // IDictionaryName + // ***************************************************************************** // + private String[] dictionary_names; + + @Override + public Item setDictionaryNames(String... strings) + { + this.dictionary_names = strings; + return this; + } + + @Override + public String[] getDictionaryNames() + { + return this.dictionary_names; + } + + @Override + public void registerDictionaryNames() + { + for (String name : this.getDictionaryNames()) + //RegistryHelper.registerDictionaryNames(new ItemStack(this, 1, OreDictionary.WILDCARD_VALUE), REGISTRY_NAME); + RegistryHelper.registerDictionaryNames(new ItemStack(this), name); + } + +} \ No newline at end of file diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/weapons/CustomSword.java b/kfc/src/main/java/nmd/primal/forgecraft/items/weapons/CustomSword.java index 2d97c172..daa4113f 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/weapons/CustomSword.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/weapons/CustomSword.java @@ -161,9 +161,6 @@ public class CustomSword extends ItemSword implements WeaponNBT { if (WeaponNBT.getLeechLevel(stack) > 0) { tooltip.add(ChatFormatting.BLACK + "Life Steal: " + WeaponNBT.getLeechLevel(stack)); } - //if (WeaponNBT.getSharpnessLevel(stack) > 0) { - // tooltip.add(ChatFormatting.WHITE + "Sharpness: " + WeaponNBT.getSharpnessLevel(stack)); - //} } } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/items/weapons/SlayerSword.java b/kfc/src/main/java/nmd/primal/forgecraft/items/weapons/SlayerSword.java index aaffbdaa..d7f4994f 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/items/weapons/SlayerSword.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/items/weapons/SlayerSword.java @@ -5,72 +5,54 @@ import com.google.common.collect.Multimap; 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.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; +import net.minecraft.util.EnumHand; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import nmd.primal.forgecraft.ModInfo; +import nmd.primal.forgecraft.util.WeaponNBT; /** * Created by mminaie on 6/25/17. */ -public class SlayerSword extends ItemSword { - - private double attack, speed; +public class SlayerSword extends CustomSword { public SlayerSword(String name, Item.ToolMaterial material, double attackDamage, double attackSpeed) { - super(material); - this.setUnlocalizedName(name); - this.setRegistryName(name); - this.setCreativeTab(ModInfo.TAB_FORGECRAFT); - this.setMaxStackSize(1); - this.setNoRepair(); - this.attack = attackDamage; - this.speed = attackSpeed; - + super(name, material, attackDamage, attackSpeed); } @Override - public void onUpdate(ItemStack item, World world, Entity playerin, int itemSlot, boolean isSelected) { + public void onUpdate(ItemStack stack, World world, Entity ent, int itemSlot, boolean isSelected) { if(isSelected){ - playerin.setSprinting(false); + EntityPlayer player = (EntityPlayer) ent; + if(!player.inventory.offHandInventory.isEmpty()) { + ent.setSprinting(false); + } + if (stack.getItemDamage() < stack.getMaxDamage() * 0.5){ + WeaponNBT.setSharpnessLevel(stack, 5); + } + if (stack.getItemDamage() > stack.getMaxDamage() * 0.5 && stack.getItemDamage() < stack.getMaxDamage() * 0.6){ + WeaponNBT.setSharpnessLevel(stack, 4); + } + if (stack.getItemDamage() > stack.getMaxDamage() * 0.6 && stack.getItemDamage() < stack.getMaxDamage() * 0.7){ + WeaponNBT.setSharpnessLevel(stack, 3); + } + if (stack.getItemDamage() > stack.getMaxDamage() * 0.7 && stack.getItemDamage() < stack.getMaxDamage() * 0.8){ + WeaponNBT.setSharpnessLevel(stack, 2); + } + if (stack.getItemDamage() > stack.getMaxDamage() * 0.8 && stack.getItemDamage() < stack.getMaxDamage() * 0.9){ + WeaponNBT.setSharpnessLevel(stack, 1); + } + if (stack.getItemDamage() > stack.getMaxDamage() * 0.9 && stack.getItemDamage() < stack.getMaxDamage()){ + WeaponNBT.setSharpnessLevel(stack, 0); + } } } - @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 getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot) - { - Multimap multimap = HashMultimap.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; - } - } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileSharpBenchRender.java b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileSharpBenchRender.java new file mode 100644 index 00000000..c2bc3e8c --- /dev/null +++ b/kfc/src/main/java/nmd/primal/forgecraft/renders/blocks/TileSharpBenchRender.java @@ -0,0 +1,116 @@ +package nmd.primal.forgecraft.renders.blocks; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderItem; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import nmd.primal.core.api.PrimalAPI; +import nmd.primal.core.common.helper.RecipeHelper; +import nmd.primal.forgecraft.blocks.machine.SharpBench; +import nmd.primal.forgecraft.blocks.machine.Workbench; +import nmd.primal.forgecraft.items.parts.WeaponPart; +import nmd.primal.forgecraft.tiles.TileSharpBench; +import nmd.primal.forgecraft.tiles.TileWorkbench; +import org.lwjgl.opengl.GL11; + +/** + * Created by kitsu on 12/4/2016. + */ +public class TileSharpBenchRender extends TileEntitySpecialRenderer +{ + private RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); + + @Override + public void render(TileSharpBench tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha) + { + BlockPos pos = tile.getPos(); + IBlockState state = this.getWorld().getBlockState(pos); + if (state.getBlock() instanceof SharpBench) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + //GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); + float prevLGTX = OpenGlHelper.lastBrightnessX; + float prevLGTY = OpenGlHelper.lastBrightnessY; + + int bright = tile.getWorld().getCombinedLight(pos.up(), 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, bright % 65536, bright / 65536); + + ItemStack stack0 = tile.getSlotStack(0); + + if (state.getValue(Workbench.FACING) == EnumFacing.NORTH) { + + if (!stack0.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + + GL11.glTranslated(0.5D, 0.71875D, 0.28125D); + GL11.glScalef(scale, scale, scale); + GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); + } + renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + } + if (state.getValue(Workbench.FACING) == EnumFacing.SOUTH) { + if (!stack0.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + + GL11.glTranslated(0.5D, 0.71875D, 1-0.28125D); + GL11.glScalef(scale, scale, scale); + GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); + } + renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + } + if (state.getValue(Workbench.FACING) == EnumFacing.EAST) { + if (!stack0.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + + GL11.glTranslated(1-0.28125D, 0.71875D, 0.5D); + GL11.glScalef(scale, scale, scale); + //GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); + } + renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + } + if (state.getValue(Workbench.FACING) == EnumFacing.WEST) { + if (!stack0.isEmpty()) { + float scale = 1.0f; + GL11.glPushMatrix(); + + GL11.glTranslated(0.28125D, 0.71875D, 0.5D); + GL11.glScalef(scale, scale, scale); + //GL11.glRotated(90.0F, 0.0F, 1.0F, 0.0F); + if(state.getValue(PrimalAPI.States.ACTIVE)) { + GL11.glRotated(PrimalAPI.getRandom().nextDouble(0D, 360D), 0.0D, 0.0D, 1.0D); + } + renderItem.renderItem(stack0, ItemCameraTransforms.TransformType.FIXED); + GL11.glPopMatrix(); + } + } + + + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, prevLGTX, prevLGTY); + GL11.glPopMatrix(); + } + } +} \ No newline at end of file diff --git a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileSharpBench.java b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileSharpBench.java index aa325947..859a686b 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileSharpBench.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileSharpBench.java @@ -46,6 +46,10 @@ public class TileSharpBench extends TileBaseSlot implements ITickable { iteration = 0; } } + if(this.charge==0){ + world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, false), 2); + this.updateBlock(); + } } } diff --git a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileWorkbench.java b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileWorkbench.java index f9678e0d..4c172840 100644 --- a/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileWorkbench.java +++ b/kfc/src/main/java/nmd/primal/forgecraft/tiles/TileWorkbench.java @@ -10,6 +10,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.CustomSword; public class TileWorkbench extends TileBaseSlot{ public boolean isItemValidForSlot(int index, ItemStack stack) { @@ -49,7 +50,8 @@ public class TileWorkbench extends TileBaseSlot{ if(stack.getItem() instanceof CustomAxe || stack.getItem() instanceof CustomHoe || stack.getItem() instanceof CustomPickaxe || - stack.getItem() instanceof CustomShovel){ + stack.getItem() instanceof CustomShovel || + stack.getItem() instanceof CustomSword){ return true; } } diff --git a/kfc/src/main/resources/assets/forgecraft/lang/en_US.lang b/kfc/src/main/resources/assets/forgecraft/lang/en_US.lang index ea9d48b4..937730bf 100644 --- a/kfc/src/main/resources/assets/forgecraft/lang/en_US.lang +++ b/kfc/src/main/resources/assets/forgecraft/lang/en_US.lang @@ -28,6 +28,7 @@ tile.copperchisel.name=Copper Chisel tile.bronzechisel.name=Bronze Chisel tile.toolbench.name=Tool Bench +tile.sharpbench.name=Sharpening Bench item.bronzeingotball.name=Bronze Ingot item.bronzechunk.name=Bronze Chunk @@ -49,6 +50,8 @@ item.brokenwootztool.name=Broken Damascus Tool item.unstrunglongbow.name=Unstrung Longbow item.longbow.name=Longbow item.rawlongbow.name=Raw Longbow +item.grindingwheel.name=Grinding Wheel +item.rawironslayer.name=Raw Wrought Iron Slayer item.bellowshandle.name=Bellows Handle item.softcrucible.name=Soft Crucible @@ -176,8 +179,5 @@ jei.category.forgecraft.casting=Casting jei.category.forgecraft.forging=Forging jei.category.forgecraft.workbench=Tool Bench -jei.info.forgecraft.crucible=Crucible Crafting -jei.info.forgecraft.anvil=Anvil Crafting -jei.info.forgecraft.casting=Casting -jei.info.forgecraft.forging=Forging -jei.info.forgecraft.workbench=Tool Bench \ No newline at end of file +jei.info.forgecraft.casting=Right Click the casting form while holding a hot crucible of the crafting material. +jei.info.forgecraft.sharpbench=Right click with an empty hand to get the grinding wheel going. Make contact with the grinding wheel while holding a Weapon or Tool head. \ No newline at end of file diff --git a/kfc/src/main/resources/mcmod.info b/kfc/src/main/resources/mcmod.info index cdb6b515..349bd28b 100644 --- a/kfc/src/main/resources/mcmod.info +++ b/kfc/src/main/resources/mcmod.info @@ -2,7 +2,7 @@ "modid": "forgecraft", "name": "Kitsu's Forgecraft", "description": "Forged with sweat and blood", - "version": "1.6.33", + "version": "1.6.40", "mcversion": "1.12.2", "url": "", "updateUrl": "",