Skip to content

Commit

Permalink
New: Fork Upgrade
Browse files Browse the repository at this point in the history
Changed tool upgrade system to be more flexible. Moved "place block" into
an upgrade. Added hoe upgrade.

Note: Upgrades that use the "right click" slot are mutable exclusive. Same
for "shift right click", but there's only one upgrade atm.
  • Loading branch information
HenryLoenwind committed May 7, 2015
1 parent 959022c commit 67b5363
Show file tree
Hide file tree
Showing 13 changed files with 481 additions and 93 deletions.
8 changes: 8 additions & 0 deletions resources/assets/enderio/lang/en_US.lang
Original file line number Diff line number Diff line change
Expand Up @@ -699,6 +699,14 @@ enderio.darksteel.upgrade.spoon.name=Spoon
enderio.darksteel.upgrade.spoon.tooltip.detailed.line1=Who needs a shovel when
enderio.darksteel.upgrade.spoon.tooltip.detailed.line2=you have a spoon

enderio.darksteel.upgrade.blockplace.name=Block Placer
enderio.darksteel.upgrade.blockplace.tooltip.detailed.line1=R-Click to place the block on the
enderio.darksteel.upgrade.blockplace.tooltip.detailed.line2=next hotbar slot

enderio.darksteel.upgrade.hoe.name=Fork
enderio.darksteel.upgrade.hoe.tooltip.detailed.line1=Who needs a hoe when
enderio.darksteel.upgrade.hoe.tooltip.detailed.line2=you have a fork

