类net.minecraft.inventory.Container源码实例Demo

下面列出了怎么用net.minecraft.inventory.Container的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: SkyblockAddons   文件: GuiContainerHook.java
public static void drawGradientRect(GuiContainer guiContainer, int left, int top, int right, int bottom, int startColor, int endColor, Slot theSlot) {
    if (freezeBackpack) return;
    SkyblockAddons main = SkyblockAddons.getInstance();
    Container container = Minecraft.getMinecraft().thePlayer.openContainer;
    if (theSlot != null) {
        int slotNum = theSlot.slotNumber + main.getInventoryUtils().getSlotDifference(container);
        main.getUtils().setLastHoveredSlot(slotNum);
        if (main.getConfigValues().isEnabled(Feature.LOCK_SLOTS) &&
                main.getUtils().isOnSkyblock() && main.getConfigValues().getLockedSlots().contains(slotNum)
                && (slotNum >= 9 || container instanceof ContainerPlayer && slotNum >= 5)) {
            drawRightGradientRect(guiContainer, left, top, right, bottom, OVERLAY_RED, OVERLAY_RED);
            return;
        }
    }
    drawRightGradientRect(guiContainer, left, top, right, bottom, startColor, endColor);
}
 
private void doTest(boolean inOrder, boolean enoughDamage)
{
    DamageableShapelessOreRecipe recipe = new DamageableShapelessOreRecipe(new ResourceLocation("group"),
                                                                           new int[] {enoughDamage ? 5 : 5000, 0},
                                                                           new ItemStack(Blocks.DIRT), new ItemStack(Items.WOODEN_SWORD), new ItemStack(Items.APPLE));
    InventoryCrafting inv = new InventoryCrafting(new Container()
    {
        @Override
        public boolean canInteractWith(EntityPlayer playerIn)
        {
            return false;
        }
    }, 3, 3);
    inv.setInventorySlotContents(inOrder ? 3 : 4, new ItemStack(Items.WOODEN_SWORD));
    inv.setInventorySlotContents(inOrder ? 4 : 3, new ItemStack(Items.APPLE));

    assertSame(enoughDamage, recipe.matches(inv, null));

    if (enoughDamage)
    {
        NonNullList<ItemStack> remaining = recipe.getRemainingItems(inv);
        assertSame(Items.WOODEN_SWORD, remaining.get(inOrder ? 3 : 4).getItem());
        assertEquals(5, remaining.get(inOrder ? 3 : 4).getItemDamage());
    }
}
 
源代码3 项目: NotEnoughItems   文件: FastTransferManager.java
private void generateSlotMap(Container container, ItemStack stack) {
    stack = stack.copy();
    stack.stackSize = 1;

    for (int slotNo = 0; slotNo < container.inventorySlots.size(); slotNo++) {
        if (slotZoneMap.containsKey(slotNo) || !container.getSlot(slotNo).isItemValid(stack))
            continue;

        HashSet<Integer> connectedSlots = new HashSet<Integer>();
        findConnectedSlots(container, slotNo, connectedSlots);

        LinkedList<Integer> zoneSlots = new LinkedList<Integer>(connectedSlots);
        Collections.sort(zoneSlots, new SlotPositionComparator(container));
        slotZones.add(zoneSlots);

        for (int i : zoneSlots) {
            slotZoneMap.put(i, slotZones.size() - 1);
        }
    }
}
 
源代码4 项目: CraftingKeys   文件: InputUtil.java
/**
 * Returns the Slot at the current Mouse Position. [FROM GUICONTAINER]
 *
 * @param guiContainer The (Inventory) Container to work with.
 * @return Returns the slot (or null)
 */
public static Slot getSlotAtMousePosition(GuiContainer guiContainer) {
    if (guiContainer != null) {
        Container container = guiContainer.inventorySlots;

        int x = getMouseX(guiContainer);
        int y = getMouseY(guiContainer);
        for (int k = 0; k < container.inventorySlots.size(); k++) {
            Slot slot = (Slot) container.inventorySlots.get(k);
            if (getIsMouseOverSlot(guiContainer, slot, x, y)) {
                return slot;
            }
        }
        return null;
    } else {
        Logger.debug("getSlotAtMousePosition(gui)", "guiContainer == null");
        return null;
    }
}
 
@Override
protected void processMessage(MessageContext ctx) {
    final Container container = this.player.openContainer;
    if (container instanceof ContainerSeedStorageBase) {
        final ContainerSeedStorageBase storage = ((ContainerSeedStorageBase) container);
        final TileEntity tileEntity = storage.getTile();
        if (tileEntity instanceof ISeedStorageControllable) {
            ((ISeedStorageControllable) tileEntity).clearLockedSeed();
        }
    }
}
 
