mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-02-05 05:30:04 +00:00
Merge branch 'master' into mc-1.14.x
This commit is contained in:
commit
f7781defe5
@ -8,7 +8,6 @@ package dan200.computercraft.shared.common;
|
|||||||
|
|
||||||
import dan200.computercraft.shared.network.container.ContainerData;
|
import dan200.computercraft.shared.network.container.ContainerData;
|
||||||
import dan200.computercraft.shared.network.container.HeldItemContainerData;
|
import dan200.computercraft.shared.network.container.HeldItemContainerData;
|
||||||
import dan200.computercraft.shared.util.InventoryUtil;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
import net.minecraft.inventory.container.Container;
|
import net.minecraft.inventory.container.Container;
|
||||||
@ -33,7 +32,7 @@ public class ContainerHeldItem extends Container
|
|||||||
super( type, id );
|
super( type, id );
|
||||||
|
|
||||||
this.hand = hand;
|
this.hand = hand;
|
||||||
stack = InventoryUtil.copyItem( player.getHeldItem( hand ) );
|
stack = player.getHeldItem( hand ).copy();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ContainerHeldItem createPrintout( int id, PlayerInventory inventory, HeldItemContainerData data )
|
private static ContainerHeldItem createPrintout( int id, PlayerInventory inventory, HeldItemContainerData data )
|
||||||
|
@ -237,7 +237,7 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
m_inventoryChanged = false;
|
m_inventoryChanged = false;
|
||||||
for( int n = 0; n < getSizeInventory(); n++ )
|
for( int n = 0; n < getSizeInventory(); n++ )
|
||||||
{
|
{
|
||||||
m_previousInventory.set( n, InventoryUtil.copyItem( getStackInSlot( n ) ) );
|
m_previousInventory.set( n, getStackInSlot( n ).copy() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -286,7 +286,7 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
if( slot < getSizeInventory() )
|
if( slot < getSizeInventory() )
|
||||||
{
|
{
|
||||||
m_inventory.set( slot, ItemStack.read( tag ) );
|
m_inventory.set( slot, ItemStack.read( tag ) );
|
||||||
m_previousInventory.set( slot, InventoryUtil.copyItem( m_inventory.get( slot ) ) );
|
m_previousInventory.set( slot, m_inventory.get( slot ).copy() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ import dan200.computercraft.shared.turtle.blocks.TileTurtle;
|
|||||||
import dan200.computercraft.shared.util.Colour;
|
import dan200.computercraft.shared.util.Colour;
|
||||||
import dan200.computercraft.shared.util.Holiday;
|
import dan200.computercraft.shared.util.Holiday;
|
||||||
import dan200.computercraft.shared.util.HolidayUtil;
|
import dan200.computercraft.shared.util.HolidayUtil;
|
||||||
|
import dan200.computercraft.shared.util.InventoryDelegate;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
@ -43,6 +44,7 @@ import net.minecraft.util.math.Vec3d;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
|
import net.minecraftforge.items.wrapper.InvWrapper;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -68,6 +70,9 @@ public class TurtleBrain implements ITurtleAccess
|
|||||||
private ComputerProxy m_proxy;
|
private ComputerProxy m_proxy;
|
||||||
private GameProfile m_owningPlayer;
|
private GameProfile m_owningPlayer;
|
||||||
|
|
||||||
|
private final IInventory m_inventory = (InventoryDelegate) () -> m_owner;
|
||||||
|
private final IItemHandlerModifiable m_inventoryWrapper = new InvWrapper( m_inventory );
|
||||||
|
|
||||||
private Queue<TurtleCommandQueueEntry> m_commandQueue = new ArrayDeque<>();
|
private Queue<TurtleCommandQueueEntry> m_commandQueue = new ArrayDeque<>();
|
||||||
private int m_commandsIssued = 0;
|
private int m_commandsIssued = 0;
|
||||||
|
|
||||||
@ -439,14 +444,14 @@ public class TurtleBrain implements ITurtleAccess
|
|||||||
@Override
|
@Override
|
||||||
public IInventory getInventory()
|
public IInventory getInventory()
|
||||||
{
|
{
|
||||||
return m_owner;
|
return m_inventory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public IItemHandlerModifiable getItemHandler()
|
public IItemHandlerModifiable getItemHandler()
|
||||||
{
|
{
|
||||||
return m_owner.getItemHandler();
|
return m_inventoryWrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,120 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ComputerCraft - http://www.computercraft.info
|
||||||
|
* Copyright Daniel Ratcliffe, 2011-2019. Do not distribute without permission.
|
||||||
|
* Send enquiries to dratcliffe@gmail.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
package dan200.computercraft.shared.util;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.inventory.IInventory;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a delegate over inventories.
|
||||||
|
*
|
||||||
|
* This may be used both on {@link net.minecraft.tileentity.TileEntity}s to redirect the inventory to another tile,
|
||||||
|
* and by other interfaces to have inventories which change their backing store.
|
||||||
|
*/
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface InventoryDelegate extends IInventory
|
||||||
|
{
|
||||||
|
IInventory getInventory();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default int getSizeInventory()
|
||||||
|
{
|
||||||
|
return getInventory().getSizeInventory();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default boolean isEmpty()
|
||||||
|
{
|
||||||
|
return getInventory().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
default ItemStack getStackInSlot( int slot )
|
||||||
|
{
|
||||||
|
return getInventory().getStackInSlot( slot );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
default ItemStack decrStackSize( int slot, int count )
|
||||||
|
{
|
||||||
|
return getInventory().decrStackSize( slot, count );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
default ItemStack removeStackFromSlot( int slot )
|
||||||
|
{
|
||||||
|
return getInventory().removeStackFromSlot( slot );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default void setInventorySlotContents( int slot, ItemStack stack )
|
||||||
|
{
|
||||||
|
getInventory().setInventorySlotContents( slot, stack );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default int getInventoryStackLimit()
|
||||||
|
{
|
||||||
|
return getInventory().getInventoryStackLimit();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default void markDirty()
|
||||||
|
{
|
||||||
|
getInventory().markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default boolean isUsableByPlayer( @Nonnull PlayerEntity player )
|
||||||
|
{
|
||||||
|
return getInventory().isUsableByPlayer( player );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default void openInventory( @Nonnull PlayerEntity player )
|
||||||
|
{
|
||||||
|
getInventory().openInventory( player );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default void closeInventory( @Nonnull PlayerEntity player )
|
||||||
|
{
|
||||||
|
getInventory().closeInventory( player );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default boolean isItemValidForSlot( int slot, @Nonnull ItemStack stack )
|
||||||
|
{
|
||||||
|
return getInventory().isItemValidForSlot( slot, stack );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default void clear()
|
||||||
|
{
|
||||||
|
getInventory().clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default int count( @Nonnull Item stack )
|
||||||
|
{
|
||||||
|
return getInventory().count( stack );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default boolean hasAny( @Nonnull Set<Item> set )
|
||||||
|
{
|
||||||
|
return getInventory().hasAny( set );
|
||||||
|
}
|
||||||
|
}
|
@ -70,12 +70,6 @@ public final class InventoryUtil
|
|||||||
return shareTagA.equals( shareTagB );
|
return shareTagA.equals( shareTagB );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
public static ItemStack copyItem( @Nonnull ItemStack a )
|
|
||||||
{
|
|
||||||
return a.copy();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methods for finding inventories:
|
// Methods for finding inventories:
|
||||||
|
|
||||||
public static IItemHandler getInventory( World world, BlockPos pos, Direction side )
|
public static IItemHandler getInventory( World world, BlockPos pos, Direction side )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user