enderio.darksteel.upgrade.glider.name=Glider
enderio.darksteel.upgrade.glider.tooltip.detailed.line1=Enables gliding
enderio.darksteel.upgrade.glider.enabled=Glider Active
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/crazypants/enderio/config/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,8 @@ public String lc() {

public static int darkSteelTravelCost = 30;
public static int darkSteelSpoonCost = 10;
public static int darkSteelBlockPlaceCost = 5;
public static int darkSteelHoeCost = 10;

public static int darkSteelSolarOneGen = 10;
public static int darkSteelSolarOneCost = 15;
Expand Down Expand Up @@ -860,6 +862,12 @@ public static void processConfig(Configuration config) {
darkSteelSpoonCost = config.get(sectionDarkSteel.name, "darkSteelSpoonCost", darkSteelSpoonCost,
"Number of levels required for the 'Spoon' upgrade.").getInt(darkSteelSpoonCost);

darkSteelBlockPlaceCost = config.get(sectionDarkSteel.name, "darkSteelBlockPlaceCost", darkSteelBlockPlaceCost,
"Number of levels required for the 'Block Placer' upgrade.").getInt(darkSteelBlockPlaceCost);

darkSteelHoeCost = config.get(sectionDarkSteel.name, "darkSteelHoeCost", darkSteelHoeCost,
"Number of levels required for the 'Hoe' upgrade.").getInt(darkSteelHoeCost);

darkSteelSolarOneCost = config.get(sectionDarkSteel.name, "darkSteelSolarOneCost", darkSteelSolarOneCost,
"Cost in XP levels of the Solar I upgrade.").getInt();
darkSteelSolarOneGen = config.get(sectionDarkSteel.name, "darkSteelSolarOneGen", darkSteelSolarOneGen,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import crazypants.enderio.EnderIO;
import crazypants.enderio.item.darksteel.upgrade.ApiaristArmorUpgrade;
import crazypants.enderio.item.darksteel.upgrade.BlockPlaceUpgrade;
import crazypants.enderio.item.darksteel.upgrade.EnergyUpgrade;
import crazypants.enderio.item.darksteel.upgrade.GliderUpgrade;
import crazypants.enderio.item.darksteel.upgrade.HoeUpgrade;
import crazypants.enderio.item.darksteel.upgrade.IDarkSteelUpgrade;
import crazypants.enderio.item.darksteel.upgrade.JumpUpgrade;
import crazypants.enderio.item.darksteel.upgrade.NaturalistEyeUpgrade;
Expand Down Expand Up @@ -71,6 +73,8 @@ public DarkSteelRecipeManager() {
upgrades.add(ApiaristArmorUpgrade.LEGS);
upgrades.add(ApiaristArmorUpgrade.BOOTS);
}
upgrades.add(BlockPlaceUpgrade.INSTANCE);
upgrades.add(HoeUpgrade.INSTANCE);
}

@SubscribeEvent
Expand Down
122 changes: 113 additions & 9 deletions src/main/java/crazypants/enderio/item/darksteel/ItemDarkSteelAxe.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;

import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemAxe;
Expand All @@ -27,16 +32,25 @@
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIOTab;
import crazypants.enderio.api.teleport.IItemOfTravel;
import crazypants.enderio.config.Config;
import crazypants.enderio.gui.IAdvancedTooltipProvider;
import crazypants.enderio.item.darksteel.upgrade.BlockPlaceUpgrade;
import crazypants.enderio.item.darksteel.upgrade.EnergyUpgrade;
import crazypants.enderio.item.darksteel.upgrade.HoeUpgrade;
import crazypants.enderio.item.darksteel.upgrade.IRightClickUpgradable;
import crazypants.enderio.item.darksteel.upgrade.IShiftRightClickUpgradable;
import crazypants.enderio.item.darksteel.upgrade.ISpoonUpgradable;
import crazypants.enderio.item.darksteel.upgrade.SpoonUpgrade;
import crazypants.enderio.item.darksteel.upgrade.TravelUpgrade;
import crazypants.enderio.machine.farm.farmers.HarvestResult;
import crazypants.enderio.machine.farm.farmers.TreeHarvestUtil;
import crazypants.util.BlockCoord;
import crazypants.util.ItemUtil;
import crazypants.util.Lang;

public class ItemDarkSteelAxe extends ItemAxe implements IEnergyContainerItem, IAdvancedTooltipProvider, IDarkSteelItem {
public class ItemDarkSteelAxe extends ItemAxe implements IEnergyContainerItem, IAdvancedTooltipProvider, IDarkSteelItem,
IRightClickUpgradable, IShiftRightClickUpgradable, IItemOfTravel, ISpoonUpgradable {

public static boolean isEquipped(EntityPlayer player) {
if(player == null) {
Expand Down Expand Up @@ -164,14 +178,6 @@ public void onBreakSpeedEvent(PlayerEvent.BreakSpeed evt) {
}
}

@Override
public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int x, int y, int z, int side, float par8, float par9, float par10) {
if (world.isRemote) {
return ItemDarkSteelPickaxe.doRightClickItemPlace(player, world, x, y, z, side, par8, par9, par10);
}
return false;
}

@Override
public void setDamage(ItemStack stack, int newDamage) {
int oldDamage = getDamage(stack);
Expand Down Expand Up @@ -297,4 +303,102 @@ public static int compare(int x, int y) {

}

/* Upgrades Start */

private boolean isTravelUpgradeActive(EntityPlayer ep, ItemStack equipped) {
return isEquipped(ep) && ep.isSneaking() && TravelUpgrade.loadFromItem(equipped) != null;
}

@Override
public boolean hasRightClickUpgrade(ItemStack item) {
return hasBlockPlaceUpgrade(item) || hasHoeUpgrade(item);
}

private boolean hasBlockPlaceUpgrade(ItemStack item) {
return BlockPlaceUpgrade.loadFromItem(item) != null;
}

private boolean hasSpoonUpgrade(ItemStack item) {
return SpoonUpgrade.loadFromItem(item) != null;
}

private boolean hasHoeUpgrade(ItemStack item) {
return HoeUpgrade.loadFromItem(item) != null;
}

private boolean hasTravelUpgrade(ItemStack item) {
return TravelUpgrade.loadFromItem(item) != null;
}

@Override
public boolean hasShiftRightClickUpgrade(ItemStack item) {
return hasTravelUpgrade(item);
}

@Override
public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int x, int y, int z, int side, float par8, float par9,
float par10) {
if (player.isSneaking()) {
if (isTravelUpgradeActive(player, item) && TravelUpgrade.handleItemUse(item, player, world, x, y, z, side, par8, par9, par10)) {
return true;
}
} else {
if (hasBlockPlaceUpgrade(item) && BlockPlaceUpgrade.handleItemUse(item, player, world, x, y, z, side, par8, par9, par10)) {
return true;
}
if (hasHoeUpgrade(item) && HoeUpgrade.handleItemUse(item, player, world, x, y, z, side, par8, par9, par10)) {
return true;
}
}

return false;
}

@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if (player.isSneaking()) {
if (isTravelUpgradeActive(player, stack) && TravelUpgrade.handleRightClick(stack, world, player)) {
return stack;
}
} else {
if (hasBlockPlaceUpgrade(stack) && BlockPlaceUpgrade.handleRightClick(stack, world, player)) {
return stack;
}
if (hasHoeUpgrade(stack) && HoeUpgrade.handleRightClick(stack, world, player)) {
return stack;
}
}

return super.onItemRightClick(stack, world, player);
}

/* Upgrades End */

@Override
public boolean isActive(EntityPlayer ep, ItemStack equipped) {
return isTravelUpgradeActive(ep, equipped);
}

@Override
public void extractInternal(ItemStack equipped, int power) {
extractEnergy(equipped, power, false);
}

@Override
public Set<String> getToolClasses(ItemStack stack) {
if (hasSpoonUpgrade(stack)) {
return ImmutableSet.of("axe", "shovel");
}
return super.getToolClasses(stack);
}

@Override
public boolean canHarvestBlock(Block block, ItemStack item) {
if (hasSpoonUpgrade(item) && getEnergyStored(item) > 0) {
return block == Blocks.snow_layer ? true : block == Blocks.snow || super.canHarvestBlock(block, item);
} else {
return super.canHarvestBlock(block, item);
}
}

}
Loading

0 comments on commit 67b5363

Please sign in to comment.