Search in sources :

Example 1 with Step

use of org.bukkit.material.Step in project Glowstone by GlowstoneMC.

the class BlockHopper method pullItems.

private void pullItems(GlowBlock block, HopperEntity hopper) {
    GlowBlock source = block.getRelative(BlockFace.UP);
    MaterialData data = source.getState().getData();
    if (!source.getType().isSolid() || (data instanceof Step && !((Step) data).isInverted()) || (data instanceof WoodenStep && !((WoodenStep) data).isInverted()) || (data instanceof Sign) || (data instanceof Rails)) {
        GlowItem item = getFirstDroppedItem(source.getLocation());
        if (item == null) {
            return;
        }
        ItemStack stack = item.getItemStack();
        HashMap<Integer, ItemStack> add = hopper.getInventory().addItem(stack);
        if (add.size() > 0) {
            item.setItemStack(add.get(0));
        } else {
            item.remove();
        }
    } else if (source.getBlockEntity() != null && source.getBlockEntity() instanceof ContainerEntity) {
        ContainerEntity sourceContainer = (ContainerEntity) source.getBlockEntity();
        if (sourceContainer.getInventory() == null || sourceContainer.getInventory().getContents().length == 0) {
            return;
        }
        ItemStack item = getFirstItem(sourceContainer);
        if (item == null) {
            return;
        }
        ItemStack clone = item.clone();
        clone.setAmount(1);
        if (hopper.getInventory().addItem(clone).size() > 0) {
            return;
        }
        if (item.getAmount() - 1 == 0) {
            sourceContainer.getInventory().remove(item);
        } else {
            item.setAmount(item.getAmount() - 1);
        }
    }
}
Also used : WoodenStep(org.bukkit.material.WoodenStep) Rails(org.bukkit.material.Rails) GlowBlock(net.glowstone.block.GlowBlock) ContainerEntity(net.glowstone.block.entity.ContainerEntity) Sign(org.bukkit.material.Sign) MaterialData(org.bukkit.material.MaterialData) WoodenStep(org.bukkit.material.WoodenStep) Step(org.bukkit.material.Step) ItemStack(org.bukkit.inventory.ItemStack) GlowItem(net.glowstone.entity.objects.GlowItem)

Example 2 with Step

use of org.bukkit.material.Step in project Glowstone by GlowstoneMC.

the class BlockSlab method placeBlock.

@Override
public void placeBlock(GlowPlayer player, GlowBlockState state, BlockFace face, ItemStack holding, Vector clickedLoc) {
    super.placeBlock(player, state, face, holding, clickedLoc);
    Material blockType = state.getBlock().getType();
    // TODO: 1.13 block type double
    if (blockType == Material.LEGACY_STEP) {
        state.setType(Material.LEGACY_DOUBLE_STEP);
        state.setData(holding.getData());
        return;
    }
    if (face == BlockFace.DOWN || face != BlockFace.UP && clickedLoc.getY() >= 0.5) {
        // TODO: 1.13 block type top
        MaterialData data = state.getData();
        if (data instanceof Step) {
            ((Step) data).setInverted(true);
        }
        state.setData(data);
    }
}
Also used : Material(org.bukkit.Material) MaterialData(org.bukkit.material.MaterialData) Step(org.bukkit.material.Step)

Example 3 with Step

use of org.bukkit.material.Step in project Glowstone by GlowstoneMC.

the class GlowDesertTemple method generate.

