Java源码示例:net.minecraft.block.HopperBlock

示例1
public void drawShulkerToolTip(Slot slot, int mX, int mY) {
	if (!(slot.getStack().getItem() instanceof BlockItem)) return;
	if (!(((BlockItem) slot.getStack().getItem()).getBlock() instanceof ShulkerBoxBlock)
			 && !(((BlockItem) slot.getStack().getItem()).getBlock() instanceof ChestBlock)
			 && !(((BlockItem) slot.getStack().getItem()).getBlock() instanceof DispenserBlock)
			 && !(((BlockItem) slot.getStack().getItem()).getBlock() instanceof HopperBlock)) return;
	
	List<ItemStack> items = ItemContentUtils.getItemsInContainer(slot.getStack());
	
	Block block = ((BlockItem) slot.getStack().getItem()).getBlock();
	
	int count = block instanceof HopperBlock || block instanceof DispenserBlock ? 18 : 0;
	if (block instanceof HopperBlock) renderTooltipBox(mX, mY - 21, 13, 82, true);
	else if (block instanceof DispenserBlock) renderTooltipBox(mX, mY - 21, 13, 150, true);
	else renderTooltipBox(mX, mY - 55, 47, 150, true);
	for (ItemStack i: items) {
		if (count > 26) break;
		int x = mX + 10 + (17 * (count % 9));
		int y = mY - 69 + (17 * (count / 9));
		
		mc.getItemRenderer().renderGuiItem(i, x, y);
	    mc.getItemRenderer().renderGuiItemOverlay(mc.textRenderer, i, x, y, i.getCount() > 1 ? i.getCount() + "" : "");
		count++;
	}
}
 
示例2
public void drawShulkerToolTip(Slot slot, int mX, int mY) {
	if (!(slot.getStack().getItem() instanceof BlockItem)) return;
	if (!(((BlockItem) slot.getStack().getItem()).getBlock() instanceof ShulkerBoxBlock)
			 && !(((BlockItem) slot.getStack().getItem()).getBlock() instanceof ChestBlock)
			 && !(((BlockItem) slot.getStack().getItem()).getBlock() instanceof DispenserBlock)
			 && !(((BlockItem) slot.getStack().getItem()).getBlock() instanceof HopperBlock)) return;
	
	List<ItemStack> items = ItemContentUtils.getItemsInContainer(slot.getStack());
	
	Block block = ((BlockItem) slot.getStack().getItem()).getBlock();
	
	int count = block instanceof HopperBlock || block instanceof DispenserBlock ? 18 : 0;
	if (block instanceof HopperBlock) renderTooltipBox(mX, mY - 21, 13, 82, true);
	else if (block instanceof DispenserBlock) renderTooltipBox(mX, mY - 21, 13, 150, true);
	else renderTooltipBox(mX, mY - 55, 47, 150, true);
	for (ItemStack i: items) {
		if (count > 26) break;
		int x = mX + 10 + (17 * (count % 9));
		int y = mY - 69 + (17 * (count / 9));
		
		mc.getItemRenderer().renderGuiItemIcon(i, x, y);
	    mc.getItemRenderer().renderGuiItemOverlay(mc.textRenderer, i, x, y, i.getCount() > 1 ? i.getCount() + "" : "");
		count++;
	}
}
 
示例3
public void drawShulkerToolTip(Slot slot, int mX, int mY) {
	if (!(slot.getStack().getItem() instanceof BlockItem)) return;
	if (!(((BlockItem) slot.getStack().getItem()).getBlock() instanceof ShulkerBoxBlock)
			 && !(((BlockItem) slot.getStack().getItem()).getBlock() instanceof ChestBlock)
			 && !(((BlockItem) slot.getStack().getItem()).getBlock() instanceof DispenserBlock)
			 && !(((BlockItem) slot.getStack().getItem()).getBlock() instanceof HopperBlock)) return;
	
	List<ItemStack> items = ItemContentUtils.getItemsInContainer(slot.getStack());
	
	Block block = ((BlockItem) slot.getStack().getItem()).getBlock();
	
	int count = block instanceof HopperBlock || block instanceof DispenserBlock ? 18 : 0;
	if (block instanceof HopperBlock) renderTooltipBox(mX, mY - 21, 13, 82, true);
	else if (block instanceof DispenserBlock) renderTooltipBox(mX, mY - 21, 13, 150, true);
	else renderTooltipBox(mX, mY - 55, 47, 150, true);
	for (ItemStack i: items) {
		if (count > 26) break;
		int x = mX + 10 + (17 * (count % 9));
		int y = mY - 69 + (17 * (count / 9));
		
		mc.getItemRenderer().renderGuiItem(i, x, y);
	    mc.getItemRenderer().renderGuiItemOverlay(mc.textRenderer, i, x, y, i.getCount() > 1 ? i.getCount() + "" : "");
		count++;
	}
}
 
