public function launch(Player $player) { $dir = $player->getDirectionVector(); $frontPos = $player->add($dir->multiply(1.1)); $nbt = new Compound("", ["Pos" => new Enum("Pos", [new Double("", $frontPos->x), new Double("", $frontPos->y + $player->getEyeHeight()), new Double("", $frontPos->z)]), "Motion" => new Enum("Motion", [new Double("", $dir->x), new Double("", $dir->y), new Double("", $dir->z)]), "Rotation" => new Enum("Rotation", [new Float("", 0), new Float("", 0)])]); $f = $this->f; $launched = Entity::createEntity($this->getEntityName(), $player->chunk, $nbt); $launched->setMotion($launched->getMotion()->multiply($f)); if ($launched instanceof Projectile) { $player->server->getPluginManager()->callEvent($projectileEv = new ProjectileLaunchEvent($launched)); if ($projectileEv->isCancelled()) { $launched->kill(); } else { $launched->spawnToAll(); $player->level->addSound(new LaunchSound($player), $player->getViewers()); } } else { $launched->spawnToAll(); } }
public function onActivate(Item $item, Player $player = null) { //fix for usage in Level->addSound, possible memory leak if ($player instanceof Player) { $players = $player->getViewers(); } else { $players = null; } //fix for possible memory leak, limited addSound call if ($this->soundAdded == true) { return true; } switch ($this->downSideId) { case self::GLASS: case self::GLOWSTONE: $this->getLevel()->addSound(new NoteblockSound($this, NoteblockSound::INSTRUMENT_CLICK, $this->getStrength()), $players); $this->soundAdded = true; break; case self::SAND: case self::GRAVEL: $this->getLevel()->addSound(new NoteblockSound($this, NoteblockSound::INSTRUMENT_TABOUR, $this->getStrength()), $players); $this->soundAdded = true; break; case self::WOOD: $this->getLevel()->addSound(new NoteblockSound($this, NoteblockSound::INSTRUMENT_BASS, $this->getStrength()), $players); $this->soundAdded = true; break; case self::STONE: $this->getLevel()->addSound(new NoteblockSound($this, NoteblockSound::INSTRUMENT_BASS_DRUM, $this->getStrength()), $players); $this->soundAdded = true; break; default: $this->getLevel()->addSound(new NoteblockSound($this, NoteblockSound::INSTRUMENT_PIANO, $this->getStrength()), $players); $this->soundAdded = true; break; } return true; }
public function removePlayerIventory(Player $bp) { if ($bp != null) { $bp->getInventory()->setBoots(new Item(0)); $bp->getInventory()->setChestplate(new Item(0)); $bp->getInventory()->setHelmet(new Item(0)); $bp->getInventory()->setLeggings(new Item(0)); $bp->getInventory()->sendArmorContents($bp->getViewers()); $bp->getInventory()->sendContents($bp); $bp->getInventory()->clearAll(); } }
public function setGamemode(Player $player, $gm) { if ($gm < 0 or $gm > 3 or $player->gamemode === $gm) { return \false; } $player->getServer()->getPluginManager()->callEvent($ev = new PlayerGameModeChangeEvent($player, (int) $gm)); if ($ev->isCancelled()) { return false; } if (($player->gamemode & 0x1) === ($gm & 0x1)) { $player->gamemode = $gm; $player->sendMessage(TextFormat::DARK_AQUA . "게임모드가 변경되었습니다, " . Server::getGamemodeString($player->getGamemode()) . ".\n"); } else { $player->gamemode = $gm; $player->sendMessage(TextFormat::DARK_AQUA . "게임모드가 변경되었습니다, " . Server::getGamemodeString($player->getGamemode()) . ".\n"); $player->getInventory()->clearAll(); $player->getInventory()->sendContents($player->getViewers()); $player->getInventory()->sendHeldItem($player->getViewers()); } $player->namedtag->playerGameType = new Int("playerGameType", $player->gamemode); $player->sendMessage(TextFormat::DARK_AQUA . "새 게임모드 적용을 위해 서버에서 킥처리됩니다."); $this->getServer()->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "Kick"], [$player]), 50); return true; }
/** * Send Mods * * @param StatueModel $statue * @param Player $p * @internal param unknown $modId */ public function spawnMods(StatueModel $statue, Player $p) { $pk = new AddEntityPacket(); $pk->eid = $statue->eid; $pk->type = $statue->networkId; $pk->x = $statue->position->x; $pk->y = $statue->position->y; $pk->z = $statue->position->z; $pk->yaw = 0; $pk->pitch = 30; $pk->metadata = array(); $p->dataPacket($pk); Server::broadcastPacket($p->getViewers(), $pk); $pk = new SetEntityMotionPacket(); $pk->entities = [[$statue->eid, 0, 290, 0]]; $p->dataPacket($pk); Server::broadcastPacket($p->getViewers(), $pk); $p->addEntityMotion($statue->eid, 64, 290, 0); }