Initial 1.11.2 update

This commit is contained in:
Electroblob
2018-02-07 21:15:50 +00:00
parent 67f6be0671
commit 3df5597dcc
368 changed files with 17234 additions and 15082 deletions
@@ -5,6 +5,7 @@ import java.util.List;
import electroblob.wizardry.Wizardry;
import electroblob.wizardry.constants.Constants;
import electroblob.wizardry.constants.Element;
import electroblob.wizardry.registry.WizardryAchievements;
import electroblob.wizardry.registry.WizardryTabs;
import electroblob.wizardry.spell.Petrify;
import electroblob.wizardry.util.WizardryUtilities;
@@ -19,154 +20,161 @@ import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumHandSide;
import net.minecraft.util.NonNullList;
import net.minecraftforge.common.ISpecialArmor;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@Mod.EventBusSubscriber
public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
public Element element;
public ItemWizardArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType, Element element) {
public ItemWizardArmour(ArmorMaterial material, int renderIndex, EntityEquipmentSlot armourType, Element element){
super(material, renderIndex, armourType);
this.element = element;
this.setCreativeTab(WizardryTabs.WIZARDRY);
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced){
if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) tooltip.add("\u00A7d" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.legendary"));
if(element != null) tooltip.add("\u00A78" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.buff", (int)(Constants.COST_REDUCTION_PER_ARMOUR*100) + "%", element.getDisplayName()));
tooltip.add("\u00A79" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.mana", (this.getMaxDamage(stack) - this.getDamage(stack)), this.getMaxDamage(stack)));
if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary")) tooltip
.add("\u00A7d" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.legendary"));
if(element != null)
tooltip.add("\u00A78" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.buff",
(int)(Constants.COST_REDUCTION_PER_ARMOUR * 100) + "%", element.getDisplayName()));
tooltip.add("\u00A79" + net.minecraft.client.resources.I18n.format("item.wizardry:wizard_armour.mana",
(this.getMaxDamage(stack) - this.getDamage(stack)), this.getMaxDamage(stack)));
}
@Override
public String getItemStackDisplayName(ItemStack stack){
return ((this.element == null ? "" : this.element.getFormattingCode()) + super.getItemStackDisplayName(stack));
}
return ((this.element == null ? "" : this.element.getFormattingCode()) + super.getItemStackDisplayName(stack));
}
@Override
@SideOnly(Side.CLIENT)
public boolean hasEffect(ItemStack stack){
return stack.hasTagCompound() && stack.getTagCompound().getBoolean("legendary");
}
@Override
@SideOnly(Side.CLIENT)
public net.minecraft.client.model.ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, EntityEquipmentSlot armourSlot, net.minecraft.client.model.ModelBiped _default){
public net.minecraft.client.model.ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack,
EntityEquipmentSlot armourSlot, net.minecraft.client.model.ModelBiped _default){
net.minecraft.client.model.ModelBiped model = Wizardry.proxy.getWizardArmourModel();
// Legs use modelBiped
if(armourSlot == EntityEquipmentSlot.LEGS) return null;
if(model != null){
model.bipedHead.showModel = armourSlot == EntityEquipmentSlot.HEAD;
model.bipedHeadwear.showModel = false;
model.bipedBody.showModel = armourSlot == EntityEquipmentSlot.CHEST || armourSlot == EntityEquipmentSlot.LEGS;
model.bipedBody.showModel = armourSlot == EntityEquipmentSlot.CHEST
|| armourSlot == EntityEquipmentSlot.LEGS;
model.bipedRightArm.showModel = armourSlot == EntityEquipmentSlot.CHEST;
model.bipedLeftArm.showModel = armourSlot == EntityEquipmentSlot.CHEST;
model.bipedRightLeg.showModel = armourSlot == EntityEquipmentSlot.LEGS || armourSlot == EntityEquipmentSlot.FEET;
model.bipedLeftLeg.showModel = armourSlot == EntityEquipmentSlot.LEGS || armourSlot == EntityEquipmentSlot.FEET;
model.bipedRightLeg.showModel = armourSlot == EntityEquipmentSlot.LEGS
|| armourSlot == EntityEquipmentSlot.FEET;
model.bipedLeftLeg.showModel = armourSlot == EntityEquipmentSlot.LEGS
|| armourSlot == EntityEquipmentSlot.FEET;
model.isSneak = entityLiving.isSneaking();
model.isRiding = entityLiving.isRiding();
model.isChild = entityLiving.isChild();
boolean leftHanded = entityLiving.getPrimaryHand() == EnumHandSide.LEFT;
ItemStack itemstackR = leftHanded ? entityLiving.getHeldItemOffhand() : entityLiving.getHeldItemMainhand();
ItemStack itemstackL = leftHanded ? entityLiving.getHeldItemMainhand() : entityLiving.getHeldItemOffhand();
if (itemstackR != null)
{
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.ITEM;
if(itemstackR != null){
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.ITEM;
if (entityLiving.getItemInUseCount() > 0)
{
EnumAction enumaction = itemstackR.getItemUseAction();
if(entityLiving.getItemInUseCount() > 0){
EnumAction enumaction = itemstackR.getItemUseAction();
if (enumaction == EnumAction.BLOCK)
{
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BLOCK;
}
else if (enumaction == EnumAction.BOW)
{
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BOW_AND_ARROW;
}
}
}
if(enumaction == EnumAction.BLOCK){
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BLOCK;
}else if(enumaction == EnumAction.BOW){
model.rightArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BOW_AND_ARROW;
}
}
}
if (itemstackL != null)
{
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.ITEM;
if(itemstackL != null){
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.ITEM;
if (entityLiving.getItemInUseCount() > 0)
{
EnumAction enumaction1 = itemstackL.getItemUseAction();
if(entityLiving.getItemInUseCount() > 0){
EnumAction enumaction1 = itemstackL.getItemUseAction();
if (enumaction1 == EnumAction.BLOCK)
{
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BLOCK;
}
else if (enumaction1 == EnumAction.BOW)
{
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BOW_AND_ARROW;
}
}
}
if(enumaction1 == EnumAction.BLOCK){
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BLOCK;
}else if(enumaction1 == EnumAction.BOW){
model.leftArmPose = net.minecraft.client.model.ModelBiped.ArmPose.BOW_AND_ARROW;
}
}
}
}
return model;
}
return model;
}
@Override
public String getArmorTexture(ItemStack stack, Entity entity, EntityEquipmentSlot slot, String type) {
public String getArmorTexture(ItemStack stack, Entity entity, EntityEquipmentSlot slot, String type){
// Returns a completely transparent texture if the player is invisible. This is such an annoyingly easy
// fix, considering how long I spent trying to do this before - a bit of lateral thinking was all it took.
// Do note however that a texture pack could override this.
if(entity instanceof EntityLivingBase && ((EntityLivingBase)entity).isInvisible()
&& !entity.getEntityData().getBoolean(Petrify.NBT_KEY)) return "wizardry:textures/armour/invisible_armour.png";
if(slot == EntityEquipmentSlot.LEGS) return this.element == null ? "wizardry:textures/armour/wizard_armour_legs.png" :
"wizardry:textures/armour/wizard_armour_" + this.element.getUnlocalisedName() + "_legs.png";
return this.element == null ? "wizardry:textures/armour/wizard_armour.png" :
"wizardry:textures/armour/wizard_armour_" + this.element.getUnlocalisedName() + ".png";
&& !entity.getEntityData().getBoolean(Petrify.NBT_KEY))
return "wizardry:textures/armour/invisible_armour.png";
if(slot == EntityEquipmentSlot.LEGS)
return this.element == null ? "wizardry:textures/armour/wizard_armour_legs.png"
: "wizardry:textures/armour/wizard_armour_" + this.element.getUnlocalisedName() + "_legs.png";
return this.element == null ? "wizardry:textures/armour/wizard_armour.png"
: "wizardry:textures/armour/wizard_armour_" + this.element.getUnlocalisedName() + ".png";
}
@Override
public boolean getIsRepairable(ItemStack stack, ItemStack par2ItemStack)
{
return false;
}
@Override
public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slotIndex){
public boolean getIsRepairable(ItemStack stack, ItemStack par2ItemStack){
return false;
}
@Override
public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage,
int slotIndex){
EntityEquipmentSlot slot = getArmorSlotFromIndex(slotIndex);
if (!source.isUnblockable() && armor.getItemDamage() < armor.getMaxDamage()){
if(!source.isUnblockable() && armor.getItemDamage() < armor.getMaxDamage()){
if(armor.hasTagCompound() && armor.getTagCompound().getBoolean("legendary")){
// Legendary armour gives full 10 shields, like diamond.
return new ArmorProperties(0, ArmorMaterial.DIAMOND.getDamageReductionAmount(slot) / 25D, armor.getMaxDamage() + 1 - armor.getItemDamage());
return new ArmorProperties(0, ArmorMaterial.DIAMOND.getDamageReductionAmount(slot) / 25D,
armor.getMaxDamage() + 1 - armor.getItemDamage());
}else{
return new ArmorProperties(0, this.damageReduceAmount / 25D, armor.getMaxDamage() + 1 - armor.getItemDamage());
return new ArmorProperties(0, this.damageReduceAmount / 25D,
armor.getMaxDamage() + 1 - armor.getItemDamage());
}
}else{
return new ArmorProperties(0, 0, 0);
}
}else{
return new ArmorProperties(0, 0, 0);
}
}
@Override
public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slotIndex) {
public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slotIndex){
EntityEquipmentSlot slot = getArmorSlotFromIndex(slotIndex);
if(armor.getItemDamage() < armor.getMaxDamage()){
if(armor.hasTagCompound() && armor.getTagCompound().getBoolean("legendary")){
// Legendary armour gives full 10 shields, like diamond.
@@ -191,21 +199,23 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
}
}
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, List<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
/** Returns the EntityEquipmentSlot for which index() returns an integer equal to the passed in slotIndex and
* which is an armour slot (not a hand slot). This only exists because the 1.10.2 version of Forge still uses
* an integer slot index in ISpecialArmor instead of an EntityEquipmentSlot. */
// NOTE: Remove in 1.11.2
private EntityEquipmentSlot getArmorSlotFromIndex(int slotIndex) {
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, NonNullList<ItemStack> subItems){
subItems.add(new ItemStack(this, 1));
}
/**
* Returns the EntityEquipmentSlot for which index() returns an integer equal to the passed in slotIndex and which
* is an armour slot (not a hand slot). This only exists because the 1.10.2/1.11.2 versions of Forge still uses an
* integer slot index in ISpecialArmor instead of an EntityEquipmentSlot.
*/
// NOTE: Remove in 1.12.2
private EntityEquipmentSlot getArmorSlotFromIndex(int slotIndex){
// Had to pick something to begin with.
EntityEquipmentSlot slot = EntityEquipmentSlot.HEAD;
for(EntityEquipmentSlot s : WizardryUtilities.ARMOUR_SLOTS){
if(s.getIndex() == slotIndex){
slot = s;
@@ -214,4 +224,21 @@ public class ItemWizardArmour extends ItemArmor implements ISpecialArmor {
return slot;
}
@SubscribeEvent
public static void onLivingUpdateEvent(LivingUpdateEvent event){
if(event.getEntityLiving() instanceof EntityPlayer){
EntityPlayer player = (EntityPlayer)event.getEntityLiving();
for(ItemStack stack : player.getArmorInventoryList()){
if(stack == null || !(stack.getItem() instanceof ItemWizardArmour)){
return; // If any of the armour slots doesn't contain wizard armour, don't trigger the achievement.
}
}
// If it gets this far, then all slots must be wizard armour, so trigger the achievement.
player.addStat(WizardryAchievements.armour_set);
}
}
}