Refactor everything to WayofTime.bloodmagic.*

This commit is contained in:
Nick 2015-11-02 12:39:44 -08:00
parent 46742a73d1
commit 096ba02450
771 changed files with 566 additions and 573 deletions

View file

@ -0,0 +1,67 @@
package WayofTime.bloodmagic.item;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.util.helper.TextHelper;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemActivationCrystal extends ItemBindable {
public static String[] names = { "weak", "awakened", "creative" };
public ItemActivationCrystal() {
super();
setUnlocalizedName(BloodMagic.MODID + ".activationCrystal.");
setHasSubtypes(true);
setEnergyUsed(100);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
return super.getUnlocalizedName(stack) + names[stack.getItemDamage()];
}
@Override
@SideOnly(Side.CLIENT)
@SuppressWarnings("unchecked")
public void getSubItems(Item id, CreativeTabs creativeTab, List list) {
for (int i = 0; i < names.length; i++)
list.add(new ItemStack(id, 1, i));
}
@Override
@SideOnly(Side.CLIENT)
@SuppressWarnings("unchecked")
public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) {
tooltip.add(TextHelper.localize("tooltip.BloodMagic.activationCrystal." + names[stack.getItemDamage()]));
super.addInformation(stack, player, tooltip, advanced);
// if (stack.getItemDamage() == 1) {
// if (Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
// ItemStack[] recipe = AlchemyRecipeRegistry.getRecipeForItemStack(stack);
//
// if (recipe != null) {
// tooltip.add(TextHelper.getFormattedText(StatCollector.translateToLocal("tooltip.alchemy.recipe")));
//
// for (ItemStack item : recipe)
// if (item != null)
// tooltip.add(item.getDisplayName());
// }
// } else {
// tooltip.add(TextHelper.getFormattedText(StatCollector.translateToLocal("tooltip.alchemy.pressShift")));
// }
// }
}
public int getCrystalLevel(ItemStack stack) {
return stack.getItemDamage() > 1 ? Integer.MAX_VALUE : stack.getItemDamage() + 1;
}
}

View file

@ -0,0 +1,141 @@
package WayofTime.bloodmagic.item;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.NBTHolder;
import WayofTime.bloodmagic.api.iface.IBindable;
import WayofTime.bloodmagic.api.util.helper.BindableHelper;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import WayofTime.bloodmagic.util.helper.TextHelper;
import com.google.common.base.Strings;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemBindable extends Item implements IBindable {
private int energyUsed;
public ItemBindable() {
super();
setCreativeTab(BloodMagic.tabBloodMagic);
setMaxStackSize(1);
}
@Override
@SideOnly(Side.CLIENT)
@SuppressWarnings("unchecked")
public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) {
NBTHolder.checkNBT(stack);
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(NBTHolder.NBT_OWNER)))
tooltip.add(TextHelper.getFormattedText(String.format(StatCollector.translateToLocal("tooltip.BloodMagic.currentOwner"), stack.getTagCompound().getString(NBTHolder.NBT_OWNER))));
}
@Override
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) {
BindableHelper.checkAndSetItemOwner(stack, player);
return false;
}
public static boolean syphonBatteries(ItemStack ist, EntityPlayer player, int damageToBeDone) {
if (!player.worldObj.isRemote) {
return NetworkHelper.syphonAndDamageFromNetwork(ist, player, damageToBeDone);
} 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);
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
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
user.setHealth(user.getHealth() - 1);
if (user.getHealth() <= 0.0005f) {
user.onDeath(BloodMagicAPI.getDamageSource());
break;
}
}
}
}
}
protected void damagePlayer(World world, EntityPlayer player, int damage) {
if (world != null) {
double posX = player.posX;
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);
float f = 1.0F;
float f1 = f * 0.6F + 0.4F;
float f2 = f * f * 0.7F - 0.5F;
float f3 = f * f * 0.6F - 0.7F;
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
player.setHealth(player.getHealth() - 1);
if (player.getHealth() <= 0.0005) {
player.inventory.dropAllItems();
break;
}
}
}
public int getEnergyUsed() {
return this.energyUsed;
}
protected void setEnergyUsed(int energyUsed) {
this.energyUsed = energyUsed;
}
public String getBindableOwner(ItemStack stack) {
stack = NBTHolder.checkNBT(stack);
return stack.getTagCompound().getString(NBTHolder.NBT_OWNER);
}
// IBindable
@Override
public boolean onBind(EntityPlayer player, ItemStack stack) {
return true;
}
}

View file

