mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-22 08:44:01 +00:00
Added Armor
This commit is contained in:
parent
1e8b012a6e
commit
fe8b4b7aa7
@ -261,6 +261,7 @@ class PlayerAPI{
|
||||
"z" => $this->server->spawn["z"],
|
||||
),
|
||||
"inventory" => array_fill(0, 36, array(0, 0, 0)),
|
||||
"armor" => array(0, 0, 0, 0),
|
||||
"health" => 20,
|
||||
"lastIP" => "",
|
||||
"lastID" => 0,
|
||||
|
@ -47,6 +47,7 @@ class Player{
|
||||
var $spawned = false;
|
||||
var $inventory;
|
||||
var $equipment = array(1, 0);
|
||||
var $armor = array(0, 0, 0, 0);
|
||||
var $loggedIn = false;
|
||||
function __construct(PocketMinecraftServer $server, $clientID, $ip, $port, $MTU){
|
||||
$this->MTU = $MTU;
|
||||
@ -187,6 +188,15 @@ class Player{
|
||||
|
||||
public function eventHandler($data, $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":
|
||||
if($data["eid"] === $this->eid and $this->server->gamemode === 0){
|
||||
$this->removeItem($data["original"][0], $data["original"][1], 1);
|
||||
@ -437,6 +447,7 @@ class Player{
|
||||
$this->data["inventory"] = $this->inventory;
|
||||
}
|
||||
$this->inventory = &$this->data["inventory"];
|
||||
$this->armor = &$this->data["armor"];
|
||||
|
||||
$this->data["lastIP"] = $this->ip;
|
||||
$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.metadata", 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("block.change", 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);
|
||||
$this->eventHandler(new Container($this->server->motd), "server.chat");
|
||||
if($this->MTU <= 548){
|
||||
@ -561,6 +574,10 @@ class Player{
|
||||
}
|
||||
$this->server->handle("player.block.break", $data);
|
||||
break;
|
||||
case MC_SET_ARMOR:
|
||||
$data["eid"] = $this->eid;
|
||||
$this->handle("player.armor", $data);
|
||||
break;
|
||||
case MC_INTERACT:
|
||||
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){
|
||||
|
@ -445,6 +445,21 @@ class CustomPacketHandler{
|
||||
$this->raw .= Utils::writeShort($this->data["meta"]);
|
||||
}
|
||||
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:
|
||||
if($this->c === false){
|
||||
$this->data["action"] = Utils::readByte($this->get(1));
|
||||
|
@ -64,7 +64,7 @@ define("MC_ENTITY_EVENT", 0x9c);
|
||||
define("MC_REQUEST_CHUNK", 0x9d);
|
||||
define("MC_CHUNK_DATA", 0x9e);
|
||||
define("MC_PLAYER_EQUIPMENT", 0x9f);
|
||||
//define("MC_SET_ARMOR_SLOT", 0xa0);
|
||||
define("MC_SET_ARMOR", 0xa0);
|
||||
define("MC_INTERACT", 0xa1);
|
||||
define("MC_USE_ITEM", 0xa2);
|
||||
define("MC_PLAYER_ACTION", 0xa3);
|
||||
|
@ -69,7 +69,7 @@ $dataName = array(
|
||||
MC_CHUNK_DATA => "ChunkData",
|
||||
|
||||
MC_PLAYER_EQUIPMENT => "PlayerEquipment",
|
||||
|
||||
MC_SET_ARMOR => "SetArmorSlot",
|
||||
MC_INTERACT => "Interact",
|
||||
MC_USE_ITEM => "UseItem",
|
||||
MC_PLAYER_ACTION => "PlayerAction",
|
||||
|
Loading…
x
Reference in New Issue
Block a user