源代码6 项目: NotEnoughItems   文件: FastTransferManager.java
public void restoreContainer(Container container, LinkedList<ItemStack> items) {
    for (int i = 0; i < container.inventorySlots.size(); i++) {
        container.getSlot(i).putStack(items.get(i));
    }

    container.slotClick(-999, 0, 0, Minecraft.getMinecraft().thePlayer);
}
 
源代码7 项目: BigReactors   文件: GuiReactorStatus.java
public GuiReactorStatus(Container container, TileEntityReactorPart tileEntityReactorPart) {
	super(container);
	
	ySize = 186;
	
	this.part = tileEntityReactorPart;
	this.reactor = part.getReactorController();
}
 
源代码8 项目: NotEnoughItems   文件: TaggedInventoryArea.java
public TaggedInventoryArea(String name, int first, int last, Container container)
{
    this.container = container;
    tagName = name;
    for(int i = first; i <= last; i++)
        slots.add(i);
}
 
源代码9 项目: TFC2   文件: PlayerInventory.java
protected static Slot addSlotToContainer(Container container, Slot par1Slot)
{
	par1Slot.slotNumber = container.inventorySlots.size();
	container.inventorySlots.add(par1Slot);
	container.inventoryItemStacks.add(ItemStack.EMPTY);
	return par1Slot;
}
 
源代码10 项目: Kettle   文件: CraftPlayer.java
@Override
public boolean setWindowProperty(Property prop, int value) {
    Container container = getHandle().openContainer;
    if (container.getBukkitView().getType() != prop.getType()) {
        return false;
    }
    getHandle().sendWindowProperty(container, prop.getId(), value);
    return true;
}
 
源代码11 项目: Translocators   文件: TileCraftingGrid.java
private InventoryCrafting getCraftMatrix() {
    InventoryCrafting craftMatrix = new InventoryCrafting(new Container()
    {
        @Override
        public boolean canInteractWith(EntityPlayer entityplayer) {
            return true;
        }
    }, 3, 3);

    for (int i = 0; i < 9; i++)
        craftMatrix.setInventorySlotContents(i, items[i]);

    return craftMatrix;
}
 
源代码12 项目: TFC2   文件: SlotSpecialCraftingOutput.java
public SlotSpecialCraftingOutput(Container container, EntityPlayer entityplayer, IInventory iinventory, IInventory iinventory1, int i, int j, int k)
{
	super(iinventory1, i, j, k);
	this.container = container;
	thePlayer = entityplayer;
	craftMatrix = iinventory;
}
 
源代码13 项目: TFC2   文件: PlayerInventory.java
public static void loadBagInventory(ItemStack is, Container c)
{
	if(is != null && is.hasTagCompound())
	{
		NBTTagList nbttaglist = is.getTagCompound().getTagList("Items", 10);
		containerInv = new InventoryCrafting(c, 4, 2);
		for(int i = 0; i < nbttaglist.tagCount(); i++)
		{
			NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
			byte byte0 = nbttagcompound1.getByte("Slot");
			if(byte0 >= 0 && byte0 < 8)
				containerInv.setInventorySlotContents(byte0, new ItemStack(nbttagcompound1));
		}
	}
}
 
源代码14 项目: AdvancedRocketry   文件: ModulePlanetSelector.java
@Override
public void sendChanges(Container container, IContainerListener crafter,
		int variableId, int localId) {
	for(ModuleBase module : staticModuleList) {
		if(localId >= 0 && localId < module.numberOfChangesToSend()) {
			module.sendChanges(container, crafter, variableId, localId);
			return;
		}

		localId -= module.numberOfChangesToSend();
	}
}
 
源代码15 项目: BigReactors   文件: GuiCyaniteReprocessor.java
public GuiCyaniteReprocessor(Container container, TileEntityCyaniteReprocessor entity) {
	super(container, entity);
	
	_entity = entity;
	xSize = 245;
	ySize = 175;
}
 
源代码16 项目: TFC2   文件: PlayerInventory.java
private static void addToolbarSlots(Container container, InventoryPlayer inventory, int x, int y, boolean freezeSlot) 
{
	for(int j = 0; j < 9; ++j)
	{
		if(freezeSlot && j == inventory.currentItem)
			addSlotToContainer(container, new SlotForShowOnly(inventory, j, x + j * 18, y+58));
		else
			addSlotToContainer(container, new Slot(inventory, j, x + j * 18, y+58));
	}
}
 
源代码17 项目: Signals   文件: PacketUpdateGui.java
@Override
public void handleClientSide(EntityPlayer player){

    Container container = player.openContainer;
    if(container instanceof ContainerBase) {
        ((ContainerBase<?>)container).updateField(syncId, value);
    }
}
 