示例4
@Inject(method = "insert", at = @At("HEAD"), cancellable = true)
private void onInsert(CallbackInfoReturnable<Boolean> cir)
{
    if (CarpetSettings.hopperCounters) {
        DyeColor wool_color = WoolTool.getWoolColorAtPosition(
                getWorld(),
                new BlockPos(getHopperX(), getHopperY(), getHopperZ()).offset(this.getCachedState().get(HopperBlock.FACING)));
        if (wool_color != null)
        {
            for (int i = 0; i < this.getInvSize(); ++i)
            {
                if (!this.getInvStack(i).isEmpty())
                {
                    ItemStack itemstack = this.getInvStack(i);//.copy();
                    HopperCounter.COUNTERS.get(wool_color).add(this.getWorld().getServer(), itemstack);
                    this.setInvStack(i, ItemStack.EMPTY);
                }
            }
            cir.setReturnValue(true);
        }
    }
}
 
示例5
@Inject(method = "insert", at = @At("HEAD"), cancellable = true)
public void insert(CallbackInfoReturnable<Boolean> info) {
    World world = (World) this.getWorld();
    Position position = (Position) getPos();
    if (world == null) {
        info.setReturnValue(false);
        return;
    }
    BlockState state = (BlockState) getCachedState();
    Direction direction = WrappingUtil.convert(getCachedState().get(HopperBlock.FACING));
    Inventory hopperInventory = state.getComponent(world, position, Components.INVENTORY_COMPONENT).orElse(null);
    if (hopperInventory != null) {
        Position offset = position.offset(direction);
        BlockState other = world.getBlockState(offset);
        Mono<Inventory> mono = other.getComponent(world, offset, Components.INVENTORY_COMPONENT, direction.getOppositeDirection());
        if (mono.isPresent()) {
            Inventory inputInv = mono.get();
            for (int slot : hopperInventory) {
                ItemStack input = hopperInventory.extract(slot, 1, true);
                if (!input.isEmpty()) {
                    if (inputInv.insert(input, true).isEmpty()) {
                        inputInv.insert(hopperInventory.extract(slot, 1));
                        info.setReturnValue(true);
                        return;
                    }
                }
            }
            info.setReturnValue(false);
        }
    }
}
 
示例6
@Override
public void onCommand(String command, String[] args) throws Exception {
	ItemStack item = mc.player.inventory.getMainHandStack();
	
	if (!(item.getItem() instanceof BlockItem)) {
		BleachLogger.errorMessage("Must be holding a containter to peek.");
		return;
	}
	
	if (!(((BlockItem) item.getItem()).getBlock() instanceof ShulkerBoxBlock)
			 && !(((BlockItem) item.getItem()).getBlock() instanceof ChestBlock)
			 && !(((BlockItem) item.getItem()).getBlock() instanceof DispenserBlock)
			 && !(((BlockItem) item.getItem()).getBlock() instanceof HopperBlock)) {
		BleachLogger.errorMessage("Must be holding a containter to peek.");
		return;
	}
	
	List<ItemStack> items = ItemContentUtils.getItemsInContainer(item);
	
	BasicInventory inv = new BasicInventory(items.toArray(new ItemStack[27]));
	
	BleachQueue.queue.add(() -> {
		mc.openScreen(new ShulkerBoxScreen(
				new ShulkerBoxContainer(420, mc.player.inventory, inv),
				mc.player.inventory,
				item.getName()));
	});
}
 
