@SideOnly(Side.CLIENT) @Override public void renderHUD(Minecraft mc, ScaledResolution res) { super.renderHUD(mc, res); IBlockState filter = getUnderlyingBlock(); ItemStack recieverStack = new ItemStack( Item.getItemFromBlock(filter.getBlock()), 1, filter.getBlock().getMetaFromState(filter)); int color = getColor(); GlStateManager.enableBlend(); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); if (recieverStack.getItem() != null) { String stackName = recieverStack.getDisplayName(); int width = 16 + mc.fontRendererObj.getStringWidth(stackName) / 2; int x = res.getScaledWidth() / 2 - width; int y = res.getScaledHeight() / 2 + 30; mc.fontRendererObj.drawStringWithShadow(stackName, x + 20, y + 5, color); RenderHelper.enableGUIStandardItemLighting(); mc.getRenderItem().renderItemAndEffectIntoGUI(recieverStack, x, y); RenderHelper.disableStandardItemLighting(); } GlStateManager.disableLighting(); GlStateManager.disableBlend(); }
@Override public void onUpdate() { super.onUpdate(); if (supertile.getWorld().isRemote) { if (!existingFlowers.contains(this)) { existingFlowers.add(this); } } }
@Override public void onUpdate() { super.onUpdate(); if (!existingFlowers.contains(this)) { existingFlowers.add(this); if (!registered) { MinecraftForge.EVENT_BUS.register(new EndermanIntercepter()); registered = true; } } }
@Override public void onUpdate() { super.onUpdate(); if (supertile.getWorld().isRemote || redstoneSignal > 0) return; if (ticksExisted % 10 == 0) { IBlockState filter = getUnderlyingBlock(); boolean scanned = false; List<BlockPos> validPositions = new ArrayList<>(); int rangePlace = getRange(); int rangePlaceY = getRangeY(); BlockPos pos = supertile.getPos(); List<EntityItem> items = supertile .getWorld() .getEntitiesWithinAABB( EntityItem.class, new AxisAlignedBB( supertile.getPos().add(-RANGE, -RANGE_Y, -RANGE), supertile.getPos().add(RANGE + 1, RANGE_Y + 1, RANGE + 1))); int slowdown = getSlowdownFactor(); for (EntityItem item : items) { int age; try { age = (int) MethodHandles.itemAge_getter.invokeExact(item); } catch (Throwable t) { continue; } if (age < (60 + slowdown) || item.isDead) continue; ItemStack stack = item.getEntityItem(); Item stackItem = stack.getItem(); if (stackItem instanceof ItemBlock || stackItem instanceof ItemBlockSpecial || stackItem instanceof ItemRedstone || stackItem instanceof IFlowerPlaceable) { if (!scanned) { for (BlockPos pos_ : BlockPos.getAllInBox( pos.add(-rangePlace, -rangePlaceY, -rangePlace), pos.add(rangePlace, rangePlaceY, rangePlace))) { IBlockState stateAbove = supertile.getWorld().getBlockState(pos_.up()); Block blockAbove = stateAbove.getBlock(); BlockPos up = pos_.up(); if (filter == supertile.getWorld().getBlockState(pos_) && (blockAbove.isAir(stateAbove, supertile.getWorld(), up) || blockAbove.isReplaceable(supertile.getWorld(), up))) validPositions.add(up); } scanned = true; } if (!validPositions.isEmpty()) { BlockPos coords = validPositions.get(supertile.getWorld().rand.nextInt(validPositions.size())); IBlockState stateToPlace = null; if (stackItem instanceof IFlowerPlaceable) stateToPlace = ((IFlowerPlaceable) stackItem).getBlockToPlaceByFlower(stack, this, coords); if (stackItem instanceof ItemBlock) stateToPlace = ((ItemBlock) stackItem) .block.getStateFromMeta(stackItem.getMetadata(stack.getItemDamage())); else if (stackItem instanceof ItemBlockSpecial) stateToPlace = ((Block) ReflectionHelper.getPrivateValue( ItemBlockSpecial.class, (ItemBlockSpecial) stackItem, LibObfuscation.REED_ITEM)) .getDefaultState(); else if (stackItem instanceof ItemRedstone) stateToPlace = Blocks.REDSTONE_WIRE.getDefaultState(); if (stateToPlace != null) { if (stateToPlace.getBlock().canPlaceBlockAt(supertile.getWorld(), coords)) { supertile.getWorld().setBlockState(coords, stateToPlace, 1 | 2); if (ConfigHandler.blockBreakParticles) supertile.getWorld().playEvent(2001, coords, Block.getStateId(stateToPlace)); validPositions.remove(coords); TileEntity tile = supertile.getWorld().getTileEntity(coords); if (tile != null && tile instanceof ISubTileContainer) { ISubTileContainer container = (ISubTileContainer) tile; String subtileName = ItemBlockSpecialFlower.getType(stack); container.setSubTile(subtileName); SubTileEntity subtile = container.getSubTile(); subtile.onBlockPlacedBy( supertile.getWorld(), coords, supertile.getWorld().getBlockState(coords), null, stack); } if (stackItem instanceof IFlowerPlaceable) ((IFlowerPlaceable) stackItem).onBlockPlacedByFlower(stack, this, coords); stack.stackSize--; if (stack.stackSize <= 0) item.setDead(); if (mana > 1) mana--; return; } } } } } } }