@Override
public boolean generate(World world, Random random, StructureBoundingBox genBoundingBox, BlockStateDelegate delegate) {
    if (!super.generate(world, random, boundingBox, delegate)) {
        return false;
    }
    StructureBuilder builder = new StructureBuilder(world, this, genBoundingBox, delegate);
    for (int x = 0; x < 21; x++) {
        for (int z = 0; z < 21; z++) {
            builder.setBlockDownward(new Vector(x, 13, z), Material.SANDSTONE);
        }
    }
    builder.fill(new Vector(0, 14, 0), new Vector(20, 18, 20), Material.SANDSTONE);
    for (int i = 1; i <= 9; i++) {
        builder.fill(new Vector(i, i + 18, i), new Vector(20 - i, i + 18, 20 - i), Material.SANDSTONE);
        builder.fill(new Vector(i + 1, i + 18, i + 1), new Vector(19 - i, i + 18, 19 - i), Material.AIR);
    }
    // east tower
    builder.fill(new Vector(0, 18, 0), new Vector(4, 27, 4), Material.SANDSTONE, Material.AIR);
    builder.fill(new Vector(1, 28, 1), new Vector(3, 28, 3), Material.SANDSTONE);
    Stairs stairsN = new Stairs(Material.SANDSTONE_STAIRS);
    stairsN.setFacingDirection(getRelativeFacing(BlockFace.SOUTH));
    builder.setBlock(new Vector(2, 28, 0), stairsN.getItemType(), stairsN);
    Stairs stairsE = new Stairs(Material.SANDSTONE_STAIRS);
    stairsE.setFacingDirection(getRelativeFacing(BlockFace.WEST));
    builder.setBlock(new Vector(4, 28, 2), stairsE.getItemType(), stairsE);
    Stairs stairsS = new Stairs(Material.SANDSTONE_STAIRS);
    stairsS.setFacingDirection(getRelativeFacing(BlockFace.NORTH));
    builder.setBlock(new Vector(2, 28, 4), stairsS.getItemType(), stairsS);
    Stairs stairsW = new Stairs(Material.SANDSTONE_STAIRS);
    stairsW.setFacingDirection(getRelativeFacing(BlockFace.EAST));
    builder.setBlock(new Vector(0, 28, 2), stairsW.getItemType(), stairsW);
    builder.fill(new Vector(1, 19, 5), new Vector(3, 22, 11), Material.SANDSTONE);
    builder.fill(new Vector(2, 22, 4), new Vector(2, 24, 4), Material.AIR);
    builder.fill(new Vector(1, 19, 3), new Vector(2, 20, 3), Material.SANDSTONE);
    builder.setBlock(new Vector(1, 19, 2), Material.SANDSTONE);
    Step step = new Step(Material.SANDSTONE);
    builder.setBlock(new Vector(1, 20, 2), step.getItemType(), step);
    builder.setBlock(new Vector(2, 19, 2), stairsE.getItemType(), stairsE);
    for (int i = 0; i < 2; i++) {
        builder.setBlock(new Vector(2, 21 + i, 4 + i), stairsN.getItemType(), stairsN);
    }
    // west tower
    builder.fill(new Vector(16, 18, 0), new Vector(20, 27, 4), Material.SANDSTONE, Material.AIR);
    builder.fill(new Vector(17, 28, 1), new Vector(19, 28, 3), Material.SANDSTONE);
    builder.setBlock(new Vector(18, 28, 0), stairsN.getItemType(), stairsN);
    builder.setBlock(new Vector(20, 28, 2), stairsE.getItemType(), stairsE);
    builder.setBlock(new Vector(18, 28, 4), stairsS.getItemType(), stairsS);
    builder.setBlock(new Vector(16, 28, 2), stairsW.getItemType(), stairsW);
    builder.fill(new Vector(17, 19, 5), new Vector(19, 22, 11), Material.SANDSTONE);
    builder.fill(new Vector(18, 22, 4), new Vector(18, 24, 4), Material.AIR);
    builder.fill(new Vector(18, 19, 3), new Vector(19, 20, 3), Material.SANDSTONE);
    builder.setBlock(new Vector(19, 19, 2), Material.SANDSTONE);
    builder.setBlock(new Vector(19, 20, 2), step.getItemType(), step);
    builder.setBlock(new Vector(18, 19, 2), stairsW.getItemType(), stairsW);
    for (int i = 0; i < 2; i++) {
        builder.setBlock(new Vector(18, 21 + i, 4 + i), stairsN.getItemType(), stairsN);
    }
    // tower symbols
    for (int i = 0; i < 2; i++) {
        // front
        builder.fill(new Vector(1 + (i << 4), 20, 0), new Vector(1 + (i << 4), 21, 0), Material.SANDSTONE, 2);
        builder.fill(new Vector(2 + (i << 4), 20, 0), new Vector(2 + (i << 4), 21, 0), Material.ORANGE_TERRACOTTA, 1);
        builder.fill(new Vector(3 + (i << 4), 20, 0), new Vector(3 + (i << 4), 21, 0), Material.SANDSTONE, 2);
        builder.setBlock(new Vector(1 + (i << 4), 22, 0), Material.ORANGE_TERRACOTTA, 1);
        builder.setBlock(new Vector(2 + (i << 4), 22, 0), Material.SANDSTONE, 1);
        builder.setBlock(new Vector(3 + (i << 4), 22, 0), Material.ORANGE_TERRACOTTA, 1);
        builder.setBlock(new Vector(1 + (i << 4), 23, 0), Material.SANDSTONE, 2);
        builder.setBlock(new Vector(2 + (i << 4), 23, 0), Material.ORANGE_TERRACOTTA, 1);
        builder.setBlock(new Vector(3 + (i << 4), 23, 0), Material.SANDSTONE, 2);
        builder.setBlock(new Vector(1 + (i << 4), 24, 0), Material.ORANGE_TERRACOTTA, 1);
        builder.setBlock(new Vector(2 + (i << 4), 24, 0), Material.SANDSTONE, 1);
        builder.setBlock(new Vector(3 + (i << 4), 24, 0), Material.ORANGE_TERRACOTTA, 1);
        builder.fill(new Vector(1 + (i << 4), 25, 0), new Vector(3 + (i << 4), 25, 0), Material.ORANGE_TERRACOTTA, 1);
        builder.fill(new Vector(1 + (i << 4), 26, 0), new Vector(3 + (i << 4), 26, 0), Material.SANDSTONE, 2);
        // side
        builder.fill(new Vector(i * 20, 20, 1), new Vector(i * 20, 21, 1), Material.SANDSTONE, 2);
        builder.fill(new Vector(i * 20, 20, 2), new Vector(i * 20, 21, 2), Material.ORANGE_TERRACOTTA, 1);
        builder.fill(new Vector(i * 20, 20, 3), new Vector(i * 20, 21, 3), Material.SANDSTONE, 2);
        builder.setBlock(new Vector(i * 20, 22, 1), Material.ORANGE_TERRACOTTA, 1);
        builder.setBlock(new Vector(i * 20, 22, 2), Material.SANDSTONE, 1);
        builder.setBlock(new Vector(i * 20, 22, 3), Material.ORANGE_TERRACOTTA, 1);
        builder.setBlock(new Vector(i * 20, 23, 1), Material.SANDSTONE, 2);
        builder.setBlock(new Vector(i * 20, 23, 2), Material.ORANGE_TERRACOTTA, 1);
        builder.setBlock(new Vector(i * 20, 23, 3), Material.SANDSTONE, 2);
        builder.setBlock(new Vector(i * 20, 24, 1), Material.ORANGE_TERRACOTTA, 1);
        builder.setBlock(new Vector(i * 20, 24, 2), Material.SANDSTONE, 1);
        builder.setBlock(new Vector(i * 20, 24, 3), Material.ORANGE_TERRACOTTA, 1);
        builder.fill(new Vector(i * 20, 25, 1), new Vector(i * 20, 25, 3), Material.ORANGE_TERRACOTTA, 1);
        builder.fill(new Vector(i * 20, 26, 1), new Vector(i * 20, 26, 3), Material.SANDSTONE, 2);
    }
    // front entrance
    builder.fill(new Vector(8, 18, 1), new Vector(12, 22, 4), Material.SANDSTONE, Material.AIR);
    builder.fill(new Vector(9, 19, 0), new Vector(11, 21, 4), Material.AIR);
    builder.fill(new Vector(9, 19, 1), new Vector(9, 20, 1), Material.SANDSTONE, 2);
    builder.fill(new Vector(11, 19, 1), new Vector(11, 20, 1), Material.SANDSTONE, 2);
    builder.fill(new Vector(9, 21, 1), new Vector(11, 21, 1), Material.SANDSTONE, 2);
    builder.fill(new Vector(8, 18, 0), new Vector(8, 21, 0), Material.SANDSTONE);
    builder.fill(new Vector(12, 18, 0), new Vector(12, 21, 0), Material.SANDSTONE);
    builder.fill(new Vector(8, 22, 0), new Vector(12, 22, 0), Material.SANDSTONE, 2);
    builder.setBlock(new Vector(8, 23, 0), Material.SANDSTONE, 2);
    builder.setBlock(new Vector(9, 23, 0), Material.ORANGE_TERRACOTTA, 1);
    builder.setBlock(new Vector(10, 23, 0), Material.SANDSTONE, 1);
    builder.setBlock(new Vector(11, 23, 0), Material.ORANGE_TERRACOTTA, 1);
    builder.setBlock(new Vector(12, 23, 0), Material.SANDSTONE, 2);
    builder.fill(new Vector(9, 24, 0), new Vector(11, 24, 0), Material.SANDSTONE, 2);
    // east entrance
    builder.fill(new Vector(5, 23, 9), new Vector(5, 25, 11), Material.SANDSTONE, 2);
    builder.fill(new Vector(6, 25, 9), new Vector(6, 25, 11), Material.SANDSTONE);
    builder.fill(new Vector(5, 23, 10), new Vector(6, 24, 10), Material.AIR);
    // west entrance
    builder.fill(new Vector(15, 23, 9), new Vector(15, 25, 11), Material.SANDSTONE, 2);
    builder.fill(new Vector(14, 25, 9), new Vector(14, 25, 11), Material.SANDSTONE);
    builder.fill(new Vector(14, 23, 10), new Vector(15, 24, 10), Material.AIR);
    // corridor to east tower
    builder.fill(new Vector(4, 19, 1), new Vector(8, 21, 3), Material.SANDSTONE, Material.AIR);
    builder.fill(new Vector(4, 19, 2), new Vector(8, 20, 2), Material.AIR);
    // corridor to west tower
    builder.fill(new Vector(12, 19, 1), new Vector(16, 21, 3), Material.SANDSTONE, Material.AIR);
    builder.fill(new Vector(12, 19, 2), new Vector(16, 20, 2), Material.AIR);
    // pillars in the middle of 1st floor
    builder.fill(new Vector(8, 19, 8), new Vector(8, 21, 8), Material.SANDSTONE, 2);
    builder.fill(new Vector(12, 19, 8), new Vector(12, 21, 8), Material.SANDSTONE, 2);
    builder.fill(new Vector(12, 19, 12), new Vector(12, 21, 12), Material.SANDSTONE, 2);
    builder.fill(new Vector(8, 19, 12), new Vector(8, 21, 12), Material.SANDSTONE, 2);
    // 2nd floor
    builder.fill(new Vector(5, 22, 5), new Vector(15, 22, 15), Material.SANDSTONE);
    builder.fill(new Vector(9, 22, 9), new Vector(11, 22, 11), Material.AIR);
    // east and west corridors
    builder.fill(new Vector(3, 19, 5), new Vector(3, 20, 11), Material.AIR);
    builder.fill(new Vector(4, 21, 5), new Vector(4, 21, 16), Material.SANDSTONE);
    builder.fill(new Vector(17, 19, 5), new Vector(17, 20, 11), Material.AIR);
    builder.fill(new Vector(16, 21, 5), new Vector(16, 21, 16), Material.SANDSTONE);
    builder.fill(new Vector(2, 19, 12), new Vector(2, 19, 18), Material.SANDSTONE);
    builder.fill(new Vector(18, 19, 12), new Vector(18, 19, 18), Material.SANDSTONE);
    builder.fill(new Vector(3, 19, 18), new Vector(18, 19, 18), Material.SANDSTONE);
    for (int i = 0; i < 7; i++) {
        builder.setBlock(new Vector(4, 19, 5 + (i << 1)), Material.SANDSTONE, 2);
        builder.setBlock(new Vector(4, 20, 5 + (i << 1)), Material.SANDSTONE, 1);
        builder.setBlock(new Vector(16, 19, 5 + (i << 1)), Material.SANDSTONE, 2);
        builder.setBlock(new Vector(16, 20, 5 + (i << 1)), Material.SANDSTONE, 1);
    }
    // floor symbols
    builder.setBlock(new Vector(9, 18, 9), Material.ORANGE_TERRACOTTA, 1);
    builder.setBlock(new Vector(11, 18, 9), Material.ORANGE_TERRACOTTA, 1);
    builder.setBlock(new Vector(11, 18, 11), Material.ORANGE_TERRACOTTA, 1);
    builder.setBlock(new Vector(9, 18, 11), Material.ORANGE_TERRACOTTA, 1);
    builder.setBlock(new Vector(10, 18, 10), Material.BLUE_TERRACOTTA, 11);
    builder.fill(new Vector(10, 18, 7), new Vector(10, 18, 8), Material.ORANGE_TERRACOTTA, 1);
    builder.fill(new Vector(12, 18, 10), new Vector(13, 18, 10), Material.ORANGE_TERRACOTTA, 1);
    builder.fill(new Vector(10, 18, 12), new Vector(10, 18, 13), Material.ORANGE_TERRACOTTA, 1);
    builder.fill(new Vector(7, 18, 10), new Vector(8, 18, 10), Material.ORANGE_TERRACOTTA, 1);
    // trap chamber
    builder.fill(new Vector(8, 0, 8), new Vector(12, 3, 12), Material.SANDSTONE, 2);
    builder.fill(new Vector(8, 4, 8), new Vector(12, 4, 12), Material.SANDSTONE, 1);
    builder.fill(new Vector(8, 5, 8), new Vector(12, 5, 12), Material.SANDSTONE, 2);
    builder.fill(new Vector(8, 6, 8), new Vector(12, 13, 12), Material.SANDSTONE);
    builder.fill(new Vector(9, 3, 9), new Vector(11, 17, 11), Material.AIR);
    builder.fill(new Vector(9, 1, 9), new Vector(11, 1, 11), Material.TNT);
    builder.fill(new Vector(9, 2, 9), new Vector(11, 2, 11), Material.SANDSTONE, 2);
    builder.fill(new Vector(10, 3, 8), new Vector(10, 4, 8), Material.AIR);
    builder.setBlock(new Vector(10, 3, 7), Material.SANDSTONE, 2);
    builder.setBlock(new Vector(10, 4, 7), Material.SANDSTONE, 1);
    builder.fill(new Vector(12, 3, 10), new Vector(12, 4, 10), Material.AIR);
    builder.setBlock(new Vector(13, 3, 10), Material.SANDSTONE, 2);
    builder.setBlock(new Vector(13, 4, 10), Material.SANDSTONE, 1);
    builder.fill(new Vector(10, 3, 12), new Vector(10, 4, 12), Material.AIR);
    builder.setBlock(new Vector(10, 3, 13), Material.SANDSTONE, 2);
    builder.setBlock(new Vector(10, 4, 13), Material.SANDSTONE, 1);
    builder.fill(new Vector(8, 3, 10), new Vector(8, 4, 10), Material.AIR);
    builder.setBlock(new Vector(7, 3, 10), Material.SANDSTONE, 2);
    builder.setBlock(new Vector(7, 4, 10), Material.SANDSTONE, 1);
    builder.setBlock(new Vector(10, 3, 10), Material.STONE_PRESSURE_PLATE);
    RandomItemsContent chestContent = getChestContent();
    if (!hasPlacedChest0) {
        hasPlacedChest0 = builder.createRandomItemsContainer(new Vector(10, 3, 12), random, chestContent, new Chest(getRelativeFacing(BlockFace.NORTH)), random.nextInt(5) + 2);
    }
    if (!hasPlacedChest1) {
        hasPlacedChest1 = builder.createRandomItemsContainer(new Vector(8, 3, 10), random, chestContent, new Chest(getRelativeFacing(BlockFace.EAST)), random.nextInt(5) + 2);
    }
    if (!hasPlacedChest2) {
        hasPlacedChest2 = builder.createRandomItemsContainer(new Vector(10, 3, 8), random, chestContent, new Chest(getRelativeFacing(BlockFace.SOUTH)), random.nextInt(5) + 2);
    }
    if (!hasPlacedChest3) {
        hasPlacedChest3 = builder.createRandomItemsContainer(new Vector(12, 3, 10), random, chestContent, new Chest(getRelativeFacing(BlockFace.WEST)), random.nextInt(5) + 2);
    }
    return true;
}
Also used : Chest(org.bukkit.material.Chest) StructureBuilder(net.glowstone.generator.structures.util.StructureBuilder) RandomItemsContent(net.glowstone.generator.objects.RandomItemsContent) Stairs(org.bukkit.material.Stairs) Step(org.bukkit.material.Step) Vector(org.bukkit.util.Vector)

Aggregations

Step (org.bukkit.material.Step)3 MaterialData (org.bukkit.material.MaterialData)2 GlowBlock (net.glowstone.block.GlowBlock)1 ContainerEntity (net.glowstone.block.entity.ContainerEntity)1 GlowItem (net.glowstone.entity.objects.GlowItem)1 RandomItemsContent (net.glowstone.generator.objects.RandomItemsContent)1 StructureBuilder (net.glowstone.generator.structures.util.StructureBuilder)1 Material (org.bukkit.Material)1 ItemStack (org.bukkit.inventory.ItemStack)1 Chest (org.bukkit.material.Chest)1 Rails (org.bukkit.material.Rails)1 Sign (org.bukkit.material.Sign)1 Stairs (org.bukkit.material.Stairs)1 WoodenStep (org.bukkit.material.WoodenStep)1 Vector (org.bukkit.util.Vector)1