示例7
@SubscribeEvent
public void onGuiDraw(GuiScreenEvent.DrawScreenEvent.Post event) {
	if (!(event.getGui() instanceof ContainerScreen<?>)) return;
	ContainerScreen<?> screen = (ContainerScreen<?>) event.getGui();
	
	if (screen.getSlotUnderMouse() == null) return;
	if (!(screen.getSlotUnderMouse().getStack().getItem() instanceof BlockItem)) return;
	if (!(((BlockItem) screen.getSlotUnderMouse().getStack().getItem()).getBlock() instanceof ContainerBlock)) return;
	
	NonNullList<ItemStack> items = NonNullList.withSize(27, new ItemStack(Items.AIR));
	CompoundNBT nbt = screen.getSlotUnderMouse().getStack().getTag();
	
	if (nbt != null && nbt.contains("BlockEntityTag")) {
		CompoundNBT itemnbt = nbt.getCompound("BlockEntityTag");
		if (itemnbt.contains("Items")) ItemStackHelper.loadAllItems(itemnbt, items);
	}
	
	GlStateManager.translatef(0.0F, 0.0F, 500.0F);
	Block block = ((BlockItem) screen.getSlotUnderMouse().getStack().getItem()).getBlock();
	
	int count = block instanceof HopperBlock || block instanceof DispenserBlock ? 18 : 0;
	for (ItemStack i: items) {
		if (count > 26) break;
		int x = event.getMouseX() + 8 + (17 * (count % 9));
		int y = event.getMouseY() - 68 + (17 * (count / 9));
		
		if (i.getItem() != Items.AIR) {
			Screen.fill(x, y, x+17, y+17, 0x90000000);
			Screen.fill(x, y, x+17, y+1, 0xff000000); Screen.fill(x, y+1, x+1, y+17, 0xff000000);
			Screen.fill(x+16, y+1, x+17, y+17, 0xff000000); Screen.fill(x+1, y+16, x+17, y+17, 0xff000000);
		}
		
	    mc.getItemRenderer().renderItemAndEffectIntoGUI(i, x, y);
	    mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, i, x, y, i.getCount() > 1 ? i.getCount() + "" : "");
		count++;
	}
}
 
示例8
@Override
public void onCommand(String command, String[] args) throws Exception {
	ItemStack item = mc.player.inventory.getMainHandStack();
	
	if (!(item.getItem() instanceof BlockItem)) {
		BleachLogger.errorMessage("Must be holding a containter to peek.");
		return;
	}
	
	if (!(((BlockItem) item.getItem()).getBlock() instanceof ShulkerBoxBlock)
			 && !(((BlockItem) item.getItem()).getBlock() instanceof ChestBlock)
			 && !(((BlockItem) item.getItem()).getBlock() instanceof DispenserBlock)
			 && !(((BlockItem) item.getItem()).getBlock() instanceof HopperBlock)) {
		BleachLogger.errorMessage("Must be holding a containter to peek.");
		return;
	}
	
	List<ItemStack> items = ItemContentUtils.getItemsInContainer(item);
	
	SimpleInventory inv = new SimpleInventory(items.toArray(new ItemStack[27]));
	
	BleachQueue.queue.add(() -> {
		mc.openScreen(new ShulkerBoxScreen(
				new ShulkerBoxScreenHandler(420, mc.player.inventory, inv),
				mc.player.inventory,
				item.getName()));
	});
}
 