源代码18 项目: PneumaticCraft   文件: PacketUpdateGui.java
@Override
public void handleClientSide(PacketUpdateGui message, EntityPlayer player){
    Container container = player.openContainer;
    if(container instanceof ContainerPneumaticBase) {
        ((ContainerPneumaticBase)container).updateField(message.syncId, message.value);
    }
}
 
源代码19 项目: NotEnoughItems   文件: GuiContainer.java
/**
 * Called when a mouse button is pressed and the mouse is moved around. Parameters are : mouseX, mouseY,
 * lastButtonClicked & timeSinceMouseClick.
 */
protected void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) {
    Slot slot = this.getSlotAtPosition(mouseX, mouseY);
    ItemStack itemstack = this.mc.thePlayer.inventory.getItemStack();

    manager.mouseDragged(mouseX, mouseY, clickedMouseButton, timeSinceLastClick);

    if (this.clickedSlot != null && this.mc.gameSettings.touchscreen) {
        if (clickedMouseButton == 0 || clickedMouseButton == 1) {
            if (this.draggedStack == null) {
                if (slot != this.clickedSlot && this.clickedSlot.getStack() != null) {
                    this.draggedStack = this.clickedSlot.getStack().copy();
                }
            } else if (this.draggedStack.stackSize > 1 && slot != null && Container.canAddItemToSlot(slot, this.draggedStack, false)) {
                long i = Minecraft.getSystemTime();

                if (this.currentDragTargetSlot == slot) {
                    if (i - this.dragItemDropDelay > 500L) {
                        managerHandleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, 0, ClickType.PICKUP);
                        managerHandleMouseClick(slot, slot.slotNumber, 1, ClickType.PICKUP);
                        managerHandleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, 0, ClickType.PICKUP);
                        this.dragItemDropDelay = i + 750L;
                        --this.draggedStack.stackSize;
                    }
                } else {
                    this.currentDragTargetSlot = slot;
                    this.dragItemDropDelay = i;
                }
            }
        }
    } else if (this.dragSplitting && slot != null && itemstack != null && itemstack.stackSize > this.dragSplittingSlots.size() && Container.canAddItemToSlot(slot, itemstack, true) && slot.isItemValid(itemstack) && this.inventorySlots.canDragIntoSlot(slot)) {
        this.dragSplittingSlots.add(slot);
        this.updateActivePotionEffects();
    }
}
 
源代码20 项目: NotEnoughItems   文件: FastTransferManager.java
public static int findSlotWithItem(Container container, ItemStack teststack) {
    for (int slotNo = 0; slotNo < container.inventorySlots.size(); slotNo++) {
        ItemStack stack = container.getSlot(slotNo).getStack();
        if (!stack.isEmpty() && areStacksSameType(stack, teststack)) {
            return slotNo;
        }
    }
    return -1;
}
 
源代码21 项目: CraftingKeys   文件: AnvilManager.java
/**
 * Returns a Anvil Manager Instance operating on the given container
 *
 * @param container A container from a GUI
 * @return manager-singleton
 */
public static AnvilManager getInstance(Container container) {
    if (instance == null) {
        instance = new AnvilManager(container);
    } else {
        instance.container = container;
    }
    return instance;
}
 
源代码22 项目: CraftingKeys   文件: VillagerManager.java
/**
 * Returns a Villager Manager Instance operating on the given container
 *
 * @param container A container from a GUI
 * @return manager-singleton
 */
public static VillagerManager getInstance(Container container) {
    if (instance == null) {
        instance = new VillagerManager(container);
    } else {
        instance.container = container;
    }
    return instance;
}
 
源代码23 项目: BigReactors   文件: GuiReactorRedNetPort.java
public GuiReactorRedNetPort(Container container, TileEntityReactorRedNetPort redNetPort) {
	super(container);
	port = redNetPort;
	
	xSize = 255;
	ySize = 214;
	
	_guiBackground = new ResourceLocation(BigReactors.GUI_DIRECTORY + "RedNetPort.png");
}
 
源代码24 项目: WearableBackpacks   文件: SlotBackpackWrapper.java
/** When a backpack is equipped, go through the currently open container, see if
 *  any slot contains the player's equipped backpack. If so, replace that slot with
 *  a wrapper that prevents the backpack from being unequipped though normal means. */
public static void replace(EntityPlayer player, ItemStack backpack) {
	Container container = player.openContainer;
	if (container == null) return;
	for (Slot slot : container.inventorySlots) {
		if (slot.getStack() != backpack) continue;
		if (slot instanceof SlotBackpackWrapper) continue;
		
		Slot newSlot = new SlotBackpackWrapper(slot);
		newSlot.slotNumber = slot.slotNumber;
		container.inventorySlots.set(slot.slotNumber, newSlot);
		// Keep going, there may be more slots to fix!
	}
}
 
