Changed formatting to have bracing on a new line

This commit is contained in:
WayofTime 2015-12-30 15:34:40 -05:00
parent e5eddd6c45
commit e48eedb874
189 changed files with 6092 additions and 4041 deletions

View file

@ -11,11 +11,13 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemActivationCrystal extends ItemBindable {
public class ItemActivationCrystal extends ItemBindable
{
public static String[] names = {"weak", "awakened", "creative"};
public static String[] names = { "weak", "awakened", "creative" };
public ItemActivationCrystal() {
public ItemActivationCrystal()
{
super();
setUnlocalizedName(Constants.Mod.MODID + ".activationCrystal.");
@ -24,26 +26,30 @@ public class ItemActivationCrystal extends ItemBindable {
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + names[stack.getItemDamage()];
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list) {
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list)
{
for (int i = 0; i < names.length; i++)
list.add(new ItemStack(id, 1, i));
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
tooltip.add(TextHelper.localize("tooltip.BloodMagic.activationCrystal." + names[stack.getItemDamage()]));
super.addInformation(stack, player, tooltip, advanced);
}
public int getCrystalLevel(ItemStack stack) {
public int getCrystalLevel(ItemStack stack)
{
return stack.getItemDamage() > 1 ? Integer.MAX_VALUE : stack.getItemDamage() + 1;
}
}

View file

@ -24,11 +24,13 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemAltarMaker extends Item implements IAltarManipulator {
public class ItemAltarMaker extends Item implements IAltarManipulator
{
private EnumAltarTier tierToBuild = EnumAltarTier.ONE;
public ItemAltarMaker() {
public ItemAltarMaker()
{
super();
setUnlocalizedName(Constants.Mod.MODID + ".altarMaker");
setCreativeTab(BloodMagic.tabBloodMagic);
@ -38,19 +40,22 @@ public class ItemAltarMaker extends Item implements IAltarManipulator {
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced)
{
stack = NBTHelper.checkNBT(stack);
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentTier", stack.getTagCompound().getInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER) + 1));
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (!player.capabilities.isCreativeMode || world.isRemote)
return stack;
stack = NBTHelper.checkNBT(stack);
if (player.isSneaking()) {
if (player.isSneaking())
{
if (stack.getTagCompound().getInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER) >= EnumAltarTier.MAXTIERS - 1)
stack.getTagCompound().setInteger(Constants.NBT.ALTARMAKER_CURRENT_TIER, 0);
else
@ -65,7 +70,8 @@ public class ItemAltarMaker extends Item implements IAltarManipulator {
if (mop == null || mop.typeOfHit == MovingObjectPosition.MovingObjectType.MISS || mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY)
return stack;
if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && world.getBlockState(mop.getBlockPos()).getBlock() instanceof BlockAltar) {
if (mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && world.getBlockState(mop.getBlockPos()).getBlock() instanceof BlockAltar)
{
ChatUtil.sendNoSpam(player, TextHelper.localizeEffect("chat.BloodMagic.altarMaker.building", tierToBuild));
buildAltar(world, mop.getBlockPos());
@ -76,18 +82,22 @@ public class ItemAltarMaker extends Item implements IAltarManipulator {
return stack;
}
public void setTierToBuild(EnumAltarTier tierToBuild) {
public void setTierToBuild(EnumAltarTier tierToBuild)
{
this.tierToBuild = tierToBuild;
}
public void buildAltar(World world, BlockPos pos) {
public void buildAltar(World world, BlockPos pos)
{
if (world.isRemote) return;
if (world.isRemote)
return;
if (tierToBuild == EnumAltarTier.ONE)
return;
for (AltarComponent altarComponent : tierToBuild.getAltarComponents()) {
for (AltarComponent altarComponent : tierToBuild.getAltarComponents())
{
BlockPos componentPos = pos.add(altarComponent.getOffset());
Block blockForComponent = Utils.getBlockForComponent(altarComponent.getComponent());
@ -97,7 +107,8 @@ public class ItemAltarMaker extends Item implements IAltarManipulator {
((IBloodAltar) world.getTileEntity(pos)).checkTier();
}
public String destroyAltar(EntityPlayer player) {
public String destroyAltar(EntityPlayer player)
{
World world = player.worldObj;
if (world.isRemote)
return "";
@ -106,9 +117,12 @@ public class ItemAltarMaker extends Item implements IAltarManipulator {
BlockPos pos = mop.getBlockPos();
EnumAltarTier altarTier = BloodAltar.getAltarTier(world, pos);
if (altarTier.equals(EnumAltarTier.ONE)) return "" + altarTier.toInt();
else {
for (AltarComponent altarComponent : altarTier.getAltarComponents()) {
if (altarTier.equals(EnumAltarTier.ONE))
return "" + altarTier.toInt();
else
{
for (AltarComponent altarComponent : altarTier.getAltarComponents())
{
BlockPos componentPos = pos.add(altarComponent.getOffset());
world.setBlockToAir(componentPos);

View file

@ -23,47 +23,65 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemBindable extends Item implements IBindable {
public class ItemBindable extends Item implements IBindable
{
private int lpUsed;
public ItemBindable() {
public ItemBindable()
{
super();
setCreativeTab(BloodMagic.tabBloodMagic);
setMaxStackSize(1);
}
public static boolean syphonBatteries(ItemStack stack, EntityPlayer player, int damageToBeDone) {
if (!player.worldObj.isRemote) {
public static boolean syphonBatteries(ItemStack stack, EntityPlayer player, int damageToBeDone)
{
if (!player.worldObj.isRemote)
{
return NetworkHelper.syphonAndDamage(NetworkHelper.getSoulNetwork(player, player.worldObj), damageToBeDone);
} else {
} else
{
double posX = player.posX;
double posY = player.posY;
double posZ = player.posZ;
// SpellHelper.sendIndexedParticleToAllAround(player.worldObj, posX, posY, posZ, 20, player.worldObj.provider.getDimensionId(), 4, posX, posY, posZ);
// SpellHelper.sendIndexedParticleToAllAround(player.worldObj, posX,
// posY, posZ, 20, player.worldObj.provider.getDimensionId(), 4,
// posX, posY, posZ);
player.worldObj.playSoundEffect((double) ((float) player.posX + 0.5F), (double) ((float) player.posY + 0.5F), (double) ((float) player.posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (player.worldObj.rand.nextFloat() - player.worldObj.rand.nextFloat()) * 0.8F);
}
return true;
}
public static void hurtPlayer(EntityPlayer user, int energySyphoned) {
if (energySyphoned < 100 && energySyphoned > 0) {
if (!user.capabilities.isCreativeMode) {
user.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate an attack
public static void hurtPlayer(EntityPlayer user, int energySyphoned)
{
if (energySyphoned < 100 && energySyphoned > 0)
{
if (!user.capabilities.isCreativeMode)
{
user.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate
// an
// attack
user.setHealth(user.getHealth() - 1);
if (user.getHealth() <= 0.0005f)
user.onDeath(BloodMagicAPI.getDamageSource());
}
} else if (energySyphoned >= 100) {
if (!user.capabilities.isCreativeMode) {
for (int i = 0; i < ((energySyphoned + 99) / 100); i++) {
user.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate an attack
} else if (energySyphoned >= 100)
{
if (!user.capabilities.isCreativeMode)
{
for (int i = 0; i < ((energySyphoned + 99) / 100); i++)
{
user.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate
// an
// attack
user.setHealth(user.getHealth() - 1);
if (user.getHealth() <= 0.0005f) {
if (user.getHealth() <= 0.0005f)
{
user.onDeath(BloodMagicAPI.getDamageSource());
break;
}
@ -74,7 +92,8 @@ public class ItemBindable extends Item implements IBindable {
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
NBTHelper.checkNBT(stack);
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
@ -82,21 +101,25 @@ public class ItemBindable extends Item implements IBindable {
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
BindableHelper.checkAndSetItemOwner(stack, player);
return stack;
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) {
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ)
{
BindableHelper.checkAndSetItemOwner(stack, player);
return false;
}
protected void damagePlayer(World world, EntityPlayer player, int damage) {
if (world != null) {
protected void damagePlayer(World world, EntityPlayer player, int damage)
{
if (world != null)
{
double posX = player.posX;
double posY = player.posY;
double posZ = player.posZ;
@ -108,26 +131,33 @@ public class ItemBindable extends Item implements IBindable {
for (int l = 0; l < 8; ++l)
world.spawnParticle(EnumParticleTypes.REDSTONE, posX + Math.random() - Math.random(), posY + Math.random() - Math.random(), posZ + Math.random() - Math.random(), f1, f2, f3);
}
for (int i = 0; i < damage; i++) {
player.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate an attack
for (int i = 0; i < damage; i++)
{
player.attackEntityFrom(BloodMagicAPI.getDamageSource(), 0F); // Emulate
// an
// attack
player.setHealth(player.getHealth() - 1);
if (player.getHealth() <= 0.0005) {
if (player.getHealth() <= 0.0005)
{
player.inventory.dropAllItems();
break;
}
}
}
public int getLPUsed() {
public int getLPUsed()
{
return this.lpUsed;
}
protected void setLPUsed(int lpUsed) {
protected void setLPUsed(int lpUsed)
{
this.lpUsed = lpUsed;
}
public String getBindableOwner(ItemStack stack) {
public String getBindableOwner(ItemStack stack)
{
stack = NBTHelper.checkNBT(stack);
return stack.getTagCompound().getString(Constants.NBT.OWNER_UUID);
@ -136,7 +166,8 @@ public class ItemBindable extends Item implements IBindable {
// IBindable
@Override
public boolean onBind(EntityPlayer player, ItemStack stack) {
public boolean onBind(EntityPlayer player, ItemStack stack)
{
return true;
}
}

View file

@ -19,27 +19,32 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemBloodOrb extends ItemBindable implements IBloodOrb, IBindable {
public class ItemBloodOrb extends ItemBindable implements IBloodOrb, IBindable
{
public ItemBloodOrb() {
public ItemBloodOrb()
{
setUnlocalizedName(Constants.Mod.MODID + ".orb.");
setHasSubtypes(true);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + OrbRegistry.getOrb(stack.getItemDamage()).getName();
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list) {
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list)
{
for (int i = 0; i < OrbRegistry.getSize(); i++)
list.add(new ItemStack(id, 1, i));
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
super.onItemRightClick(stack, world, player);
if (world == null)
@ -49,7 +54,8 @@ public class ItemBloodOrb extends ItemBindable implements IBloodOrb, IBindable {
double posY = player.posY;
double posZ = player.posZ;
world.playSoundEffect((double) ((float) posX + 0.5F), (double) ((float) posY + 0.5F), (double) ((float) posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F);
// SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ, 20, world.provider.getDimensionId(), 4, posX, posY, posZ);
// SpellHelper.sendIndexedParticleToAllAround(world, posX, posY, posZ,
// 20, world.provider.getDimensionId(), 4, posX, posY, posZ);
if (PlayerHelper.isFakePlayer(player))
return stack;
@ -70,7 +76,8 @@ public class ItemBloodOrb extends ItemBindable implements IBloodOrb, IBindable {
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
tooltip.add(StatCollector.translateToLocal("tooltip.BloodMagic.orb.desc"));
if (advanced)
@ -80,36 +87,42 @@ public class ItemBloodOrb extends ItemBindable implements IBloodOrb, IBindable {
}
@Override
public ItemStack getContainerItem(ItemStack stack) {
public ItemStack getContainerItem(ItemStack stack)
{
return stack;
}
@Override
public boolean hasContainerItem(ItemStack stack) {
public boolean hasContainerItem(ItemStack stack)
{
return true;
}
// IBindable
@Override
public boolean onBind(EntityPlayer player, ItemStack stack) {
public boolean onBind(EntityPlayer player, ItemStack stack)
{
return true;
}
// IBloodOrb
@Override
public BloodOrb getOrb(int meta) {
public BloodOrb getOrb(int meta)
{
return OrbRegistry.getOrb(meta);
}
@Override
public int getMaxEssence(int meta) {
public int getMaxEssence(int meta)
{
return OrbRegistry.getOrb(meta).getCapacity();
}
@Override
public int getOrbLevel(int meta) {
public int getOrbLevel(int meta)
{
return OrbRegistry.getOrb(meta).getTier();
}
}

View file

@ -10,11 +10,13 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemBloodShard extends Item {
public class ItemBloodShard extends Item
{
public String[] names = { "weak", "demon" };
public ItemBloodShard() {
public ItemBloodShard()
{
super();
setCreativeTab(BloodMagic.tabBloodMagic);
@ -24,13 +26,15 @@ public class ItemBloodShard extends Item {
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list) {
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list)
{
for (int i = 0; i < names.length; i++)
list.add(new ItemStack(id, 1, i));
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + names[stack.getItemDamage()];
}
}

View file

@ -19,21 +19,25 @@ import net.minecraft.world.World;
import java.util.List;
import java.util.Set;
public class ItemBoundAxe extends ItemBoundTool {
public class ItemBoundAxe extends ItemBoundTool
{
private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(Blocks.planks, Blocks.bookshelf, Blocks.log, Blocks.log2, Blocks.chest, Blocks.pumpkin, Blocks.lit_pumpkin, Blocks.melon_block, Blocks.ladder);
public ItemBoundAxe() {
public ItemBoundAxe()
{
super("axe", 5, EFFECTIVE_ON);
}
@Override
public float getStrVsBlock(ItemStack stack, Block block) {
public float getStrVsBlock(ItemStack stack, Block block)
{
return block.getMaterial() != Material.wood && block.getMaterial() != Material.plants && block.getMaterial() != Material.vine ? super.getStrVsBlock(stack, block) : 12F;
}
@Override
protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge) {
protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge)
{
boolean silkTouch = EnchantmentHelper.getSilkTouchModifier(player);
int fortuneLvl = EnchantmentHelper.getFortuneModifier(player);
int range = (int) (charge * 0.25);
@ -42,20 +46,26 @@ public class ItemBoundAxe extends ItemBoundTool {
BlockPos playerPos = player.getPosition().add(0, -1, 0);
for (int i = -range; i <= range; i++) {
for (int j = -range; j <= range; j++) {
for (int k = -range; k <= range; k++) {
for (int i = -range; i <= range; i++)
{
for (int j = -range; j <= range; j++)
{
for (int k = -range; k <= range; k++)
{
BlockPos blockPos = playerPos.add(i, j, k);
Block block = world.getBlockState(blockPos).getBlock();
int blockMeta = block.getMetaFromState(world.getBlockState(blockPos));
if (block != null && block.getBlockHardness(world, blockPos) != -1) {
if (block != null && block.getBlockHardness(world, blockPos) != -1)
{
float strengthVsBlock = getStrVsBlock(stack, block);
if (strengthVsBlock > 1.1F || block instanceof BlockLeavesBase && world.canMineBlockBody(player, blockPos)) {
if (strengthVsBlock > 1.1F || block instanceof BlockLeavesBase && world.canMineBlockBody(player, blockPos))
{
if (silkTouch && block.canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player))
drops.add(new ItemStackWrapper(block, 1, blockMeta));
else {
else
{
List<ItemStack> itemDrops = block.getDrops(world, blockPos, world.getBlockState(blockPos), fortuneLvl);
if (itemDrops != null)
@ -75,7 +85,8 @@ public class ItemBoundAxe extends ItemBoundTool {
}
@Override
public Multimap<String, AttributeModifier> getAttributeModifiers(ItemStack stack) {
public Multimap<String, AttributeModifier> getAttributeModifiers(ItemStack stack)
{
Multimap<String, AttributeModifier> multimap = super.getAttributeModifiers(stack);
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", 7, 0));
return multimap;

View file

@ -20,26 +20,31 @@ import net.minecraft.world.World;
import java.util.List;
import java.util.Set;
public class ItemBoundPickaxe extends ItemBoundTool {
public class ItemBoundPickaxe extends ItemBoundTool
{
private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(Blocks.activator_rail, Blocks.coal_ore, Blocks.cobblestone, Blocks.detector_rail, Blocks.diamond_block, Blocks.diamond_ore, Blocks.double_stone_slab, Blocks.golden_rail, Blocks.gold_block, Blocks.gold_ore, Blocks.ice, Blocks.iron_block, Blocks.iron_ore, Blocks.lapis_block, Blocks.lapis_ore, Blocks.lit_redstone_ore, Blocks.mossy_cobblestone, Blocks.netherrack, Blocks.packed_ice, Blocks.rail, Blocks.redstone_ore, Blocks.sandstone, Blocks.red_sandstone, Blocks.stone, Blocks.stone_slab);
public ItemBoundPickaxe() {
public ItemBoundPickaxe()
{
super("pickaxe", 5, EFFECTIVE_ON);
}
@Override
public boolean canHarvestBlock(Block blockIn) {
public boolean canHarvestBlock(Block blockIn)
{
return true;
}
@Override
public float getStrVsBlock(ItemStack stack, Block block) {
public float getStrVsBlock(ItemStack stack, Block block)
{
return block.getMaterial() != Material.iron && block.getMaterial() != Material.anvil && block.getMaterial() != Material.rock ? super.getStrVsBlock(stack, block) : 12F;
}
@Override
protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge) {
protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge)
{
boolean silkTouch = EnchantmentHelper.getSilkTouchModifier(player);
int fortuneLvl = EnchantmentHelper.getFortuneModifier(player);
int range = (int) (charge * 0.25);
@ -48,20 +53,26 @@ public class ItemBoundPickaxe extends ItemBoundTool {
BlockPos playerPos = player.getPosition().add(0, -1, 0);
for (int i = -range; i <= range; i++) {
for (int j = -range; j <= range; j++) {
for (int k = -range; k <= range; k++) {
for (int i = -range; i <= range; i++)
{
for (int j = -range; j <= range; j++)
{
for (int k = -range; k <= range; k++)
{
BlockPos blockPos = playerPos.add(i, j, k);
Block block = world.getBlockState(blockPos).getBlock();
int blockMeta = block.getMetaFromState(world.getBlockState(blockPos));
if (block != null && block.getBlockHardness(world, blockPos) != -1) {
if (block != null && block.getBlockHardness(world, blockPos) != -1)
{
float strengthVsBlock = getStrVsBlock(stack, block);
if (strengthVsBlock > 1.1F && world.canMineBlockBody(player, blockPos)) {
if (strengthVsBlock > 1.1F && world.canMineBlockBody(player, blockPos))
{
if (silkTouch && block.canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player))
drops.add(new ItemStackWrapper(block, 1, blockMeta));
else {
else
{
List<ItemStack> itemDrops = block.getDrops(world, blockPos, world.getBlockState(blockPos), fortuneLvl);
if (itemDrops != null)
@ -81,7 +92,8 @@ public class ItemBoundPickaxe extends ItemBoundTool {
}
@Override
public Multimap<String, AttributeModifier> getAttributeModifiers(ItemStack stack) {
public Multimap<String, AttributeModifier> getAttributeModifiers(ItemStack stack)
{
Multimap<String, AttributeModifier> multimap = super.getAttributeModifiers(stack);
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", 5, 0));
return multimap;

View file

@ -17,21 +17,25 @@ import net.minecraft.world.World;
import java.util.List;
import java.util.Set;
public class ItemBoundShovel extends ItemBoundTool {
public class ItemBoundShovel extends ItemBoundTool
{
private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(Blocks.clay, Blocks.dirt, Blocks.farmland, Blocks.grass, Blocks.gravel, Blocks.mycelium, Blocks.sand, Blocks.snow, Blocks.snow_layer, Blocks.soul_sand);
public ItemBoundShovel() {
public ItemBoundShovel()
{
super("shovel", 5, EFFECTIVE_ON);
}
@Override
public boolean canHarvestBlock(Block blockIn) {
public boolean canHarvestBlock(Block blockIn)
{
return blockIn == Blocks.snow_layer || blockIn == Blocks.snow;
}
@Override
protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge) {
protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge)
{
boolean silkTouch = EnchantmentHelper.getSilkTouchModifier(player);
int fortuneLvl = EnchantmentHelper.getFortuneModifier(player);
int range = (int) (charge * 0.25);
@ -40,20 +44,26 @@ public class ItemBoundShovel extends ItemBoundTool {
BlockPos playerPos = player.getPosition().add(0, -1, 0);
for (int i = -range; i <= range; i++) {
for (int j = -range; j <= range; j++) {
for (int k = -range; k <= range; k++) {
for (int i = -range; i <= range; i++)
{
for (int j = -range; j <= range; j++)
{
for (int k = -range; k <= range; k++)
{
BlockPos blockPos = playerPos.add(i, j, k);
Block block = world.getBlockState(blockPos).getBlock();
int blockMeta = block.getMetaFromState(world.getBlockState(blockPos));
if (block != null && block.getBlockHardness(world, blockPos) != -1) {
if (block != null && block.getBlockHardness(world, blockPos) != -1)
{
float strengthVsBlock = getStrVsBlock(stack, block);
if (strengthVsBlock > 1.1F && world.canMineBlockBody(player, blockPos)) {
if (strengthVsBlock > 1.1F && world.canMineBlockBody(player, blockPos))
{
if (silkTouch && block.canSilkHarvest(world, blockPos, world.getBlockState(blockPos), player))
drops.add(new ItemStackWrapper(block, 1, blockMeta));
else {
else
{
List<ItemStack> itemDrops = block.getDrops(world, blockPos, world.getBlockState(blockPos), fortuneLvl);
if (itemDrops != null)
@ -73,7 +83,8 @@ public class ItemBoundShovel extends ItemBoundTool {
}
@Override
public Multimap<String, AttributeModifier> getAttributeModifiers(ItemStack stack) {
public Multimap<String, AttributeModifier> getAttributeModifiers(ItemStack stack)
{
Multimap<String, AttributeModifier> multimap = super.getAttributeModifiers(stack);
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", 1, 0));
return multimap;

View file

@ -25,11 +25,13 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemBoundSword extends ItemSword {
public class ItemBoundSword extends ItemSword
{
private int lpUsed;
public ItemBoundSword() {
public ItemBoundSword()
{
super(ModItems.boundToolMaterial);
setUnlocalizedName(Constants.Mod.MODID + ".bound.sword");
@ -40,9 +42,11 @@ public class ItemBoundSword extends ItemSword {
}
@Override
public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityPlayer playerIn, int timeLeft) {
public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityPlayer playerIn, int timeLeft)
{
if (!playerIn.isSneaking() && getActivated(stack)) {
if (!playerIn.isSneaking() && getActivated(stack))
{
int i = this.getMaxItemUseDuration(stack) - timeLeft;
BoundToolEvent.Release event = new BoundToolEvent.Release(playerIn, stack, i);
if (MinecraftForge.EVENT_BUS.post(event))
@ -50,27 +54,30 @@ public class ItemBoundSword extends ItemSword {
i = event.charge;
//TODO Make conical charge blast
// TODO Make conical charge blast
Explosion explosion = new Explosion(worldIn, playerIn, playerIn.posX, playerIn.posY, playerIn.posZ, (float) (i * 0.5), true, true);
if (net.minecraftforge.event.ForgeEventFactory.onExplosionStart(worldIn, explosion)) return;
if (net.minecraftforge.event.ForgeEventFactory.onExplosionStart(worldIn, explosion))
return;
explosion.doExplosionA();
explosion.doExplosionB(true);
}
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
BindableHelper.checkAndSetItemOwner(stack, player);
// if (!world.isRemote)
// if (!world.isRemote)
{
if (player.isSneaking())
setActivated(stack, !getActivated(stack));
if (getActivated(stack) && ItemBindable.syphonBatteries(stack, player, lpUsed))
return stack;
if (!player.isSneaking() && getActivated(stack)) {
if (!player.isSneaking() && getActivated(stack))
{
BoundToolEvent.Charge event = new BoundToolEvent.Charge(player, stack);
if (MinecraftForge.EVENT_BUS.post(event))
return event.result;
@ -83,10 +90,14 @@ public class ItemBoundSword extends ItemSword {
}
@Override
public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) {
if (getActivated(stack)) {
if (target != null || attacker != null) {
if (target instanceof EntityLiving) {
public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker)
{
if (getActivated(stack))
{
if (target != null || attacker != null)
{
if (target instanceof EntityLiving)
{
if (!target.isPotionActive(Potion.weakness))
target.addPotionEffect(new PotionEffect(Potion.weakness.id, 60, 2));
}
@ -105,13 +116,15 @@ public class ItemBoundSword extends ItemSword {
}
@Override
public EnumAction getItemUseAction(ItemStack stack) {
public EnumAction getItemUseAction(ItemStack stack)
{
return EnumAction.BLOCK;
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
NBTHelper.checkNBT(stack);
if (StatCollector.canTranslate("tooltip.BloodMagic.bound.sword.desc"))
@ -125,11 +138,13 @@ public class ItemBoundSword extends ItemSword {
tooltip.add(TextHelper.getFormattedText(String.format(StatCollector.translateToLocal("tooltip.BloodMagic.currentOwner"), stack.getTagCompound().getString(Constants.NBT.OWNER_UUID))));
}
private boolean getActivated(ItemStack stack) {
private boolean getActivated(ItemStack stack)
{
return stack.getItemDamage() > 0;
}
private ItemStack setActivated(ItemStack stack, boolean activated) {
private ItemStack setActivated(ItemStack stack, boolean activated)
{
stack.setItemDamage(activated ? 1 : 0);
return stack;

View file

@ -25,7 +25,8 @@ import java.util.List;
import java.util.Set;
@Getter
public class ItemBoundTool extends ItemBindable {
public class ItemBoundTool extends ItemBindable
{
private Set<Block> effectiveBlocks;
protected final String tooltipBase;
@ -36,7 +37,8 @@ public class ItemBoundTool extends ItemBindable {
public final int chargeTime = 30;
public ItemBoundTool(String name, int lpUsed, Set<Block> effectiveBlocks) {
public ItemBoundTool(String name, int lpUsed, Set<Block> effectiveBlocks)
{
super();
setUnlocalizedName(Constants.Mod.MODID + ".bound." + name);
setHasSubtypes(true);
@ -48,36 +50,43 @@ public class ItemBoundTool extends ItemBindable {
this.effectiveBlocks = effectiveBlocks;
}
public ItemBoundTool(String name, int lpUsed) {
public ItemBoundTool(String name, int lpUsed)
{
this(name, lpUsed, null);
}
@Override
public float getStrVsBlock(ItemStack stack, Block block) {
public float getStrVsBlock(ItemStack stack, Block block)
{
return this.effectiveBlocks.contains(block) ? 8.0F : 1.0F;
}
@Override
public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) {
if (entityIn instanceof EntityPlayer && getActivated(stack) && isSelected && isBeingHeldDown() && stack == ((EntityPlayer) entityIn).getCurrentEquippedItem()) {
public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected)
{
if (entityIn instanceof EntityPlayer && getActivated(stack) && isSelected && isBeingHeldDown() && stack == ((EntityPlayer) entityIn).getCurrentEquippedItem())
{
EntityPlayer player = (EntityPlayer) entityIn;
heldDownCount = Math.min(player.getItemInUseDuration(), chargeTime);
}
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
BindableHelper.checkAndSetItemOwner(stack, player);
// if (!world.isRemote)
// if (!world.isRemote)
{
if (player.isSneaking())
setActivated(stack, !getActivated(stack));
// if (getActivated(stack) && ItemBindable.syphonBatteries(stack, player, getLPUsed()))
// return stack;
// if (getActivated(stack) && ItemBindable.syphonBatteries(stack,
// player, getLPUsed()))
// return stack;
if (!player.isSneaking() && getActivated(stack)) {
if (!player.isSneaking() && getActivated(stack))
{
BoundToolEvent.Charge event = new BoundToolEvent.Charge(player, stack);
if (MinecraftForge.EVENT_BUS.post(event))
return event.result;
@ -91,7 +100,8 @@ public class ItemBoundTool extends ItemBindable {
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) {
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ)
{
if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonBatteries(stack, player, getLPUsed()))
return false;
@ -99,15 +109,18 @@ public class ItemBoundTool extends ItemBindable {
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) {
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ)
{
this.onItemRightClick(stack, world, player);
return false;
}
@Override
public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityPlayer playerIn, int timeLeft) {
if (!playerIn.isSneaking() && getActivated(stack)) {
public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityPlayer playerIn, int timeLeft)
{
if (!playerIn.isSneaking() && getActivated(stack))
{
int i = this.getMaxItemUseDuration(stack) - timeLeft;
BoundToolEvent.Release event = new BoundToolEvent.Release(playerIn, stack, i);
if (MinecraftForge.EVENT_BUS.post(event))
@ -120,33 +133,39 @@ public class ItemBoundTool extends ItemBindable {
}
}
protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge) {
protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge)
{
}
@Override
public ItemStack onItemUseFinish(ItemStack stack, World worldIn, EntityPlayer playerIn) {
public ItemStack onItemUseFinish(ItemStack stack, World worldIn, EntityPlayer playerIn)
{
return stack;
}
@Override
public int getMaxItemUseDuration(ItemStack stack) {
public int getMaxItemUseDuration(ItemStack stack)
{
return 72000;
}
@Override
public EnumAction getItemUseAction(ItemStack stack) {
public EnumAction getItemUseAction(ItemStack stack)
{
return EnumAction.BOW;
}
@Override
public int getItemEnchantability() {
public int getItemEnchantability()
{
return 50;
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
if (StatCollector.canTranslate(tooltipBase + "desc"))
tooltip.add(TextHelper.localizeEffect(tooltipBase + "desc"));
@ -159,22 +178,27 @@ public class ItemBoundTool extends ItemBindable {
}
@Override
public boolean showDurabilityBar(ItemStack stack) {
public boolean showDurabilityBar(ItemStack stack)
{
return getActivated(stack) && beingHeldDown;
}
@Override
public double getDurabilityForDisplay(ItemStack stack) {
public double getDurabilityForDisplay(ItemStack stack)
{
return ((double) -Math.min(getHeldDownCount(), chargeTime) / chargeTime) + 1;
}
protected static void dropStacks(Multiset<ItemStackWrapper> drops, World world, BlockPos posToDrop) {
for (Multiset.Entry<ItemStackWrapper> entry : drops.entrySet()) {
protected static void dropStacks(Multiset<ItemStackWrapper> drops, World world, BlockPos posToDrop)
{
for (Multiset.Entry<ItemStackWrapper> entry : drops.entrySet())
{
int count = entry.getCount();
ItemStackWrapper stack = entry.getElement();
int maxStackSize = stack.item.getItemStackLimit(stack.toStack(1));
while (count >= maxStackSize) {
while (count >= maxStackSize)
{
world.spawnEntityInWorld(new EntityItem(world, posToDrop.getX(), posToDrop.getY(), posToDrop.getZ(), stack.toStack(maxStackSize)));
count -= maxStackSize;
}
@ -184,11 +208,13 @@ public class ItemBoundTool extends ItemBindable {
}
}
public boolean getActivated(ItemStack stack) {
public boolean getActivated(ItemStack stack)
{
return stack.getItemDamage() > 0;
}
public ItemStack setActivated(ItemStack stack, boolean activated) {
public ItemStack setActivated(ItemStack stack, boolean activated)
{
stack.setItemDamage(activated ? 1 : 0);
return stack;

View file

@ -6,9 +6,11 @@ import WayofTime.bloodmagic.registry.ModBlocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemBucket;
public class ItemBucketEssence extends ItemBucket {
public class ItemBucketEssence extends ItemBucket
{
public ItemBucketEssence() {
public ItemBucketEssence()
{
super(ModBlocks.lifeEssence);
setUnlocalizedName(Constants.Mod.MODID + ".bucket.lifeEssence");

View file

@ -13,7 +13,8 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.Constants;
public class ItemComponent extends Item {
public class ItemComponent extends Item
{
@Getter
private static ArrayList<String> names = new ArrayList<String>();
@ -28,7 +29,8 @@ public class ItemComponent extends Item {
public static final String REAGENT_SIGHT = "reagentSight";
public static final String REAGENT_BINDING = "reagentBinding";
public ItemComponent() {
public ItemComponent()
{
super();
setUnlocalizedName(Constants.Mod.MODID + ".baseComponent.");
@ -38,7 +40,8 @@ public class ItemComponent extends Item {
buildItemList();
}
private void buildItemList() {
private void buildItemList()
{
names.add(0, REAGENT_WATER);
names.add(1, REAGENT_LAVA);
names.add(2, REAGENT_AIR);
@ -51,18 +54,21 @@ public class ItemComponent extends Item {
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + names.get(stack.getItemDamage());
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list) {
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list)
{
for (int i = 0; i < names.size(); i++)
list.add(new ItemStack(id, 1, i));
}
public static ItemStack getStack(String name) {
public static ItemStack getStack(String name)
{
return new ItemStack(ModItems.itemComponent, 1, names.indexOf(name));
}
}

View file

@ -18,9 +18,11 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public class ItemDaggerOfSacrifice extends Item {
public class ItemDaggerOfSacrifice extends Item
{
public ItemDaggerOfSacrifice() {
public ItemDaggerOfSacrifice()
{
super();
setUnlocalizedName(Constants.Mod.MODID + ".daggerOfSacrifice");
setCreativeTab(BloodMagic.tabBloodMagic);
@ -29,7 +31,8 @@ public class ItemDaggerOfSacrifice extends Item {
}
@Override
public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker) {
public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker)
{
if (target == null || attacker == null || attacker.worldObj.isRemote || (attacker instanceof EntityPlayer && !(attacker instanceof EntityPlayerMP)))
return false;
@ -39,14 +42,19 @@ public class ItemDaggerOfSacrifice extends Item {
if (target.isDead || target.getHealth() < 0.5F)
return false;
//TODO Make these configurable
// TODO Make these configurable
int lifeEssence = 500;
if (target instanceof EntityVillager) lifeEssence = 2000;
else if (target instanceof EntitySlime) lifeEssence = 150;
else if (target instanceof EntityEnderman) lifeEssence = 200;
else if (target instanceof EntityAnimal) lifeEssence = 250;
if (target instanceof EntityVillager)
lifeEssence = 2000;
else if (target instanceof EntitySlime)
lifeEssence = 150;
else if (target instanceof EntityEnderman)
lifeEssence = 200;
else if (target instanceof EntityAnimal)
lifeEssence = 250;
if (findAndFillAltar(attacker.worldObj, target, lifeEssence)) {
if (findAndFillAltar(attacker.worldObj, target, lifeEssence))
{
double posX = target.posX;
double posY = target.posY;
double posZ = target.posZ;
@ -58,10 +66,12 @@ public class ItemDaggerOfSacrifice extends Item {
return false;
}
public boolean findAndFillAltar(World world, EntityLivingBase sacrifice, int amount) {
public boolean findAndFillAltar(World world, EntityLivingBase sacrifice, int amount)
{
IBloodAltar bloodAltar = findBloodAltar(world, sacrifice.getPosition());
if (bloodAltar != null) {
if (bloodAltar != null)
{
bloodAltar.sacrificialDaggerCall(amount, true);
bloodAltar.startCycle();
return true;
@ -70,12 +80,16 @@ public class ItemDaggerOfSacrifice extends Item {
return false;
}
public IBloodAltar findBloodAltar(World world, BlockPos blockPos) {
public IBloodAltar findBloodAltar(World world, BlockPos blockPos)
{
TileEntity tileEntity;
for (int i = -2; i <= 2; i++) {
for (int j = -2; j <= 2; j++) {
for (int k = -2; k <= 1; k++) {
for (int i = -2; i <= 2; i++)
{
for (int j = -2; j <= 2; j++)
{
for (int k = -2; k <= 1; k++)
{
tileEntity = world.getTileEntity(blockPos.add(i, k, j));
if ((tileEntity instanceof IBloodAltar))

View file

@ -19,9 +19,11 @@ import java.util.Arrays;
import java.util.List;
// TODO - NBT based damage
public class ItemInscriptionTool extends ItemBindable {
public class ItemInscriptionTool extends ItemBindable
{
public ItemInscriptionTool() {
public ItemInscriptionTool()
{
super();
setLPUsed(100);
@ -30,23 +32,27 @@ public class ItemInscriptionTool extends ItemBindable {
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + EnumRuneType.values()[stack.getItemDamage()];
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list) {
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list)
{
for (int i = 1; i < EnumRuneType.values().length; i++)
list.add(new ItemStack(id, 1, i));
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) {
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ)
{
IBlockState state = world.getBlockState(pos);
if (state.getBlock() instanceof BlockRitualStone && !((BlockRitualStone)state.getBlock()).isRuneType(world, pos, getType(stack))) {
if (state.getBlock() instanceof BlockRitualStone && !((BlockRitualStone) state.getBlock()).isRuneType(world, pos, getType(stack)))
{
world.setBlockState(pos, state.withProperty(((BlockRitualStone) state.getBlock()).getStringProp(), getType(stack).getName()));
return true;
}
@ -56,12 +62,14 @@ public class ItemInscriptionTool extends ItemBindable {
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced)
{
list.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.inscriber.desc"))));
super.addInformation(stack, player, list, advanced);
}
public EnumRuneType getType(ItemStack stack) {
public EnumRuneType getType(ItemStack stack)
{
return EnumRuneType.values()[stack.getItemDamage()];
}
}

View file

@ -32,393 +32,466 @@ import WayofTime.bloodmagic.tile.TileMasterRitualStone;
import WayofTime.bloodmagic.util.ChatUtil;
import WayofTime.bloodmagic.util.helper.TextHelper;
public class ItemRitualDiviner extends Item {
public class ItemRitualDiviner extends Item
{
public static final String tooltipBase = "tooltip.BloodMagic.diviner.";
public static final String tooltipBase = "tooltip.BloodMagic.diviner.";
public ItemRitualDiviner() {
setUnlocalizedName(Constants.Mod.MODID + ".ritualDiviner");
setCreativeTab(BloodMagic.tabBloodMagic);
setHasSubtypes(true);
setMaxStackSize(1);
}
public ItemRitualDiviner()
{
setUnlocalizedName(Constants.Mod.MODID + ".ritualDiviner");
setCreativeTab(BloodMagic.tabBloodMagic);
setHasSubtypes(true);
setMaxStackSize(1);
}
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) {
if (addRuneToRitual(stack, world, pos, player)) {
//TODO: Have the diviner automagically build the ritual
}
return false;
}
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ)
{
if (addRuneToRitual(stack, world, pos, player))
{
// TODO: Have the diviner automagically build the ritual
}
/**
* Adds a single rune to the ritual.
*
* @param world
* -
* @param pos
* - Block Position of the MRS.
* @return - True if a rune was successfully added
*/
public boolean addRuneToRitual(ItemStack stack, World world, BlockPos pos, EntityPlayer player) {
TileEntity tile = world.getTileEntity(pos);
return false;
}
if (tile instanceof TileMasterRitualStone) {
Ritual ritual = RitualRegistry.getRitualForId(this.getCurrentRitual(stack));
if (ritual != null) {
EnumFacing direction = getDirection(stack);
for (RitualComponent component : ritual.getComponents()) {
if (!canPlaceRitualStone(component.getRuneType(), stack)) {
return false;
}
BlockPos offset = component.getOffset(direction);
BlockPos newPos = pos.add(offset);
IBlockState state = world.getBlockState(newPos);
Block block = state.getBlock();
if (block instanceof IRitualStone) { // TODO: Check tile
// entity as well.
if (((IRitualStone) block).isRuneType(world, newPos, component.getRuneType())) {
continue;
} else {
// Replace existing ritual stone
int meta = component.getRuneType().ordinal();
IBlockState newState = ModBlocks.ritualStone.getStateFromMeta(meta);
world.setBlockState(newPos, newState);
return true;
}
} else if (block.isAir(world, newPos)) {
if (!consumeStone(stack, world, player)) {
return false;
}
int meta = component.getRuneType().ordinal();
IBlockState newState = ModBlocks.ritualStone.getStateFromMeta(meta);
world.setBlockState(newPos, newState);
return true;
} else {
return false; // TODO: Possibly replace the block with a
// ritual stone
}
}
}
}
/**
* Adds a single rune to the ritual.
*
* @param world
* -
* @param pos
* - Block Position of the MRS.
* @return - True if a rune was successfully added
*/
public boolean addRuneToRitual(ItemStack stack, World world, BlockPos pos, EntityPlayer player)
{
TileEntity tile = world.getTileEntity(pos);
return false;
}
if (tile instanceof TileMasterRitualStone)
{
Ritual ritual = RitualRegistry.getRitualForId(this.getCurrentRitual(stack));
if (ritual != null)
{
EnumFacing direction = getDirection(stack);
for (RitualComponent component : ritual.getComponents())
{
if (!canPlaceRitualStone(component.getRuneType(), stack))
{
return false;
}
BlockPos offset = component.getOffset(direction);
BlockPos newPos = pos.add(offset);
IBlockState state = world.getBlockState(newPos);
Block block = state.getBlock();
if (block instanceof IRitualStone)
{ // TODO: Check tile
// entity as well.
if (((IRitualStone) block).isRuneType(world, newPos, component.getRuneType()))
{
continue;
} else
{
// Replace existing ritual stone
int meta = component.getRuneType().ordinal();
IBlockState newState = ModBlocks.ritualStone.getStateFromMeta(meta);
world.setBlockState(newPos, newState);
return true;
}
} else if (block.isAir(world, newPos))
{
if (!consumeStone(stack, world, player))
{
return false;
}
int meta = component.getRuneType().ordinal();
IBlockState newState = ModBlocks.ritualStone.getStateFromMeta(meta);
world.setBlockState(newPos, newState);
return true;
} else
{
return false; // TODO: Possibly replace the block with a
// ritual stone
}
}
}
}
// TODO: Make this work for any IRitualStone
public boolean consumeStone(ItemStack stack, World world, EntityPlayer player) {
ItemStack[] inventory = player.inventory.mainInventory;
for (int i = 0; i < inventory.length; i++) {
ItemStack newStack = inventory[i];
if (newStack == null) {
continue;
}
Item item = newStack.getItem();
if (item instanceof ItemBlock) {
Block block = ((ItemBlock) item).getBlock();
if (block == ModBlocks.ritualStone) {
newStack.stackSize--;
if (newStack.stackSize <= 0) {
inventory[i] = null;
}
return false;
}
return true;
}
}
}
// TODO: Make this work for any IRitualStone
public boolean consumeStone(ItemStack stack, World world, EntityPlayer player)
{
ItemStack[] inventory = player.inventory.mainInventory;
for (int i = 0; i < inventory.length; i++)
{
ItemStack newStack = inventory[i];
if (newStack == null)
{
continue;
}
Item item = newStack.getItem();
if (item instanceof ItemBlock)
{
Block block = ((ItemBlock) item).getBlock();
if (block == ModBlocks.ritualStone)
{
newStack.stackSize--;
if (newStack.stackSize <= 0)
{
inventory[i] = null;
}
return false;
}
return true;
}
}
}
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
Ritual ritual = RitualRegistry.getRitualForId(this.getCurrentRitual(stack));
if (ritual != null) {
tooltip.add(TextHelper.localize("tooltip.BloodMagic.diviner.currentRitual") + TextHelper.localize(ritual.getUnlocalizedName()));
return false;
}
boolean sneaking = Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT);
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
Ritual ritual = RitualRegistry.getRitualForId(this.getCurrentRitual(stack));
if (ritual != null)
{
tooltip.add(TextHelper.localize("tooltip.BloodMagic.diviner.currentRitual") + TextHelper.localize(ritual.getUnlocalizedName()));
if (sneaking) {
tooltip.add(TextHelper.localize(tooltipBase + "currentDirection", getDirection(stack)));
tooltip.add("");
ArrayList<RitualComponent> componentList = ritual.getComponents();
boolean sneaking = Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT);
int blankRunes = 0;
int airRunes = 0;
int waterRunes = 0;
int fireRunes = 0;
int earthRunes = 0;
int duskRunes = 0;
int dawnRunes = 0;
int totalRunes = 0;
if (sneaking)
{
tooltip.add(TextHelper.localize(tooltipBase + "currentDirection", getDirection(stack)));
tooltip.add("");
ArrayList<RitualComponent> componentList = ritual.getComponents();
for (RitualComponent component : componentList) {
totalRunes++;
switch (component.getRuneType()) {
case BLANK:
blankRunes++;
break;
case AIR:
airRunes++;
break;
case EARTH:
earthRunes++;
break;
case FIRE:
fireRunes++;
break;
case WATER:
waterRunes++;
break;
case DUSK:
duskRunes++;
break;
case DAWN:
dawnRunes++;
break;
}
}
int blankRunes = 0;
int airRunes = 0;
int waterRunes = 0;
int fireRunes = 0;
int earthRunes = 0;
int duskRunes = 0;
int dawnRunes = 0;
int totalRunes = 0;
if (blankRunes > 0) {
tooltip.add(TextHelper.localize(tooltipBase + "blankRune", blankRunes));
}
if (waterRunes > 0) {
tooltip.add(TextHelper.localize(tooltipBase + "waterRune", waterRunes));
}
if (airRunes > 0) {
tooltip.add(TextHelper.localize(tooltipBase + "airRune", airRunes));
}
if (fireRunes > 0) {
tooltip.add(TextHelper.localize(tooltipBase + "fireRune", fireRunes));
}
if (earthRunes > 0) {
tooltip.add(TextHelper.localize(tooltipBase + "earthRune", earthRunes));
}
if (duskRunes > 0) {
tooltip.add(TextHelper.localize(tooltipBase + "duskRune", duskRunes));
}
if (dawnRunes > 0) {
tooltip.add(TextHelper.localize(tooltipBase + "dawnRune", dawnRunes));
}
for (RitualComponent component : componentList)
{
totalRunes++;
switch (component.getRuneType())
{
case BLANK:
blankRunes++;
break;
case AIR:
airRunes++;
break;
case EARTH:
earthRunes++;
break;
case FIRE:
fireRunes++;
break;
case WATER:
waterRunes++;
break;
case DUSK:
duskRunes++;
break;
case DAWN:
dawnRunes++;
break;
}
}
tooltip.add("");
tooltip.add(TextHelper.localize(tooltipBase + "totalRune", totalRunes));
} else {
tooltip.add("");
tooltip.add(TextHelper.localize(tooltipBase + "extraInfo"));
}
}
}
if (blankRunes > 0)
{
tooltip.add(TextHelper.localize(tooltipBase + "blankRune", blankRunes));
}
if (waterRunes > 0)
{
tooltip.add(TextHelper.localize(tooltipBase + "waterRune", waterRunes));
}
if (airRunes > 0)
{
tooltip.add(TextHelper.localize(tooltipBase + "airRune", airRunes));
}
if (fireRunes > 0)
{
tooltip.add(TextHelper.localize(tooltipBase + "fireRune", fireRunes));
}
if (earthRunes > 0)
{
tooltip.add(TextHelper.localize(tooltipBase + "earthRune", earthRunes));
}
if (duskRunes > 0)
{
tooltip.add(TextHelper.localize(tooltipBase + "duskRune", duskRunes));
}
if (dawnRunes > 0)
{
tooltip.add(TextHelper.localize(tooltipBase + "dawnRune", dawnRunes));
}
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
tooltip.add("");
tooltip.add(TextHelper.localize(tooltipBase + "totalRune", totalRunes));
} else
{
tooltip.add("");
tooltip.add(TextHelper.localize(tooltipBase + "extraInfo"));
}
}
}
if (player.isSneaking() && !world.isRemote) {
cycleRitual(stack, player);
}
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
return stack;
}
if (player.isSneaking() && !world.isRemote)
{
cycleRitual(stack, player);
}
@Override
public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) {
if (entityLiving instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) entityLiving;
return stack;
}
if (!player.isSwingInProgress) {
if (player.isSneaking()) {
cycleRitualBackwards(stack, player);
} else {
cycleDirection(stack, player);
}
}
}
@Override
public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack)
{
if (entityLiving instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) entityLiving;
return false;
}
if (!player.isSwingInProgress)
{
if (player.isSneaking())
{
cycleRitualBackwards(stack, player);
} else
{
cycleDirection(stack, player);
}
}
}
public void cycleDirection(ItemStack stack, EntityPlayer player) {
EnumFacing direction = getDirection(stack);
EnumFacing newDirection;
switch (direction) {
case NORTH:
newDirection = EnumFacing.EAST;
break;
case EAST:
newDirection = EnumFacing.SOUTH;
break;
case SOUTH:
newDirection = EnumFacing.WEST;
break;
case WEST:
newDirection = EnumFacing.NORTH;
break;
default:
newDirection = EnumFacing.NORTH;
}
return false;
}
setDirection(stack, newDirection);
notifyDirectionChange(newDirection, player);
}
public void cycleDirection(ItemStack stack, EntityPlayer player)
{
EnumFacing direction = getDirection(stack);
EnumFacing newDirection;
switch (direction)
{
case NORTH:
newDirection = EnumFacing.EAST;
break;
case EAST:
newDirection = EnumFacing.SOUTH;
break;
case SOUTH:
newDirection = EnumFacing.WEST;
break;
case WEST:
newDirection = EnumFacing.NORTH;
break;
default:
newDirection = EnumFacing.NORTH;
}
public void notifyDirectionChange(EnumFacing direction, EntityPlayer player) {
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentDirection", direction.getName()));
}
setDirection(stack, newDirection);
notifyDirectionChange(newDirection, player);
}
public void setDirection(ItemStack stack, EnumFacing direction) {
if (!stack.hasTagCompound()) {
stack.setTagCompound(new NBTTagCompound());
}
public void notifyDirectionChange(EnumFacing direction, EntityPlayer player)
{
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentDirection", direction.getName()));
}
NBTTagCompound tag = stack.getTagCompound();
public void setDirection(ItemStack stack, EnumFacing direction)
{
if (!stack.hasTagCompound())
{
stack.setTagCompound(new NBTTagCompound());
}
tag.setInteger(Constants.NBT.DIRECTION, direction.getIndex());
}
NBTTagCompound tag = stack.getTagCompound();
public EnumFacing getDirection(ItemStack stack) {
if (!stack.hasTagCompound()) {
stack.setTagCompound(new NBTTagCompound());
return EnumFacing.NORTH;
}
tag.setInteger(Constants.NBT.DIRECTION, direction.getIndex());
}
NBTTagCompound tag = stack.getTagCompound();
public EnumFacing getDirection(ItemStack stack)
{
if (!stack.hasTagCompound())
{
stack.setTagCompound(new NBTTagCompound());
return EnumFacing.NORTH;
}
return EnumFacing.VALUES[tag.getInteger(Constants.NBT.DIRECTION)];
}
NBTTagCompound tag = stack.getTagCompound();
/**
* Cycles the selected ritual to the next available ritual that is enabled.
*
* @param stack
* - The ItemStack of the ritual diviner
* @param player
* - The player using the ritual diviner
*/
public void cycleRitual(ItemStack stack, EntityPlayer player) {
String key = getCurrentRitual(stack);
List<String> idList = RitualRegistry.getOrderedIds();
String firstId = "";
boolean foundId = false;
boolean foundFirst = false;
return EnumFacing.VALUES[tag.getInteger(Constants.NBT.DIRECTION)];
}
for (String str : idList) {
Ritual ritual = RitualRegistry.getRitualForId(str);
if (!RitualRegistry.ritualEnabled(ritual) || !canDivinerPerformRitual(stack, ritual)) {
continue;
}
/**
* Cycles the selected ritual to the next available ritual that is enabled.
*
* @param stack
* - The ItemStack of the ritual diviner
* @param player
* - The player using the ritual diviner
*/
public void cycleRitual(ItemStack stack, EntityPlayer player)
{
String key = getCurrentRitual(stack);
List<String> idList = RitualRegistry.getOrderedIds();
String firstId = "";
boolean foundId = false;
boolean foundFirst = false;
if (!foundFirst) {
firstId = str;
foundFirst = true;
}
for (String str : idList)
{
Ritual ritual = RitualRegistry.getRitualForId(str);
if (foundId) {
setCurrentRitual(stack, str);
notifyRitualChange(str, player);
return;
} else {
if (str.equals(key)) {
foundId = true;
continue;
}
}
}
if (!RitualRegistry.ritualEnabled(ritual) || !canDivinerPerformRitual(stack, ritual))
{
continue;
}
if (foundFirst) {
setCurrentRitual(stack, firstId);
notifyRitualChange(firstId, player);
}
}
if (!foundFirst)
{
firstId = str;
foundFirst = true;
}
/**
* Does the same as cycleRitual but instead cycles backwards.
*
* @param stack
* @param player
*/
public void cycleRitualBackwards(ItemStack stack, EntityPlayer player) {
String key = getCurrentRitual(stack);
List<String> idList = RitualRegistry.getOrderedIds();
String firstId = "";
boolean foundId = false;
boolean foundFirst = false;
if (foundId)
{
setCurrentRitual(stack, str);
notifyRitualChange(str, player);
return;
} else
{
if (str.equals(key))
{
foundId = true;
continue;
}
}
}
for (int i = idList.size() - 1; i >= 0; i--) {
String str = idList.get(i);
Ritual ritual = RitualRegistry.getRitualForId(str);
if (foundFirst)
{
setCurrentRitual(stack, firstId);
notifyRitualChange(firstId, player);
}
}
if (!RitualRegistry.ritualEnabled(ritual) || !canDivinerPerformRitual(stack, ritual)) {
continue;
}
/**
* Does the same as cycleRitual but instead cycles backwards.
*
* @param stack
* @param player
*/
public void cycleRitualBackwards(ItemStack stack, EntityPlayer player)
{
String key = getCurrentRitual(stack);
List<String> idList = RitualRegistry.getOrderedIds();
String firstId = "";
boolean foundId = false;
boolean foundFirst = false;
if (!foundFirst) {
firstId = str;
foundFirst = true;
}
for (int i = idList.size() - 1; i >= 0; i--)
{
String str = idList.get(i);
Ritual ritual = RitualRegistry.getRitualForId(str);
if (foundId) {
setCurrentRitual(stack, str);
notifyRitualChange(str, player);
return;
} else {
if (str.equals(key)) {
foundId = true;
continue;
}
}
}
if (!RitualRegistry.ritualEnabled(ritual) || !canDivinerPerformRitual(stack, ritual))
{
continue;
}
if (foundFirst) {
setCurrentRitual(stack, firstId);
notifyRitualChange(firstId, player);
}
}
if (!foundFirst)
{
firstId = str;
foundFirst = true;
}
public boolean canDivinerPerformRitual(ItemStack stack, Ritual ritual) {
return true;
}
if (foundId)
{
setCurrentRitual(stack, str);
notifyRitualChange(str, player);
return;
} else
{
if (str.equals(key))
{
foundId = true;
continue;
}
}
}
public void notifyRitualChange(String key, EntityPlayer player) {
Ritual ritual = RitualRegistry.getRitualForId(key);
if (ritual != null) {
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentRitual") + TextHelper.localize(ritual.getUnlocalizedName()));
}
}
if (foundFirst)
{
setCurrentRitual(stack, firstId);
notifyRitualChange(firstId, player);
}
}
public void setCurrentRitual(ItemStack stack, String key) {
if (!stack.hasTagCompound()) {
stack.setTagCompound(new NBTTagCompound());
}
public boolean canDivinerPerformRitual(ItemStack stack, Ritual ritual)
{
return true;
}
NBTTagCompound tag = stack.getTagCompound();
public void notifyRitualChange(String key, EntityPlayer player)
{
Ritual ritual = RitualRegistry.getRitualForId(key);
if (ritual != null)
{
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentRitual") + TextHelper.localize(ritual.getUnlocalizedName()));
}
}
tag.setString(Constants.NBT.CURRENT_RITUAL, key);
}
public void setCurrentRitual(ItemStack stack, String key)
{
if (!stack.hasTagCompound())
{
stack.setTagCompound(new NBTTagCompound());
}
public String getCurrentRitual(ItemStack stack) {
if (!stack.hasTagCompound()) {
stack.setTagCompound(new NBTTagCompound());
}
NBTTagCompound tag = stack.getTagCompound();
NBTTagCompound tag = stack.getTagCompound();
return tag.getString(Constants.NBT.CURRENT_RITUAL);
}
tag.setString(Constants.NBT.CURRENT_RITUAL, key);
}
public boolean canPlaceRitualStone(EnumRuneType rune, ItemStack stack) {
int meta = stack.getItemDamage();
switch (rune) {
case BLANK:
case AIR:
case EARTH:
case FIRE:
case WATER:
return true;
case DUSK:
return meta >= 1;
case DAWN:
return meta >= 2;
}
public String getCurrentRitual(ItemStack stack)
{
if (!stack.hasTagCompound())
{
stack.setTagCompound(new NBTTagCompound());
}
return false;
}
NBTTagCompound tag = stack.getTagCompound();
return tag.getString(Constants.NBT.CURRENT_RITUAL);
}
public boolean canPlaceRitualStone(EnumRuneType rune, ItemStack stack)
{
int meta = stack.getItemDamage();
switch (rune)
{
case BLANK:
case AIR:
case EARTH:
case FIRE:
case WATER:
return true;
case DUSK:
return meta >= 1;
case DAWN:
return meta >= 2;
}
return false;
}
}

View file

@ -29,10 +29,12 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.Arrays;
import java.util.List;
public class ItemSacrificialDagger extends Item {
public static String[] names = {"normal", "creative"};
public class ItemSacrificialDagger extends Item
{
public static String[] names = { "normal", "creative" };
public ItemSacrificialDagger() {
public ItemSacrificialDagger()
{
super();
setUnlocalizedName(Constants.Mod.MODID + ".sacrificialDagger.");
@ -43,54 +45,64 @@ public class ItemSacrificialDagger extends Item {
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + names[stack.getItemDamage()];
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list) {
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list)
{
for (int i = 0; i < names.length; i++)
list.add(new ItemStack(id, 1, i));
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced)
{
list.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.sacrificialDagger.desc"))));
}
@Override
public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int itemInUseCount) {
public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int itemInUseCount)
{
PlayerSacrificeHelper.sacrificePlayerHealth(player);
}
@Override
public int getMaxItemUseDuration(ItemStack stack) {
public int getMaxItemUseDuration(ItemStack stack)
{
return 72000;
}
@Override
public EnumAction getItemUseAction(ItemStack stack) {
public EnumAction getItemUseAction(ItemStack stack)
{
return EnumAction.BOW;
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (PlayerHelper.isFakePlayer(player))
return stack;
if (this.canUseForSacrifice(stack)) {
if (this.canUseForSacrifice(stack))
{
player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
return stack;
}
if (!player.capabilities.isCreativeMode) {
if (!player.capabilities.isCreativeMode)
{
SacrificeKnifeUsedEvent evt = new SacrificeKnifeUsedEvent(player, true, true, 2);
if (MinecraftForge.EVENT_BUS.post(evt))
return stack;
if (evt.shouldDrainHealth) {
if (evt.shouldDrainHealth)
{
player.hurtResistantTime = 0;
player.attackEntityFrom(BloodMagicAPI.getDamageSource(), 2.0F);
}
@ -120,7 +132,8 @@ public class ItemSacrificialDagger extends Item {
return stack;
}
private void findAndFillAltar(World world, EntityPlayer player, int amount) {
private void findAndFillAltar(World world, EntityPlayer player, int amount)
{
BlockPos pos = player.getPosition();
IBloodAltar altarEntity = getAltar(world, pos);
@ -131,16 +144,21 @@ public class ItemSacrificialDagger extends Item {
altarEntity.startCycle();
}
public IBloodAltar getAltar(World world, BlockPos pos) {
public IBloodAltar getAltar(World world, BlockPos pos)
{
TileEntity tileEntity;
for (int i = -2; i <= 2; i++) {
for (int j = -2; j <= 2; j++) {
for (int k = -2; k <= 1; k++) {
for (int i = -2; i <= 2; i++)
{
for (int j = -2; j <= 2; j++)
{
for (int k = -2; k <= 1; k++)
{
BlockPos newPos = pos.add(i, j, k);
tileEntity = world.getTileEntity(newPos);
if (tileEntity instanceof IBloodAltar) {
if (tileEntity instanceof IBloodAltar)
{
return (IBloodAltar) tileEntity;
}
}
@ -151,28 +169,33 @@ public class ItemSacrificialDagger extends Item {
}
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5) {
public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5)
{
if (!world.isRemote && entity instanceof EntityPlayer)
this.setUseForSacrifice(stack, this.isPlayerPreparedForSacrifice(world, (EntityPlayer) entity));
}
public boolean isPlayerPreparedForSacrifice(World world, EntityPlayer player) {
public boolean isPlayerPreparedForSacrifice(World world, EntityPlayer player)
{
return !world.isRemote && (PlayerSacrificeHelper.getPlayerIncense(player) > 0);
}
public boolean canUseForSacrifice(ItemStack stack) {
public boolean canUseForSacrifice(ItemStack stack)
{
stack = NBTHelper.checkNBT(stack);
return stack.getTagCompound().getBoolean(Constants.NBT.SACRIFICE);
}
public void setUseForSacrifice(ItemStack stack, boolean sacrifice) {
public void setUseForSacrifice(ItemStack stack, boolean sacrifice)
{
stack = NBTHelper.checkNBT(stack);
stack.getTagCompound().setBoolean(Constants.NBT.SACRIFICE, sacrifice);
}
@Override
@SideOnly(Side.CLIENT)
public boolean hasEffect(ItemStack stack) {
public boolean hasEffect(ItemStack stack)
{
return this.canUseForSacrifice(stack) || super.hasEffect(stack);
}
}

View file

@ -13,11 +13,13 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.Arrays;
import java.util.List;
public class ItemSlate extends Item {
public class ItemSlate extends Item
{
public String[] names = { "blank", "reinforced", "imbued", "demonic", "ethereal" };
public ItemSlate() {
public ItemSlate()
{
super();
setCreativeTab(BloodMagic.tabBloodMagic);
@ -27,19 +29,22 @@ public class ItemSlate extends Item {
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list) {
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list)
{
for (int i = 0; i < names.length; i++)
list.add(new ItemStack(id, 1, i));
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + names[stack.getItemDamage()];
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced)
{
list.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.slate.desc"))));
}
}

View file

@ -20,11 +20,13 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.Arrays;
import java.util.List;
public class ItemTelepositionFocus extends ItemBindable {
public class ItemTelepositionFocus extends ItemBindable
{
public static String[] names = {"weak", "enhanced", "reinforced", "demonic"};
public static String[] names = { "weak", "enhanced", "reinforced", "demonic" };
public ItemTelepositionFocus() {
public ItemTelepositionFocus()
{
super();
setUnlocalizedName(Constants.Mod.MODID + ".focus.");
@ -34,19 +36,22 @@ public class ItemTelepositionFocus extends ItemBindable {
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + names[stack.getItemDamage()];
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list) {
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list)
{
for (int i = 0; i < names.length; i++)
list.add(new ItemStack(id, 1, i));
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (BindableHelper.checkAndSetItemOwner(stack, player))
if (player.isSneaking())
return stack;
@ -56,7 +61,8 @@ public class ItemTelepositionFocus extends ItemBindable {
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
tooltip.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localize("tooltip.BloodMagic.telepositionfocus." + names[stack.getItemDamage()]))));
super.addInformation(stack, player, tooltip, advanced);
@ -68,17 +74,20 @@ public class ItemTelepositionFocus extends ItemBindable {
tooltip.add(String.format(StatCollector.translateToLocal("tooltip.alchemy.dimension"), tag.getInteger(Constants.NBT.DIMENSION_ID)));
}
public World getWorld(ItemStack stack) {
public World getWorld(ItemStack stack)
{
stack = NBTHelper.checkNBT(stack);
return DimensionManager.getWorld(stack.getTagCompound().getInteger(Constants.NBT.DIMENSION_ID));
}
public BlockPos getBlockPos(ItemStack stack) {
public BlockPos getBlockPos(ItemStack stack)
{
stack = NBTHelper.checkNBT(stack);
return new BlockPos(stack.getTagCompound().getInteger(Constants.NBT.X_COORD), stack.getTagCompound().getInteger(Constants.NBT.Y_COORD), stack.getTagCompound().getInteger(Constants.NBT.Z_COORD));
}
public ItemStack setBlockPos(ItemStack stack, World world, BlockPos pos) {
public ItemStack setBlockPos(ItemStack stack, World world, BlockPos pos)
{
NBTTagCompound itemTag = stack.getTagCompound();
itemTag.setInteger(Constants.NBT.X_COORD, pos.getX());
itemTag.setInteger(Constants.NBT.Y_COORD, pos.getY());

View file

@ -7,11 +7,13 @@ import net.minecraft.entity.Entity;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
public class ItemLivingArmour extends ItemArmor {
public class ItemLivingArmour extends ItemArmor
{
public static String[] names = {"helmet", "chest", "legs", "boots"};
public static String[] names = { "helmet", "chest", "legs", "boots" };
public ItemLivingArmour(int armorType) {
public ItemLivingArmour(int armorType)
{
super(ItemArmor.ArmorMaterial.IRON, 0, armorType);
setUnlocalizedName(Constants.Mod.MODID + ".livingArmour.");
setMaxDamage(250);
@ -19,22 +21,25 @@ public class ItemLivingArmour extends ItemArmor {
}
@Override
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
if (this == ModItems.livingArmourChest
|| this == ModItems.livingArmourHelmet
|| this == ModItems.livingArmourBoots) {
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
{
if (this == ModItems.livingArmourChest || this == ModItems.livingArmourHelmet || this == ModItems.livingArmourBoots)
{
return "bloodmagic:models/armor/boundArmour_layer_1.png";
}
if (this == ModItems.livingArmourLegs) {
if (this == ModItems.livingArmourLegs)
{
return "bloodmagic:models/armor/boundArmour_layer_2.png";
} else {
} else
{
return null;
}
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + names[armorType];
}
}

View file

@ -5,20 +5,24 @@ import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
public class ItemBlockBloodRune extends ItemBlock {
public class ItemBlockBloodRune extends ItemBlock
{
public ItemBlockBloodRune(Block block) {
public ItemBlockBloodRune(Block block)
{
super(block);
setHasSubtypes(true);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + BlockBloodRune.names[stack.getItemDamage()];
}
@Override
public int getMetadata(int meta) {
public int getMetadata(int meta)
{
return meta;
}
}

View file

@ -5,20 +5,24 @@ import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
public class ItemBlockBloodStoneBrick extends ItemBlock {
public class ItemBlockBloodStoneBrick extends ItemBlock
{
public ItemBlockBloodStoneBrick(Block block) {
public ItemBlockBloodStoneBrick(Block block)
{
super(block);
setHasSubtypes(true);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + BlockBloodStoneBrick.names[stack.getItemDamage()];
}
@Override
public int getMetadata(int meta) {
public int getMetadata(int meta)
{
return meta;
}
}

View file

@ -5,20 +5,24 @@ import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
public class ItemBlockCrystal extends ItemBlock {
public class ItemBlockCrystal extends ItemBlock
{
public ItemBlockCrystal(Block block) {
public ItemBlockCrystal(Block block)
{
super(block);
setHasSubtypes(true);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + BlockCrystal.names[stack.getItemDamage()];
}
@Override
public int getMetadata(int meta) {
public int getMetadata(int meta)
{
return meta;
}
}

View file

@ -5,21 +5,25 @@ import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
public class ItemBlockPedestal extends ItemBlock {
public class ItemBlockPedestal extends ItemBlock
{
public ItemBlockPedestal(Block block) {
public ItemBlockPedestal(Block block)
{
super(block);
setHasSubtypes(true);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + BlockPedestal.names[stack.getItemDamage()];
}
@Override
public int getMetadata(int meta) {
public int getMetadata(int meta)
{
return meta;
}
}

View file

@ -5,21 +5,25 @@ import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
public class ItemBlockRitualController extends ItemBlock {
public class ItemBlockRitualController extends ItemBlock
{
public ItemBlockRitualController(Block block) {
public ItemBlockRitualController(Block block)
{
super(block);
setHasSubtypes(true);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + BlockRitualController.names[stack.getItemDamage()];
}
@Override
public int getMetadata(int meta) {
public int getMetadata(int meta)
{
return meta;
}
}

View file

@ -5,20 +5,24 @@ import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
public class ItemBlockRitualStone extends ItemBlock {
public class ItemBlockRitualStone extends ItemBlock
{
public ItemBlockRitualStone(Block block) {
public ItemBlockRitualStone(Block block)
{
super(block);
setHasSubtypes(true);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + BlockRitualStone.names[stack.getItemDamage()];
}
@Override
public int getMetadata(int meta) {
public int getMetadata(int meta)
{
return meta;
}
}

View file

@ -16,12 +16,14 @@ import net.minecraft.world.World;
import java.util.List;
public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator {
public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator
{
public final int CONVERSION = 100; // How much LP per heart
public final int CAPACITY = 10000; // Max LP storage
public ItemPackSacrifice() {
public ItemPackSacrifice()
{
super(ArmorMaterial.CHAIN, 0, 1);
setUnlocalizedName(Constants.Mod.MODID + ".pack.sacrifice");
@ -29,16 +31,20 @@ public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator {
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (world.isRemote)
return stack;
MovingObjectPosition position = this.getMovingObjectPositionFromPlayer(world, player, false);
if (position == null) {
if (position == null)
{
return super.onItemRightClick(stack, world, player);
} else {
if (position.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
} else
{
if (position.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
TileEntity tile = world.getTileEntity(position.getBlockPos());
if (!(tile instanceof TileAltar))
@ -46,10 +52,12 @@ public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator {
TileAltar altar = (TileAltar) tile;
if (!altar.isActive()) {
if (!altar.isActive())
{
int amount = this.getStoredLP(stack);
if (amount > 0) {
if (amount > 0)
{
int filledAmount = altar.fillMainTank(amount);
amount -= filledAmount;
setStoredLP(stack, amount);
@ -63,18 +71,21 @@ public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator {
}
@Override
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
{
return Constants.Mod.DOMAIN + "models/armor/bloodPack_layer_1.png";
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced)
{
stack = NBTHelper.checkNBT(stack);
list.add(TextHelper.localize("tooltip.BloodMagic.pack.sacrifice.desc"));
list.add(TextHelper.localize("tooltip.BloodMagic.pack.stored", getStoredLP(stack)));
}
public void addLP(ItemStack stack, int toAdd) {
public void addLP(ItemStack stack, int toAdd)
{
stack = NBTHelper.checkNBT(stack);
if (toAdd < 0)
@ -86,12 +97,14 @@ public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator {
setStoredLP(stack, getStoredLP(stack) + toAdd);
}
public void setStoredLP(ItemStack stack, int lp) {
public void setStoredLP(ItemStack stack, int lp)
{
stack = NBTHelper.checkNBT(stack);
stack.getTagCompound().setInteger(Constants.NBT.STORED_LP, lp);
}
public int getStoredLP(ItemStack stack) {
public int getStoredLP(ItemStack stack)
{
stack = NBTHelper.checkNBT(stack);
return stack.getTagCompound().getInteger(Constants.NBT.STORED_LP);
}

View file

@ -17,14 +17,17 @@ import net.minecraft.world.World;
import java.util.List;
public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulator {
public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulator
{
public final int CONVERSION = 100; // How much LP per half heart
public final int CAPACITY = 10000; // Max LP storage
public final int INTERVAL = 20; // How often the pack syphons
public final float HEALTHREQ = 0.5f; // How much health is required for the pack to syphon (0 - 1)
public final float HEALTHREQ = 0.5f; // How much health is required for the
// pack to syphon (0 - 1)
public ItemPackSelfSacrifice() {
public ItemPackSelfSacrifice()
{
super(ArmorMaterial.CHAIN, 0, 1);
setUnlocalizedName(Constants.Mod.MODID + ".pack.selfSacrifice");
@ -32,16 +35,20 @@ public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulato
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (world.isRemote)
return stack;
MovingObjectPosition position = this.getMovingObjectPositionFromPlayer(world, player, false);
if (position == null) {
if (position == null)
{
return super.onItemRightClick(stack, world, player);
} else {
if (position.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
} else
{
if (position.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
TileEntity tile = world.getTileEntity(position.getBlockPos());
if (!(tile instanceof TileAltar))
@ -49,10 +56,12 @@ public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulato
TileAltar altar = (TileAltar) tile;
if (!altar.isActive()) {
if (!altar.isActive())
{
int amount = this.getStoredLP(stack);
if (amount > 0) {
if (amount > 0)
{
int filledAmount = altar.fillMainTank(amount);
amount -= filledAmount;
setStoredLP(stack, amount);
@ -66,31 +75,36 @@ public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulato
}
@Override
public void onArmorTick(World world, EntityPlayer player, ItemStack stack) {
public void onArmorTick(World world, EntityPlayer player, ItemStack stack)
{
if (world.isRemote || player.capabilities.isCreativeMode)
return;
boolean shouldSyphon = player.getHealth() / player.getMaxHealth() > HEALTHREQ && getStoredLP(stack) < CAPACITY;
if (shouldSyphon & world.getTotalWorldTime() % INTERVAL == 0) {
if (shouldSyphon & world.getTotalWorldTime() % INTERVAL == 0)
{
NetworkHelper.getSoulNetwork(player, world).hurtPlayer(1.0F);
addLP(stack, CONVERSION);
}
}
@Override
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
{
return Constants.Mod.DOMAIN + "models/armor/bloodPack_layer_1.png";
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> list, boolean advanced)
{
stack = NBTHelper.checkNBT(stack);
list.add(TextHelper.localize("tooltip.BloodMagic.pack.selfSacrifice.desc"));
list.add(TextHelper.localize("tooltip.BloodMagic.pack.stored", getStoredLP(stack)));
}
public void addLP(ItemStack stack, int toAdd) {
public void addLP(ItemStack stack, int toAdd)
{
stack = NBTHelper.checkNBT(stack);
if (toAdd < 0)
@ -102,12 +116,14 @@ public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulato
setStoredLP(stack, getStoredLP(stack) + toAdd);
}
public void setStoredLP(ItemStack stack, int lp) {
public void setStoredLP(ItemStack stack, int lp)
{
stack = NBTHelper.checkNBT(stack);
stack.getTagCompound().setInteger(Constants.NBT.STORED_LP, lp);
}
public int getStoredLP(ItemStack stack) {
public int getStoredLP(ItemStack stack)
{
stack = NBTHelper.checkNBT(stack);
return stack.getTagCompound().getInteger(Constants.NBT.STORED_LP);
}

View file

@ -5,23 +5,28 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
public class ItemSigilAir extends ItemSigilBase {
public class ItemSigilAir extends ItemSigilBase
{
public ItemSigilAir() {
public ItemSigilAir()
{
super("air", 50);
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if (!world.isRemote && !isUnusable(stack)) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (!world.isRemote && !isUnusable(stack))
{
Vec3 vec = player.getLookVec();
double wantedVelocity = 1.7;
// TODO - Revisit after potions
// if (player.isPotionActive(ModPotions.customPotionBoost)) {
// int amplifier = player.getActivePotionEffect(ModPotions.customPotionBoost).getAmplifier();
// wantedVelocity += (1 + amplifier) * (0.35);
// }
// if (player.isPotionActive(ModPotions.customPotionBoost)) {
// int amplifier =
// player.getActivePotionEffect(ModPotions.customPotionBoost).getAmplifier();
// wantedVelocity += (1 + amplifier) * (0.35);
// }
player.motionX = vec.xCoord * wantedVelocity;
player.motionY = vec.yCoord * wantedVelocity;

View file

@ -18,13 +18,15 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
@Getter
public class ItemSigilBase extends ItemBindable implements ISigil {
public class ItemSigilBase extends ItemBindable implements ISigil
{
protected final String tooltipBase;
private final String name;
private boolean toggleable;
public ItemSigilBase(String name, int lpUsed) {
public ItemSigilBase(String name, int lpUsed)
{
super();
setUnlocalizedName(Constants.Mod.MODID + ".sigil." + name);
@ -34,19 +36,22 @@ public class ItemSigilBase extends ItemBindable implements ISigil {
this.tooltipBase = "tooltip.BloodMagic.sigil." + name + ".";
}
public ItemSigilBase(String name) {
public ItemSigilBase(String name)
{
this(name, 0);
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
super.onItemRightClick(stack, world, player);
return stack;
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) {
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ)
{
super.onItemRightClick(stack, world, player);
return false;
@ -54,7 +59,8 @@ public class ItemSigilBase extends ItemBindable implements ISigil {
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
if (StatCollector.canTranslate(tooltipBase + "desc"))
tooltip.add(TextHelper.localizeEffect(tooltipBase + "desc"));
@ -62,28 +68,33 @@ public class ItemSigilBase extends ItemBindable implements ISigil {
super.addInformation(stack, player, tooltip, advanced);
}
public void setToggleable() {
public void setToggleable()
{
this.toggleable = true;
}
public boolean isUnusable(ItemStack stack) {
public boolean isUnusable(ItemStack stack)
{
NBTHelper.checkNBT(stack);
return stack.getTagCompound().getBoolean(Constants.NBT.UNUSABLE);
}
public ItemStack setUnusable(ItemStack stack, boolean unusable) {
public ItemStack setUnusable(ItemStack stack, boolean unusable)
{
NBTHelper.checkNBT(stack);
stack.getTagCompound().setBoolean(Constants.NBT.UNUSABLE, unusable);
return stack;
}
public boolean getActivated(ItemStack stack) {
public boolean getActivated(ItemStack stack)
{
return stack.getItemDamage() > 0;
}
public ItemStack setActivated(ItemStack stack, boolean activated) {
public ItemStack setActivated(ItemStack stack, boolean activated)
{
if (this.toggleable)
stack.setItemDamage(activated ? 1 : 0);

View file

@ -10,14 +10,17 @@ import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
public class ItemSigilBloodLight extends ItemSigilBase {
public class ItemSigilBloodLight extends ItemSigilBase
{
public ItemSigilBloodLight() {
public ItemSigilBloodLight()
{
super("bloodLight", 10);
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonBatteries(stack, player, getLPUsed() * 5) && !world.isRemote)
world.spawnEntityInWorld(new EntityBloodLight(world, player));
@ -25,13 +28,17 @@ public class ItemSigilBloodLight extends ItemSigilBase {
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) {
if (world.isRemote) return false;
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ)
{
if (world.isRemote)
return false;
if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonBatteries(stack, player, getLPUsed())) {
if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonBatteries(stack, player, getLPUsed()))
{
BlockPos newPos = blockPos.offset(side);
if (world.isAirBlock(newPos)) {
if (world.isAirBlock(newPos))
{
world.setBlockState(newPos, ModBlocks.bloodLight.getDefaultState());
}
}

View file

@ -6,20 +6,24 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class ItemSigilCompression extends ItemSigilToggleable {
public class ItemSigilCompression extends ItemSigilToggleable
{
public ItemSigilCompression() {
public ItemSigilCompression()
{
super("compression", 200);
}
//TODO REWRITE all compression stuff if someone has time
//TODO for now, there is a semi-working system in place
// TODO REWRITE all compression stuff if someone has time
// TODO for now, there is a semi-working system in place
@Override
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) {
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
ItemStack compressedStack = CompressionRegistry.compressInventory(player.inventory.mainInventory, world);
if (compressedStack != null) {
if (compressedStack != null)
{
EntityItem entityItem = new EntityItem(world, player.posX, player.posY, player.posZ, compressedStack);
world.spawnEntityInWorld(entityItem);
}

View file

@ -14,33 +14,41 @@ import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
import WayofTime.bloodmagic.util.ChatUtil;
import WayofTime.bloodmagic.util.helper.TextHelper;
public class ItemSigilDivination extends ItemSigilBase implements IAltarReader {
public class ItemSigilDivination extends ItemSigilBase implements IAltarReader
{
public ItemSigilDivination() {
public ItemSigilDivination()
{
super("divination");
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (PlayerHelper.isFakePlayer(player))
return stack;
super.onItemRightClick(stack, world, player);
if (!world.isRemote) {
if (!world.isRemote)
{
MovingObjectPosition position = getMovingObjectPositionFromPlayer(world, player, false);
int currentEssence = NetworkHelper.getSoulNetwork(BindableHelper.getOwnerUUID(stack), world).getCurrentEssence();
if (position == null) {
if (position == null)
{
ChatUtil.sendNoSpam(player, new ChatComponentText(TextHelper.localize(tooltipBase + "currentEssence", currentEssence)));
return stack;
} else {
if (position.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
} else
{
if (position.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
TileEntity tile = world.getTileEntity(position.getBlockPos());
if (tile != null && tile instanceof IBloodAltar) {
if (tile != null && tile instanceof IBloodAltar)
{
IBloodAltar altar = (IBloodAltar) tile;
int tier = altar.getTier().ordinal() + 1;
currentEssence = altar.getCurrentBlood();
@ -48,7 +56,8 @@ public class ItemSigilDivination extends ItemSigilBase implements IAltarReader {
altar.checkTier();
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentAltarTier", tier), TextHelper.localize(tooltipBase + "currentEssence", currentEssence), TextHelper.localize(tooltipBase + "currentAltarCapacity", capacity));
} else {
} else
{
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentEssence", currentEssence));
}

View file

@ -6,14 +6,17 @@ import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
public class ItemSigilElementalAffinity extends ItemSigilToggleable {
public class ItemSigilElementalAffinity extends ItemSigilToggleable
{
public ItemSigilElementalAffinity() {
public ItemSigilElementalAffinity()
{
super("elementalAffinity", 200);
}
@Override
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) {
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
player.fallDistance = 0;
player.extinguish();
player.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 2, 1, true, false));

View file

@ -11,16 +11,20 @@ import net.minecraft.world.World;
import java.util.List;
public class ItemSigilEnderSeverance extends ItemSigilToggleable {
public class ItemSigilEnderSeverance extends ItemSigilToggleable
{
public ItemSigilEnderSeverance() {
public ItemSigilEnderSeverance()
{
super("enderSeverance", 200);
}
@Override
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) {
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
List<Entity> entityList = world.getEntitiesWithinAABB(Entity.class, new AxisAlignedBB(player.posX - 4.5, player.posY - 4.5, player.posZ - 4.5, player.posX + 4.5, player.posY + 4.5, player.posZ + 4.5));
for (Entity entity : entityList) {
for (Entity entity : entityList)
{
if (entity instanceof EntityEnderman)
((EntityEnderman) entity).addPotionEffect(new PotionEffect(ModPotions.planarBinding.id, 40, 0));
}

View file

@ -6,14 +6,17 @@ import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
public class ItemSigilFastMiner extends ItemSigilToggleable {
public class ItemSigilFastMiner extends ItemSigilToggleable
{
public ItemSigilFastMiner() {
public ItemSigilFastMiner()
{
super("fastMiner", 100);
}
@Override
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) {
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
player.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 2, 0, true, false));
}
}

View file

@ -10,15 +10,19 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.common.IPlantable;
public class ItemSigilGreenGrove extends ItemSigilToggleable {
public class ItemSigilGreenGrove extends ItemSigilToggleable
{
public ItemSigilGreenGrove() {
public ItemSigilGreenGrove()
{
super("greenGrove", 150);
}
@Override
public boolean onSigilUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) {
if (applyBonemeal(stack, world, blockPos)) {
public boolean onSigilUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ)
{
if (applyBonemeal(stack, world, blockPos))
{
world.playAuxSFX(2005, blockPos, 0);
return true;
}
@ -27,21 +31,27 @@ public class ItemSigilGreenGrove extends ItemSigilToggleable {
}
@Override
public void onSigilUpdate(ItemStack stack, World worldIn, EntityPlayer player, int itemSlot, boolean isSelected) {
public void onSigilUpdate(ItemStack stack, World worldIn, EntityPlayer player, int itemSlot, boolean isSelected)
{
int range = 3;
int verticalRange = 2;
int posX = (int) Math.round(player.posX - 0.5f);
int posY = (int) player.posY;
int posZ = (int) Math.round(player.posZ - 0.5f);
for (int ix = posX - range; ix <= posX + range; ix++) {
for (int iz = posZ - range; iz <= posZ + range; iz++) {
for (int iy = posY - verticalRange; iy <= posY + verticalRange; iy++) {
for (int ix = posX - range; ix <= posX + range; ix++)
{
for (int iz = posZ - range; iz <= posZ + range; iz++)
{
for (int iy = posY - verticalRange; iy <= posY + verticalRange; iy++)
{
BlockPos blockPos = new BlockPos(ix, iy, iz);
Block block = worldIn.getBlockState(blockPos).getBlock();
if (block instanceof IPlantable || block instanceof IGrowable) {
if (worldIn.rand.nextInt(50) == 0) {
if (block instanceof IPlantable || block instanceof IGrowable)
{
if (worldIn.rand.nextInt(50) == 0)
{
IBlockState preBlockState = worldIn.getBlockState(blockPos);
block.updateTick(worldIn, blockPos, worldIn.getBlockState(blockPos), worldIn.rand);
@ -54,21 +64,27 @@ public class ItemSigilGreenGrove extends ItemSigilToggleable {
}
}
private boolean applyBonemeal(ItemStack stack, World worldIn, BlockPos target) {
private boolean applyBonemeal(ItemStack stack, World worldIn, BlockPos target)
{
return worldIn instanceof net.minecraft.world.WorldServer && applyBonemeal(stack, worldIn, target, net.minecraftforge.common.util.FakePlayerFactory.getMinecraft((net.minecraft.world.WorldServer) worldIn));
}
private boolean applyBonemeal(ItemStack stack, World worldIn, BlockPos target, EntityPlayer player) {
private boolean applyBonemeal(ItemStack stack, World worldIn, BlockPos target, EntityPlayer player)
{
IBlockState iblockstate = worldIn.getBlockState(target);
int hook = net.minecraftforge.event.ForgeEventFactory.onApplyBonemeal(player, worldIn, target, iblockstate, stack);
if (hook != 0) return hook > 0;
if (hook != 0)
return hook > 0;
if (iblockstate.getBlock() instanceof IGrowable) {
if (iblockstate.getBlock() instanceof IGrowable)
{
IGrowable igrowable = (IGrowable) iblockstate.getBlock();
if (igrowable.canGrow(worldIn, target, iblockstate, worldIn.isRemote)) {
if (!worldIn.isRemote) {
if (igrowable.canGrow(worldIn, target, iblockstate, worldIn.isRemote))
{
if (!worldIn.isRemote)
{
if (igrowable.canUseBonemeal(worldIn, worldIn.rand, target, iblockstate))
igrowable.grow(worldIn, worldIn.rand, target, iblockstate);
}

View file

@ -6,14 +6,17 @@ import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
public class ItemSigilHaste extends ItemSigilToggleable {
public class ItemSigilHaste extends ItemSigilToggleable
{
public ItemSigilHaste() {
public ItemSigilHaste()
{
super("haste", 250);
}
@Override
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) {
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
player.addPotionEffect(new PotionEffect(ModPotions.boost.id, 2, 0, true, false));
}
}

View file

@ -14,40 +14,50 @@ import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
public class ItemSigilLava extends ItemSigilBase {
public class ItemSigilLava extends ItemSigilBase
{
public ItemSigilLava() {
public ItemSigilLava()
{
super("lava", 1000);
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if (!world.isRemote && !isUnusable(stack)) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (!world.isRemote && !isUnusable(stack))
{
MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, false);
if (movingobjectposition != null) {
if (movingobjectposition != null)
{
ItemStack ret = net.minecraftforge.event.ForgeEventFactory.onBucketUse(player, world, stack, movingobjectposition);
if (ret != null) return ret;
if (ret != null)
return ret;
if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
BlockPos blockpos = movingobjectposition.getBlockPos();
if (!world.isBlockModifiable(player, blockpos)) {
if (!world.isBlockModifiable(player, blockpos))
{
return stack;
}
if (!player.canPlayerEdit(blockpos.offset(movingobjectposition.sideHit), movingobjectposition.sideHit, stack)) {
if (!player.canPlayerEdit(blockpos.offset(movingobjectposition.sideHit), movingobjectposition.sideHit, stack))
{
return stack;
}
BlockPos blockpos1 = blockpos.offset(movingobjectposition.sideHit);
if (!player.canPlayerEdit(blockpos1, movingobjectposition.sideHit, stack)) {
if (!player.canPlayerEdit(blockpos1, movingobjectposition.sideHit, stack))
{
return stack;
}
if (this.canPlaceLava(world, blockpos1) && syphonBatteries(stack, player, getLPUsed()) && this.tryPlaceLava(world, blockpos1)) {
if (this.canPlaceLava(world, blockpos1) && syphonBatteries(stack, player, getLPUsed()) && this.tryPlaceLava(world, blockpos1))
{
return stack;
}
}
@ -61,54 +71,66 @@ public class ItemSigilLava extends ItemSigilBase {
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) {
if (world.isRemote || !BindableHelper.checkAndSetItemOwner(stack, player) || player.isSneaking() || isUnusable(stack)) {
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ)
{
if (world.isRemote || !BindableHelper.checkAndSetItemOwner(stack, player) || player.isSneaking() || isUnusable(stack))
{
return false;
}
if (!world.canMineBlockBody(player, blockPos)) {
if (!world.canMineBlockBody(player, blockPos))
{
return false;
}
TileEntity tile = world.getTileEntity(blockPos);
if (tile instanceof IFluidHandler) {
if (tile instanceof IFluidHandler)
{
FluidStack fluid = new FluidStack(FluidRegistry.LAVA, 1000);
int amount = ((IFluidHandler) tile).fill(side, fluid, false);
if (amount > 0 && syphonBatteries(stack, player, getLPUsed())) {
if (amount > 0 && syphonBatteries(stack, player, getLPUsed()))
{
((IFluidHandler) tile).fill(side, fluid, true);
}
return false;
}
// else if (tile instanceof TESocket) {
// return false;
// }
// else if (tile instanceof TESocket) {
// return false;
// }
BlockPos newPos = blockPos.offset(side);
if (!player.canPlayerEdit(newPos, side, stack)) {
if (!player.canPlayerEdit(newPos, side, stack))
{
return false;
}
if (this.canPlaceLava(world, newPos) && syphonBatteries(stack, player, getLPUsed())) {
if (this.canPlaceLava(world, newPos) && syphonBatteries(stack, player, getLPUsed()))
{
return this.tryPlaceLava(world, newPos);
}
return false;
}
public boolean canPlaceLava(World world, BlockPos blockPos) {
if (!world.isAirBlock(blockPos) && world.getBlockState(blockPos).getBlock().getMaterial().isSolid()) {
public boolean canPlaceLava(World world, BlockPos blockPos)
{
if (!world.isAirBlock(blockPos) && world.getBlockState(blockPos).getBlock().getMaterial().isSolid())
{
return false;
} else if ((world.getBlockState(blockPos).getBlock() == Blocks.lava || world.getBlockState(blockPos).getBlock() == Blocks.flowing_lava) && world.getBlockState(blockPos).getBlock().getMetaFromState(world.getBlockState(blockPos)) == 0) {
} else if ((world.getBlockState(blockPos).getBlock() == Blocks.lava || world.getBlockState(blockPos).getBlock() == Blocks.flowing_lava) && world.getBlockState(blockPos).getBlock().getMetaFromState(world.getBlockState(blockPos)) == 0)
{
return false;
} else {
} else
{
world.setBlockState(blockPos, Blocks.lava.getBlockState().getBaseState(), 3);
return true;
}
}
public boolean tryPlaceLava(World worldIn, BlockPos pos) {
public boolean tryPlaceLava(World worldIn, BlockPos pos)
{
Material material = worldIn.getBlockState(pos).getBlock().getMaterial();
return worldIn.isAirBlock(pos) && !material.isSolid();

View file

@ -9,14 +9,17 @@ import net.minecraft.world.World;
import java.util.List;
public class ItemSigilMagnetism extends ItemSigilToggleable {
public class ItemSigilMagnetism extends ItemSigilToggleable
{
public ItemSigilMagnetism() {
public ItemSigilMagnetism()
{
super("magnetism", 50);
}
@Override
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) {
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
int range = 5;
int verticalRange = 5;
float posX = Math.round(player.posX);
@ -25,14 +28,18 @@ public class ItemSigilMagnetism extends ItemSigilToggleable {
List<EntityItem> entities = player.worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.fromBounds(posX - 0.5f, posY - 0.5f, posZ - 0.5f, posX + 0.5f, posY + 0.5f, posZ + 0.5f).expand(range, verticalRange, range));
List<EntityXPOrb> xpOrbs = player.worldObj.getEntitiesWithinAABB(EntityXPOrb.class, AxisAlignedBB.fromBounds(posX - 0.5f, posY - 0.5f, posZ - 0.5f, posX + 0.5f, posY + 0.5f, posZ + 0.5f).expand(range, verticalRange, range));
for (EntityItem entity : entities) {
if (entity != null && !world.isRemote) {
for (EntityItem entity : entities)
{
if (entity != null && !world.isRemote)
{
entity.onCollideWithPlayer(player);
}
}
for (EntityXPOrb xpOrb : xpOrbs) {
if (xpOrb != null && !world.isRemote) {
for (EntityXPOrb xpOrb : xpOrbs)
{
if (xpOrb != null && !world.isRemote)
{
xpOrb.onCollideWithPlayer(player);
}
}

View file

@ -9,14 +9,17 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public class ItemSigilPhantomBridge extends ItemSigilToggleable {
public class ItemSigilPhantomBridge extends ItemSigilToggleable
{
public ItemSigilPhantomBridge() {
public ItemSigilPhantomBridge()
{
super("phantomBridge", 100);
}
@Override
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) {
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
if (!player.onGround && !player.isSneaking())
return;
@ -33,21 +36,27 @@ public class ItemSigilPhantomBridge extends ItemSigilToggleable {
int posY = (int) player.posY;
int posZ = (int) Math.round(player.posZ - 0.5f);
for (int ix = posX - range; ix <= posX + range; ix++) {
for (int iz = posZ - range; iz <= posZ + range; iz++) {
for (int ix = posX - range; ix <= posX + range; ix++)
{
for (int iz = posZ - range; iz <= posZ + range; iz++)
{
BlockPos blockPos = new BlockPos(ix, posY + verticalOffset, iz);
Block block = world.getBlockState(blockPos).getBlock();
if (world.isAirBlock(blockPos)) {
if (world.isAirBlock(blockPos))
{
world.setBlockState(blockPos, ModBlocks.phantomBlock.getDefaultState(), 3);
TileEntity tile = world.getTileEntity(blockPos);
if (tile instanceof TilePhantomBlock) {
if (tile instanceof TilePhantomBlock)
{
((TilePhantomBlock) tile).setDuration(100);
}
} else if (block == ModBlocks.phantomBlock) {
} else if (block == ModBlocks.phantomBlock)
{
TileEntity tile = world.getTileEntity(blockPos);
if (tile instanceof TilePhantomBlock) {
if (tile instanceof TilePhantomBlock)
{
((TilePhantomBlock) tile).setDuration(100);
}
}

View file

@ -15,50 +15,61 @@ import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
import WayofTime.bloodmagic.util.ChatUtil;
import WayofTime.bloodmagic.util.helper.TextHelper;
public class ItemSigilSeer extends ItemSigilBase implements IAltarReader {
public class ItemSigilSeer extends ItemSigilBase implements IAltarReader
{
public ItemSigilSeer() {
public ItemSigilSeer()
{
super("seer");
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (PlayerHelper.isFakePlayer(player))
return stack;
super.onItemRightClick(stack, world, player);
if (!world.isRemote) {
if (!world.isRemote)
{
MovingObjectPosition position = getMovingObjectPositionFromPlayer(world, player, false);
int currentEssence = NetworkHelper.getSoulNetwork(BindableHelper.getOwnerUUID(stack), world).getCurrentEssence();
if (position == null) {
if (position == null)
{
ChatUtil.sendNoSpam(player, new ChatComponentText(TextHelper.localize(tooltipBase + "currentEssence", currentEssence)));
return stack;
} else {
if (position.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
} else
{
if (position.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
TileEntity tile = world.getTileEntity(position.getBlockPos());
if (tile != null && tile instanceof IBloodAltar) {
if (tile != null && tile instanceof IBloodAltar)
{
IBloodAltar altar = (IBloodAltar) tile;
int tier = altar.getTier().ordinal() + 1;
currentEssence = altar.getCurrentBlood();
int capacity = altar.getCapacity();
altar.checkTier();
if (tile instanceof IInventory) {
if (((IInventory) tile).getStackInSlot(0) != null) {
if (tile instanceof IInventory)
{
if (((IInventory) tile).getStackInSlot(0) != null)
{
int progress = altar.getProgress();
int totalLiquidRequired = altar.getLiquidRequired() * ((IInventory) tile).getStackInSlot(0).stackSize;
int consumptionRate = (int) (altar.getConsumptionRate() * (altar.getConsumptionMultiplier() + 1));
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentAltarProgress", progress, totalLiquidRequired), TextHelper.localize(tooltipBase + "currentAltarConsumptionRate", consumptionRate), TextHelper.localize(tooltipBase + "currentAltarTier", tier), TextHelper.localize(tooltipBase + "currentEssence", currentEssence), TextHelper.localize(tooltipBase + "currentAltarCapacity", capacity));
}
else {
} else
{
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentAltarTier", tier), TextHelper.localize(tooltipBase + "currentEssence", currentEssence), TextHelper.localize(tooltipBase + "currentAltarCapacity", capacity));
}
}
} else {
} else
{
ChatUtil.sendNoSpam(player, TextHelper.localize(tooltipBase + "currentEssence", currentEssence));
}

View file

@ -9,24 +9,31 @@ import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fluids.IFluidBlock;
public class ItemSigilSuppression extends ItemSigilToggleable {
public class ItemSigilSuppression extends ItemSigilToggleable
{
public ItemSigilSuppression() {
public ItemSigilSuppression()
{
super("suppression", 400);
}
@Override
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) {
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
int x = (int) player.posX;
int y = (int) player.posY;
int z = (int) player.posZ;
final int radius = 5;
final int refresh = 100;
for (int i = -radius; i <= radius; i++) {
for (int j = -radius; j <= radius; j++) {
for (int k = -radius; k <= radius; k++) {
if (i * i + j * j + k * k >= (radius + 0.50f) * (radius + 0.50f)) {
for (int i = -radius; i <= radius; i++)
{
for (int j = -radius; j <= radius; j++)
{
for (int k = -radius; k <= radius; k++)
{
if (i * i + j * j + k * k >= (radius + 0.50f) * (radius + 0.50f))
{
continue;
}
@ -35,7 +42,8 @@ public class ItemSigilSuppression extends ItemSigilToggleable {
if (isBlockLiquid(block) && world.getTileEntity(blockPos) == null)
TileSpectralBlock.createSpectralBlock(world, blockPos, refresh);
else {
else
{
TileEntity tile = world.getTileEntity(blockPos);
if (tile instanceof TileSpectralBlock)
((TileSpectralBlock) tile).resetDuration(refresh);
@ -45,7 +53,8 @@ public class ItemSigilSuppression extends ItemSigilToggleable {
}
}
private boolean isBlockLiquid(Block block) {
private boolean isBlockLiquid(Block block)
{
return (block instanceof IFluidBlock || block.getMaterial().isLiquid());
}
}

View file

@ -15,16 +15,19 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemSigilToggleable extends ItemSigilBase {
public class ItemSigilToggleable extends ItemSigilBase
{
public ItemSigilToggleable(String name, int lpUsed) {
public ItemSigilToggleable(String name, int lpUsed)
{
super(name, lpUsed);
setToggleable();
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
{
super.addInformation(stack, player, tooltip, advanced);
if (getActivated(stack))
tooltip.add(TextHelper.localize("tooltip.BloodMagic.activated"));
@ -33,8 +36,10 @@ public class ItemSigilToggleable extends ItemSigilBase {
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if (!world.isRemote && !isUnusable(stack)) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (!world.isRemote && !isUnusable(stack))
{
if (player.isSneaking())
setActivated(stack, !getActivated(stack));
if (getActivated(stack) && ItemBindable.syphonBatteries(stack, player, getLPUsed()))
@ -45,22 +50,28 @@ public class ItemSigilToggleable extends ItemSigilBase {
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) {
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ)
{
if (BindableHelper.checkAndSetItemOwner(stack, player) && ItemBindable.syphonBatteries(stack, player, getLPUsed()))
return onSigilUseFirst(stack, player, world, blockPos, side, hitX, hitY, hitZ);
return false;
}
public boolean onSigilUseFirst(ItemStack itemStack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) {
public boolean onSigilUseFirst(ItemStack itemStack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ)
{
return false;
}
@Override
public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) {
if (!worldIn.isRemote && entityIn instanceof EntityPlayerMP && getActivated(stack)) {
if (worldIn.getWorldTime() % 100 == 0) {
if (!ItemBindable.syphonBatteries(stack, (EntityPlayer) entityIn, getLPUsed())) {
public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected)
{
if (!worldIn.isRemote && entityIn instanceof EntityPlayerMP && getActivated(stack))
{
if (worldIn.getWorldTime() % 100 == 0)
{
if (!ItemBindable.syphonBatteries(stack, (EntityPlayer) entityIn, getLPUsed()))
{
setActivated(stack, false);
}
}
@ -69,5 +80,7 @@ public class ItemSigilToggleable extends ItemSigilBase {
}
}
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) {}
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
}
}

View file

@ -12,42 +12,54 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidBlock;
import net.minecraftforge.fluids.IFluidHandler;
public class ItemSigilVoid extends ItemSigilBase {
public class ItemSigilVoid extends ItemSigilBase
{
public ItemSigilVoid() {
public ItemSigilVoid()
{
super("void", 50);
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if (!world.isRemote && !isUnusable(stack)) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (!world.isRemote && !isUnusable(stack))
{
MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, true);
if (movingobjectposition != null) {
if (movingobjectposition != null)
{
ItemStack ret = net.minecraftforge.event.ForgeEventFactory.onBucketUse(player, world, stack, movingobjectposition);
if (ret != null) return ret;
if (ret != null)
return ret;
if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
BlockPos blockpos = movingobjectposition.getBlockPos();
if (!world.isBlockModifiable(player, blockpos)) {
if (!world.isBlockModifiable(player, blockpos))
{
return stack;
}
if (!player.canPlayerEdit(blockpos.offset(movingobjectposition.sideHit), movingobjectposition.sideHit, stack)) {
if (!player.canPlayerEdit(blockpos.offset(movingobjectposition.sideHit), movingobjectposition.sideHit, stack))
{
return stack;
}
if (!player.canPlayerEdit(blockpos, movingobjectposition.sideHit, stack)) {
if (!player.canPlayerEdit(blockpos, movingobjectposition.sideHit, stack))
{
return stack;
}
if (world.getBlockState(blockpos).getBlock().getMaterial().isLiquid() && syphonBatteries(stack, player, getLPUsed())) {
if (world.getBlockState(blockpos).getBlock().getMaterial().isLiquid() && syphonBatteries(stack, player, getLPUsed()))
{
world.setBlockToAir(blockpos);
return stack;
}
}
} else {
} else
{
return stack;
}
@ -59,20 +71,25 @@ public class ItemSigilVoid extends ItemSigilBase {
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) {
if (world.isRemote || !BindableHelper.checkAndSetItemOwner(stack, player) || player.isSneaking() || isUnusable(stack)) {
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ)
{
if (world.isRemote || !BindableHelper.checkAndSetItemOwner(stack, player) || player.isSneaking() || isUnusable(stack))
{
return false;
}
if (!world.canMineBlockBody(player, blockPos)) {
if (!world.canMineBlockBody(player, blockPos))
{
return false;
}
TileEntity tile = world.getTileEntity(blockPos);
if (tile instanceof IFluidHandler) {
if (tile instanceof IFluidHandler)
{
FluidStack amount = ((IFluidHandler) tile).drain(side, 1000, false);
if (amount != null && amount.amount > 0 && syphonBatteries(stack, player, getLPUsed())) {
if (amount != null && amount.amount > 0 && syphonBatteries(stack, player, getLPUsed()))
{
((IFluidHandler) tile).drain(side, 1000, true);
return true;
}
@ -82,11 +99,13 @@ public class ItemSigilVoid extends ItemSigilBase {
BlockPos newPos = blockPos.offset(side);
if (!player.canPlayerEdit(newPos, side, stack)) {
if (!player.canPlayerEdit(newPos, side, stack))
{
return false;
}
if (world.getBlockState(newPos).getBlock() instanceof IFluidBlock && syphonBatteries(stack, player, getLPUsed())) {
if (world.getBlockState(newPos).getBlock() instanceof IFluidBlock && syphonBatteries(stack, player, getLPUsed()))
{
world.setBlockToAir(newPos);
return true;
}

View file

@ -15,39 +15,50 @@ import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
public class ItemSigilWater extends ItemSigilBase {
public class ItemSigilWater extends ItemSigilBase
{
public ItemSigilWater() {
public ItemSigilWater()
{
super("water", 100);
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if (!world.isRemote && !isUnusable(stack)) {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (!world.isRemote && !isUnusable(stack))
{
MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, false);
if (movingobjectposition != null) {
if (movingobjectposition != null)
{
ItemStack ret = net.minecraftforge.event.ForgeEventFactory.onBucketUse(player, world, stack, movingobjectposition);
if (ret != null) return ret;
if (ret != null)
return ret;
if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
{
BlockPos blockpos = movingobjectposition.getBlockPos();
if (!world.isBlockModifiable(player, blockpos)) {
if (!world.isBlockModifiable(player, blockpos))
{
return stack;
}
if (!player.canPlayerEdit(blockpos.offset(movingobjectposition.sideHit), movingobjectposition.sideHit, stack)) {
if (!player.canPlayerEdit(blockpos.offset(movingobjectposition.sideHit), movingobjectposition.sideHit, stack))
{
return stack;
}
BlockPos blockpos1 = blockpos.offset(movingobjectposition.sideHit);
if (!player.canPlayerEdit(blockpos1, movingobjectposition.sideHit, stack)) {
if (!player.canPlayerEdit(blockpos1, movingobjectposition.sideHit, stack))
{
return stack;
}
if (this.canPlaceWater(world, blockpos1) && syphonBatteries(stack, player, getLPUsed()) && this.tryPlaceWater(world, blockpos1)) {
if (this.canPlaceWater(world, blockpos1) && syphonBatteries(stack, player, getLPUsed()) && this.tryPlaceWater(world, blockpos1))
{
return stack;
}
}
@ -61,72 +72,90 @@ public class ItemSigilWater extends ItemSigilBase {
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) {
if (world.isRemote || !BindableHelper.checkAndSetItemOwner(stack, player) || player.isSneaking() || isUnusable(stack)) {
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ)
{
if (world.isRemote || !BindableHelper.checkAndSetItemOwner(stack, player) || player.isSneaking() || isUnusable(stack))
{
return false;
}
if (!world.canMineBlockBody(player, blockPos)) {
if (!world.canMineBlockBody(player, blockPos))
{
return false;
}
TileEntity tile = world.getTileEntity(blockPos);
if (tile instanceof IFluidHandler) {
if (tile instanceof IFluidHandler)
{
FluidStack fluid = new FluidStack(FluidRegistry.WATER, 1000);
int amount = ((IFluidHandler) tile).fill(side, fluid, false);
if (amount > 0 && syphonBatteries(stack, player, getLPUsed())) {
if (amount > 0 && syphonBatteries(stack, player, getLPUsed()))
{
((IFluidHandler) tile).fill(side, fluid, true);
}
return false;
}
// else if (tile instanceof TESocket) {
// return false;
// }
// else if (tile instanceof TESocket) {
// return false;
// }
BlockPos newPos = blockPos.offset(side);
if (!player.canPlayerEdit(newPos, side, stack)) {
if (!player.canPlayerEdit(newPos, side, stack))
{
return false;
}
if (this.canPlaceWater(world, newPos) && syphonBatteries(stack, player, getLPUsed())) {
if (this.canPlaceWater(world, newPos) && syphonBatteries(stack, player, getLPUsed()))
{
return this.tryPlaceWater(world, newPos);
}
return false;
}
public boolean canPlaceWater(World world, BlockPos blockPos) {
if (!world.isAirBlock(blockPos) && world.getBlockState(blockPos).getBlock().getMaterial().isSolid()) {
public boolean canPlaceWater(World world, BlockPos blockPos)
{
if (!world.isAirBlock(blockPos) && world.getBlockState(blockPos).getBlock().getMaterial().isSolid())
{
return false;
} else if ((world.getBlockState(blockPos).getBlock() == Blocks.water || world.getBlockState(blockPos).getBlock() == Blocks.flowing_water) && world.getBlockState(blockPos).getBlock().getMetaFromState(world.getBlockState(blockPos)) == 0) {
} else if ((world.getBlockState(blockPos).getBlock() == Blocks.water || world.getBlockState(blockPos).getBlock() == Blocks.flowing_water) && world.getBlockState(blockPos).getBlock().getMetaFromState(world.getBlockState(blockPos)) == 0)
{
return false;
} else {
} else
{
return true;
}
}
public boolean tryPlaceWater(World worldIn, BlockPos pos) {
public boolean tryPlaceWater(World worldIn, BlockPos pos)
{
Material material = worldIn.getBlockState(pos).getBlock().getMaterial();
boolean flag = !material.isSolid();
if (!worldIn.isAirBlock(pos) && !flag) {
if (!worldIn.isAirBlock(pos) && !flag)
{
return false;
} else {
if (worldIn.provider.doesWaterVaporize()) {
} else
{
if (worldIn.provider.doesWaterVaporize())
{
int i = pos.getX();
int j = pos.getY();
int k = pos.getZ();
worldIn.playSoundEffect((double) ((float) i + 0.5F), (double) ((float) j + 0.5F), (double) ((float) k + 0.5F), "random.fizz", 0.5F, 2.6F + (worldIn.rand.nextFloat() - worldIn.rand.nextFloat()) * 0.8F);
for (int l = 0; l < 8; ++l) {
for (int l = 0; l < 8; ++l)
{
worldIn.spawnParticle(EnumParticleTypes.SMOKE_LARGE, (double) i + Math.random(), (double) j + Math.random(), (double) k + Math.random(), 0.0D, 0.0D, 0.0D, 0);
}
} else {
if (!worldIn.isRemote && flag && !material.isLiquid()) {
} else
{
if (!worldIn.isRemote && flag && !material.isLiquid())
{
worldIn.destroyBlock(pos, true);
}

View file

@ -6,14 +6,17 @@ import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
public class ItemSigilWhirlwind extends ItemSigilToggleable {
public class ItemSigilWhirlwind extends ItemSigilToggleable
{
public ItemSigilWhirlwind() {
public ItemSigilWhirlwind()
{
super("whirlwind", 250);
}
@Override
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) {
public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected)
{
player.addPotionEffect(new PotionEffect(ModPotions.whirlwind.id, 2, 0, true, false));
}
}