Changed formatting to have bracing on a new line
This commit is contained in:
parent
e5eddd6c45
commit
e48eedb874
189 changed files with 6092 additions and 4041 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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()];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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"))));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue