Ejemplo n.º 1
0
 /**
  * @priority HIGHEST
  */
 public function levelChg(EntityLevelChangeEvent $ev)
 {
     echo __METHOD__ . "," . __LINE__ . "\n";
     //##DEBUG
     if ($ev->isCancelled()) {
         return;
     }
     $player = $ev->getEntity();
     if (!$player instanceof Player) {
         return;
     }
     if ($player->isCreative()) {
         return;
     }
     if ($player->hasPermission("liab.keep")) {
         return;
     }
     if (!$this->saveInventory($player, $ev->getOrigin())) {
         return;
     }
     $player->getInventory()->clearAll();
     if (!$this->loadInventory($player, $ev->getTarget())) {
         return;
     }
 }
Ejemplo n.º 2
0
 protected function switchLevel(Level $targetLevel)
 {
     if ($this->isValid()) {
         $this->server->getPluginManager()->callEvent($ev = new EntityLevelChangeEvent($this, $this->level, $targetLevel));
         if ($ev->isCancelled()) {
             return false;
         }
         $this->level->removeEntity($this);
         if ($this->chunk !== null) {
             $this->chunk->removeEntity($this);
         }
         $this->despawnFromAll();
         if ($this instanceof Player) {
             foreach ($this->usedChunks as $index => $d) {
                 if (PHP_INT_SIZE === 8) {
                     $X = $index >> 32 << 32 >> 32;
                     $Z = ($index & 4294967295.0) << 32 >> 32;
                 } else {
                     list($X, $Z) = explode(":", $index);
                     $X = (int) $X;
                     $Z = (int) $Z;
                 }
                 $this->unloadChunk($X, $Z);
             }
         }
     }
     $this->setLevel($targetLevel);
     $this->level->addEntity($this);
     if ($this instanceof Player) {
         $this->usedChunks = [];
         $pk = new SetTimePacket();
         $pk->time = $this->level->getTime();
         $pk->started = $this->level->stopTime == false;
         $this->dataPacket($pk);
     }
     $this->chunk = null;
     return true;
 }
Ejemplo n.º 3
0
 protected function switchLevel(Level $targetLevel)
 {
     if ($this->closed) {
         return false;
     }
     if ($this->isValid()) {
         $this->server->getPluginManager()->callEvent($ev = new EntityLevelChangeEvent($this, $this->level, $targetLevel));
         if ($ev->isCancelled()) {
             return false;
         }
         $this->level->removeEntity($this);
         if ($this->chunk !== null) {
             $this->chunk->removeEntity($this);
         }
         $this->despawnFromAll();
     }
     $this->setLevel($targetLevel);
     $this->level->addEntity($this);
     $this->chunk = null;
     return true;
 }
Ejemplo n.º 4
0
 public function onLevelChange(EntityLevelChangeEvent $ev)
 {
     if ($ev->isCancelled()) {
         return;
     }
     $pl = $ev->getEntity();
     if (!$pl instanceof Player) {
         return;
     }
     //echo $pl->getName()." Level Change\n";
     foreach ($this->getServer()->getLevels() as $lv) {
         $this->despawnPlayerCases($pl, $lv);
     }
     $this->getServer()->getScheduler()->scheduleDelayedTask(new PluginCallbackTask($this, [$this, "spawnPlayerCases"], [$pl, $ev->getTarget()]), 20);
     //$this->spawnPlayerCases($pl,$ev->getTarget());
 }