示例9
@Override
public void onCommand(String command, String[] args) throws Exception {
	ItemStack item = mc.player.inventory.getMainHandStack();
	
	if (!(item.getItem() instanceof BlockItem)) {
		BleachLogger.errorMessage("Must be holding a containter to peek.");
		return;
	}
	
	if (!(((BlockItem) item.getItem()).getBlock() instanceof ShulkerBoxBlock)
			 && !(((BlockItem) item.getItem()).getBlock() instanceof ChestBlock)
			 && !(((BlockItem) item.getItem()).getBlock() instanceof DispenserBlock)
			 && !(((BlockItem) item.getItem()).getBlock() instanceof HopperBlock)) {
		BleachLogger.errorMessage("Must be holding a containter to peek.");
		return;
	}
	
	List<ItemStack> items = ItemContentUtils.getItemsInContainer(item);
	
	BasicInventory inv = new BasicInventory(items.toArray(new ItemStack[27]));
	
	BleachQueue.queue.add(() -> {
		mc.openScreen(new ShulkerBoxScreen(
				new ShulkerBoxContainer(420, mc.player.inventory, inv),
				mc.player.inventory,
				item.getName()));
	});
}
 
示例10
public static boolean flip_block(BlockState state, World world, PlayerEntity player, Hand hand, BlockHitResult hit)
{
    Block block = state.getBlock();
    BlockPos pos = hit.getBlockPos();
    Vec3d hitVec = hit.getPos().subtract(pos.getX(), pos.getY(), pos.getZ());
    Direction facing = hit.getSide();
    BlockState newState = null;
    if ( (block instanceof GlazedTerracottaBlock) || (block instanceof AbstractRedstoneGateBlock) || (block instanceof RailBlock) ||
         (block instanceof TrapdoorBlock)         || (block instanceof LeverBlock)         || (block instanceof FenceGateBlock))
    {
        newState = state.rotate(BlockRotation.CLOCKWISE_90);
    }
    else if ((block instanceof ObserverBlock) || (block instanceof EndRodBlock))
    {
        newState = state.with(FacingBlock.FACING, (Direction) state.get(FacingBlock.FACING).getOpposite());
    }
    else if (block instanceof DispenserBlock)
    {
        newState = state.with(DispenserBlock.FACING, state.get(DispenserBlock.FACING).getOpposite());
    }
    else if (block instanceof PistonBlock)
    {
        if (!(state.get(PistonBlock.EXTENDED)))
            newState = state.with(FacingBlock.FACING, state.get(FacingBlock.FACING).getOpposite());
    }
    else if (block instanceof SlabBlock)
    {
        if (((SlabBlock) block).hasSidedTransparency(state))
        {
            newState =  state.with(SlabBlock.TYPE, state.get(SlabBlock.TYPE) == SlabType.TOP ? SlabType.BOTTOM : SlabType.TOP);
        }
    }
    else if (block instanceof HopperBlock)
    {
        if ((Direction)state.get(HopperBlock.FACING) != Direction.DOWN)
        {
            newState =  state.with(HopperBlock.FACING, state.get(HopperBlock.FACING).rotateYClockwise());
        }
    }
    else if (block instanceof StairsBlock)
    {
        //LOG.error(String.format("hit with facing: %s, at side %.1fX, X %.1fY, Y %.1fZ",facing, hitX, hitY, hitZ));
        if ((facing == Direction.UP && hitVec.y == 1.0f) || (facing == Direction.DOWN && hitVec.y == 0.0f))
        {
            newState =  state.with(StairsBlock.HALF, state.get(StairsBlock.HALF) == BlockHalf.TOP ? BlockHalf.BOTTOM : BlockHalf.TOP );
        }
        else
        {
            boolean turn_right;
            if (facing == Direction.NORTH)
            {
                turn_right = (hitVec.x <= 0.5);
            }
            else if (facing == Direction.SOUTH)
            {
                turn_right = !(hitVec.x <= 0.5);
            }
            else if (facing == Direction.EAST)
            {
                turn_right = (hitVec.z <= 0.5);
            }
            else if (facing == Direction.WEST)
            {
                turn_right = !(hitVec.z <= 0.5);
            }
            else
            {
                return false;
            }
            if (turn_right)
            {
                newState = state.rotate(BlockRotation.COUNTERCLOCKWISE_90);
            }
            else
            {
                newState = state.rotate(BlockRotation.CLOCKWISE_90);
            }
        }
    }
    else
    {
        return false;
    }
    if (newState != null)
    {
        world.setBlockState(pos, newState, 2 | 1024);
        world.checkBlockRerender(pos, state, newState);
        return true;
    }
    return false;
}