源代码25 项目: NotEnoughItems   文件: NEIClientUtils.java
public static void deleteItemsOfType(ItemStack type) {
    Container c = getGuiContainer().inventorySlots;
    for (int i = 0; i < c.inventorySlots.size(); i++) {
        Slot slot = c.getSlot(i);
        if (slot == null)
            continue;

        ItemStack stack = slot.getStack();
        if (stack != null && stack.getItem() == type.getItem() && stack.getItemDamage() == type.getItemDamage()) {
            setSlotContents(i, null, true);
            slot.putStack(null);
        }
    }
}
 
源代码26 项目: NotEnoughItems   文件: GuiContainer.java
private void updateDragSplitting()
{
    ItemStack itemstack = this.mc.thePlayer.inventory.getItemStack();

    if (itemstack != null && this.dragSplitting)
    {
        this.dragSplittingRemnant = itemstack.stackSize;
        ItemStack itemstack1;
        int i;

        for (Iterator iterator = this.dragSplittingSlots.iterator(); iterator.hasNext(); this.dragSplittingRemnant -= itemstack1.stackSize - i)
        {
            Slot slot = (Slot)iterator.next();
            itemstack1 = itemstack.copy();
            i = slot.getStack() == null ? 0 : slot.getStack().stackSize;
            Container.computeStackSize(this.dragSplittingSlots, this.dragSplittingLimit, itemstack1, i);

            if (itemstack1.stackSize > itemstack1.getMaxStackSize())
            {
                itemstack1.stackSize = itemstack1.getMaxStackSize();
            }

            if (itemstack1.stackSize > slot.getItemStackLimit(itemstack1))
            {
                itemstack1.stackSize = slot.getItemStackLimit(itemstack1);
            }
        }
    }
}
 
源代码27 项目: NOVA-Core   文件: MCCraftingGrid.java
private MCCraftingGrid(InventoryCrafting inventory) {
	this.inventory = inventory;
	width = height = (int) Math.sqrt(inventory.getSizeInventory());
	items = new nova.core.item.Item[width * height];
	original = new ItemStack[items.length];
	itemCount = 0;
	update();

	Container container = ReflectionUtil.getCraftingContainer(inventory);
	if (container != null) {
		@SuppressWarnings("unchecked")
		List<Slot> slots = container.inventorySlots;

		EntityPlayer playerOrig = null;
		Optional<Player> player = Optional.empty();

		for (Slot slot : slots) {
			if (slot instanceof SlotCrafting) {
				playerOrig = ReflectionUtil.getCraftingSlotPlayer((SlotCrafting) slot);
				player = WrapUtility.getNovaPlayer(playerOrig);

				if (player.isPresent()) {
					break;
				}
			}
		}

		this.playerOrig = playerOrig;
		this.player = player;
	} else {
		playerOrig = null;
		player = Optional.empty();
	}
}
 
源代码28 项目: Chisel-2   文件: BlockPresent.java
@Override
public int getComparatorInputOverride(World world, int x, int y, int z, int strength) {
	TileEntity te = world.getTileEntity(x, y, z);
	if (te instanceof TileEntityPresent) {
		return Container.calcRedstoneFromInventory((TileEntityPresent) te);
	}
	return 0;
}
 
源代码29 项目: NOVA-Core   文件: ReflectionUtil.java
public static Container getCraftingContainer(InventoryCrafting inventory) {
	try {
		return (Container) INVENTORYCRAFTING_EVENTHANDLER.get(inventory);
	} catch (IllegalAccessException ex) {
		Game.logger().error("could not get inventory eventhandler");
		return null;
	}
}
 
源代码30 项目: NOVA-Core   文件: MCCraftingGrid.java
private MCCraftingGrid(InventoryCrafting inventory) {
	this.inventory = inventory;
	width = height = (int) Math.sqrt(inventory.getSizeInventory());
	items = new nova.core.item.Item[width * height];
	original = new net.minecraft.item.ItemStack[items.length];
	itemCount = 0;
	update();

	Container container = ReflectionUtil.getCraftingContainer(inventory);
	if (container != null) {
		@SuppressWarnings("unchecked")
		List<Slot> slots = container.inventorySlots;

		EntityPlayer playerOrig = null;
		Optional<Player> player = Optional.empty();

		for (Slot slot : slots) {
			if (slot instanceof SlotCrafting) {
				playerOrig = ReflectionUtil.getCraftingSlotPlayer((SlotCrafting) slot);
				player = WrapUtility.getNovaPlayer(playerOrig);

				if (player.isPresent()) {
					break;
				}
			}
		}

		this.playerOrig = playerOrig;
		this.player = player;
	} else {
		playerOrig = null;
		player = Optional.empty();
	}
}