Ejemplo n.º 5
0
 protected function switchLevel(Level $targetLevel)
 {
     if ($this->isValid()) {
         $this->server->getPluginManager()->callEvent($ev = new EntityLevelChangeEvent($this, $this->level, $targetLevel));
         if ($ev->isCancelled()) {
             return false;
         }
         $this->level->removeEntity($this);
         if ($this->chunk !== null) {
             $this->chunk->removeEntity($this);
         }
         $this->despawnFromAll();
         if ($this instanceof Player) {
             foreach ($this->usedChunks as $index => $d) {
                 Level::getXZ($index, $X, $Z);
                 $this->unloadChunk($X, $Z);
             }
         }
     }
     $this->setLevel($targetLevel);
     $this->level->addEntity($this);
     if ($this instanceof Player) {
         $this->usedChunks = [];
         $pk = new SetTimePacket();
         $pk->time = $this->level->getTime();
         $pk->started = $this->level->stopTime == false;
         $this->dataPacket($pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
     }
     $this->chunk = null;
     return true;
 }
Ejemplo n.º 6
0
 protected function switchLevel(Level $targetLevel)
 {
     if ($this->isValid()) {
         $this->server->getPluginManager()->callEvent($ev = new EntityLevelChangeEvent($this, $this->getLevel(), $targetLevel));
         if ($ev->isCancelled()) {
             return false;
         }
         $this->getLevel()->removeEntity($this);
         $this->chunk->removeEntity($this);
         $this->despawnFromAll();
         if ($this instanceof Player) {
             foreach ($this->usedChunks as $index => $d) {
                 $X = null;
                 $Z = null;
                 Level::getXZ($index, $X, $Z);
                 foreach ($this->getLevel()->getChunkEntities($X, $Z) as $entity) {
                     $entity->despawnFrom($this);
                 }
             }
             $this->getLevel()->freeAllChunks($this);
         }
     }
     $this->setLevel($targetLevel, $this instanceof Player ? true : false);
     //Hard reference
     $this->getLevel()->addEntity($this);
     if ($this instanceof Player) {
         $this->usedChunks = [];
         $pk = new SetTimePacket();
         $pk->time = $this->getLevel()->getTime();
         $pk->started = $this->getLevel()->stopTime == false;
         $this->dataPacket($pk);
     }
     $this->chunk = null;
     return true;
 }
Ejemplo n.º 7
0
 public function onLevelChange(EntityLevelChangeEvent $event)
 {
     echo __METHOD__ . "," . __LINE__ . "\n";
     if ($event->isCancelled()) {
         return;
     }
     $player = $event->getEntity();
     if (!$player instanceof Player) {
         return;
     }
     if ($player->isCreative()) {
         return;
     }
     if (!$this->saveInventory($player, $event->getOrigin())) {
         return;
     }
     $player->getInventory()->clearAll();
     if (!$this->loadInventory($player, $event->getTarget())) {
         return;
     }
     $slot = $this->getConfig()->get("slot");
     $item = $this->getConfig()->get("ID");
     $damage = $this->getConfig()->get("Damage");
     $ammount = $this->getConfig()->get("Ammount");
     $level = $event->getLevel();
     $world = $this->getConfig()->get("world");
     if ($level == $world && $slot <= 35) {
         $player->getInventory()->setItem($slot, Item::get($item, $damage, $ammount));
     }
     $slot = $this->getConfig()->get("slot2");
     $item = $this->getConfig()->get("ID2");
     $damage = $this->getConfig()->get("Damage2");
     $ammount = $this->getConfig()->get("Ammount2");
     $level = $event->getLevel();
     $world = $this->getConfig()->get("world");
     if ($level == $world && $slot <= 35) {
         $player->getInventory()->setItem($slot, Item::get($item, $damage, $ammount));
     }
     $slot = $this->getConfig()->get("slot3");
     $item = $this->getConfig()->get("ID3");
     $damage = $this->getConfig()->get("Damage3");
     $ammount = $this->getConfig()->get("Ammount3");
     $level = $event->getLevel();
     $world = $this->getConfig()->get("world");
     if ($level == $world && $slot <= 35) {
         $player->getInventory()->setItem($slot, Item::get($item, $damage, $ammount));
     }
     $slot = $this->getConfig()->get("slot4");
     $item = $this->getConfig()->get("ID4");
     $damage = $this->getConfig()->get("Damage4");
     $ammount = $this->getConfig()->get("Ammount4");
     $level = $event->getLevel();
     $world = $this->getConfig()->get("world");
     if ($level == $world && $slot <= 35) {
         $player->getInventory()->setItem($slot, Item::get($item, $damage, $ammount));
     }
     $slot = $this->getConfig()->get("slot5");
     $item = $this->getConfig()->get("ID5");
     $damage = $this->getConfig()->get("Damage5");
     $ammount = $this->getConfig()->get("Ammount5");
     $level = $event->getLevel();
     $world = $this->getConfig()->get("world");
     if ($level == $world && $slot <= 35) {
         $player->getInventory()->setItem($slot, Item::get($item, $damage, $ammount));
     }
     $slot = $this->getConfig()->get("slot6");
     $item = $this->getConfig()->get("ID6");
     $damage = $this->getConfig()->get("Damage6");
     $ammount = $this->getConfig()->get("Ammount6");
     $level = $event->getLevel();
     $world = $this->getConfig()->get("world");
     if ($level == $world && $slot <= 35) {
         $player->getInventory()->setItem($slot, Item::get($item, $damage, $ammount));
     }
     $slot = $this->getConfig()->get("slot7");
     $item = $this->getConfig()->get("ID7");
     $damage = $this->getConfig()->get("Damage7");
     $ammount = $this->getConfig()->get("Ammount7");
     $level = $event->getLevel();
     $world = $this->getConfig()->get("world");
     if ($level == $world && $slot <= 35) {
         $player->getInventory()->setItem($slot, Item::get($item, $damage, $ammount));
     }
     $slot = $this->getConfig()->get("slot8");
     $item = $this->getConfig()->get("ID8");
     $damage = $this->getConfig()->get("Damage8");
     $ammount = $this->getConfig()->get("Ammount8");
     $level = $event->getLevel();
     $world = $this->getConfig()->get("world");
     if ($level == $world && $slot <= 35) {
         $player->getInventory()->setItem($slot, Item::get($item, $damage, $ammount));
     }
     $slot = $this->getConfig()->get("slot9");
     $item = $this->getConfig()->get("ID9");
     $damage = $this->getConfig()->get("Damage9");
     $ammount = $this->getConfig()->get("Ammount9");
     $level = $event->getLevel();
     $world = $this->getConfig()->get("world");
     if ($level == $world && $slot <= 35) {
         $player->getInventory()->setItem($slot, Item::get($item, $damage, $ammount));
     }
     $slot = $this->getConfig()->get("slot10");
     $item = $this->getConfig()->get("ID10");
     $damage = $this->getConfig()->get("Damage10");
     $ammount = $this->getConfig()->get("Ammount10");
     $level = $event->getLevel();
     $world = $this->getConfig()->get("world");
     if ($level == $world && $slot <= 35) {
         $player->getInventory()->setItem($slot, Item::get($item, $damage, $ammount));
     }
 }