mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-01-08 08:20:29 +00:00
Allow turtles to use compostors
This commit is contained in:
parent
4f0d311df7
commit
de646b66b6
@ -5,9 +5,11 @@
|
|||||||
*/
|
*/
|
||||||
package dan200.computercraft.shared.util;
|
package dan200.computercraft.shared.util;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.inventory.ISidedInventory;
|
import net.minecraft.inventory.ISidedInventory;
|
||||||
|
import net.minecraft.inventory.ISidedInventoryProvider;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.Direction;
|
import net.minecraft.util.Direction;
|
||||||
@ -23,6 +25,7 @@ import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
|||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public final class InventoryUtil
|
public final class InventoryUtil
|
||||||
{
|
{
|
||||||
@ -41,7 +44,8 @@ public final class InventoryUtil
|
|||||||
|
|
||||||
// Methods for finding inventories:
|
// Methods for finding inventories:
|
||||||
|
|
||||||
public static IItemHandler getInventory( World world, BlockPos pos, Direction side )
|
@Nullable
|
||||||
|
public static IItemHandler getInventory( @Nonnull World world, @Nonnull BlockPos pos, @Nonnull Direction side )
|
||||||
{
|
{
|
||||||
// Look for tile with inventory
|
// Look for tile with inventory
|
||||||
TileEntity tileEntity = world.getBlockEntity( pos );
|
TileEntity tileEntity = world.getBlockEntity( pos );
|
||||||
@ -52,7 +56,7 @@ public final class InventoryUtil
|
|||||||
{
|
{
|
||||||
return itemHandler.orElseThrow( NullPointerException::new );
|
return itemHandler.orElseThrow( NullPointerException::new );
|
||||||
}
|
}
|
||||||
else if( side != null && tileEntity instanceof ISidedInventory )
|
else if( tileEntity instanceof ISidedInventory )
|
||||||
{
|
{
|
||||||
return new SidedInvWrapper( (ISidedInventory) tileEntity, side );
|
return new SidedInvWrapper( (ISidedInventory) tileEntity, side );
|
||||||
}
|
}
|
||||||
@ -62,6 +66,13 @@ public final class InventoryUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BlockState block = world.getBlockState( pos );
|
||||||
|
if( block.getBlock() instanceof ISidedInventoryProvider )
|
||||||
|
{
|
||||||
|
ISidedInventory inventory = ((ISidedInventoryProvider) block.getBlock()).getContainer( block, world, pos );
|
||||||
|
return new SidedInvWrapper( inventory, side );
|
||||||
|
}
|
||||||
|
|
||||||
// Look for entity with inventory
|
// Look for entity with inventory
|
||||||
Vec3d vecStart = new Vec3d(
|
Vec3d vecStart = new Vec3d(
|
||||||
pos.getX() + 0.5 + 0.6 * side.getStepX(),
|
pos.getX() + 0.5 + 0.6 * side.getStepX(),
|
||||||
|
@ -55,4 +55,11 @@ class TurtleTest {
|
|||||||
*/
|
*/
|
||||||
@GameTest
|
@GameTest
|
||||||
suspend fun `Place monitor`(context: TestContext) = context.checkComputerOk(10)
|
suspend fun `Place monitor`(context: TestContext) = context.checkComputerOk(10)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks computers can place into compostors. These are non-typical inventories, so
|
||||||
|
* worth ensuring.
|
||||||
|
*/
|
||||||
|
@GameTest
|
||||||
|
suspend fun `Use compostors`(context: TestContext) = context.checkComputerOk(11)
|
||||||
}
|
}
|
||||||
|
3
src/test/server-files/computers/computer/11/startup.lua
Normal file
3
src/test/server-files/computers/computer/11/startup.lua
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
test.eq(true, turtle.dropDown(), "Drop items into compostor")
|
||||||
|
|
||||||
|
test.ok()
|
@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"computer": 9
|
"computer": 11
|
||||||
}
|
}
|
548
src/test/server-files/structures/turtle_test.use_compostors.snbt
Normal file
548
src/test/server-files/structures/turtle_test.use_compostors.snbt
Normal file
@ -0,0 +1,548 @@
|
|||||||
|
{
|
||||||
|
size: [5, 5, 5],
|
||||||
|
entities: [],
|
||||||
|
blocks: [
|
||||||
|
{
|
||||||
|
pos: [0, 0, 0],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 0, 0],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 0, 0],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 0, 0],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 0, 0],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 0, 1],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 0, 1],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 0, 1],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 0, 1],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 0, 1],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 0, 2],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 0, 2],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 0, 2],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 0, 2],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 0, 2],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 0, 3],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 0, 3],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 0, 3],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 0, 3],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 0, 3],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 0, 4],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 0, 4],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 0, 4],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 0, 4],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 0, 4],
|
||||||
|
state: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
nbt: {
|
||||||
|
Owner: {
|
||||||
|
UpperId: 4039158846114182220L,
|
||||||
|
LowerId: -6876936588741668278L,
|
||||||
|
Name: "Dev"
|
||||||
|
},
|
||||||
|
Fuel: 0,
|
||||||
|
Label: "Uses Compostors",
|
||||||
|
Slot: 0,
|
||||||
|
Items: [
|
||||||
|
{
|
||||||
|
Slot: 0b,
|
||||||
|
id: "minecraft:spruce_sapling",
|
||||||
|
Count: 64b
|
||||||
|
}
|
||||||
|
],
|
||||||
|
id: "computercraft:turtle_normal",
|
||||||
|
ComputerId: 11,
|
||||||
|
On: 1b
|
||||||
|
},
|
||||||
|
pos: [2, 2, 2],
|
||||||
|
state: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 1, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 1, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 1, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 1, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 1, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 2, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 2, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 2, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 2, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 2, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 3, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 3, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 3, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 3, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 3, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 4, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 4, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 4, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 4, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 4, 0],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 1, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 1, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 1, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 1, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 1, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 2, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 2, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 2, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 2, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 2, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 3, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 3, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 3, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 3, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 3, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 4, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 4, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 4, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 4, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 4, 1],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 1, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 1, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 1, 2],
|
||||||
|
state: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 1, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 1, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 2, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 2, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 2, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 2, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 3, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 3, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 3, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 3, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 3, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 4, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 4, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 4, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 4, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 4, 2],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 1, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 1, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 1, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 1, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 1, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 2, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 2, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 2, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 2, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 2, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 3, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 3, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 3, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 3, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 3, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 4, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 4, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 4, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 4, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 4, 3],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 1, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 1, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 1, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 1, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 1, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 2, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 2, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 2, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 2, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 2, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 3, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 3, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 3, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 3, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 3, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [0, 4, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [1, 4, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [2, 4, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [3, 4, 4],
|
||||||
|
state: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: [4, 4, 4],
|
||||||
|
state: 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
palette: [
|
||||||
|
{
|
||||||
|
Name: "minecraft:polished_andesite"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Properties: {
|
||||||
|
waterlogged: "false",
|
||||||
|
facing: "south"
|
||||||
|
},
|
||||||
|
Name: "computercraft:turtle_normal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "minecraft:air"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Properties: {
|
||||||
|
level: "0"
|
||||||
|
},
|
||||||
|
Name: "minecraft:composter"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
DataVersion: 2230
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user