mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-23 19:34:15 +00:00
Added Armor
This commit is contained in:
parent
1e8b012a6e
commit
fe8b4b7aa7
@ -261,6 +261,7 @@ class PlayerAPI{
|
|||||||
"z" => $this->server->spawn["z"],
|
"z" => $this->server->spawn["z"],
|
||||||
),
|
),
|
||||||
"inventory" => array_fill(0, 36, array(0, 0, 0)),
|
"inventory" => array_fill(0, 36, array(0, 0, 0)),
|
||||||
|
"armor" => array(0, 0, 0, 0),
|
||||||
"health" => 20,
|
"health" => 20,
|
||||||
"lastIP" => "",
|
"lastIP" => "",
|
||||||
"lastID" => 0,
|
"lastID" => 0,
|
||||||
|
@ -47,6 +47,7 @@ class Player{
|
|||||||
var $spawned = false;
|
var $spawned = false;
|
||||||
var $inventory;
|
var $inventory;
|
||||||
var $equipment = array(1, 0);
|
var $equipment = array(1, 0);
|
||||||
|
var $armor = array(0, 0, 0, 0);
|
||||||
var $loggedIn = false;
|
var $loggedIn = false;
|
||||||
function __construct(PocketMinecraftServer $server, $clientID, $ip, $port, $MTU){
|
function __construct(PocketMinecraftServer $server, $clientID, $ip, $port, $MTU){
|
||||||
$this->MTU = $MTU;
|
$this->MTU = $MTU;
|
||||||
@ -187,6 +188,15 @@ class Player{
|
|||||||
|
|
||||||
public function eventHandler($data, $event){
|
public function eventHandler($data, $event){
|
||||||
switch($event){
|
switch($event){
|
||||||
|
case "player.armor":
|
||||||
|
if($data["eid"] === $this->eid){
|
||||||
|
$data["eid"] = 0;
|
||||||
|
$this->armor = array($data["slot0"], $data["slot1"], $data["slot2"], $data["slot3"]);
|
||||||
|
$this->dataPacket(MC_SET_ARMOR, $data);
|
||||||
|
}else{
|
||||||
|
$this->dataPacket(MC_SET_ARMOR, $data);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case "player.block.place":
|
case "player.block.place":
|
||||||
if($data["eid"] === $this->eid and $this->server->gamemode === 0){
|
if($data["eid"] === $this->eid and $this->server->gamemode === 0){
|
||||||
$this->removeItem($data["original"][0], $data["original"][1], 1);
|
$this->removeItem($data["original"][0], $data["original"][1], 1);
|
||||||
@ -437,6 +447,7 @@ class Player{
|
|||||||
$this->data["inventory"] = $this->inventory;
|
$this->data["inventory"] = $this->inventory;
|
||||||
}
|
}
|
||||||
$this->inventory = &$this->data["inventory"];
|
$this->inventory = &$this->data["inventory"];
|
||||||
|
$this->armor = &$this->data["armor"];
|
||||||
|
|
||||||
$this->data["lastIP"] = $this->ip;
|
$this->data["lastIP"] = $this->ip;
|
||||||
$this->data["lastID"] = $this->clientID;
|
$this->data["lastID"] = $this->clientID;
|
||||||
@ -480,9 +491,11 @@ class Player{
|
|||||||
$this->evid[] = $this->server->event("entity.event", array($this, "eventHandler"));
|
$this->evid[] = $this->server->event("entity.event", array($this, "eventHandler"));
|
||||||
$this->evid[] = $this->server->event("entity.metadata", array($this, "eventHandler"));
|
$this->evid[] = $this->server->event("entity.metadata", array($this, "eventHandler"));
|
||||||
$this->evid[] = $this->server->event("player.equipment.change", array($this, "eventHandler"));
|
$this->evid[] = $this->server->event("player.equipment.change", array($this, "eventHandler"));
|
||||||
|
$this->evid[] = $this->server->event("player.armor", array($this, "eventHandler"));
|
||||||
$this->evid[] = $this->server->event("player.pickup", array($this, "eventHandler"));
|
$this->evid[] = $this->server->event("player.pickup", array($this, "eventHandler"));
|
||||||
$this->evid[] = $this->server->event("block.change", array($this, "eventHandler"));
|
$this->evid[] = $this->server->event("block.change", array($this, "eventHandler"));
|
||||||
$this->evid[] = $this->server->event("player.block.place", array($this, "eventHandler"));
|
$this->evid[] = $this->server->event("player.block.place", array($this, "eventHandler"));
|
||||||
|
$this->handle("player.armor", array("eid" => $this->eid, "slot0" => $this->armor[0], "slot1" => $this->armor[1], "slot2" => $this->armor[2], "slot3" => $this->armor[3]));
|
||||||
console("[DEBUG] Player \"".$this->username."\" EID ".$this->eid." spawned at X ".$this->entity->x." Y ".$this->entity->y." Z ".$this->entity->z, true, true, 2);
|
console("[DEBUG] Player \"".$this->username."\" EID ".$this->eid." spawned at X ".$this->entity->x." Y ".$this->entity->y." Z ".$this->entity->z, true, true, 2);
|
||||||
$this->eventHandler(new Container($this->server->motd), "server.chat");
|
$this->eventHandler(new Container($this->server->motd), "server.chat");
|
||||||
if($this->MTU <= 548){
|
if($this->MTU <= 548){
|
||||||
@ -561,6 +574,10 @@ class Player{
|
|||||||
}
|
}
|
||||||
$this->server->handle("player.block.break", $data);
|
$this->server->handle("player.block.break", $data);
|
||||||
break;
|
break;
|
||||||
|
case MC_SET_ARMOR:
|
||||||
|
$data["eid"] = $this->eid;
|
||||||
|
$this->handle("player.armor", $data);
|
||||||
|
break;
|
||||||
case MC_INTERACT:
|
case MC_INTERACT:
|
||||||
if(isset($this->server->entities[$data["target"]]) and Utils::distance($this->entity->position, $this->server->entities[$data["target"]]->position) <= 8){
|
if(isset($this->server->entities[$data["target"]]) and Utils::distance($this->entity->position, $this->server->entities[$data["target"]]->position) <= 8){
|
||||||
if($this->handle("player.interact", $data) !== false){
|
if($this->handle("player.interact", $data) !== false){
|
||||||
|
@ -445,6 +445,21 @@ class CustomPacketHandler{
|
|||||||
$this->raw .= Utils::writeShort($this->data["meta"]);
|
$this->raw .= Utils::writeShort($this->data["meta"]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MC_SET_ARMOR:
|
||||||
|
if($this->c === false){
|
||||||
|
$this->data["eid"] = Utils::readInt($this->get(4));
|
||||||
|
$this->data["slot0"] = ord($this->get(1));
|
||||||
|
$this->data["slot1"] = ord($this->get(1));
|
||||||
|
$this->data["slot2"] = ord($this->get(1));
|
||||||
|
$this->data["slot3"] = ord($this->get(1));
|
||||||
|
}else{
|
||||||
|
$this->raw .= Utils::writeInt($this->data["eid"]);
|
||||||
|
$this->raw .= chr($this->data["slot0"]);
|
||||||
|
$this->raw .= chr($this->data["slot1"]);
|
||||||
|
$this->raw .= chr($this->data["slot2"]);
|
||||||
|
$this->raw .= chr($this->data["slot3"]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MC_INTERACT:
|
case MC_INTERACT:
|
||||||
if($this->c === false){
|
if($this->c === false){
|
||||||
$this->data["action"] = Utils::readByte($this->get(1));
|
$this->data["action"] = Utils::readByte($this->get(1));
|
||||||
|
@ -64,7 +64,7 @@ define("MC_ENTITY_EVENT", 0x9c);
|
|||||||
define("MC_REQUEST_CHUNK", 0x9d);
|
define("MC_REQUEST_CHUNK", 0x9d);
|
||||||
define("MC_CHUNK_DATA", 0x9e);
|
define("MC_CHUNK_DATA", 0x9e);
|
||||||
define("MC_PLAYER_EQUIPMENT", 0x9f);
|
define("MC_PLAYER_EQUIPMENT", 0x9f);
|
||||||
//define("MC_SET_ARMOR_SLOT", 0xa0);
|
define("MC_SET_ARMOR", 0xa0);
|
||||||
define("MC_INTERACT", 0xa1);
|
define("MC_INTERACT", 0xa1);
|
||||||
define("MC_USE_ITEM", 0xa2);
|
define("MC_USE_ITEM", 0xa2);
|
||||||
define("MC_PLAYER_ACTION", 0xa3);
|
define("MC_PLAYER_ACTION", 0xa3);
|
||||||
|
@ -69,7 +69,7 @@ $dataName = array(
|
|||||||
MC_CHUNK_DATA => "ChunkData",
|
MC_CHUNK_DATA => "ChunkData",
|
||||||
|
|
||||||
MC_PLAYER_EQUIPMENT => "PlayerEquipment",
|
MC_PLAYER_EQUIPMENT => "PlayerEquipment",
|
||||||
|
MC_SET_ARMOR => "SetArmorSlot",
|
||||||
MC_INTERACT => "Interact",
|
MC_INTERACT => "Interact",
|
||||||
MC_USE_ITEM => "UseItem",
|
MC_USE_ITEM => "UseItem",
|
||||||
MC_PLAYER_ACTION => "PlayerAction",
|
MC_PLAYER_ACTION => "PlayerAction",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user