public void setItemValues(ItemStack stack, boolean p_175112_2_) { this.patterns = null; NBTTagCompound nbttagcompound = stack.getSubCompound("BlockEntityTag"); if (nbttagcompound != null && nbttagcompound.hasKey("Patterns", 9)) { this.patterns = nbttagcompound.getTagList("Patterns", 10).copy(); } this.baseColor = p_175112_2_ ? func_190616_d(stack) : ItemBanner.getBaseColor(stack); this.patternList = null; this.colorList = null; this.patternResourceLocation = ""; this.patternDataSet = true; this.field_190617_a = stack.hasDisplayName() ? stack.getDisplayName() : null; }
@SubscribeEvent(priority = EventPriority.LOWEST) public void craftItem(net.minecraftforge.fml.common.gameevent.PlayerEvent.ItemCraftedEvent event) { ItemStack withPattern=ItemStack.EMPTY; ItemStack noPattern=ItemStack.EMPTY; for(int i=0; i<event.craftMatrix.getSizeInventory();i++){ ItemStack stack=event.craftMatrix.getStackInSlot(i); if(!stack.isEmpty() && stack.getItem() instanceof ItemBanner){ if(TileEntityBanner.getPatterns(stack)>0){ withPattern=stack; } else{ noPattern=stack; } if(!withPattern.isEmpty()&&!noPattern.isEmpty()){ withPattern.shrink(1); } } } }
/** * Adds the banner recipes to the CraftingManager. */ void addRecipes(CraftingManager manager) { for (EnumDyeColor enumdyecolor : EnumDyeColor.values()) { manager.addRecipe(ItemBanner.func_190910_a(enumdyecolor, (NBTTagList)null), new Object[] {"###", "###", " | ", '#', new ItemStack(Blocks.WOOL, 1, enumdyecolor.getMetadata()), '|', Items.STICK}); } manager.addRecipe(new RecipesBanners.RecipeDuplicatePattern()); manager.addRecipe(new RecipesBanners.RecipeAddPattern()); }
public ItemStack func_190615_l() { ItemStack itemstack = ItemBanner.func_190910_a(this.baseColor, this.patterns); if (this.hasCustomName()) { itemstack.setStackDisplayName(this.getName()); } return itemstack; }
public static ItemStack getReplacement(EntityPlayer player, ItemStack stack) { if (!stack.isEmpty() && stack.getItem() instanceof ItemBuildingBox && player.getTeam() == player.world.getScoreboard().getTeam("BLU")) stack.setItemDamage(stack.getItemDamage() + 1); if (!stack.isEmpty() && stack.getItem() instanceof ItemBanner){ NBTTagCompound pattern=new NBTTagCompound(); if(player.getTeam() == player.world.getScoreboard().getTeam("BLU")){ stack.setItemDamage(EnumDyeColor.BLUE.getDyeDamage()); pattern.setString("Pattern", "bb"); pattern.setInteger("Color", 15); } else{ pattern.setString("Pattern", "rb"); pattern.setInteger("Color", 15); } stack.getSubCompound("BlockEntityTag").getTagList("Patterns", 10).appendTag(pattern); } if (!stack.isEmpty() && stack.getItem() instanceof ItemBuildingBox && stack.getItemDamage()/2 == 11) { ItemStack wrench=TF2Util.getFirstItem(player.inventory, stackL ->{ return TF2Attribute.getModifier("Teleporter Cost", stackL, 1, player) != 1; }); if(!wrench.isEmpty()) { stack.setCount((int) TF2Attribute.getModifier("Teleporter Cost", wrench, 1, player)); } } return stack; }
public static boolean isSameBanner(ItemStack banner, Entity bannerHolder) { if(bannerHolder instanceof EntityLivingBase) { ItemStack helmet = ((EntityLivingBase) bannerHolder).getItemStackFromSlot(EntityEquipmentSlot.HEAD); if(!helmet.isEmpty() && helmet.getItem() instanceof ItemBanner) { return isSameBanner(banner,helmet); } } return false; }
private boolean checkSupposedPoweredState() { final ItemStack filter = bannerInventory.getStackInSlot(0); IBlockState blockState = world.getBlockState(pos); EnumFacing facing = blockState.getValue(BlockBannerDetector.FACING); boolean detected = false; BlockPos lastPos = null; if(!filter.isEmpty() && filter.getItem() instanceof ItemBanner) { for (int i = 1; i <= maxdist; i++) { BlockPos nextPos = new BlockPos(pos.offset(facing, i)); lastPos = nextPos; if (world.isBlockLoaded(nextPos)) { IBlockState nextState = world.getBlockState(nextPos); if (nextState.isOpaqueCube()) break; detected = checkBanner(nextPos,filter,BlockBanner.class); if(!detected) detected = checkBanner(nextPos.up(), filter, BlockBanner.BlockBannerHanging.class); if(!detected) detected = checkBanner(nextPos.down(), filter, BlockBanner.BlockBannerStanding.class); if(detected) break; } } if (!detected && maxdist > 0) { List<Entity> entityList = world.getEntitiesWithinAABB(Entity.class, new AxisAlignedBB(this.pos, lastPos.add(1,1,1)), new Predicate<Entity>() { @Override public boolean apply(Entity input) { return BannerUtil.isSameBanner(filter, input); } }); detected = entityList != null && entityList.size() > 0; } } return detected; }
private boolean removeDye(World world, BlockPos pos, EntityPlayer player, EnumHand hand, @Nonnull ItemStack stack, TileFluidTank tank) { IFluidHandler handler = FluidUtil.getFluidHandler(world, pos, null); if (handler == null) return false; if (tank.getFluid() != null && tank.getFluid().getFluid() == FluidRegistry.WATER && tank.getFluidAmount() >= 250) { if (stack.getItem() instanceof ItemArmor && ((ItemArmor) stack.getItem()).hasColor(stack)) { if (!world.isRemote) { ((ItemArmor) stack.getItem()).removeColor(stack); player.addStat(StatList.ARMOR_CLEANED); handler.drain(250, true); } player.playSound(SoundEvents.ENTITY_BOBBER_SPLASH, 0.16F, 0.66F); return true; } if (stack.getItem() instanceof ItemBanner) { if (TileEntityBanner.getPatterns(stack) > 0) { if (!world.isRemote) { ItemStack banner = stack.copy(); banner.setCount(1); TileEntityBanner.removeBannerData(banner); player.addStat(StatList.BANNER_CLEANED); if (!player.capabilities.isCreativeMode) { stack.shrink(1); handler.drain(250, true); } InventoryHandlerHelper.giveItem(player, hand, banner); } player.playSound(SoundEvents.ENTITY_BOBBER_SPLASH, 0.16F, 0.66F); } return true; } } return false; }
public boolean matches(InventoryCrafting inv, World worldIn) { ItemStack itemstack = ItemStack.field_190927_a; ItemStack itemstack1 = ItemStack.field_190927_a; for (int i = 0; i < inv.getSizeInventory(); ++i) { ItemStack itemstack2 = inv.getStackInSlot(i); if (!itemstack2.func_190926_b()) { if (itemstack2.getItem() != Items.BANNER) { return false; } if (!itemstack.func_190926_b() && !itemstack1.func_190926_b()) { return false; } EnumDyeColor enumdyecolor = ItemBanner.getBaseColor(itemstack2); boolean flag = TileEntityBanner.getPatterns(itemstack2) > 0; if (!itemstack.func_190926_b()) { if (flag) { return false; } if (enumdyecolor != ItemBanner.getBaseColor(itemstack)) { return false; } itemstack1 = itemstack2; } else if (!itemstack1.func_190926_b()) { if (!flag) { return false; } if (enumdyecolor != ItemBanner.getBaseColor(itemstack1)) { return false; } itemstack = itemstack2; } else if (flag) { itemstack = itemstack2; } else { itemstack1 = itemstack2; } } } return !itemstack.func_190926_b() && !itemstack1.func_190926_b(); }
public boolean renderItem(ItemStack displayItem){ GlStateManager.pushMatrix(); boolean itemBlock = false; try { final ItemStack sis = displayItem; GlStateManager.disableRescaleNormal(); IBakedModel model = Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getItemModel(sis); if(sis.getItem() instanceof ItemBanner){ GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F); GlStateManager.scale(0.5, 0.5, 0.5); GlStateManager.translate( 0.0f, (-0.14f*2)+0.1, 0 ); } else if(sis.getItem() instanceof ItemBlock && model.isGui3d()){ GlStateManager.scale(0.5, 0.5, 0.5); GlStateManager.scale(1, 1, 0.001F); GlStateManager.rotate(180, 0, 0, 1); GlStateManager.rotate(-210, 1, 0, 0); GlStateManager.rotate(45, 0, 1, 0); itemBlock = true; }else{ GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F); GlStateManager.scale(0.4, 0.4, 0.4); } if (!Minecraft.getMinecraft().getRenderItem().shouldRenderItemIn3D(sis) || sis.getItem() instanceof ItemSkull) { GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F); } GlStateManager.translate( 0.0f, 0.14f, 0 ); if(sis.getItem() instanceof net.minecraft.item.ItemMap){ bindTexture(new ResourceLocation("textures/map/map_background.png")); MapData mapdata = Items.FILLED_MAP.getMapData(sis, CrystalMod.proxy.getClientWorld()); if (mapdata != null) { GlStateManager.rotate(180, 0, 0, 1); GlStateManager.rotate(180, 0, 1, 0); GlStateManager.translate(-1, -0.9, 0); GlStateManager.scale(0.015625F, 0.015625F, 0.015625F); Minecraft.getMinecraft().entityRenderer.getMapItemRenderer().renderMap(mapdata, true); } }else Minecraft.getMinecraft().getRenderItem().renderItem(sis, TransformType.GUI); } catch( final Exception e ) { e.printStackTrace(); } finally { GlStateManager.enableRescaleNormal(); } GlStateManager.popMatrix(); return itemBlock; }
@Beta @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { TileEntityCauldron cauldron = getTileEntityCauldron(world, pos); ItemStack heldItem = player.getHeldItem(hand); CauldronActivatedEvent event; if (MinecraftForge.EVENT_BUS.post(event = new CauldronActivatedEvent(world, pos, state, player, hand, cauldron, heldItem, side, hitX, hitY, hitZ))) return event.getResult() == Result.DEFAULT; LinkedList<ItemStack> list = getTileEntityCauldron(world, pos).getContainer(); if (heldItem == null) { if (Always.isServer()) { if (list.size() > 0) { player.setHeldItem(hand, list.removeLast()); player.inventory.markDirty(); cauldron.onContainerChange(); cauldron.updateTracker(); } } } else { int i = getWaterLevel(world, pos, state); Item item = heldItem.getItem(); if (item == ModItems.botania$waterRod) { // if (i > -1 && i < 3 && ManaItemHandler.requestManaExact(heldItem, player, ItemWaterRod.COST, true)) // setWaterLevel(world, pos, state, 3); } else if (FluidUtil.getFluidHandler(heldItem) != null) { FluidUtil.interactWithFluidHandler(player, hand, cauldron.getTank()); } else if (!list.isEmpty()) { if (Always.isServer()) { boolean flag = false; int limit = heldItem.getMaxStackSize(); if (heldItem.getCount() >= limit) return false; for (Iterator<ItemStack> iterator = list.iterator(); iterator.hasNext();) { ItemStack citem = iterator.next(); if (InventoryHelper.canMergeItemStack(heldItem, citem)) if (heldItem.getCount() < limit) { heldItem.setCount(heldItem.getCount() + 1); iterator.remove(); flag = true; } else break; } if (flag) { player.inventory.markDirty(); cauldron.onContainerChange(); cauldron.updateTracker(); } } } else { if (item instanceof ItemArmor) { if (i > 0) { ItemArmor armor = (ItemArmor) item; if (armor.getArmorMaterial() == ItemArmor.ArmorMaterial.LEATHER && armor.hasColor(heldItem)) { armor.removeColor(heldItem); player.addStat(StatList.ARMOR_CLEANED); setWaterLevel(world, pos, state, i - 1); } } } else if (item instanceof ItemBanner) { if (i > 0 && TileEntityBanner.getPatterns(heldItem) > 0) { ItemStack banner = heldItem.copy(); banner.setCount(1); TileEntityBanner.removeBannerData(banner); InventoryHelper.addItemStackOrSetToHand(player, hand, heldItem, banner); player.addStat(StatList.BANNER_CLEANED); setWaterLevel(world, pos, state, i - 1); } } } } return true; }
/** * Creates a new Banner ItemStack that has all of the patterns in the NBTTagList written to * it. * * @param baseColor The base color for the banner. * @param patterns The patterns to apply. This can be null if you want no patterns. See * {@link #createPatternList(BannerLayer...)} for an easy way to make this. * @return The ItemStack that was created. All of the data is on the NBT. */ public static ItemStack createBanner (EnumDyeColor baseColor, NBTTagList patterns) { return ItemBanner.makeBanner(baseColor, patterns); }