Battleaxe
@ -38,7 +38,7 @@ import cpw.mods.fml.common.registry.VillagerRegistry;
|
||||
* @dependencies: IC2 API, MFR API
|
||||
*/
|
||||
|
||||
@Mod(modid = "TConstruct", name = "TConstruct", version = "1.5.1_1.3.dev.52", dependencies = "required-after:Forge@[7.7.1.675,)")
|
||||
@Mod(modid = "TConstruct", name = "TConstruct", version = "1.5.1_1.3.dev.57", dependencies = "required-after:Forge@[7.7.1.675,)")
|
||||
@NetworkMod(serverSideRequired = false, clientSideRequired = true, channels = { "TConstruct" }, packetHandler = mods.tinker.tconstruct.util.network.TPacketHandler.class)
|
||||
public class TConstruct
|
||||
{
|
||||
|
@ -15,7 +15,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||
public class MultiBrickFancy extends TConstructBlock
|
||||
{
|
||||
static String blockTextures[] = { "fancybrick_obsidian", "fancybrick_sandstone", "fancybrick_netherrack", "fancybrick_stone_refined", "fancybrick_iron", "fancybrick_gold", "fancybrick_lapis", "fancybrick_diamond", "fancybrick_redstone",
|
||||
"fancybrick_bone", "fancybrick_slime", "fancybrick_blueslime", "fancybrick_endstone", "fancybrick_obsidian_ingot" };
|
||||
"fancybrick_bone", "fancybrick_slime", "fancybrick_blueslime", "fancybrick_endstone", "fancybrick_obsidian_ingot", "road_stone", "road_refinedstone" };
|
||||
|
||||
public MultiBrickFancy(int id)
|
||||
{
|
||||
@ -31,7 +31,6 @@ public class MultiBrickFancy extends TConstructBlock
|
||||
case 0: return Block.obsidian.getBlockHardness(world, x, y, z);
|
||||
case 1: return Block.sandStone.getBlockHardness(world, x, y, z);
|
||||
case 2: return Block.netherrack.getBlockHardness(world, x, y, z);
|
||||
case 3: return Block.stone.getBlockHardness(world, x, y, z);
|
||||
case 4: return Block.blockIron.getBlockHardness(world, x, y, z);
|
||||
case 5: return Block.blockGold.getBlockHardness(world, x, y, z);
|
||||
case 6: return Block.blockLapis.getBlockHardness(world, x, y, z);
|
||||
@ -42,6 +41,10 @@ public class MultiBrickFancy extends TConstructBlock
|
||||
case 11: return 1.5F;
|
||||
case 12: return Block.whiteStone.getBlockHardness(world, x, y, z);
|
||||
case 13: return Block.obsidian.getBlockHardness(world, x, y, z);
|
||||
case 3:
|
||||
case 14:
|
||||
case 15:
|
||||
return Block.stone.getBlockHardness(world, x, y, z);
|
||||
default: return blockHardness;
|
||||
}
|
||||
}
|
||||
@ -54,7 +57,6 @@ public class MultiBrickFancy extends TConstructBlock
|
||||
case 0: return Block.obsidian.getExplosionResistance(entity);
|
||||
case 1: return Block.sandStone.getExplosionResistance(entity);
|
||||
case 2: return Block.netherrack.getExplosionResistance(entity);
|
||||
case 3: return Block.stone.getExplosionResistance(entity);
|
||||
case 4: return Block.blockIron.getExplosionResistance(entity);
|
||||
case 5: return Block.blockGold.getExplosionResistance(entity);
|
||||
case 6: return Block.blockLapis.getExplosionResistance(entity);
|
||||
@ -65,6 +67,10 @@ public class MultiBrickFancy extends TConstructBlock
|
||||
case 11: return 1.5F;
|
||||
case 12: return Block.whiteStone.getExplosionResistance(entity);
|
||||
case 13: return Block.obsidian.getExplosionResistance(entity);
|
||||
case 3:
|
||||
case 14:
|
||||
case 15:
|
||||
return Block.stone.getExplosionResistance(entity);
|
||||
default: return getExplosionResistance(entity);
|
||||
}
|
||||
}
|
||||
|
@ -557,15 +557,19 @@ public class TProxyClient extends TProxyCommon
|
||||
{
|
||||
addToolButton(itemIcons[i][0], itemIcons[i][1], itemIcons[i][2], iconCoords[i * 2], iconCoords[i * 2 + 1], toolNames[i], toolDescriptions[i]);
|
||||
}
|
||||
|
||||
addTierTwoButton(4, 10, 0, new int[] { 8, 8, 9, 8 }, new int[] { 2, 3, 3, 3 }, "Scythe",
|
||||
"The Scythe is a broad reaping tool. It is effective on plants and attacks enemies in a wide range.\n\nNatural Ability:\nArea of Effect\n- (3x3x3)\n\nDurability: Triple\nDamage: Low, AoE");
|
||||
|
||||
addTierTwoButton(6, 13, 0, new int[] { 11, 8, 9, 9 }, new int[] { 2, 3, 2, 2 }, "Hammer",
|
||||
"The Hammer is a broad mining tool. It harvests blocks in a wide range and is effective against undead.\n\nNatural Abilities:\nArea of Effect\n- (3x3x3)\n- Smite\n\nDurability: High");
|
||||
addTierTwoButton(5, 11, 0, new int[] { 6, 8, 9, 9 }, new int[] { 2, 3, 2, 3 }, "Lumber Axe",
|
||||
"The Lumber Axe is a broad chopping tool. It can fell entire trees or gather wood in a wide range.\n\nNatural Abiliyies:\n- Fell Trees\nArea of Effect\n- (3x3x3)\n\nDurability: Triple");
|
||||
"The Lumber Axe is a broad chopping tool. It can fell entire trees or gather wood in a wide range.\n\nNatural Abilities:\n- Fell Trees\nArea of Effect\n- (3x3x3)\n\nDurability: Average");
|
||||
addTierTwoButton(4, 12, 0, new int[] { 10, 8, 9, 8 }, new int[] { 2, 3, 3, 3 }, "Excavator",
|
||||
"The Excavator is a broad digging tool. It harvests soil and snow in a wide range.\n\nNatural Ability:\n- Area of Effect\n- (3x3)\n\nDurability: Triple");
|
||||
addTierTwoButton(5, 7, 1, new int[] { 6, 8, 9, 8 }, new int[] { 3, 3, 2, 3 }, "Breaker Blade",
|
||||
"The Breaker Blade is a heavy defensive weapon. It has powerful strikes, but is difficult to wield.\n\nSpecial Ability: Block\nNatural Ability:\n- Beheading\n\nDamage: Very High\nDurability: Triple");
|
||||
"The Excavator is a broad digging tool. It harvests soil and snow in a wide range.\n\nNatural Ability:\n- Area of Effect\n- (3x3)\n\nDurability: Average");
|
||||
addTierTwoButton(4, 10, 0, new int[] { 8, 8, 9, 8 }, new int[] { 2, 3, 3, 3 }, "Scythe",
|
||||
"The Scythe is a broad reaping tool. It is effective on plants and attacks enemies in a wide range.\n\nNatural Ability:\nArea of Effect\n- (3x3x3)\n\nDurability: Average\nDamage: Low, AoE");
|
||||
addTierTwoButton(5, 7, 1, new int[] { 6, 8, 9, 8 }, new int[] { 3, 3, 2, 3 }, "Cleaver",
|
||||
"The Cleaver is a heavy defensive weapon. It has powerful strikes, but is difficult to wield.\n\nSpecial Ability: Block\nNatural Ability:\n- Beheading\n\nDamage: Very High\nDurability: Average");
|
||||
addTierTwoButton(5, 8, 1, new int[] { 6, 8, 6, 9 }, new int[] { 2, 3, 2, 3 }, "Battleaxe",
|
||||
"The Battleaxe is a heavy offensive weapon. It is capable of bringing down small trees and can send foes flying.\n\nSpecial Ability: Block\nNatural Abilities:\n- Knockback\n- Area of Effect\n- (1x9)\n\nDamage: Average\nDurability: Average");
|
||||
}
|
||||
|
||||
void addToolButton (int slotType, int xButton, int yButton, int[] xIcons, int[] yIcons, String title, String body)
|
||||
@ -583,11 +587,15 @@ public class TProxyClient extends TProxyCommon
|
||||
String[] partTypes = { "wood", "stone", "iron", "flint", "cactus", "bone", "obsidian", "netherrack", "slime", "paper", "cobalt", "ardite", "manyullyn", "copper", "bronze", "alumite", "steel",
|
||||
"blueslime" };
|
||||
String[] effectTypes = { "diamond", "emerald", "redstone", "glowstone", "moss", "ice", "lava", "blaze", "necrotic", "electric", "lapis", "quartz", "silk" };
|
||||
int[] validHarvestEffects = { 0, 1, 2, 4, 6, 7, 8, 9, 10, 11, 12 };
|
||||
/*int[] validHarvestEffects = { 0, 1, 2, 4, 6, 7, 8, 9, 10, 11, 12 };
|
||||
int[] validWeaponEffects = { 0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
|
||||
int[] validUtilityEffects = { 0, 1, 4, 9 };
|
||||
|
||||
int[] validDaggerEffects = { 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
|
||||
int[] validDaggerEffects = { 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12 };*/
|
||||
int[] universalEffects = { 0, 1, 4, 9 };
|
||||
int[] weaponEffects = { 5, 7, 8, 12 };
|
||||
int[] harvestEffects = { 2 };
|
||||
int[] nonUtility = { 6, 10, 11 };
|
||||
|
||||
for (int partIter = 0; partIter < partTypes.length; partIter++)
|
||||
{
|
||||
@ -596,46 +604,36 @@ public class TProxyClient extends TProxyCommon
|
||||
|
||||
for (ToolCore tool : TConstructRegistry.getToolMapping())
|
||||
{
|
||||
if (tool instanceof Dagger)
|
||||
{
|
||||
for (int i = 0; i < validDaggerEffects.length; i++)
|
||||
{
|
||||
TConstructClientRegistry.addEffectRenderMapping(validDaggerEffects[i], "tinker", effectTypes[validDaggerEffects[i]], true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
List list = Arrays.asList(tool.toolCategories());
|
||||
for (int i = 0; i < universalEffects.length; i++)
|
||||
{
|
||||
TConstructClientRegistry.addEffectRenderMapping(universalEffects[i], "tinker", effectTypes[universalEffects[i]], true);
|
||||
}
|
||||
|
||||
if (list.contains("harvest"))
|
||||
{
|
||||
for (int i = 0; i < validHarvestEffects.length; i++)
|
||||
{
|
||||
for (int i = 0; i < harvestEffects.length; i++)
|
||||
{
|
||||
TConstructClientRegistry.addEffectRenderMapping(validHarvestEffects[i], "tinker", effectTypes[validHarvestEffects[i]], true);
|
||||
TConstructClientRegistry.addEffectRenderMapping(harvestEffects[i], "tinker", effectTypes[harvestEffects[i]], true);
|
||||
}
|
||||
}
|
||||
else if (list.contains("melee"))
|
||||
|
||||
if (list.contains("weapon"))
|
||||
{
|
||||
for (int i = 0; i < validWeaponEffects.length; i++)
|
||||
for (int i = 0; i < weaponEffects.length; i++)
|
||||
{
|
||||
TConstructClientRegistry.addEffectRenderMapping(validWeaponEffects[i], "tinker", effectTypes[validWeaponEffects[i]], true);
|
||||
TConstructClientRegistry.addEffectRenderMapping(weaponEffects[i], "tinker", effectTypes[weaponEffects[i]], true);
|
||||
}
|
||||
}
|
||||
else if (list.contains("utility"))
|
||||
|
||||
if (list.contains("weapon") || list.contains("harvest"))
|
||||
{
|
||||
for (int i = 0; i < validUtilityEffects.length; i++)
|
||||
for (int i = 0; i < nonUtility.length; i++)
|
||||
{
|
||||
TConstructClientRegistry.addEffectRenderMapping(validUtilityEffects[i], "tinker", effectTypes[validUtilityEffects[i]], true);
|
||||
TConstructClientRegistry.addEffectRenderMapping(nonUtility[i], "tinker", effectTypes[nonUtility[i]], true);
|
||||
}
|
||||
}
|
||||
//return list.contains("throwing");
|
||||
}
|
||||
/*for (int effectIter = 0; effectIter < 3; effectIter++)
|
||||
{
|
||||
TConstructClientRegistry.addEffectRenderMapping(effectIter, "tinker", effectTypes[effectIter], true);
|
||||
}
|
||||
for (int effectIter = 4; effectIter < effectTypes.length; effectIter++)
|
||||
{
|
||||
TConstructClientRegistry.addEffectRenderMapping(effectIter, "tinker", effectTypes[effectIter], true);
|
||||
}*/
|
||||
}
|
||||
|
||||
/* Keybindings */
|
||||
|
@ -150,6 +150,10 @@ public class ToolForgeGui extends NewContainerGui
|
||||
slotX = new int[] { 38, 47, 56, 47 }; // Four parts, double head
|
||||
slotY = new int[] { 19, 55, 19, 37 };
|
||||
break;
|
||||
case 6:
|
||||
slotX = new int[] { 38, 38, 20, 56 }; // Double head
|
||||
slotY = new int[] { 28, 46, 28, 28 };
|
||||
break;
|
||||
}
|
||||
toolSlots.resetSlots(slotX, slotY);
|
||||
}
|
||||
|
@ -3,108 +3,21 @@ package mods.tinker.tconstruct.common;
|
||||
import java.util.Collection;
|
||||
|
||||
import mods.tinker.tconstruct.TConstruct;
|
||||
import mods.tinker.tconstruct.blocks.EquipBlock;
|
||||
import mods.tinker.tconstruct.blocks.GravelOre;
|
||||
import mods.tinker.tconstruct.blocks.LavaTankBlock;
|
||||
import mods.tinker.tconstruct.blocks.LiquidMetalFlowing;
|
||||
import mods.tinker.tconstruct.blocks.LiquidMetalStill;
|
||||
import mods.tinker.tconstruct.blocks.MetalOre;
|
||||
import mods.tinker.tconstruct.blocks.MultiBrick;
|
||||
import mods.tinker.tconstruct.blocks.OreberryBush;
|
||||
import mods.tinker.tconstruct.blocks.SearedBlock;
|
||||
import mods.tinker.tconstruct.blocks.SmelteryBlock;
|
||||
import mods.tinker.tconstruct.blocks.SpeedBlock;
|
||||
import mods.tinker.tconstruct.blocks.StoneTorch;
|
||||
import mods.tinker.tconstruct.blocks.TConstructBlock;
|
||||
import mods.tinker.tconstruct.blocks.TMetalBlock;
|
||||
import mods.tinker.tconstruct.blocks.ToolForgeBlock;
|
||||
import mods.tinker.tconstruct.blocks.ToolStationBlock;
|
||||
import mods.tinker.tconstruct.blocks.logic.CastingBasinLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.CastingTableLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.FaucetLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.FrypanLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.LavaTankLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.LiquidTextureLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.MultiServantLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.PartCrafterLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.PatternChestLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.StencilTableLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.SmelteryDrainLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.SmelteryLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.ToolForgeLogic;
|
||||
import mods.tinker.tconstruct.blocks.logic.ToolStationLogic;
|
||||
import mods.tinker.tconstruct.entity.Automaton;
|
||||
import mods.tinker.tconstruct.entity.BlueSlime;
|
||||
import mods.tinker.tconstruct.entity.FancyEntityItem;
|
||||
import mods.tinker.tconstruct.entity.projectile.DaggerEntity;
|
||||
import mods.tinker.tconstruct.items.CraftingItem;
|
||||
import mods.tinker.tconstruct.items.DiamondApple;
|
||||
import mods.tinker.tconstruct.items.FilledBucket;
|
||||
import mods.tinker.tconstruct.items.HeartCanister;
|
||||
import mods.tinker.tconstruct.items.Manual;
|
||||
import mods.tinker.tconstruct.items.MaterialItem;
|
||||
import mods.tinker.tconstruct.items.MetalPattern;
|
||||
import mods.tinker.tconstruct.items.OreBerries;
|
||||
import mods.tinker.tconstruct.items.Pattern;
|
||||
import mods.tinker.tconstruct.items.StrangeFood;
|
||||
import mods.tinker.tconstruct.items.TitleIcon;
|
||||
import mods.tinker.tconstruct.items.ToolPart;
|
||||
import mods.tinker.tconstruct.items.ToolShard;
|
||||
import mods.tinker.tconstruct.items.armor.Glove;
|
||||
import mods.tinker.tconstruct.items.armor.TArmorBase;
|
||||
import mods.tinker.tconstruct.items.blocks.CraftedSoilItemBlock;
|
||||
import mods.tinker.tconstruct.items.blocks.GravelOreItem;
|
||||
import mods.tinker.tconstruct.items.blocks.LavaTankItemBlock;
|
||||
import mods.tinker.tconstruct.items.blocks.LiquidItemBlock;
|
||||
import mods.tinker.tconstruct.items.blocks.MetalItemBlock;
|
||||
import mods.tinker.tconstruct.items.blocks.MetalOreItemBlock;
|
||||
import mods.tinker.tconstruct.items.blocks.MultiBrickItem;
|
||||
import mods.tinker.tconstruct.items.blocks.OreberryBushItem;
|
||||
import mods.tinker.tconstruct.items.blocks.OreberryBushSecondItem;
|
||||
import mods.tinker.tconstruct.items.blocks.SearedTableItemBlock;
|
||||
import mods.tinker.tconstruct.items.blocks.SmelteryItemBlock;
|
||||
import mods.tinker.tconstruct.items.blocks.SpeedBlockItem;
|
||||
import mods.tinker.tconstruct.items.blocks.ToolForgeItemBlock;
|
||||
import mods.tinker.tconstruct.items.blocks.ToolStationItemBlock;
|
||||
import mods.tinker.tconstruct.items.tools.BattleSign;
|
||||
import mods.tinker.tconstruct.items.tools.Broadsword;
|
||||
import mods.tinker.tconstruct.items.tools.Chisel;
|
||||
import mods.tinker.tconstruct.items.tools.BreakerBlade;
|
||||
import mods.tinker.tconstruct.items.tools.Dagger;
|
||||
import mods.tinker.tconstruct.items.tools.Excavator;
|
||||
import mods.tinker.tconstruct.items.tools.FryingPan;
|
||||
import mods.tinker.tconstruct.items.tools.Hatchet;
|
||||
import mods.tinker.tconstruct.items.tools.Longsword;
|
||||
import mods.tinker.tconstruct.items.tools.LumberAxe;
|
||||
import mods.tinker.tconstruct.items.tools.Mattock;
|
||||
import mods.tinker.tconstruct.items.tools.Pickaxe;
|
||||
import mods.tinker.tconstruct.items.tools.PotionLauncher;
|
||||
import mods.tinker.tconstruct.items.tools.Rapier;
|
||||
import mods.tinker.tconstruct.items.tools.Scythe;
|
||||
import mods.tinker.tconstruct.items.tools.Shovel;
|
||||
import mods.tinker.tconstruct.blocks.*;
|
||||
import mods.tinker.tconstruct.blocks.logic.*;
|
||||
import mods.tinker.tconstruct.entity.*;
|
||||
import mods.tinker.tconstruct.entity.projectile.*;
|
||||
import mods.tinker.tconstruct.items.*;
|
||||
import mods.tinker.tconstruct.items.armor.*;
|
||||
import mods.tinker.tconstruct.items.blocks.*;
|
||||
import mods.tinker.tconstruct.items.tools.*;
|
||||
import mods.tinker.tconstruct.library.TConstructRegistry;
|
||||
import mods.tinker.tconstruct.library.client.TConstructClientRegistry;
|
||||
import mods.tinker.tconstruct.library.crafting.Detailing;
|
||||
import mods.tinker.tconstruct.library.crafting.LiquidCasting;
|
||||
import mods.tinker.tconstruct.library.crafting.PatternBuilder;
|
||||
import mods.tinker.tconstruct.library.crafting.Smeltery;
|
||||
import mods.tinker.tconstruct.library.crafting.ToolBuilder;
|
||||
import mods.tinker.tconstruct.library.crafting.*;
|
||||
import mods.tinker.tconstruct.library.tools.ToolCore;
|
||||
import mods.tinker.tconstruct.library.util.IPattern;
|
||||
import mods.tinker.tconstruct.modifiers.ModAttack;
|
||||
import mods.tinker.tconstruct.modifiers.ModAutoSmelt;
|
||||
import mods.tinker.tconstruct.modifiers.ModBlaze;
|
||||
import mods.tinker.tconstruct.modifiers.ModButtertouch;
|
||||
import mods.tinker.tconstruct.modifiers.ModDurability;
|
||||
import mods.tinker.tconstruct.modifiers.ModElectric;
|
||||
import mods.tinker.tconstruct.modifiers.ModExtraModifier;
|
||||
import mods.tinker.tconstruct.modifiers.ModInteger;
|
||||
import mods.tinker.tconstruct.modifiers.ModLapis;
|
||||
import mods.tinker.tconstruct.modifiers.ModRedstone;
|
||||
import mods.tinker.tconstruct.modifiers.ModRepair;
|
||||
import mods.tinker.tconstruct.modifiers.TActiveOmniMod;
|
||||
import mods.tinker.tconstruct.util.PHConstruct;
|
||||
import mods.tinker.tconstruct.util.RecipeRemover;
|
||||
import mods.tinker.tconstruct.modifiers.*;
|
||||
import mods.tinker.tconstruct.util.*;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.MapColor;
|
||||
import net.minecraft.block.material.Material;
|
||||
@ -168,8 +81,10 @@ public class TContent implements IFuelHandler
|
||||
|
||||
public static ToolCore scythe;
|
||||
public static ToolCore lumberaxe;
|
||||
public static ToolCore breakerBlade;
|
||||
public static ToolCore cleaver;
|
||||
public static ToolCore excavator;
|
||||
public static ToolCore hammer;
|
||||
public static ToolCore battleaxe;
|
||||
|
||||
public static Item potionLauncher;
|
||||
|
||||
@ -177,7 +92,7 @@ public class TContent implements IFuelHandler
|
||||
public static Item binding;
|
||||
public static Item toughBinding;
|
||||
public static Item toughRod;
|
||||
public static Item largePlate;
|
||||
public static Item heavyPlate;
|
||||
|
||||
public static Item pickaxeHead;
|
||||
public static Item shovelHead;
|
||||
@ -186,8 +101,9 @@ public class TContent implements IFuelHandler
|
||||
public static Item signHead;
|
||||
public static Item chiselHead;
|
||||
public static Item scytheBlade;
|
||||
public static Item lumberHead;
|
||||
public static Item broadAxeHead;
|
||||
public static Item excavatorHead;
|
||||
public static Item hammerHead;
|
||||
|
||||
public static Item swordBlade;
|
||||
public static Item largeSwordBlade;
|
||||
@ -487,11 +403,14 @@ public class TContent implements IFuelHandler
|
||||
frypan = new FryingPan(PHConstruct.frypan);
|
||||
battlesign = new BattleSign(PHConstruct.battlesign);
|
||||
mattock = new Mattock(PHConstruct.mattock);
|
||||
scythe = new Scythe(PHConstruct.scythe);
|
||||
lumberaxe = new LumberAxe(PHConstruct.lumberaxe);
|
||||
chisel = new Chisel(PHConstruct.chisel);
|
||||
breakerBlade = new BreakerBlade(PHConstruct.cleaver);
|
||||
|
||||
lumberaxe = new LumberAxe(PHConstruct.lumberaxe);
|
||||
cleaver = new Cleaver(PHConstruct.cleaver);
|
||||
scythe = new Scythe(PHConstruct.scythe);
|
||||
excavator = new Excavator(PHConstruct.excavator);
|
||||
hammer = new Hammer(PHConstruct.hammer);
|
||||
battleaxe = new Battleaxe(PHConstruct.battleaxe);
|
||||
|
||||
potionLauncher = new PotionLauncher(PHConstruct.potionLauncher).setUnlocalizedName("tconstruct.PotionLauncher");
|
||||
|
||||
@ -501,7 +420,7 @@ public class TContent implements IFuelHandler
|
||||
binding = new ToolPart(PHConstruct.binding, "Binding", "_binding").setUnlocalizedName("tconstruct.Binding");
|
||||
toughBinding = new ToolPart(PHConstruct.toughBinding, "ThickBinding", "_toughbind").setUnlocalizedName("tconstruct.ThickBinding");
|
||||
toughRod = new ToolPart(PHConstruct.toughRod, "ThickRod", "_toughrod").setUnlocalizedName("tconstruct.ThickRod");
|
||||
largePlate = new ToolPart(PHConstruct.largePlate, "LargePlate", "_largeplate").setUnlocalizedName("tconstruct.LargePlate");
|
||||
heavyPlate = new ToolPart(PHConstruct.largePlate, "LargePlate", "_largeplate").setUnlocalizedName("tconstruct.LargePlate");
|
||||
|
||||
swordBlade = new ToolPart(PHConstruct.swordBlade, "SwordBlade", "_sword_blade").setUnlocalizedName("tconstruct.SwordBlade");
|
||||
wideGuard = new ToolPart(PHConstruct.largeGuard, "LargeGuard", "_large_guard").setUnlocalizedName("tconstruct.LargeGuard");
|
||||
@ -514,9 +433,10 @@ public class TContent implements IFuelHandler
|
||||
chiselHead = new ToolPart(PHConstruct.chiselHead, "ChiselHead", "_chisel_head").setUnlocalizedName("tconstruct.ChiselHead");
|
||||
|
||||
scytheBlade = new ToolPart(PHConstruct.scytheBlade, "ScytheBlade", "_scythe_head").setUnlocalizedName("tconstruct.ScytheBlade");
|
||||
lumberHead = new ToolPart(PHConstruct.lumberHead, "LumberHead", "_lumberaxe_head").setUnlocalizedName("tconstruct.LumberHead");
|
||||
broadAxeHead = new ToolPart(PHConstruct.lumberHead, "LumberHead", "_lumberaxe_head").setUnlocalizedName("tconstruct.LumberHead");
|
||||
excavatorHead = new ToolPart(PHConstruct.excavatorHead, "ExcavatorHead", "_excavator_head").setUnlocalizedName("tconstruct.ExcavatorHead");
|
||||
largeSwordBlade = new ToolPart(PHConstruct.largeSwordBlade, "LargeSwordBlade", "_large_sword_blade").setUnlocalizedName("tconstruct.LargeSwordBlade");
|
||||
hammerHead = new ToolPart(PHConstruct.hammerHead, "HammerHead", "_hammer_head").setUnlocalizedName("tconstruct.HammerHead");
|
||||
|
||||
diamondApple = new DiamondApple(PHConstruct.diamondApple).setUnlocalizedName("tconstruct.apple.diamond");
|
||||
strangeFood = new StrangeFood(PHConstruct.slimefood).setUnlocalizedName("tconstruct.strangefood");
|
||||
@ -635,7 +555,7 @@ public class TContent implements IFuelHandler
|
||||
{
|
||||
/* Tools */
|
||||
patternOutputs = new Item[] { toolRod, pickaxeHead, shovelHead, axeHead, swordBlade, wideGuard, handGuard, crossbar, binding, frypanHead, signHead, knifeBlade, chiselHead,
|
||||
toughRod, toughBinding, largePlate, lumberHead, scytheBlade, excavatorHead, largeSwordBlade};
|
||||
toughRod, toughBinding, heavyPlate, broadAxeHead, scytheBlade, excavatorHead, largeSwordBlade, hammerHead};
|
||||
|
||||
ToolBuilder tb = ToolBuilder.instance;
|
||||
tb.addToolRecipe(pickaxe, pickaxeHead, binding);
|
||||
@ -650,12 +570,11 @@ public class TContent implements IFuelHandler
|
||||
tb.addToolRecipe(dagger, knifeBlade, crossbar);
|
||||
tb.addToolRecipe(chisel, chiselHead);
|
||||
tb.addCustomToolRecipe(scythe, scytheBlade, toughRod, toughBinding, toughRod);
|
||||
tb.addCustomToolRecipe(lumberaxe, lumberHead, toughRod, largePlate, toughBinding);
|
||||
tb.addCustomToolRecipe(breakerBlade, largeSwordBlade, toughRod, largePlate, toughRod);
|
||||
tb.addCustomToolRecipe(lumberaxe, broadAxeHead, toughRod, heavyPlate, toughBinding);
|
||||
tb.addCustomToolRecipe(cleaver, largeSwordBlade, toughRod, heavyPlate, toughRod);
|
||||
tb.addCustomToolRecipe(excavator, excavatorHead, toughRod, toughBinding, toughRod);
|
||||
|
||||
//tb.addToolRecipe(longbow, toolRod, toolRod);
|
||||
//tb.addToolRecipe(lumberaxe, lumberHead);
|
||||
tb.addCustomToolRecipe(hammer, hammerHead, toughRod, heavyPlate, heavyPlate);
|
||||
tb.addCustomToolRecipe(battleaxe, broadAxeHead, toughRod, broadAxeHead, toughBinding);
|
||||
|
||||
ItemStack diamond = new ItemStack(Item.diamond);
|
||||
tb.registerToolMod(new ModRepair());
|
||||
|
@ -145,8 +145,10 @@ public class TProxyCommon implements IGuiHandler
|
||||
LanguageRegistry.addName(TContent.chisel, "Chisel");
|
||||
LanguageRegistry.addName(TContent.scythe, "Scythe");
|
||||
LanguageRegistry.addName(TContent.lumberaxe, "Lumber Axe");
|
||||
LanguageRegistry.addName(TContent.breakerBlade, "Breaker Blade");
|
||||
LanguageRegistry.addName(TContent.cleaver, "Cleaver");
|
||||
LanguageRegistry.addName(TContent.excavator, "Excavator");
|
||||
LanguageRegistry.addName(TContent.hammer, "Hammer");
|
||||
LanguageRegistry.addName(TContent.battleaxe, "Battleaxe");
|
||||
|
||||
}
|
||||
|
||||
@ -175,14 +177,15 @@ public class TProxyCommon implements IGuiHandler
|
||||
"Copper", "Bronze", "Alumite", "Steel", "Blue Slime" };
|
||||
|
||||
public static final String[] materialTypes = new String[] { "ToolRod", "PickaxeHead", "ShovelHead", "AxeHead", "SwordBlade", "LargeGuard", "MediumGuard", "Crossbar", "Binding", "FrypanHead",
|
||||
"SignHead", "LumberHead", "KnifeBlade", "ChiselHead", "ScytheBlade", "LumberHead", "ThickRod", "ThickBinding", "LargeSwordBlade", "LargePlate", "ExcavatorHead" };
|
||||
"SignHead", "LumberHead", "KnifeBlade", "ChiselHead", "ScytheBlade", "LumberHead", "ThickRod", "ThickBinding", "LargeSwordBlade", "LargePlate", "ExcavatorHead", "HammerHead" };
|
||||
|
||||
public static final String[] materialNames = new String[] { " Rod", " Pickaxe Head", " Shovel Head", " Axe Head", " Sword Blade", " Wide Guard", " Hand Guard", " Crossbar", " Binding", " Pan",
|
||||
" Board", " Broad Axe Head", " Knife Blade", " Chisel Head", " Scythe Blade", " Broad Axe Head", " Tough Tool Rod", " Tough Binding", " Large Sword Blade", " Large Plate", " Excavator Head" };
|
||||
" Board", " Broad Axe Head", " Knife Blade", " Chisel Head", " Scythe Blade", " Broad Axe Head", " Tough Tool Rod", " Tough Binding", " Large Sword Blade", " Large Plate", " Excavator Head",
|
||||
" Hammer Head"};
|
||||
|
||||
public static final String[] patterns = new String[] { "ingot", "rod", "pickaxe", "shovel", "axe", "swordblade", "largeguard", "mediumguard", "crossbar", "binding", "frypan", "sign", "knifeblade", "chisel",
|
||||
"largerod", "toughbinding", "largeplate", "broadaxe", "scythe", "excavator", "largeblade"};
|
||||
"largerod", "toughbinding", "largeplate", "broadaxe", "scythe", "excavator", "largeblade", "hammerhead"};
|
||||
|
||||
public static final String[] patternNames = new String[] { "Ingot", "Tool Rod", "Pickaxe Head", "Shovel Head", "Axe Head", "Sword Blade", "Wide Guard", "Hand Guard", "Crossbar", "Tool Binding",
|
||||
"Pan", "Board", "Knife Blade", "Chisel Head", "Tough Tool Rod", "Tough Binding", "Large Plate", "Broad Axe Head", "Scythe Head", "Broad Shovel Head", "Large Blade" };
|
||||
"Pan", "Board", "Knife Blade", "Chisel Head", "Tough Tool Rod", "Tough Binding", "Large Plate", "Broad Axe Head", "Scythe Head", "Broad Shovel Head", "Large Blade", "Hammer Head" };
|
||||
}
|
||||
|
@ -435,7 +435,7 @@ public class BlueSlime extends EntityLiving implements IMob, IBossDisplayData
|
||||
|
||||
if (size == 8)
|
||||
{
|
||||
ToolCore tool = TConstructRegistry.tools.get(rand.nextInt(TConstructRegistry.tools.size()));
|
||||
ToolCore tool = getValidTool();
|
||||
|
||||
Item accessory = tool.getAccessoryItem();
|
||||
ItemStack accessoryStack = accessory != null ? new ItemStack(tool.getAccessoryItem(), 1, 17) : null;
|
||||
@ -456,6 +456,14 @@ public class BlueSlime extends EntityLiving implements IMob, IBossDisplayData
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ToolCore getValidTool()
|
||||
{
|
||||
ToolCore tool = TConstructRegistry.tools.get(rand.nextInt(TConstructRegistry.tools.size()));
|
||||
if (tool.getAccessoryItem() != null)
|
||||
tool = getValidTool();
|
||||
return tool;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by a player entity when they collide with an entity
|
||||
|
20
mods/tinker/tconstruct/event/ToolCraftEvent.java
Normal file
@ -0,0 +1,20 @@
|
||||
package mods.tinker.tconstruct.event;
|
||||
|
||||
import mods.tinker.tconstruct.library.tools.ToolCore;
|
||||
import mods.tinker.tconstruct.library.tools.ToolMaterial;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.event.Event;
|
||||
|
||||
public class ToolCraftEvent extends Event
|
||||
{
|
||||
public final ToolCore tool;
|
||||
public final NBTTagCompound toolTag;
|
||||
public final ToolMaterial[] materials;
|
||||
|
||||
public ToolCraftEvent(ToolCore tool, NBTTagCompound toolTag, ToolMaterial[] materials)
|
||||
{
|
||||
this.tool = tool;
|
||||
this.toolTag = toolTag;
|
||||
this.materials = materials;
|
||||
}
|
||||
}
|
@ -34,7 +34,7 @@ public class Pattern extends CraftingItem
|
||||
|
||||
public static final String[] patternName = new String[] {
|
||||
"ingot", "rod", "pickaxe", "shovel", "axe", "swordblade", "largeguard", "mediumguard", "crossbar", "binding", "frypan", "sign", "knifeblade", "chisel", "largerod", "toughbinding", "largeplate",
|
||||
"broadaxe", "scythe", "excavator", "largeblade" };
|
||||
"broadaxe", "scythe", "excavator", "largeblade", "hammerhead" };
|
||||
|
||||
/*@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(IconRegister iconRegister)
|
||||
@ -104,6 +104,7 @@ public class Pattern extends CraftingItem
|
||||
case 18: return 16;
|
||||
case 19: return 16;
|
||||
case 20: return 16;
|
||||
case 21: return 16;
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
|
222
mods/tinker/tconstruct/items/tools/Battleaxe.java
Normal file
@ -0,0 +1,222 @@
|
||||
package mods.tinker.tconstruct.items.tools;
|
||||
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import mods.tinker.tconstruct.library.ActiveToolMod;
|
||||
import mods.tinker.tconstruct.library.TConstructRegistry;
|
||||
import mods.tinker.tconstruct.library.tools.AbilityHelper;
|
||||
import mods.tinker.tconstruct.library.tools.HarvestTool;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class Battleaxe extends HarvestTool
|
||||
{
|
||||
public Battleaxe(int itemID)
|
||||
{
|
||||
super(itemID, 4);
|
||||
this.setUnlocalizedName("InfiTool.Battleaxe");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Material[] getEffectiveMaterials ()
|
||||
{
|
||||
return materials;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getHarvestType ()
|
||||
{
|
||||
return "axe";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockDestroyed (ItemStack itemstack, World world, int bID, int x, int y, int z, EntityLiving player)
|
||||
{
|
||||
Block block = Block.blocksList[bID];
|
||||
if (block != null && block.blockMaterial == Material.leaves)
|
||||
return false;
|
||||
|
||||
return AbilityHelper.onBlockChanged(itemstack, world, bID, x, y, z, player, random);
|
||||
}
|
||||
|
||||
static Material[] materials = { Material.wood, Material.leaves, Material.vine, Material.circuits, Material.cactus, Material.pumpkin };
|
||||
|
||||
@Override
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.broadAxeHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getHandleItem ()
|
||||
{
|
||||
return TContent.toughRod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.broadAxeHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getExtraItem ()
|
||||
{
|
||||
return TContent.toughBinding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getRepairCost ()
|
||||
{
|
||||
return 4.0f;
|
||||
}
|
||||
|
||||
public float getDurabilityModifier ()
|
||||
{
|
||||
return 2.5f;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public int getRenderPasses (int metadata)
|
||||
{
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPartAmount ()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIconSuffix (int partType)
|
||||
{
|
||||
switch (partType)
|
||||
{
|
||||
case 0:
|
||||
return "_battleaxe_fronthead";
|
||||
case 1:
|
||||
return "_battleaxe_fronthead_broken";
|
||||
case 2:
|
||||
return "_battleaxe_handle";
|
||||
case 3:
|
||||
return "_battleaxe_backhead";
|
||||
case 4:
|
||||
return "_battleaxe_binding";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEffectSuffix ()
|
||||
{
|
||||
return "_battleaxe_effect";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDefaultFolder ()
|
||||
{
|
||||
return "battleaxe";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] toolCategories()
|
||||
{
|
||||
return new String[] { "weapon", "harvest", "slicing" };
|
||||
}
|
||||
|
||||
/* Battleaxe Specific */
|
||||
|
||||
/* Lumber axe specific */
|
||||
@Override
|
||||
public boolean hitEntity (ItemStack stack, EntityLiving mob, EntityLiving player)
|
||||
{
|
||||
AbilityHelper.knockbackEntity(mob, 1.5f);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getStrVsBlock (ItemStack stack, Block block, int meta)
|
||||
{
|
||||
if (!stack.hasTagCompound())
|
||||
return 1.0f;
|
||||
|
||||
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
if (tags.getBoolean("Broken"))
|
||||
return 0.1f;
|
||||
|
||||
Material[] materials = getEffectiveMaterials();
|
||||
for (int i = 0; i < materials.length; i++)
|
||||
{
|
||||
if (materials[i] == block.blockMaterial)
|
||||
{
|
||||
float speed = tags.getInteger("MiningSpeed");
|
||||
speed /= 200f;
|
||||
int hlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getHarvestType());
|
||||
int durability = tags.getInteger("Damage");
|
||||
|
||||
float shoddy = tags.getFloat("Shoddy");
|
||||
speed += shoddy * durability / 100f;
|
||||
|
||||
if (hlvl <= tags.getInteger("HarvestLevel"))
|
||||
return speed;
|
||||
return 0.1f;
|
||||
}
|
||||
}
|
||||
return super.getStrVsBlock(stack, block, meta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPlayer player)
|
||||
{
|
||||
World world = player.worldObj;
|
||||
int woodID = world.getBlockId(x, y, z);
|
||||
Block wood = Block.blocksList[woodID];
|
||||
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
for (int yPos = y + 1; yPos < y + 9; yPos++)
|
||||
{
|
||||
int blockID = world.getBlockId(x, yPos, z);
|
||||
Block block = Block.blocksList[blockID];
|
||||
if (!(tags.getBoolean("Broken")) && block != null && block.blockMaterial == Material.wood )
|
||||
{
|
||||
boolean cancelHarvest = false;
|
||||
for (ActiveToolMod mod : TConstructRegistry.activeModifiers)
|
||||
{
|
||||
if (mod.beforeBlockBreak(this, stack, x, yPos, z, player))
|
||||
cancelHarvest = true;
|
||||
}
|
||||
|
||||
if (!cancelHarvest)
|
||||
{
|
||||
if (block != null && block.blockMaterial == Material.wood)
|
||||
{
|
||||
meta = world.getBlockMetadata(x, yPos, z);
|
||||
world.setBlockToAir(x, yPos, z);
|
||||
if (!player.capabilities.isCreativeMode)
|
||||
{
|
||||
Block.blocksList[blockID].harvestBlock(world, player, x, yPos, z, meta);
|
||||
onBlockDestroyed(stack, world, blockID, x, yPos, z, player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (!world.isRemote)
|
||||
world.playAuxSFX(2001, x, y, z, woodID + (meta << 12));
|
||||
return super.onBlockStartBreak(stack, x, y, z, player);
|
||||
}
|
||||
}
|
@ -14,9 +14,9 @@ import net.minecraft.world.World;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class BreakerBlade extends Weapon
|
||||
public class Cleaver extends Weapon
|
||||
{
|
||||
public BreakerBlade(int itemID)
|
||||
public Cleaver(int itemID)
|
||||
{
|
||||
super(itemID, 4);
|
||||
this.setUnlocalizedName("InfiTool.Cleaver");
|
||||
@ -37,7 +37,7 @@ public class BreakerBlade extends Weapon
|
||||
@Override
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.largePlate;
|
||||
return TContent.heavyPlate;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -59,7 +59,7 @@ public class BreakerBlade extends Weapon
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getRepairModifier ()
|
||||
public float getRepairCost ()
|
||||
{
|
||||
return 4.0f;
|
||||
}
|
||||
@ -88,12 +88,6 @@ public class BreakerBlade extends Weapon
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
public String getToolName ()
|
||||
{
|
||||
return "Breaker Blade";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getIconSuffix (int partType)
|
@ -21,8 +21,16 @@ public class Dagger extends Weapon
|
||||
|
||||
public ItemStack onItemRightClick (ItemStack itemstack, World world, EntityPlayer player)
|
||||
{
|
||||
player.setItemInUse(itemstack, this.getMaxItemUseDuration(itemstack));
|
||||
ItemStack stack = itemstack.copy();
|
||||
if (!world.isRemote)
|
||||
{
|
||||
DaggerEntity dagger = new DaggerEntity(stack, world, player);
|
||||
world.spawnEntityInWorld(dagger);
|
||||
}
|
||||
itemstack.stackSize--;
|
||||
return itemstack;
|
||||
/*player.setItemInUse(itemstack, this.getMaxItemUseDuration(itemstack));
|
||||
return itemstack;*/
|
||||
}
|
||||
|
||||
public ItemStack onEaten (ItemStack itemstack, World world, EntityPlayer player)
|
||||
|
@ -1,52 +1,62 @@
|
||||
package mods.tinker.tconstruct.items.tools;
|
||||
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import mods.tinker.tconstruct.library.ActiveToolMod;
|
||||
import mods.tinker.tconstruct.library.TConstructRegistry;
|
||||
import mods.tinker.tconstruct.library.tools.AbilityHelper;
|
||||
import mods.tinker.tconstruct.library.tools.HarvestTool;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class Excavator extends HarvestTool
|
||||
{
|
||||
public Excavator(int itemID)
|
||||
{
|
||||
super(itemID, 2);
|
||||
this.setUnlocalizedName("InfiTool.Excavator");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Material[] getEffectiveMaterials()
|
||||
{
|
||||
return materials;
|
||||
}
|
||||
public Excavator(int itemID)
|
||||
{
|
||||
super(itemID, 2);
|
||||
this.setUnlocalizedName("InfiTool.Excavator");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getHarvestType()
|
||||
{
|
||||
return "shovel";
|
||||
}
|
||||
|
||||
static Material[] materials = { Material.grass, Material.ground, Material.sand, Material.snow, Material.craftedSnow, Material.clay };
|
||||
@Override
|
||||
protected Material[] getEffectiveMaterials ()
|
||||
{
|
||||
return materials;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getHarvestType ()
|
||||
{
|
||||
return "shovel";
|
||||
}
|
||||
|
||||
static Material[] materials = { Material.grass, Material.ground, Material.sand, Material.snow, Material.craftedSnow, Material.clay };
|
||||
|
||||
@Override
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.excavatorHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.excavatorHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getHandleItem ()
|
||||
{
|
||||
return TContent.toughRod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.toughBinding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.toughBinding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getExtraItem ()
|
||||
{
|
||||
@ -54,7 +64,7 @@ public class Excavator extends HarvestTool
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getRepairModifier ()
|
||||
public float getRepairCost ()
|
||||
{
|
||||
return 4.0f;
|
||||
}
|
||||
@ -63,7 +73,7 @@ public class Excavator extends HarvestTool
|
||||
{
|
||||
return 2.75f;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int durabilityTypeAccessory ()
|
||||
{
|
||||
@ -75,49 +85,160 @@ public class Excavator extends HarvestTool
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public int getRenderPasses (int metadata)
|
||||
{
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPartAmount()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIconSuffix (int partType)
|
||||
{
|
||||
switch (partType)
|
||||
{
|
||||
case 0:
|
||||
return "_excavator_head";
|
||||
case 1:
|
||||
return "_excavator_head_broken";
|
||||
case 2:
|
||||
return "_excavator_handle";
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public int getRenderPasses (int metadata)
|
||||
{
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPartAmount ()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIconSuffix (int partType)
|
||||
{
|
||||
switch (partType)
|
||||
{
|
||||
case 0:
|
||||
return "_excavator_head";
|
||||
case 1:
|
||||
return "_excavator_head_broken";
|
||||
case 2:
|
||||
return "_excavator_handle";
|
||||
case 3:
|
||||
return "_excavator_binding";
|
||||
case 4:
|
||||
return "_excavator_grip";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEffectSuffix ()
|
||||
{
|
||||
return "_excavator_effect";
|
||||
}
|
||||
@Override
|
||||
public String getEffectSuffix ()
|
||||
{
|
||||
return "_excavator_effect";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDefaultFolder ()
|
||||
{
|
||||
return "excavator";
|
||||
}
|
||||
@Override
|
||||
public String getDefaultFolder ()
|
||||
{
|
||||
return "excavator";
|
||||
}
|
||||
|
||||
/* Excavator Specific */
|
||||
|
||||
@Override
|
||||
public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPlayer player)
|
||||
{
|
||||
World world = player.worldObj;
|
||||
int blockID = 0;
|
||||
int meta = 0;
|
||||
if (!stack.hasTagCompound())
|
||||
return false;
|
||||
|
||||
MovingObjectPosition mop = AbilityHelper.raytraceFromEntity(world, player, true, 6);
|
||||
if (mop == null)
|
||||
return super.onBlockStartBreak(stack, x, y, z, player);
|
||||
|
||||
int xRange = 1;
|
||||
int yRange = 1;
|
||||
int zRange = 1;
|
||||
switch (mop.sideHit)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
yRange = 0;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
zRange = 0;
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
xRange = 0;
|
||||
break;
|
||||
}
|
||||
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
for (int xPos = x - xRange; xPos <= x + xRange; xPos++)
|
||||
{
|
||||
for (int yPos = y - yRange; yPos <= y + yRange; yPos++)
|
||||
{
|
||||
for (int zPos = z - zRange; zPos <= z + zRange; zPos++)
|
||||
{
|
||||
if (!(tags.getBoolean("Broken")))
|
||||
{
|
||||
boolean cancelHarvest = false;
|
||||
for (ActiveToolMod mod : TConstructRegistry.activeModifiers)
|
||||
{
|
||||
if (mod.beforeBlockBreak(this, stack, xPos, yPos, zPos, player))
|
||||
cancelHarvest = true;
|
||||
}
|
||||
|
||||
if (!cancelHarvest)
|
||||
{
|
||||
int localblockID = world.getBlockId(xPos, yPos, zPos);
|
||||
Block block = Block.blocksList[localblockID];
|
||||
if (block != null)
|
||||
{
|
||||
for (int iter = 0; iter < materials.length; iter++)
|
||||
{
|
||||
if (materials[iter] == block.blockMaterial)
|
||||
{
|
||||
meta = world.getBlockMetadata(xPos, yPos, zPos);
|
||||
world.setBlockToAir(xPos, yPos, zPos);
|
||||
if (!player.capabilities.isCreativeMode)
|
||||
{
|
||||
block.harvestBlock(world, player, xPos, yPos, zPos, meta);
|
||||
onBlockDestroyed(stack, world, localblockID, xPos, yPos, zPos, player);
|
||||
}
|
||||
blockID = localblockID;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!world.isRemote)
|
||||
world.playAuxSFX(2001, x, y, z, blockID + (meta << 12));
|
||||
return super.onBlockStartBreak(stack, x, y, z, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getStrVsBlock (ItemStack stack, Block block, int meta)
|
||||
{
|
||||
if (!stack.hasTagCompound())
|
||||
return 1.0f;
|
||||
|
||||
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
if (tags.getBoolean("Broken"))
|
||||
return 0.1f;
|
||||
|
||||
Material[] materials = getEffectiveMaterials();
|
||||
for (int i = 0; i < materials.length; i++)
|
||||
{
|
||||
if (materials[i] == block.blockMaterial)
|
||||
{
|
||||
float speed = tags.getInteger("MiningSpeed");
|
||||
speed /= 200f;
|
||||
int hlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getHarvestType());
|
||||
int durability = tags.getInteger("Damage");
|
||||
|
||||
float shoddy = tags.getFloat("Shoddy");
|
||||
speed += shoddy * durability / 100f;
|
||||
|
||||
if (hlvl <= tags.getInteger("HarvestLevel"))
|
||||
return speed;
|
||||
return 0.1f;
|
||||
}
|
||||
}
|
||||
return super.getStrVsBlock(stack, block, meta);
|
||||
}
|
||||
}
|
||||
|
@ -2,122 +2,331 @@ package mods.tinker.tconstruct.items.tools;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import mods.tinker.tconstruct.library.ActiveToolMod;
|
||||
import mods.tinker.tconstruct.library.TConstructRegistry;
|
||||
import mods.tinker.tconstruct.library.tools.AbilityHelper;
|
||||
import mods.tinker.tconstruct.library.tools.HarvestTool;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.Icon;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
|
||||
public class Hammer extends HarvestTool
|
||||
{
|
||||
public Hammer(int itemID)
|
||||
{
|
||||
super(itemID, 4);
|
||||
this.setUnlocalizedName("InfiTool.Hammer");
|
||||
setupCoords();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeadType ()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getHarvestType()
|
||||
{
|
||||
return "pickaxe";
|
||||
}
|
||||
public Hammer(int itemID)
|
||||
{
|
||||
super(itemID, 2);
|
||||
this.setUnlocalizedName("InfiTool.Hammer");
|
||||
setupCoords();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Material[] getEffectiveMaterials()
|
||||
{
|
||||
return materials;
|
||||
}
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public int getRenderPasses (int metadata)
|
||||
{
|
||||
return 10;
|
||||
}
|
||||
|
||||
static Material[] materials = new Material[] { Material.rock, Material.iron, Material.ice, Material.glass, Material.piston, Material.anvil };
|
||||
|
||||
/* Hammer specfic methods */
|
||||
|
||||
ArrayList<int[]> coords = new ArrayList<int[]>();
|
||||
|
||||
void setupCoords()
|
||||
{
|
||||
coords.add(new int[] {1, 0, 0 });
|
||||
coords.add(new int[] {-1, 0, 0});
|
||||
coords.add(new int[] {0, 1, 0 });
|
||||
coords.add(new int[] {0, -1, 0});
|
||||
coords.add(new int[] {0, 0, 1 });
|
||||
coords.add(new int[] {0, 0, -1});
|
||||
}
|
||||
|
||||
//@Override
|
||||
/*public boolean onBlockDestroyed (ItemStack itemstack, World world, int bID, int x, int y, int z, EntityLiving living)
|
||||
{
|
||||
if (!(itemstack.getTagCompound().getCompoundTag("InfiTool").getBoolean("Broken")) && living instanceof EntityPlayer)
|
||||
{
|
||||
EntityPlayer player = (EntityPlayer)living;
|
||||
for (int[] coord : coords)
|
||||
{
|
||||
int xPos = x+coord[0], yPos = y+coord[1], zPos = z+coord[2];
|
||||
Block block = Block.blocksList[world.getBlockId(xPos, yPos, zPos)];
|
||||
{
|
||||
if (block != null)
|
||||
{
|
||||
if (block.blockID == Block.stone.blockID)
|
||||
world.setBlock(xPos, yPos, zPos, Block.cobblestone.blockID);
|
||||
else if (block.blockMaterial == Material.rock)
|
||||
{
|
||||
int meta = world.getBlockMetadata(xPos, yPos, zPos);
|
||||
world.setBlockToAir(x, y, z);
|
||||
Block.blocksList[bID].harvestBlock(world, (EntityPlayer)player, xPos, yPos, zPos, meta);
|
||||
if (!player.capabilities.isCreativeMode)
|
||||
onBlockDestroyed(itemstack, world, bID, xPos, yPos, zPos, player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return AbilityHelper.onBlockChanged(itemstack, world, bID, x, y, z, living, random);
|
||||
}*/
|
||||
@Override
|
||||
public int getPartAmount ()
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public int durabilityTypeHandle ()
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIconSuffix (int partType)
|
||||
{
|
||||
switch (partType)
|
||||
{
|
||||
case 0:
|
||||
return "_hammer_head";
|
||||
case 1:
|
||||
return "_hammer_head_broken";
|
||||
case 2:
|
||||
return "_hammer_handle";
|
||||
case 3:
|
||||
return "_hammer_accessory";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
public int durabilityTypeAccessory ()
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEffectSuffix ()
|
||||
{
|
||||
return "_hammer_effect";
|
||||
}
|
||||
public int durabilityTypeExtra ()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDefaultFolder ()
|
||||
{
|
||||
return "hammer";
|
||||
}
|
||||
@Override
|
||||
protected String getHarvestType ()
|
||||
{
|
||||
return "pickaxe";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Material[] getEffectiveMaterials ()
|
||||
{
|
||||
return materials;
|
||||
}
|
||||
|
||||
static Material[] materials = new Material[] { Material.rock, Material.iron, Material.ice, Material.glass, Material.piston, Material.anvil };
|
||||
|
||||
@Override
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.hammerHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getHandleItem ()
|
||||
{
|
||||
return TContent.toughRod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.heavyPlate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getExtraItem ()
|
||||
{
|
||||
return TContent.heavyPlate;
|
||||
}
|
||||
|
||||
public float getDurabilityModifier ()
|
||||
{
|
||||
return 5.5f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIconSuffix (int partType)
|
||||
{
|
||||
switch (partType)
|
||||
{
|
||||
case 0:
|
||||
return "_hammer_head";
|
||||
case 1:
|
||||
return "_hammer_handle_broken";
|
||||
case 2:
|
||||
return "_hammer_handle";
|
||||
case 3:
|
||||
return "_hammer_front";
|
||||
case 4:
|
||||
return "_hammer_back";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEffectSuffix ()
|
||||
{
|
||||
return "_hammer_effect";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDefaultFolder ()
|
||||
{
|
||||
return "hammer";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Icon getIcon (ItemStack stack, int renderPass)
|
||||
{
|
||||
NBTTagCompound tags = stack.getTagCompound();
|
||||
|
||||
if (tags != null)
|
||||
{
|
||||
tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
if (renderPass < getPartAmount())
|
||||
{
|
||||
if (renderPass == 0) // Handle
|
||||
{
|
||||
if (tags.getBoolean("Broken"))
|
||||
return (brokenIcons.get(tags.getInteger("RenderHandle")));
|
||||
return handleIcons.get(tags.getInteger("RenderHandle"));
|
||||
}
|
||||
|
||||
else if (renderPass == 1) // Head
|
||||
{
|
||||
return (headIcons.get(tags.getInteger("RenderHead")));
|
||||
}
|
||||
|
||||
else if (renderPass == 2) // Accessory
|
||||
{
|
||||
return (accessoryIcons.get(tags.getInteger("RenderAccessory")));
|
||||
}
|
||||
|
||||
else if (renderPass == 3) // Extra
|
||||
{
|
||||
return (extraIcons.get(tags.getInteger("RenderExtra")));
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (renderPass == getPartAmount())
|
||||
{
|
||||
if (tags.hasKey("Effect1"))
|
||||
return (effectIcons.get(tags.getInteger("Effect1")));
|
||||
}
|
||||
|
||||
else if (renderPass == getPartAmount() + 1)
|
||||
{
|
||||
if (tags.hasKey("Effect2"))
|
||||
return (effectIcons.get(tags.getInteger("Effect2")));
|
||||
}
|
||||
|
||||
else if (renderPass == getPartAmount() + 2)
|
||||
{
|
||||
if (tags.hasKey("Effect3"))
|
||||
return (effectIcons.get(tags.getInteger("Effect3")));
|
||||
}
|
||||
|
||||
else if (renderPass == getPartAmount() + 3)
|
||||
{
|
||||
if (tags.hasKey("Effect4"))
|
||||
return (effectIcons.get(tags.getInteger("Effect4")));
|
||||
}
|
||||
|
||||
else if (renderPass == getPartAmount() + 4)
|
||||
{
|
||||
if (tags.hasKey("Effect5"))
|
||||
return (effectIcons.get(tags.getInteger("Effect5")));
|
||||
}
|
||||
|
||||
else if (renderPass == getPartAmount() + 5)
|
||||
{
|
||||
if (tags.hasKey("Effect6"))
|
||||
return (effectIcons.get(tags.getInteger("Effect6")));
|
||||
}
|
||||
}
|
||||
return blankSprite;
|
||||
}
|
||||
return emptyIcon;
|
||||
}
|
||||
|
||||
ArrayList<int[]> coords = new ArrayList<int[]>();
|
||||
|
||||
void setupCoords ()
|
||||
{
|
||||
coords.add(new int[] { 0, 0, 0 });
|
||||
coords.add(new int[] { 1, 0, 0 });
|
||||
coords.add(new int[] { -1, 0, 0 });
|
||||
coords.add(new int[] { 0, 1, 0 });
|
||||
coords.add(new int[] { 0, -1, 0 });
|
||||
coords.add(new int[] { 0, 0, 1 });
|
||||
coords.add(new int[] { 0, 0, -1 });
|
||||
|
||||
coords.add(new int[] { -1, 0, 0 });
|
||||
coords.add(new int[] { -1, 0, 1 });
|
||||
coords.add(new int[] { -1, 0, -1 });
|
||||
coords.add(new int[] { -1, 1, 0 });
|
||||
coords.add(new int[] { -1, -1, 0 });
|
||||
|
||||
coords.add(new int[] { 1, 0, 0 });
|
||||
coords.add(new int[] { 1, 0, 1 });
|
||||
coords.add(new int[] { 1, 0, -1 });
|
||||
coords.add(new int[] { 1, 1, 0 });
|
||||
coords.add(new int[] { 1, -1, 0 });
|
||||
|
||||
coords.add(new int[] { 0, 1, 1 });
|
||||
coords.add(new int[] { 0, 1, 0 });
|
||||
coords.add(new int[] { 0, 1, -1 });
|
||||
|
||||
coords.add(new int[] { 0, -1, 1 });
|
||||
coords.add(new int[] { 0, -1, 0 });
|
||||
coords.add(new int[] { 0, -1, -1 });
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPlayer player)
|
||||
{
|
||||
World world = player.worldObj;
|
||||
int blockID = 0;
|
||||
int meta = 0;
|
||||
if (!stack.hasTagCompound())
|
||||
return false;
|
||||
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
|
||||
if (!(tags.getBoolean("Broken")))
|
||||
{
|
||||
for (int[] coord : coords)
|
||||
{
|
||||
int xPos = x + coord[0], yPos = y + coord[1], zPos = z + coord[2];
|
||||
boolean cancelHarvest = false;
|
||||
for (ActiveToolMod mod : TConstructRegistry.activeModifiers)
|
||||
{
|
||||
if (mod.beforeBlockBreak(this, stack, xPos, yPos, zPos, player))
|
||||
cancelHarvest = true;
|
||||
}
|
||||
|
||||
if (!cancelHarvest)
|
||||
{
|
||||
int localblockID = world.getBlockId(xPos, yPos, zPos);
|
||||
Block block = Block.blocksList[localblockID];
|
||||
if (block != null)
|
||||
{
|
||||
for (int iter = 0; iter < materials.length; iter++)
|
||||
{
|
||||
if (materials[iter] == block.blockMaterial)
|
||||
{
|
||||
meta = world.getBlockMetadata(xPos, yPos, zPos);
|
||||
world.setBlockToAir(xPos, yPos, zPos);
|
||||
if (!player.capabilities.isCreativeMode)
|
||||
{
|
||||
block.harvestBlock(world, player, xPos, yPos, zPos, meta);
|
||||
onBlockDestroyed(stack, world, localblockID, xPos, yPos, zPos, player);
|
||||
}
|
||||
blockID = localblockID;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!world.isRemote)
|
||||
world.playAuxSFX(2001, x, y, z, blockID + (meta << 12));
|
||||
return super.onBlockStartBreak(stack, x, y, z, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getStrVsBlock (ItemStack stack, Block block, int meta)
|
||||
{
|
||||
if (!stack.hasTagCompound())
|
||||
return 1.0f;
|
||||
|
||||
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
if (tags.getBoolean("Broken"))
|
||||
return 0.1f;
|
||||
|
||||
Material[] materials = getEffectiveMaterials();
|
||||
for (int i = 0; i < materials.length; i++)
|
||||
{
|
||||
if (materials[i] == block.blockMaterial)
|
||||
{
|
||||
float speed = tags.getInteger("MiningSpeed");
|
||||
speed /= 200f;
|
||||
int hlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getHarvestType());
|
||||
int durability = tags.getInteger("Damage");
|
||||
|
||||
float shoddy = tags.getFloat("Shoddy");
|
||||
speed += shoddy * durability / 100f;
|
||||
|
||||
if (hlvl <= tags.getInteger("HarvestLevel"))
|
||||
return speed;
|
||||
return 0.1f;
|
||||
}
|
||||
}
|
||||
return super.getStrVsBlock(stack, block, meta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] toolCategories()
|
||||
{
|
||||
return new String[] { "weapon", "harvest", "melee", "bludgeoning" };
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ public class LumberAxe extends HarvestTool
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getRepairModifier ()
|
||||
public float getRepairCost ()
|
||||
{
|
||||
return 4.0f;
|
||||
}
|
||||
@ -179,7 +179,7 @@ public class LumberAxe extends HarvestTool
|
||||
int localID = world.getBlockId(xPos, yPos, zPos);
|
||||
if (localID == bID && world.getBlockMetadata(xPos, yPos, zPos) % 4 == meta % 4)
|
||||
{
|
||||
world.setBlockToAir(xPos, yPos, zPos);
|
||||
world.setBlock(xPos, yPos, zPos, 0, 0, 4);
|
||||
if (!player.capabilities.isCreativeMode)
|
||||
{
|
||||
Block.blocksList[bID].harvestBlock(world, player, xPos, yPos, zPos, meta);
|
||||
@ -248,7 +248,7 @@ public class LumberAxe extends HarvestTool
|
||||
@Override
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.lumberHead;
|
||||
return TContent.broadAxeHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -260,7 +260,7 @@ public class LumberAxe extends HarvestTool
|
||||
@Override
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.largePlate;
|
||||
return TContent.heavyPlate;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -6,7 +6,7 @@ import mods.tinker.tconstruct.common.TContent;
|
||||
import mods.tinker.tconstruct.library.ActiveToolMod;
|
||||
import mods.tinker.tconstruct.library.TConstructRegistry;
|
||||
import mods.tinker.tconstruct.library.tools.AbilityHelper;
|
||||
import mods.tinker.tconstruct.library.tools.HarvestTool;
|
||||
import mods.tinker.tconstruct.library.tools.Weapon;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.Entity;
|
||||
@ -19,7 +19,7 @@ import net.minecraft.world.World;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class Scythe extends HarvestTool
|
||||
public class Scythe extends Weapon
|
||||
{
|
||||
public Scythe(int itemID)
|
||||
{
|
||||
@ -27,11 +27,11 @@ public class Scythe extends HarvestTool
|
||||
this.setUnlocalizedName("InfiTool.Scythe");
|
||||
}
|
||||
|
||||
@Override
|
||||
/*@Override
|
||||
protected String getHarvestType()
|
||||
{
|
||||
return "sword";
|
||||
}
|
||||
}*/
|
||||
|
||||
@Override
|
||||
protected Material[] getEffectiveMaterials()
|
||||
@ -104,7 +104,7 @@ public class Scythe extends HarvestTool
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getRepairModifier ()
|
||||
public float getRepairCost ()
|
||||
{
|
||||
return 4.0f;
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ActiveToolMod
|
||||
@ -28,7 +29,7 @@ public class ActiveToolMod
|
||||
|
||||
/* Attacking */
|
||||
|
||||
public int baseAttackDamage(int earlyModDamage, int damage, ToolCore tool, ItemStack stack, EntityPlayer player, Entity entity)
|
||||
public int baseAttackDamage(int earlyModDamage, int damage, ToolCore tool, NBTTagCompound tags, NBTTagCompound toolTags, ItemStack stack, EntityPlayer player, Entity entity)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@ -39,7 +40,7 @@ public class ActiveToolMod
|
||||
return 0f;
|
||||
}
|
||||
|
||||
public int attackDamage(int modDamage, int currentDamage, ToolCore tool, ItemStack stack, EntityPlayer player, Entity entity)
|
||||
public int attackDamage(int modDamage, int currentDamage, ToolCore tool, NBTTagCompound tags, NBTTagCompound toolTags, ItemStack stack, EntityPlayer player, Entity entity)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import mods.tinker.tconstruct.event.ToolCraftEvent;
|
||||
import mods.tinker.tconstruct.library.TConstructRegistry;
|
||||
import mods.tinker.tconstruct.library.tools.ToolCore;
|
||||
import mods.tinker.tconstruct.library.tools.ToolMaterial;
|
||||
@ -13,6 +14,7 @@ import mods.tinker.tconstruct.library.util.IToolPart;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
|
||||
public class ToolBuilder
|
||||
{
|
||||
@ -306,6 +308,9 @@ public class ToolBuilder
|
||||
compound.setCompoundTag("display", new NBTTagCompound());
|
||||
compound.getCompoundTag("display").setString("Name", "\u00A7f" + name);
|
||||
}
|
||||
|
||||
ToolCraftEvent event = new ToolCraftEvent(item, compound, new ToolMaterial[] {headMat, handleMat, accessoryMat, extraMat});
|
||||
MinecraftForge.EVENT_BUS.post(event);
|
||||
|
||||
tool.setTagCompound(compound);
|
||||
|
||||
|
@ -81,7 +81,7 @@ public class AbilityHelper
|
||||
int earlyModDamage = 0;
|
||||
for (ActiveToolMod mod : TConstructRegistry.activeModifiers)
|
||||
{
|
||||
earlyModDamage = mod.baseAttackDamage(earlyModDamage, damage, tool, stack, player, entity);
|
||||
earlyModDamage = mod.baseAttackDamage(earlyModDamage, damage, tool, tags, toolTags, stack, player, entity);
|
||||
}
|
||||
damage += earlyModDamage;
|
||||
|
||||
@ -129,7 +129,7 @@ public class AbilityHelper
|
||||
int modDamage = 0;
|
||||
for (ActiveToolMod mod : TConstructRegistry.activeModifiers)
|
||||
{
|
||||
modDamage = mod.attackDamage(modDamage, damage, tool, stack, player, entity);
|
||||
modDamage = mod.attackDamage(modDamage, damage, tool, tags, toolTags, stack, player, entity);
|
||||
}
|
||||
damage += modDamage;
|
||||
|
||||
|
@ -2,6 +2,7 @@ package mods.tinker.tconstruct.modifiers;
|
||||
|
||||
import mods.tinker.tconstruct.library.crafting.PatternBuilder;
|
||||
import mods.tinker.tconstruct.library.tools.AbilityHelper;
|
||||
import mods.tinker.tconstruct.library.tools.ToolCore;
|
||||
import mods.tinker.tconstruct.library.tools.ToolMod;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@ -80,7 +81,7 @@ public class ModRepair extends ToolMod
|
||||
if (repairCount < 0.5f)
|
||||
repairCount = 0.5f;
|
||||
increase *= repairCount;
|
||||
increase /= tool.getRepairCost();
|
||||
increase /= ((ToolCore) tool.getItem()).getRepairCost();
|
||||
|
||||
damage -= increase;
|
||||
if (damage < 0)
|
||||
|
@ -148,10 +148,21 @@ public class TActiveOmniMod extends ActiveToolMod
|
||||
/* Attacking */
|
||||
|
||||
@Override
|
||||
public int baseAttackDamage (int earlyModDamage, int damage, ToolCore tool, ItemStack stack, EntityPlayer player, Entity entity)
|
||||
public int baseAttackDamage (int earlyModDamage, int damage, ToolCore tool, NBTTagCompound tags, NBTTagCompound toolTags, ItemStack stack, EntityPlayer player, Entity entity)
|
||||
{
|
||||
if (tool instanceof Weapon)
|
||||
TContent.modL.midStreamModify(stack);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int attackDamage(int modDamage, int currentDamage, ToolCore tool, NBTTagCompound tags, NBTTagCompound toolTags, ItemStack stack, EntityPlayer player, Entity entity)
|
||||
{
|
||||
if (toolTags.hasKey("Smite"))
|
||||
{
|
||||
int level = toolTags.getInteger("Smite");
|
||||
int bonus = random.nextInt(level*2+1) + level*2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -123,6 +123,7 @@ public class PHConstruct
|
||||
largeSwordBlade = config.getItem("Tool Parts", "Large Sword Blade", 14043).getInt(14043);
|
||||
largePlate = config.getItem("Tool Parts", "Large Plate", 14044).getInt(14044);
|
||||
excavatorHead = config.getItem("Tool Parts", "Excavator Head", 14045).getInt(14045);
|
||||
hammerHead = config.getItem("Tool Parts", "Hammer Head", 14046).getInt(14046);
|
||||
|
||||
pickaxe = config.getItem("Tools", "Pickaxe", 14051).getInt(14051);
|
||||
shovel = config.getItem("Tools", "Shovel", 14052).getInt(14052);
|
||||
@ -146,6 +147,8 @@ public class PHConstruct
|
||||
scythe = config.getItem("Tools", "Scythe", 14067).getInt(14067);
|
||||
cleaver = config.getItem("Tools", "Cleaver", 14068).getInt(14068);
|
||||
excavator = config.getItem("Tools", "Excavator", 14069).getInt(14069);
|
||||
hammer = config.getItem("Tools", "Hammer", 14070).getInt(14070);
|
||||
battleaxe = config.getItem("Tools", "Battleaxe", 14071).getInt(14071);
|
||||
|
||||
buckets = config.getItem("Patterns and Misc", "Buckets", 14101).getInt(14101);
|
||||
uselessItem = config.getItem("Patterns and Misc", "Title Icon", 14102).getInt(14102);
|
||||
@ -322,6 +325,8 @@ public class PHConstruct
|
||||
public static int scythe;
|
||||
public static int cleaver;
|
||||
public static int excavator;
|
||||
public static int hammer;
|
||||
public static int battleaxe;
|
||||
|
||||
public static int chisel;
|
||||
|
||||
@ -345,6 +350,7 @@ public class PHConstruct
|
||||
public static int lumberHead;
|
||||
public static int largeSwordBlade;
|
||||
public static int excavatorHead;
|
||||
public static int hammerHead;
|
||||
|
||||
public static int binding;
|
||||
public static int toughBinding;
|
||||
|
@ -6,12 +6,14 @@ import java.util.Random;
|
||||
import mods.tinker.tconstruct.TConstruct;
|
||||
import mods.tinker.tconstruct.blocks.logic.LiquidTextureLogic;
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import mods.tinker.tconstruct.event.ToolCraftEvent;
|
||||
import mods.tinker.tconstruct.library.crafting.PatternBuilder;
|
||||
import mods.tinker.tconstruct.library.crafting.Smeltery;
|
||||
import mods.tinker.tconstruct.library.crafting.ToolBuilder;
|
||||
import mods.tinker.tconstruct.modifiers.ModAttack;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.boss.EntityWither;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.monster.EntityCreeper;
|
||||
import net.minecraft.entity.monster.EntityGhast;
|
||||
@ -40,6 +42,21 @@ public class TEventHandler
|
||||
{
|
||||
Random random = new Random();
|
||||
|
||||
/* Crafting */
|
||||
@ForgeSubscribe
|
||||
public void craftTool (ToolCraftEvent event)
|
||||
{
|
||||
if (event.tool == TContent.hammer)
|
||||
{
|
||||
event.toolTag.setInteger("Smite", 2);
|
||||
}
|
||||
|
||||
if (event.tool == TContent.cleaver)
|
||||
{
|
||||
event.toolTag.setInteger("Beheading", 2);
|
||||
}
|
||||
}
|
||||
|
||||
/* Interact */
|
||||
|
||||
/*@ForgeSubscribe
|
||||
@ -80,6 +97,14 @@ public class TEventHandler
|
||||
event.drops.add(entityitem);
|
||||
}
|
||||
|
||||
if (event.entityLiving instanceof EntityWither && random.nextInt(5) == 0)
|
||||
{
|
||||
ItemStack dropStack = new ItemStack(TContent.heartCanister, 1, 1);
|
||||
EntityItem entityitem = new EntityItem(event.entityLiving.worldObj, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, dropStack);
|
||||
entityitem.delayBeforeCanPickup = 10;
|
||||
event.drops.add(entityitem);
|
||||
}
|
||||
|
||||
if (event.entityLiving.worldObj.getGameRules().getGameRuleBooleanValue("doMobLoot"))
|
||||
{
|
||||
if (!event.entityLiving.isChild())
|
||||
@ -109,18 +134,22 @@ public class TEventHandler
|
||||
{
|
||||
if (event.entityLiving.getClass() == EntitySkeleton.class)
|
||||
{
|
||||
EntitySkeleton skeleton = (EntitySkeleton) event.entityLiving;
|
||||
EntitySkeleton enemy = (EntitySkeleton) event.entityLiving;
|
||||
|
||||
if (event.source.damageType.equals("player"))
|
||||
{
|
||||
EntityPlayer player = (EntityPlayer) event.source.getEntity();
|
||||
ItemStack stack = player.getCurrentEquippedItem();
|
||||
if (stack.getItem() == TContent.breakerBlade && random.nextInt(100) < 10) //Swap out for real beheading
|
||||
if (stack.hasTagCompound())
|
||||
{
|
||||
addDrops(event, new ItemStack(Item.skull.itemID, 1, skeleton.getSkeletonType()));
|
||||
int beheading = stack.getTagCompound().getCompoundTag("InfiTool").getInteger("Beheading");
|
||||
if (beheading > 0 && random.nextInt(100) < beheading * 10)
|
||||
{
|
||||
addDrops(event, new ItemStack(Item.skull.itemID, 1, enemy.getSkeletonType()));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (skeleton.getSkeletonType() == 1 && random.nextInt(Math.max(1, 5 - event.lootingLevel)) == 0)
|
||||
if (enemy.getSkeletonType() == 1 && random.nextInt(Math.max(1, 5 - event.lootingLevel)) == 0)
|
||||
{
|
||||
addDrops(event, new ItemStack(TContent.materials, 1, 8));
|
||||
}
|
||||
@ -134,10 +163,19 @@ public class TEventHandler
|
||||
{
|
||||
EntityPlayer player = (EntityPlayer) event.source.getEntity();
|
||||
ItemStack stack = player.getCurrentEquippedItem();
|
||||
if (stack.getItem() == TContent.breakerBlade && random.nextInt(100) < 10) //Swap out for real beheading
|
||||
|
||||
if (stack.hasTagCompound())
|
||||
{
|
||||
int beheading = stack.getTagCompound().getCompoundTag("InfiTool").getInteger("Beheading");
|
||||
if (beheading > 0 && random.nextInt(100) < beheading * 10)
|
||||
{
|
||||
addDrops(event, new ItemStack(Item.skull.itemID, 1, 2));
|
||||
}
|
||||
}
|
||||
/*if (stack.getItem() == TContent.breakerBlade && random.nextInt(100) < 10) //Swap out for real beheading
|
||||
{
|
||||
addDrops(event, new ItemStack(Item.skull.itemID, 1, 2));
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
@ -149,13 +187,17 @@ public class TEventHandler
|
||||
{
|
||||
EntityPlayer player = (EntityPlayer) event.source.getEntity();
|
||||
ItemStack stack = player.getCurrentEquippedItem();
|
||||
if (stack.getItem() == TContent.breakerBlade && random.nextInt(100) < 10) //Swap out for real beheading
|
||||
if (stack.hasTagCompound())
|
||||
{
|
||||
addDrops(event, new ItemStack(Item.skull.itemID, 1, 4));
|
||||
int beheading = stack.getTagCompound().getCompoundTag("InfiTool").getInteger("Beheading");
|
||||
if (beheading > 0 && random.nextInt(100) < beheading * 5)
|
||||
{
|
||||
addDrops(event, new ItemStack(Item.skull.itemID, 1, 4));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (event.entityLiving instanceof EntityPlayer)
|
||||
{
|
||||
EntityPlayer enemy = (EntityPlayer) event.entityLiving;
|
||||
@ -164,13 +206,16 @@ public class TEventHandler
|
||||
{
|
||||
EntityPlayer player = (EntityPlayer) event.source.getEntity();
|
||||
ItemStack stack = player.getCurrentEquippedItem();
|
||||
if (stack.getItem() == TContent.breakerBlade && random.nextInt(100) < 10) //Swap out for real beheading
|
||||
if (stack.hasTagCompound())
|
||||
{
|
||||
ItemStack dropStack = new ItemStack(Item.skull.itemID, 1, 3);
|
||||
NBTTagCompound nametag = new NBTTagCompound();
|
||||
nametag.setString("SkullOwner", enemy.username);
|
||||
//par1ItemStack.getTagCompound().getString("SkullOwner");
|
||||
addDrops(event, dropStack);
|
||||
int beheading = stack.getTagCompound().getCompoundTag("InfiTool").getInteger("Beheading");
|
||||
if (beheading > 0 && random.nextInt(100) < beheading * 50)
|
||||
{
|
||||
ItemStack dropStack = new ItemStack(Item.skull.itemID, 1, 3);
|
||||
NBTTagCompound nametag = new NBTTagCompound();
|
||||
nametag.setString("SkullOwner", enemy.username);
|
||||
addDrops(event, dropStack);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 453 B After Width: | Height: | Size: 279 B |
Before Width: | Height: | Size: 513 B After Width: | Height: | Size: 294 B |
Before Width: | Height: | Size: 413 B After Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 616 B After Width: | Height: | Size: 550 B |
Before Width: | Height: | Size: 926 B After Width: | Height: | Size: 800 B |
Before Width: | Height: | Size: 833 B After Width: | Height: | Size: 708 B |
Before Width: | Height: | Size: 622 B After Width: | Height: | Size: 425 B |
Before Width: | Height: | Size: 791 B After Width: | Height: | Size: 755 B |
Before Width: | Height: | Size: 616 B After Width: | Height: | Size: 426 B |
Before Width: | Height: | Size: 729 B After Width: | Height: | Size: 675 B |
Before Width: | Height: | Size: 588 B After Width: | Height: | Size: 537 B |
Before Width: | Height: | Size: 473 B After Width: | Height: | Size: 468 B |
Before Width: | Height: | Size: 876 B After Width: | Height: | Size: 749 B |
Before Width: | Height: | Size: 693 B After Width: | Height: | Size: 692 B |
Before Width: | Height: | Size: 694 B After Width: | Height: | Size: 692 B |
Before Width: | Height: | Size: 833 B After Width: | Height: | Size: 715 B |
Before Width: | Height: | Size: 907 B After Width: | Height: | Size: 876 B |
Before Width: | Height: | Size: 735 B After Width: | Height: | Size: 641 B |
Before Width: | Height: | Size: 846 B After Width: | Height: | Size: 818 B |
Before Width: | Height: | Size: 364 B After Width: | Height: | Size: 363 B |
Before Width: | Height: | Size: 518 B After Width: | Height: | Size: 232 B |
Before Width: | Height: | Size: 445 B After Width: | Height: | Size: 386 B |
Before Width: | Height: | Size: 481 B After Width: | Height: | Size: 433 B |
BIN
mods/tinker/textures/blocks/consecratedsoil.png
Normal file
After Width: | Height: | Size: 673 B |
Before Width: | Height: | Size: 397 B After Width: | Height: | Size: 396 B |
Before Width: | Height: | Size: 723 B After Width: | Height: | Size: 355 B |
Before Width: | Height: | Size: 775 B After Width: | Height: | Size: 396 B |
Before Width: | Height: | Size: 613 B After Width: | Height: | Size: 309 B |
Before Width: | Height: | Size: 850 B After Width: | Height: | Size: 395 B |
Before Width: | Height: | Size: 670 B After Width: | Height: | Size: 353 B |
Before Width: | Height: | Size: 772 B After Width: | Height: | Size: 401 B |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 542 B |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 219 B |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 272 B |
BIN
mods/tinker/textures/blocks/graveyardsoil.png
Normal file
After Width: | Height: | Size: 673 B |
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 896 B After Width: | Height: | Size: 552 B |
Before Width: | Height: | Size: 805 B After Width: | Height: | Size: 441 B |
Before Width: | Height: | Size: 872 B After Width: | Height: | Size: 491 B |
Before Width: | Height: | Size: 887 B After Width: | Height: | Size: 487 B |
Before Width: | Height: | Size: 877 B After Width: | Height: | Size: 491 B |
Before Width: | Height: | Size: 930 B After Width: | Height: | Size: 923 B |
Before Width: | Height: | Size: 872 B After Width: | Height: | Size: 484 B |
Before Width: | Height: | Size: 675 B After Width: | Height: | Size: 673 B |
Before Width: | Height: | Size: 319 B After Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 569 B After Width: | Height: | Size: 568 B |
Before Width: | Height: | Size: 319 B After Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 319 B After Width: | Height: | Size: 318 B |