@ -0,0 +1,118 @@
package WayofTime.bloodmagic.item;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.NBTHolder;
import WayofTime.bloodmagic.api.iface.IBindable;
import WayofTime.bloodmagic.api.orb.BloodOrb;
import WayofTime.bloodmagic.api.orb.IBloodOrb;
import WayofTime.bloodmagic.api.registry.OrbRegistry;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
import com.google.common.base.Strings;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
public class ItemBloodOrb extends ItemBindable implements IBloodOrb, IBindable {
public ItemBloodOrb() {
setUnlocalizedName(BloodMagic.MODID + ".orb.");
setHasSubtypes(true);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
return super.getUnlocalizedName(stack) + OrbRegistry.getOrb(stack.getItemDamage()).getName();
}
@Override
@SideOnly(Side.CLIENT)
@SuppressWarnings("unchecked")
public void getSubItems(Item id, CreativeTabs creativeTab, List 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) {
super.onItemRightClick(stack, world, player);
if (world == null)
return stack;
double posX = player.posX;
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);
if(PlayerHelper.isFakePlayer(player))
return stack;
if (Strings.isNullOrEmpty(stack.getTagCompound().getString(NBTHolder.NBT_OWNER)))
return stack;
if (world.isRemote)
return stack;
if(stack.getTagCompound().getString(NBTHolder.NBT_OWNER).equals(PlayerHelper.getUsernameFromPlayer(player)))
NetworkHelper.setMaxOrbToMax(stack.getTagCompound().getString(NBTHolder.NBT_OWNER), getOrbLevel(stack.getItemDamage()));
NetworkHelper.addCurrentEssenceToMaximum(stack.getTagCompound().getString(NBTHolder.NBT_OWNER), 200, getMaxEssence(stack.getItemDamage()));
hurtPlayer(player, 200);
return stack;
}
@Override
@SideOnly(Side.CLIENT)
@SuppressWarnings("unchecked")
public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) {
tooltip.add(StatCollector.translateToLocal("tooltip.BloodMagic.orb.desc"));
if (advanced)
tooltip.add(String.format(StatCollector.translateToLocal("tooltip.BloodMagic.orb.owner"), getOrb(stack.getItemDamage()).getOwner()));
super.addInformation(stack, player, tooltip, advanced);
}
@Override
public ItemStack getContainerItem(ItemStack stack) {
return stack;
}
@Override
public boolean hasContainerItem(ItemStack stack) {
return true;
}
// IBindable
@Override
public boolean onBind(EntityPlayer player, ItemStack stack) {
return true;
}
// IBloodOrb
@Override
public BloodOrb getOrb(int meta) {
return OrbRegistry.getOrb(meta);
}
@Override
public int getMaxEssence(int meta) {
return OrbRegistry.getOrb(meta).getCapacity();
}
@Override
public int getOrbLevel(int meta) {
return OrbRegistry.getOrb(meta).getTier();
}
}

View file

@ -0,0 +1,17 @@
package WayofTime.bloodmagic.item;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.registry.ModBlocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemBucket;
public class ItemBucketEssence extends ItemBucket {
public ItemBucketEssence() {
super(ModBlocks.lifeEssence);
setUnlocalizedName(BloodMagic.MODID + ".bucket.lifeEssence");
setContainerItem(Items.bucket);
setCreativeTab(BloodMagic.tabBloodMagic);
}
}

View file

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

View file

@ -0,0 +1,93 @@
package WayofTime.bloodmagic.item.sigil;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.NBTHolder;
import WayofTime.bloodmagic.api.iface.ISigil;
import WayofTime.bloodmagic.util.helper.TextHelper;
import WayofTime.bloodmagic.item.ItemBindable;
import lombok.Getter;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
@Getter
public class ItemSigilBase extends ItemBindable implements ISigil {
private final String name;
private boolean toggleable;
protected final String tooltipBase;
public ItemSigilBase(String name, int energyUsed) {
super();
setUnlocalizedName(BloodMagic.MODID + ".sigil." + name);
setEnergyUsed(energyUsed);
this.name = name;
this.tooltipBase = "tooltip.BloodMagic.sigil." + name + ".";
}
public ItemSigilBase(String name) {
this(name, 0);
}
@Override
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) {
super.onItemRightClick(stack, world, player);
return false;
}
@Override
@SideOnly(Side.CLIENT)
@SuppressWarnings("unchecked")
public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean advanced) {
if (StatCollector.canTranslate(tooltipBase + "desc"))
tooltip.add(TextHelper.localize(tooltipBase + "desc"));
super.addInformation(stack, player, tooltip, advanced);
}
public void setToggleable() {
this.toggleable = true;
}
public boolean isUnusable(ItemStack stack) {
NBTHolder.checkNBT(stack);
return stack.getTagCompound().getBoolean(NBTHolder.NBT_UNUSABLE);
}
public ItemStack setUnusable(ItemStack stack, boolean unusable) {
NBTHolder.checkNBT(stack);
stack.getTagCompound().setBoolean(NBTHolder.NBT_UNUSABLE, unusable);
return stack;
}
public boolean getActivated(ItemStack stack) {
return stack.getItemDamage() > 0;
}
public ItemStack setActivated(ItemStack stack, boolean activated) {
if (this.toggleable)
stack.setItemDamage(activated ? 1 : 0);
return stack;
}
}

View file

@ -0,0 +1,46 @@
package WayofTime.bloodmagic.item.sigil;
import WayofTime.bloodmagic.api.altar.IBloodAltar;
import WayofTime.bloodmagic.api.util.helper.BindableHelper;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import WayofTime.bloodmagic.util.ChatUtil;
import WayofTime.bloodmagic.util.helper.TextHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
public class ItemSigilDivination extends ItemSigilBase {
public ItemSigilDivination() {
super("divination");
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
super.onItemRightClick(stack, world, player);
if (!world.isRemote && syphonBatteries(stack, player, getEnergyUsed())) {
MovingObjectPosition position = getMovingObjectPositionFromPlayer(world, player, false);
int currentEssence = NetworkHelper.getCurrentEssence(BindableHelper.getOwnerName(stack));
if (position == null) {
ChatUtil.sendNoSpam(player, new ChatComponentText(TextHelper.localize(tooltipBase + "currentEssence", currentEssence)));
return stack;
} else {
if (position.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
TileEntity tile = world.getTileEntity(position.getBlockPos());
if (!(tile instanceof IBloodAltar)) {
ChatUtil.sendNoSpam(player, new ChatComponentText(TextHelper.localize(tooltipBase + "currentEssence", currentEssence)));
return stack;
}
}
}
}
return stack;
}
}