protected void damageShield(float damage) { if (damage >= 3.0F && this.activeItemStack.getItem() == Items.SHIELD) { int i = 1 + MathHelper.floor(damage); this.activeItemStack.damageItem(i, this); if (this.activeItemStack.func_190926_b()) { EnumHand enumhand = this.getActiveHand(); if (enumhand == EnumHand.MAIN_HAND) { this.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, ItemStack.field_190927_a); } else { this.setItemStackToSlot(EntityEquipmentSlot.OFFHAND, ItemStack.field_190927_a); } this.activeItemStack = ItemStack.field_190927_a; this.playSound(SoundEvents.ITEM_SHIELD_BREAK, 0.8F, 0.8F + this.world.rand.nextFloat() * 0.4F); } } }
@Override public Multimap<String, AttributeModifier> getAttributeModifiers(EntityEquipmentSlot slot, ItemStack stack) { Multimap<String, AttributeModifier> multimap = super.getAttributeModifiers(slot, stack); if (slot == EntityEquipmentSlot.MAINHAND && getData(stack) != ItemFromData.BLANK_DATA && stack.hasTagCompound()) { int heads=Math.min((int)TF2Attribute.getModifier("Kill Count", stack, 0, null), stack.getTagCompound().getInteger("Heads")); multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", this.getWeaponDamage(stack, null, null) * this.getWeaponPelletCount(stack, null) - 1, 0)); multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getName(), new AttributeModifier( ATTACK_SPEED_MODIFIER, "Weapon modifier", -4 + (1000D / this.getFiringSpeed(stack, null)), 0)); float addHealth = TF2Attribute.getModifier("Health", stack, 0, null)+heads * TF2Attribute.getModifier("Max Health Kill", stack, 0, null); if (addHealth != 0) multimap.put(SharedMonsterAttributes.MAX_HEALTH.getName(), new AttributeModifier(HEALTH_MODIFIER, "Weapon modifier", addHealth, 0)); float addSpeed = TF2Attribute.getModifier("Speed", stack, 1 + heads * TF2Attribute.getModifier("Speed Kill", stack, 0, null), null); if (addSpeed != 1) multimap.put(SharedMonsterAttributes.MOVEMENT_SPEED.getName(), new AttributeModifier(SPEED_MODIFIER, "Weapon modifier", addSpeed - 1, 2)); } return multimap; }
public void addAttributeModifier(String attributeName, AttributeModifier modifier, EntityEquipmentSlot equipmentSlot) { if (this.stackTagCompound == null) { this.stackTagCompound = new NBTTagCompound(); } if (!this.stackTagCompound.hasKey("AttributeModifiers", 9)) { this.stackTagCompound.setTag("AttributeModifiers", new NBTTagList()); } NBTTagList nbttaglist = this.stackTagCompound.getTagList("AttributeModifiers", 10); NBTTagCompound nbttagcompound = SharedMonsterAttributes.writeAttributeModifierToNBT(modifier); nbttagcompound.setString("AttributeName", attributeName); if (equipmentSlot != null) { nbttagcompound.setString("Slot", equipmentSlot.getName()); } nbttaglist.appendTag(nbttagcompound); }
@Override public float distributeDamage(float damage, @Nonnull EntityPlayer player, @Nonnull DamageSource source, boolean addStat) { AbstractPlayerDamageModel damageModel = PlayerDataManager.getDamageModel(player); for (Pair<EntityEquipmentSlot, EnumPlayerPart[]> pair : getPartList()) { EntityEquipmentSlot slot = pair.getLeft(); damage = ArmorUtils.applyArmor(player, player.getItemStackFromSlot(slot), source, damage, slot); if (damage <= 0F) return 0F; damage = ArmorUtils.applyEnchantmentModifiers(player.getItemStackFromSlot(slot), source, damage); if (damage <= 0F) return 0F; damage = distributeDamageOnParts(damage, damageModel, pair.getRight(), player, addStat); if (damage == 0F) break; } return damage; }
/** * Called when a lightning bolt hits the entity. */ public void onStruckByLightning(EntityLightningBolt lightningBolt) { if (!this.world.isRemote && !this.isDead) { EntityPigZombie entitypigzombie = new EntityPigZombie(this.world); entitypigzombie.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, new ItemStack(Items.GOLDEN_SWORD)); entitypigzombie.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); entitypigzombie.setNoAI(this.isAIDisabled()); if (this.hasCustomName()) { entitypigzombie.setCustomNameTag(this.getCustomNameTag()); entitypigzombie.setAlwaysRenderNameTag(this.getAlwaysRenderNameTag()); } this.world.spawnEntityInWorld(entitypigzombie); this.setDead(); } }
private int getSearchedItemCount() { TileEntity te = world.getTileEntity(pos); if (te != null && te.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)) { // if (world.getTileEntity(pos) instanceof IInventory) { IItemHandler handler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); int itemCount = 0; // IInventory inventory = (IInventory) world.getTileEntity(pos); ItemStack searchStack = ItemPneumaticArmor.getSearchedStack(FMLClientHandler.instance().getClient().player.getItemStackFromSlot(EntityEquipmentSlot.HEAD)); if (searchStack.isEmpty()) return 0; for (int l = 0; l < handler.getSlots(); l++) { if (!handler.getStackInSlot(l).isEmpty()) { itemCount += getSearchedItemCount(handler.getStackInSlot(l), searchStack); } } return itemCount; } return 0; }
public static void setPlayerItemStackInHand(ItemStack stack, EntityPlayer player, EnumHand hand) { // okay, find the itemstack if (hand == EnumHand.MAIN_HAND) { player.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, stack); } else if (hand == EnumHand.OFF_HAND) { player.setItemStackToSlot(EntityEquipmentSlot.OFFHAND, stack); } else { // uhh... what? Util.logger.error("Found invalid EnumHand value!"); } }
private EntitySkeleton createSkeleton(DifficultyInstance p_188514_1_, EntityHorse p_188514_2_) { EntitySkeleton entityskeleton = new EntitySkeleton(p_188514_2_.worldObj); entityskeleton.onInitialSpawn(p_188514_1_, (IEntityLivingData)null); entityskeleton.setPosition(p_188514_2_.posX, p_188514_2_.posY, p_188514_2_.posZ); entityskeleton.hurtResistantTime = 60; entityskeleton.enablePersistence(); if (entityskeleton.getItemStackFromSlot(EntityEquipmentSlot.HEAD) == null) { entityskeleton.setItemStackToSlot(EntityEquipmentSlot.HEAD, new ItemStack(Items.IRON_HELMET)); } EnchantmentHelper.addRandomEnchantment(entityskeleton.getRNG(), entityskeleton.getHeldItemMainhand(), (int)(5.0F + p_188514_1_.getClampedAdditionalDifficulty() * (float)entityskeleton.getRNG().nextInt(18)), false); EnchantmentHelper.addRandomEnchantment(entityskeleton.getRNG(), entityskeleton.getItemStackFromSlot(EntityEquipmentSlot.HEAD), (int)(5.0F + p_188514_1_.getClampedAdditionalDifficulty() * (float)entityskeleton.getRNG().nextInt(18)), false); entityskeleton.worldObj.spawnEntityInWorld(entityskeleton); return entityskeleton; }
public ItemCGArmor(String id, ArmorMaterial armorMaterial, String armorName, int renderIndex, EntityEquipmentSlot armorType) { super(armorMaterial, renderIndex, armorType); this.armorName = armorName; this.itemClass = EnumItemClass.MEDIUM_ARMOR; this.isAirMask = false; this.minAirToStartRefil = 0; this.rarity = EnumRarity.COMMON; setUnlocalizedName(id); ItemsCG.registerItem(this, new ResourceLocation(ModInfo.MODID, id)); // Put into registry. if (CompositeGear.ic2Tab != null) { setCreativeTab(CompositeGear.ic2Tab); } }
@Nullable public Iterable<ItemStack> getEntityEquipment(EntityLivingBase entityIn) { List<ItemStack> list = Lists.<ItemStack>newArrayList(); for (EntityEquipmentSlot entityequipmentslot : this.applicableEquipmentTypes) { ItemStack itemstack = entityIn.getItemStackFromSlot(entityequipmentslot); if (itemstack != null) { list.add(itemstack); } } return list.size() > 0 ? list : null; }
public ItemStack apply(ItemStack stack, Random rand, LootContext context) { for (SetAttributes.Modifier setattributes$modifier : this.modifiers) { UUID uuid = setattributes$modifier.uuid; if (uuid == null) { uuid = UUID.randomUUID(); } EntityEquipmentSlot entityequipmentslot = setattributes$modifier.slots[rand.nextInt(setattributes$modifier.slots.length)]; stack.addAttributeModifier(setattributes$modifier.attributeName, new AttributeModifier(uuid, setattributes$modifier.modifierName, (double)setattributes$modifier.amount.generateFloat(rand), setattributes$modifier.operation), entityequipmentslot); } return stack; }
public ActionResult<ItemStack> onItemRightClick(World itemStackIn, EntityPlayer worldIn, EnumHand playerIn) { ItemStack itemstack = worldIn.getHeldItem(playerIn); EntityEquipmentSlot entityequipmentslot = EntityLiving.getSlotForItemStack(itemstack); ItemStack itemstack1 = worldIn.getItemStackFromSlot(entityequipmentslot); if (itemstack1.func_190926_b()) { worldIn.setItemStackToSlot(entityequipmentslot, itemstack.copy()); itemstack.func_190920_e(0); return new ActionResult(EnumActionResult.SUCCESS, itemstack); } else { return new ActionResult(EnumActionResult.FAIL, itemstack); } }
@Override public Multimap<String, AttributeModifier> getAttributeModifiers(EntityEquipmentSlot equipmentSlot, ItemStack stack) { Multimap<String, AttributeModifier> multimap = super.getItemAttributeModifiers(equipmentSlot); if (equipmentSlot == EntityEquipmentSlot.MAINHAND) { multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", (double) 3.0F, 0)); multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", (double) -3F, 0)); } return multimap; }
@Override public Multimap<String, AttributeModifier> getAttributeModifiers(EntityEquipmentSlot slot, ItemStack stack) { final Multimap<String, AttributeModifier> modifiers = super.getAttributeModifiers(slot, stack); if (slot == EntityEquipmentSlot.MAINHAND) { replaceModifier(modifiers, SharedMonsterAttributes.ATTACK_DAMAGE, ATTACK_DAMAGE_MODIFIER, damageMultiplier); replaceModifier(modifiers, SharedMonsterAttributes.ATTACK_SPEED, ATTACK_SPEED_MODIFIER, speedMultiplier); } return modifiers; }
@SubscribeEvent public void renderWorldLastEvent(RenderWorldLastEvent event) { if (!GuiKeybindCheckBox.trackedCheckboxes.get("pneumaticHelmet.upgrade.coreComponents").checked) return; Minecraft mc = FMLClientHandler.instance().getClient(); EntityPlayer player = mc.player; double playerX = player.prevPosX + (player.posX - player.prevPosX) * event.getPartialTicks(); double playerY = player.prevPosY + (player.posY - player.prevPosY) * event.getPartialTicks(); double playerZ = player.prevPosZ + (player.posZ - player.prevPosZ) * event.getPartialTicks(); GL11.glPushMatrix(); GL11.glTranslated(-playerX, -playerY, -playerZ); ItemStack helmetStack = player.getItemStackFromSlot(EntityEquipmentSlot.HEAD); if (helmetStack.getItem() == Itemss.PNEUMATIC_HELMET) { if (((IPressurizable) helmetStack.getItem()).getPressure(helmetStack) > 0F) { CommonHUDHandler comHudHandler = CommonHUDHandler.getHandlerForPlayer(player); if (comHudHandler.ticksExisted > comHudHandler.getStartupTime()) { GL11.glDisable(GL11.GL_TEXTURE_2D); for (int i = 0; i < UpgradeRenderHandlerList.instance().upgradeRenderers.size(); i++) { if (comHudHandler.upgradeRenderersInserted[i] && GuiKeybindCheckBox.trackedCheckboxes.get("pneumaticHelmet.upgrade." + UpgradeRenderHandlerList.instance().upgradeRenderers.get(i).getUpgradeName()).checked) UpgradeRenderHandlerList.instance().upgradeRenderers.get(i).render3D(event.getPartialTicks()); } GL11.glEnable(GL11.GL_TEXTURE_2D); } } } GL11.glPopMatrix(); }
@Override public void update() { if (worldObj.isRemote) return; if (this.worldObj.getTotalWorldTime() % 10L != 0) return; boolean wasLooking = this.isLooking(); int range = 10; List<EntityPlayer> players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, new AxisAlignedBB(pos.add(-range, -range, -range), pos.add(range, range, range))); boolean looker = false; for (EntityPlayer player : players) { ItemStack helm = player.getItemStackFromSlot(EntityEquipmentSlot.HEAD); if (helm != null && helm.getItem() == Item.getItemFromBlock(Blocks.PUMPKIN)) continue; RayTraceResult rtr = this.rayTraceFromEntity(worldObj, player, true, range); if (rtr != null && rtr.getBlockPos() != null && rtr.getBlockPos().equals(getPos())) { looker = true; break; } if (!wasLooking && ((WeepingBells)worldObj.getBlockState(getPos()).getBlock()).isWeepingCropGrown(worldObj.getBlockState(getPos())) && !player.capabilities.isCreativeMode) { if (getTarget(worldObj, getPos()).canEntityBeSeen(player)) { player.attackEntityFrom(DamageSource.outOfWorld, 1.0F); } } } if (looker != wasLooking && !worldObj.isRemote) setLooking(looker); }
private void swapItem(EntityPlayer player, EntityEquipmentSlot p_184795_2_, ItemStack p_184795_3_, EnumHand hand) { ItemStack itemstack = this.getItemStackFromSlot(p_184795_2_); if (itemstack.func_190926_b() || (this.disabledSlots & 1 << p_184795_2_.getSlotIndex() + 8) == 0) { if (!itemstack.func_190926_b() || (this.disabledSlots & 1 << p_184795_2_.getSlotIndex() + 16) == 0) { if (player.capabilities.isCreativeMode && itemstack.func_190926_b() && !p_184795_3_.func_190926_b()) { ItemStack itemstack2 = p_184795_3_.copy(); itemstack2.func_190920_e(1); this.setItemStackToSlot(p_184795_2_, itemstack2); } else if (!p_184795_3_.func_190926_b() && p_184795_3_.func_190916_E() > 1) { if (itemstack.func_190926_b()) { ItemStack itemstack1 = p_184795_3_.copy(); itemstack1.func_190920_e(1); this.setItemStackToSlot(p_184795_2_, itemstack1); p_184795_3_.func_190918_g(1); } } else { this.setItemStackToSlot(p_184795_2_, p_184795_3_); player.setHeldItem(hand, itemstack); } } } }
@Override public Multimap<String, AttributeModifier> getAttributeModifiers(EntityEquipmentSlot equipmentSlot, ItemStack stack) { Multimap<String, AttributeModifier> multimap = HashMultimap.<String, AttributeModifier>create(); if (equipmentSlot == EntityEquipmentSlot.MAINHAND) { multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", (double) 3.0F + this.getAttackDamage(stack), 0)); multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", (double) (-2.4000000953674316D + getEfficiencyMod(stack)), 0)); } return multimap; }
public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot) { Multimap<String, AttributeModifier> multimap = super.getItemAttributeModifiers(equipmentSlot); if (equipmentSlot == EntityEquipmentSlot.MAINHAND) { multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Tool modifier", (double)this.damageVsEntity, 0)); multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Tool modifier", (double)this.attackSpeed, 0)); } return multimap; }
public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot) { Multimap<String, AttributeModifier> multimap = super.getItemAttributeModifiers(equipmentSlot); if (equipmentSlot == this.armorType && this.knockbackReduction != 0) { multimap.put(SharedMonsterAttributes.KNOCKBACK_RESISTANCE.getName(), new AttributeModifier(knockbackUUID, "Knockback modifier", (double)this.knockbackReduction, 0)); } return multimap; }
public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot) { Multimap<String, AttributeModifier> multimap = super.getItemAttributeModifiers(equipmentSlot); if (equipmentSlot == EntityEquipmentSlot.MAINHAND) { multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", (double)this.attackDamage, 0)); multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", -2.4000000953674316D, 0)); } return multimap; }
public void setDropChance(EntityEquipmentSlot slotIn, float chance) { switch (slotIn.getSlotType()) { case HAND: this.inventoryHandsDropChances[slotIn.getIndex()] = chance; break; case ARMOR: this.inventoryArmorDropChances[slotIn.getIndex()] = chance; } }
@Override public void handleServerSide(PacketUpdateSearchStack message, EntityPlayer player) { ItemStack helmetStack = player.getItemStackFromSlot(EntityEquipmentSlot.HEAD); if (!helmetStack.isEmpty()) { NBTTagCompound tag = NBTUtil.getCompoundTag(helmetStack, "SearchStack"); tag.setInteger("itemID", message.itemId); tag.setInteger("itemDamage", message.itemDamage); } }
@SideOnly(Side.CLIENT) private void warnPlayerIfNecessary(LivingSetAttackTargetEvent event) { EntityPlayer player = FMLClientHandler.instance().getClient().player; if (event.getTarget() == player && (event.getEntityLiving() instanceof EntityGolem || event.getEntityLiving() instanceof EntityMob)) { ItemStack helmetStack = player.getItemStackFromSlot(EntityEquipmentSlot.HEAD); if (helmetStack.getItem() == Itemss.PNEUMATIC_HELMET && ((IPressurizable) helmetStack.getItem()).getPressure(helmetStack) > 0 && ItemPneumaticArmor.getUpgrades(EnumUpgrade.ENTITY_TRACKER, helmetStack) > 0 && GuiKeybindCheckBox.trackedCheckboxes.get("pneumaticHelmet.upgrade.coreComponents").checked && GuiKeybindCheckBox.trackedCheckboxes.get("pneumaticHelmet.upgrade." + EntityTrackUpgradeHandler.UPGRADE_NAME).checked) { HUDHandler.instance().getSpecificRenderer(EntityTrackUpgradeHandler.class).warnIfNecessary(event.getEntity()); } } else { HUDHandler.instance().getSpecificRenderer(EntityTrackUpgradeHandler.class).removeTargetingEntity(event.getEntityLiving()); } }
public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot) { Multimap<String, AttributeModifier> multimap = super.getItemAttributeModifiers(equipmentSlot); if (equipmentSlot == this.armorType) { multimap.put(SharedMonsterAttributes.ARMOR.getAttributeUnlocalizedName(), new AttributeModifier(ARMOR_MODIFIERS[equipmentSlot.getIndex()], "Armor modifier", (double)this.damageReduceAmount, 0)); multimap.put(SharedMonsterAttributes.ARMOR_TOUGHNESS.getAttributeUnlocalizedName(), new AttributeModifier(ARMOR_MODIFIERS[equipmentSlot.getIndex()], "Armor toughness", (double)this.toughness, 0)); } return multimap; }
/** * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons * use this to react to sunlight and start to burn. */ public void onLivingUpdate() { if (this.worldObj.isDaytime() && !this.worldObj.isRemote && !this.isChild() && (this.getZombieType() == null || this.getZombieType().isSunSensitive())) { float f = this.getBrightness(1.0F); BlockPos blockpos = this.getRidingEntity() instanceof EntityBoat ? (new BlockPos(this.posX, (double)Math.round(this.posY), this.posZ)).up() : new BlockPos(this.posX, (double)Math.round(this.posY), this.posZ); if (f > 0.5F && this.rand.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.worldObj.canSeeSky(blockpos)) { boolean flag = true; ItemStack itemstack = this.getItemStackFromSlot(EntityEquipmentSlot.HEAD); if (itemstack != null) { if (itemstack.isItemStackDamageable()) { itemstack.setItemDamage(itemstack.getItemDamage() + this.rand.nextInt(2)); if (itemstack.getItemDamage() >= itemstack.getMaxDamage()) { this.renderBrokenItemStack(itemstack); this.setItemStackToSlot(EntityEquipmentSlot.HEAD, (ItemStack)null); } } flag = false; } if (flag) { this.setFire(8); } } } super.onLivingUpdate(); }
/** * Check if the stack is a valid item for this slot. Always true beside for * the armor slots. */ @Override public boolean isItemValid(ItemStack par1ItemStack) { Item item = par1ItemStack.getItem(); EntityEquipmentSlot eq = EntityEquipmentSlot.values()[armorType + 2]; // 0 & 1 are main & off hands return item.isValidArmor(par1ItemStack, eq, player); }
private void initializeFakePlayer() { String playerName = "Drone"; fakePlayer = new DroneFakePlayer((WorldServer) getWorld(), new GameProfile(null, playerName), this); fakePlayer.connection = new NetHandlerPlayServer(FMLCommonHandler.instance().getMinecraftServerInstance(), new NetworkManager(EnumPacketDirection.SERVERBOUND), fakePlayer); fakePlayer.inventory = new InventoryPlayer(fakePlayer) { private ItemStack oldStack; @Override public int getSizeInventory() { return getDroneSlots(); } @Override public void setInventorySlotContents(int slot, ItemStack stack) { super.setInventorySlotContents(slot, stack); if (slot == 0) { for (EntityEquipmentSlot ee : EntityEquipmentSlot.values()) { if (!oldStack.isEmpty()) { getFakePlayer().getAttributeMap().removeAttributeModifiers(oldStack.getAttributeModifiers(ee)); } if (!stack.isEmpty()) { getFakePlayer().getAttributeMap().applyAttributeModifiers(stack.getAttributeModifiers(ee)); } } oldStack = stack; } } }; }
public void setItemStackToSlot(EntityEquipmentSlot slotIn, ItemStack stack) { super.setItemStackToSlot(slotIn, stack); if (!this.world.isRemote && slotIn == EntityEquipmentSlot.MAINHAND) { this.setCombatTask(); } }
@Override public ItemStack getItemStackFromSlot(EntityEquipmentSlot slotIn) { if (m_realPlayer == null) { return super.getItemStackFromSlot(slotIn); } else { return m_realPlayer.getItemStackFromSlot(slotIn); } }
private static float getModifier(EntityEquipmentSlot slot) { switch (slot) { case CHEST: return 2.5F; case LEGS: return 3F; case FEET: case HEAD: return 6.5F; default: throw new IllegalArgumentException("Invalid slot " + slot); } }
public static void doArmor(EntityLivingBase hurt, EntityLivingBase cause) { for (EntityEquipmentSlot slot : armorSlots) { if (!hurt.getItemStackFromSlot(slot).isEmpty() && EmpoweredEnchantment.appliedTo(hurt.getItemStackFromSlot(slot))) { ItemStack stack = hurt.getItemStackFromSlot(slot); if(RandoresItemData.hasData(stack)) { RandoresWorldData.delegateVoid(new RandoresItemData(stack), definition -> definition.getAbilitySeries().onArmorHit(hurt, cause), () -> {}); } } } }
/** * Called each tick. Updates state for the elytra. */ private void updateElytra() { boolean flag = this.getFlag(7); if (flag && !this.onGround && !this.isRiding()) { ItemStack itemstack = this.getItemStackFromSlot(EntityEquipmentSlot.CHEST); if (itemstack.getItem() == Items.ELYTRA && ItemElytra.isBroken(itemstack)) { flag = true; if (!this.world.isRemote && (this.ticksElytraFlying + 1) % 20 == 0) { itemstack.damageItem(1, this); } } else { flag = false; } } else { flag = false; } if (!this.world.isRemote) { this.setFlag(7, flag); } }
private void swapItem(EntityPlayer player, EntityEquipmentSlot p_184795_2_, @Nullable ItemStack p_184795_3_, EnumHand hand) { ItemStack itemstack = this.getItemStackFromSlot(p_184795_2_); if (itemstack == null || (this.disabledSlots & 1 << p_184795_2_.getSlotIndex() + 8) == 0) { if (itemstack != null || (this.disabledSlots & 1 << p_184795_2_.getSlotIndex() + 16) == 0) { if (player.capabilities.isCreativeMode && (itemstack == null || itemstack.getItem() == Item.getItemFromBlock(Blocks.AIR)) && p_184795_3_ != null) { ItemStack itemstack2 = p_184795_3_.copy(); itemstack2.stackSize = 1; this.setItemStackToSlot(p_184795_2_, itemstack2); } else if (p_184795_3_ != null && p_184795_3_.stackSize > 1) { if (itemstack == null) { ItemStack itemstack1 = p_184795_3_.copy(); itemstack1.stackSize = 1; this.setItemStackToSlot(p_184795_2_, itemstack1); --p_184795_3_.stackSize; } } else { this.setItemStackToSlot(p_184795_2_, p_184795_3_); player.setHeldItem(hand, itemstack); } } } }
@SuppressWarnings("incomplete-switch") protected void setModelSlotVisible(ModelBiped p_188359_1_, EntityEquipmentSlot slotIn) { this.setModelVisible(p_188359_1_); switch (slotIn) { case HEAD: p_188359_1_.bipedHead.showModel = true; p_188359_1_.bipedHeadwear.showModel = true; break; case CHEST: p_188359_1_.bipedBody.showModel = true; p_188359_1_.bipedRightArm.showModel = true; p_188359_1_.bipedLeftArm.showModel = true; break; case LEGS: p_188359_1_.bipedBody.showModel = true; p_188359_1_.bipedRightLeg.showModel = true; p_188359_1_.bipedLeftLeg.showModel = true; break; case FEET: p_188359_1_.bipedRightLeg.showModel = true; p_188359_1_.bipedLeftLeg.showModel = true; } }
@Override public boolean hasItemInSlot(EntityEquipmentSlot p_190630_1_) { if (m_realPlayer == null) { return super.hasItemInSlot(p_190630_1_); } else { return m_realPlayer.hasItemInSlot(p_190630_1_); } }
@Override public Multimap<String, AttributeModifier> getAttributeModifiers(EntityEquipmentSlot slot, ItemStack stack) { Multimap<String, AttributeModifier> multimap = HashMultimap.create(); if (slot == EntityEquipmentSlot.MAINHAND) { double damage = attackDamage != null ? attackDamage : defaultAttackDamage; double speed = attackSpeed != null ? attackSpeed : defaultAttackSpeed; multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", damage, 0)); multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", speed, 0)); } return multimap; }
@Override public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, IEntityLivingData livingdata) { setItemStackToSlot(this.isLeftHanded() ? EntityEquipmentSlot.OFFHAND : EntityEquipmentSlot.MAINHAND, new ItemStack(HarshenItems.PROPS, 1, 0)); try { setItemStackToSlot(this.isLeftHanded() ? EntityEquipmentSlot.MAINHAND : EntityEquipmentSlot.OFFHAND, new ItemStack(JsonToNBT.getTagFromJson("{id:\"minecraft:shield\",Count:1b,tag:{BlockEntityTag:{Patterns:[{Pattern:\"ss\",Color:6},{Pattern:\"flo\",Color:1}],Base:8}},Damage:0s}"))); } catch (NBTException e) { e.printStackTrace(); } this.getEntityAttribute(SharedMonsterAttributes.FOLLOW_RANGE).applyModifier(new AttributeModifier("Random spawn bonus", this.rand.nextGaussian() * 0.05D, 1)); this.setLeftHanded(false); return livingdata; }
@Nullable /** * Called only once on an entity when first time spawned, via egg, mob spawner, natural spawning etc, but not called * when entity is reloaded from nbt. Mainly used for initializing attributes and inventory */ public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable IEntityLivingData livingdata) { livingdata = super.onInitialSpawn(difficulty, livingdata); this.setEquipmentBasedOnDifficulty(difficulty); this.setEnchantmentBasedOnDifficulty(difficulty); this.setCombatTask(); this.setCanPickUpLoot(this.rand.nextFloat() < 0.55F * difficulty.getClampedAdditionalDifficulty()); if (this.getItemStackFromSlot(EntityEquipmentSlot.HEAD).func_190926_b()) { Calendar calendar = this.world.getCurrentDate(); if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31 && this.rand.nextFloat() < 0.25F) { this.setItemStackToSlot(EntityEquipmentSlot.HEAD, new ItemStack(this.rand.nextFloat() < 0.1F ? Blocks.LIT_PUMPKIN : Blocks.PUMPKIN)); this.inventoryArmorDropChances[EntityEquipmentSlot.HEAD.getIndex()] = 0.0F; } } return livingdata; }
@SubscribeEvent public void onEntityUpdate(LivingUpdateEvent event) { EntityLivingBase living = event.getEntityLiving(); if(living instanceof IBurnInDay && living.world.isDaytime() && !living.world.isRemote && !living.isChild() && ((IBurnInDay)living).shouldBurn() && living.getBrightness() > 0.5F && living.getRNG().nextFloat() * 30.0F < (living.getBrightness() - 0.4F) * 2.0F && living.world.canSeeSky(new BlockPos(living.posX, living.posY + (double)living.getEyeHeight(), living.posZ))) { boolean flag = true; ItemStack itemstack = living.getItemStackFromSlot(EntityEquipmentSlot.HEAD); if (!itemstack.isEmpty()) { if (itemstack.isItemStackDamageable()) { itemstack.setItemDamage(itemstack.getItemDamage() + living.getRNG().nextInt(2)); if (itemstack.getItemDamage() >= itemstack.getMaxDamage()) { living.renderBrokenItemStack(itemstack); living.setItemStackToSlot(EntityEquipmentSlot.HEAD, ItemStack.EMPTY); } } flag = false; } if (flag) { living.setFire(8); } } }