mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-22 00:33:59 +00:00
Added Torches placement
This commit is contained in:
parent
3ecbe7dbf7
commit
399050fc4e
@ -25,6 +25,7 @@ the Free Software Foundation, either version 3 of the License, or
|
||||
|
||||
*/
|
||||
|
||||
|
||||
define("BLOCK_UPDATE_NORMAL", 0);
|
||||
define("BLOCK_UPDATE_RANDOM", 1);
|
||||
define("BLOCK_UPDATE_SCHEDULED", 2);
|
||||
@ -35,16 +36,15 @@ define("BLOCK_UPDATE_WEAK", 3);
|
||||
|
||||
|
||||
class BlockAPI{
|
||||
public static $class = array();
|
||||
private $server;
|
||||
|
||||
public static function get($id, $meta = 0, $v = false){
|
||||
$id = (int) $id;
|
||||
if(isset(BlockAPI::$class[$id])){
|
||||
$classname = BlockAPI::$class[$id];
|
||||
if(isset(Block::$class[$id])){
|
||||
$classname = Block::$class[$id];
|
||||
$b = new $classname($meta);
|
||||
}else{
|
||||
$b = new GenericBlock($id, $meta, "");
|
||||
$b = new GenericBlock($id, $meta);
|
||||
}
|
||||
if($v instanceof Vector3){
|
||||
$b->position($v);
|
||||
@ -52,6 +52,17 @@ class BlockAPI{
|
||||
return $b;
|
||||
}
|
||||
|
||||
public static function getItem($id, $meta = 0, $count = 1){
|
||||
$id = (int) $id;
|
||||
if(isset(Item::$class[$id])){
|
||||
$classname = Item::$class[$id];
|
||||
$i = new $classname($meta);
|
||||
}else{
|
||||
$i = new Item($id, $meta, $count);
|
||||
}
|
||||
return $i;
|
||||
}
|
||||
|
||||
public function setBlock($block, $id, $meta){
|
||||
if(($block instanceof Vector3) or (($block instanceof Block) and $block->inWorld === true)){
|
||||
$this->server->api->level->setBlock($block->x, $block->y, $block->z, (int) $id, (int) $meta);
|
||||
@ -78,111 +89,6 @@ class BlockAPI{
|
||||
|
||||
function __construct(PocketMinecraftServer $server){
|
||||
$this->server = $server;
|
||||
BlockAPI::$class = array(
|
||||
AIR => "AirBlock",
|
||||
STONE => "StoneBlock",
|
||||
GRASS => "GrassBlock",
|
||||
DIRT => "DirtBlock",
|
||||
COBBLESTONE => "CobblestoneBlock",
|
||||
PLANKS => "PlanksBlock",
|
||||
SAPLING => "SaplingBlock",
|
||||
BEDROCK => "BedrockBlock",
|
||||
WATER => "WaterBlock",
|
||||
STILL_WATER => "StillWaterBlock",
|
||||
LAVA => "LavaBlock",
|
||||
STILL_LAVA => "StillLavaBlock",
|
||||
SAND => "SandBlock",
|
||||
GRAVEL => "GravelBlock",
|
||||
GOLD_ORE => "GoldOreBlock",
|
||||
IRON_ORE => "IronOreBlock",
|
||||
COAL_ORE => "CoalOreBlock",
|
||||
WOOD => "WoodBlock",
|
||||
LEAVES => "LeavesBlock",
|
||||
GLASS => "GlassBlock",
|
||||
LAPIS_ORE => "LapisOreBlock",
|
||||
LAPIS_BLOCK => "LapisBlock",
|
||||
SANDSTONE => "SandstoneBlock",
|
||||
BED_BLOCK => "BedBlock",
|
||||
COBWEB => "CobwebBlock",
|
||||
TALL_GRASS => "TallGrassBlock",
|
||||
DEAD_BUSH => "DeadBushBlock",
|
||||
WOOL => "WoolBlock",
|
||||
DANDELION => "DandelionBlock",
|
||||
CYAN_FLOWER => "CyanFlowerBlock",
|
||||
BROWN_MUSHROOM => "BrownMushroomBlock",
|
||||
RED_MUSHROOM => "RedMushRoomBlock",
|
||||
GOLD_BLOCK => "GoldBlock",
|
||||
IRON_BLOCK => "IronBlock",
|
||||
DOUBLE_SLAB => "DoubleSlabBlock",
|
||||
SLAB => "SlabBlock",
|
||||
BRICKS => "BricksBlock",
|
||||
TNT => "TNTBlock",
|
||||
BOOKSHELF => "BookshelfBlock",
|
||||
MOSS_STONE => "MossStoneBlock",
|
||||
OBSIDIAN => "ObsidianBlock",
|
||||
TORCH => "TorchBlock",
|
||||
FIRE => "FireBlock",
|
||||
|
||||
WOOD_STAIRS => "WoodStairsBlock",
|
||||
CHEST => "ChestBlock",
|
||||
|
||||
DIAMOND_ORE => "DiamondOreBlock",
|
||||
DIAMOND_BLOCK => "DiamondBlock",
|
||||
WORKBENCH => "WorkbenchBlock",
|
||||
WHEAT => "WheatBlock",
|
||||
FARMLAND => "FarmlandBlock",
|
||||
FURNACE => "FurnaceBlock",
|
||||
BURNING_FURNACE => "BurningFurnaceBlock",
|
||||
SIGN_POST => "SignPostBlock",
|
||||
WOOD_DOOR_BLOCK => "WoodDoorBlock",
|
||||
LADDER => "LadderBlock",
|
||||
|
||||
COBBLESTONE_STAIRS => "CobblestoneStairsBlock",
|
||||
WALL_SIGN => "WallSignBlock",
|
||||
|
||||
IRON_DOOR => "IronDoorBlock",
|
||||
REDSTONE_ORE => "RedstoneOreBlock",
|
||||
GLOWING_REDSTONE_ORE => "GlowingRedstoneOreBlock",
|
||||
|
||||
SNOW_LAYER => "SnowLayerBlock",
|
||||
ICE => "IceBlock",
|
||||
SNOW_BLOCK => "SnowBlock",
|
||||
CACTUS => "CactusBlock",
|
||||
CLAY_BLOCK => "ClayBlock",
|
||||
SUGARCANE_BLOCK => "SugarcaneBlock",
|
||||
|
||||
FENCE => "FenceBlock",
|
||||
|
||||
NETHERRACK => "NetherrackBlock",
|
||||
SOUL_SAND => "SoulSandBlock",
|
||||
GLOWSTONE_BLOCK => "GlowstoneBlock",
|
||||
|
||||
TRAPDOOR => "TrapdoorBlock",
|
||||
|
||||
STONE_BRICKS => "StoneBricksBlock",
|
||||
|
||||
GLASS_PANE => "GlassPaneBlock",
|
||||
MELON_BLOCK => "MelonBlock",
|
||||
|
||||
MELON_STEM => "MelonStemBlock",
|
||||
|
||||
FENCE_GATE => "FenceGateBlock",
|
||||
BRICK_STAIRS => "BrickStairsBlock",
|
||||
STONE_BRICK_STAIRS => "StoneBrickStairsBlock",
|
||||
|
||||
NETHER_BRICK => "NetherBrickBlock",
|
||||
|
||||
NETHER_BRICK_STAIRS => "NetherBrickStairsBlock",
|
||||
|
||||
SANDSTONE_STAIRS => "SandstoneStairsBlock",
|
||||
|
||||
QUARTZ_BLOCK => "QuartzBlock",
|
||||
QUARTZ_STAIRS => "QuartzStairsBlock",
|
||||
|
||||
STONECUTTER => "StonecutterBlock",
|
||||
GLOWING_OBSIDIAN => "GlowingObsidianBlock",
|
||||
NETHER_REACTOR => "NetherReactorBlock",
|
||||
);
|
||||
}
|
||||
|
||||
public function init(){
|
||||
@ -532,22 +438,6 @@ class BlockAPI{
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 50: //Torch
|
||||
if(isset(Material::$transparent[$target[0]])){
|
||||
return false;
|
||||
}
|
||||
$faces = array(
|
||||
1 => 5,
|
||||
2 => 4,
|
||||
3 => 3,
|
||||
4 => 2,
|
||||
5 => 1,
|
||||
);
|
||||
if(!isset($faces[$data["face"]])){
|
||||
return false;
|
||||
}
|
||||
$data["meta"] = $faces[$data["face"]];
|
||||
break;
|
||||
case 53://Stairs
|
||||
case 67:
|
||||
case 108:
|
||||
|
@ -25,9 +25,114 @@ the Free Software Foundation, either version 3 of the License, or
|
||||
|
||||
*/
|
||||
|
||||
require_once("classes/material/IDs.php");
|
||||
|
||||
abstract class Block{
|
||||
public static $class = array(
|
||||
AIR => "AirBlock",
|
||||
STONE => "StoneBlock",
|
||||
GRASS => "GrassBlock",
|
||||
DIRT => "DirtBlock",
|
||||
COBBLESTONE => "CobblestoneBlock",
|
||||
PLANKS => "PlanksBlock",
|
||||
SAPLING => "SaplingBlock",
|
||||
BEDROCK => "BedrockBlock",
|
||||
WATER => "WaterBlock",
|
||||
STILL_WATER => "StillWaterBlock",
|
||||
LAVA => "LavaBlock",
|
||||
STILL_LAVA => "StillLavaBlock",
|
||||
SAND => "SandBlock",
|
||||
GRAVEL => "GravelBlock",
|
||||
GOLD_ORE => "GoldOreBlock",
|
||||
IRON_ORE => "IronOreBlock",
|
||||
COAL_ORE => "CoalOreBlock",
|
||||
WOOD => "WoodBlock",
|
||||
LEAVES => "LeavesBlock",
|
||||
GLASS => "GlassBlock",
|
||||
LAPIS_ORE => "LapisOreBlock",
|
||||
LAPIS_BLOCK => "LapisBlock",
|
||||
SANDSTONE => "SandstoneBlock",
|
||||
BED_BLOCK => "BedBlock",
|
||||
COBWEB => "CobwebBlock",
|
||||
TALL_GRASS => "TallGrassBlock",
|
||||
DEAD_BUSH => "DeadBushBlock",
|
||||
WOOL => "WoolBlock",
|
||||
DANDELION => "DandelionBlock",
|
||||
CYAN_FLOWER => "CyanFlowerBlock",
|
||||
BROWN_MUSHROOM => "BrownMushroomBlock",
|
||||
RED_MUSHROOM => "RedMushRoomBlock",
|
||||
GOLD_BLOCK => "GoldBlock",
|
||||
IRON_BLOCK => "IronBlock",
|
||||
DOUBLE_SLAB => "DoubleSlabBlock",
|
||||
SLAB => "SlabBlock",
|
||||
BRICKS => "BricksBlock",
|
||||
TNT => "TNTBlock",
|
||||
BOOKSHELF => "BookshelfBlock",
|
||||
MOSS_STONE => "MossStoneBlock",
|
||||
OBSIDIAN => "ObsidianBlock",
|
||||
TORCH => "TorchBlock",
|
||||
FIRE => "FireBlock",
|
||||
|
||||
WOOD_STAIRS => "WoodStairsBlock",
|
||||
CHEST => "ChestBlock",
|
||||
|
||||
DIAMOND_ORE => "DiamondOreBlock",
|
||||
DIAMOND_BLOCK => "DiamondBlock",
|
||||
WORKBENCH => "WorkbenchBlock",
|
||||
WHEAT => "WheatBlock",
|
||||
FARMLAND => "FarmlandBlock",
|
||||
FURNACE => "FurnaceBlock",
|
||||
BURNING_FURNACE => "BurningFurnaceBlock",
|
||||
SIGN_POST => "SignPostBlock",
|
||||
WOOD_DOOR_BLOCK => "WoodDoorBlock",
|
||||
LADDER => "LadderBlock",
|
||||
|
||||
COBBLESTONE_STAIRS => "CobblestoneStairsBlock",
|
||||
WALL_SIGN => "WallSignBlock",
|
||||
|
||||
IRON_DOOR => "IronDoorBlock",
|
||||
REDSTONE_ORE => "RedstoneOreBlock",
|
||||
GLOWING_REDSTONE_ORE => "GlowingRedstoneOreBlock",
|
||||
|
||||
SNOW_LAYER => "SnowLayerBlock",
|
||||
ICE => "IceBlock",
|
||||
SNOW_BLOCK => "SnowBlock",
|
||||
CACTUS => "CactusBlock",
|
||||
CLAY_BLOCK => "ClayBlock",
|
||||
SUGARCANE_BLOCK => "SugarcaneBlock",
|
||||
|
||||
FENCE => "FenceBlock",
|
||||
|
||||
NETHERRACK => "NetherrackBlock",
|
||||
SOUL_SAND => "SoulSandBlock",
|
||||
GLOWSTONE_BLOCK => "GlowstoneBlock",
|
||||
|
||||
TRAPDOOR => "TrapdoorBlock",
|
||||
|
||||
STONE_BRICKS => "StoneBricksBlock",
|
||||
|
||||
GLASS_PANE => "GlassPaneBlock",
|
||||
MELON_BLOCK => "MelonBlock",
|
||||
|
||||
MELON_STEM => "MelonStemBlock",
|
||||
|
||||
FENCE_GATE => "FenceGateBlock",
|
||||
BRICK_STAIRS => "BrickStairsBlock",
|
||||
STONE_BRICK_STAIRS => "StoneBrickStairsBlock",
|
||||
|
||||
NETHER_BRICK => "NetherBrickBlock",
|
||||
|
||||
NETHER_BRICK_STAIRS => "NetherBrickStairsBlock",
|
||||
|
||||
SANDSTONE_STAIRS => "SandstoneStairsBlock",
|
||||
|
||||
QUARTZ_BLOCK => "QuartzBlock",
|
||||
QUARTZ_STAIRS => "QuartzStairsBlock",
|
||||
|
||||
STONECUTTER => "StonecutterBlock",
|
||||
GLOWING_OBSIDIAN => "GlowingObsidianBlock",
|
||||
NETHER_REACTOR => "NetherReactorBlock",
|
||||
);
|
||||
protected $id;
|
||||
protected $meta;
|
||||
protected $shortname = "";
|
||||
|
@ -25,20 +25,27 @@ the Free Software Foundation, either version 3 of the License, or
|
||||
|
||||
*/
|
||||
|
||||
require_once("classes/material/IDs.php");
|
||||
|
||||
class Item{
|
||||
public static $class = array(
|
||||
|
||||
|
||||
);
|
||||
protected $block = false;
|
||||
protected $id;
|
||||
protected $meta;
|
||||
protected $count;
|
||||
protected $maxStackSize = 64;
|
||||
protected $durability = 0;
|
||||
protected $name = "Unknown";
|
||||
protected $name;
|
||||
|
||||
public function __construct($id, $meta = 0, $count = 1){
|
||||
public function __construct($id, $meta = 0, $count = 1, $name = "Unknown"){
|
||||
$this->id = (int) $id;
|
||||
$this->meta = (int) $meta;
|
||||
$this->count = (int) $count;
|
||||
if(isset(BlockAPI::$class[$this->id])){
|
||||
$this->name = $name;
|
||||
if(isset(Block::$class[$this->id])){
|
||||
$this->block = BlockAPI::get($this->id, $this->meta);
|
||||
$this->name = $this->block->getName();
|
||||
}
|
||||
|
@ -30,4 +30,26 @@ class TorchBlock extends FlowableBlock{
|
||||
parent::__construct(TORCH, $meta, "Torch");
|
||||
}
|
||||
|
||||
public function place(BlockAPI $level, Item $item, Player $player, Block $block, Block $target, $face, $fx, $fy, $fz){
|
||||
if($block->inWorld === true){
|
||||
$down = $level->getBlockFace($block, 0);
|
||||
if($down->isTransparent === false and $face !== 0){
|
||||
$faces = array(
|
||||
1 => 5,
|
||||
2 => 4,
|
||||
3 => 3,
|
||||
4 => 2,
|
||||
5 => 1,
|
||||
);
|
||||
$level->setBlock($block, $this->id, $faces[$face]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public function getDrops(Item $item, Player $player){
|
||||
return = array(
|
||||
array($this->id, 0, 1),
|
||||
);
|
||||
}
|
||||
}
|
@ -77,4 +77,10 @@ class SaplingBlock extends TransparentBlock{
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDrops(Item $item, Player $player){
|
||||
return = array(
|
||||
array($this->id, $this->meta & 0x03, 1),
|
||||
);
|
||||
}
|
||||
}
|
@ -76,5 +76,9 @@ class SlabBlock extends TransparentBlock{
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getDrops(Item $item, Player $player){
|
||||
return = array(
|
||||
array($this->id, $this->meta & 0x07, 1),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user