From 06de85fd33ecd179e29f4e932715129c66198c84 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 11 Feb 2017 19:22:59 +0000 Subject: [PATCH 01/25] Revert "Fix entities missing in imported leveldb worlds", fixed entities missing after restart in anything OTHER than LevelDB :facepalm: I should test this stuff more This reverts commit ffadc34691aa827a3640fd0908b9fce585d68bbe. --- src/pocketmine/level/format/Chunk.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pocketmine/level/format/Chunk.php b/src/pocketmine/level/format/Chunk.php index 8cf58181965..f036662160d 100644 --- a/src/pocketmine/level/format/Chunk.php +++ b/src/pocketmine/level/format/Chunk.php @@ -716,8 +716,7 @@ public function initChunk(){ continue; //Fixes entities allocated in wrong chunks. } - //TODO: check bitflags - if(($entity = Entity::createEntity($nbt["id"] & 0xff, $this, $nbt)) instanceof Entity){ + if(($entity = Entity::createEntity($nbt["id"], $this, $nbt)) instanceof Entity){ $entity->spawnToAll(); }else{ $changed = true; From d430ad50bee66c295b206407ebba523ecd822e21 Mon Sep 17 00:00:00 2001 From: Sandertv Date: Sat, 11 Feb 2017 21:15:22 +0100 Subject: [PATCH 02/25] Fixed wrong temperature and temperature -> rainfall (#347) --- src/pocketmine/level/generator/normal/biome/ForestBiome.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pocketmine/level/generator/normal/biome/ForestBiome.php b/src/pocketmine/level/generator/normal/biome/ForestBiome.php index 2c0b5a3e482..563935511bb 100644 --- a/src/pocketmine/level/generator/normal/biome/ForestBiome.php +++ b/src/pocketmine/level/generator/normal/biome/ForestBiome.php @@ -49,11 +49,11 @@ public function __construct($type = self::TYPE_NORMAL){ $this->setElevation(63, 81); if($type === self::TYPE_BIRCH){ - $this->temperature = 0.5; + $this->temperature = 0.6; $this->rainfall = 0.5; }else{ $this->temperature = 0.7; - $this->temperature = 0.8; + $this->rainfall = 0.8; } } From 6dc6e3265666eb700305bdf4f484ce3f17c01650 Mon Sep 17 00:00:00 2001 From: Sandertv Date: Sat, 11 Feb 2017 22:24:38 +0100 Subject: [PATCH 03/25] Added some very useless functions for easier size changing of entities. (#348) --- src/pocketmine/entity/Entity.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/pocketmine/entity/Entity.php b/src/pocketmine/entity/Entity.php index 3f99ebe4ea5..1af83010444 100644 --- a/src/pocketmine/entity/Entity.php +++ b/src/pocketmine/entity/Entity.php @@ -384,7 +384,21 @@ public function setNameTagVisible($value = true){ public function setNameTagAlwaysVisible($value = true){ $this->setDataFlag(self::DATA_FLAGS, self::DATA_FLAG_ALWAYS_SHOW_NAMETAG, $value); } - + + /** + * @return float + */ + public function getScale(): float{ + return $this->getDataProperty(self::DATA_SCALE); + } + + /** + * @param float $value + */ + public function setScale(float $value){ + $this->setDataProperty(self::DATA_SCALE, self::DATA_TYPE_FLOAT, $value); + } + public function isSneaking(){ return $this->getDataFlag(self::DATA_FLAGS, self::DATA_FLAG_SNEAKING); } From b89a17ffe2a8f7f6eec05bd4721378a72965a4ee Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 12 Feb 2017 10:35:17 +0000 Subject: [PATCH 04/25] Added missing attributes encoding to AddEntityPacket --- src/pocketmine/network/protocol/AddEntityPacket.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/pocketmine/network/protocol/AddEntityPacket.php b/src/pocketmine/network/protocol/AddEntityPacket.php index 067b36fdf12..02cfc5cafc4 100644 --- a/src/pocketmine/network/protocol/AddEntityPacket.php +++ b/src/pocketmine/network/protocol/AddEntityPacket.php @@ -23,6 +23,8 @@ #include +use pocketmine\entity\Attribute; + #ifndef COMPILE use pocketmine\utils\Binary; @@ -41,7 +43,8 @@ class AddEntityPacket extends DataPacket{ public $speedZ; public $yaw; public $pitch; - public $modifiers; + /** @var Attribute[] */ + public $attributes = []; public $metadata = []; public $links = []; @@ -58,7 +61,13 @@ public function encode(){ $this->putVector3f($this->speedX, $this->speedY, $this->speedZ); $this->putLFloat($this->pitch * (256 / 360)); $this->putLFloat($this->yaw * (256 / 360)); - $this->putUnsignedVarInt($this->modifiers); //attributes? + $this->putUnsignedVarInt(count($this->attributes)); + foreach($this->attributes as $entry){ + $this->putString($entry->getName()); + $this->putLFloat($entry->getMinValue()); + $this->putLFloat($entry->getValue()); + $this->putLFloat($entry->getMaxValue()); + } $meta = Binary::writeMetadata($this->metadata); $this->put($meta); $this->putUnsignedVarInt(count($this->links)); From 5a12f40074ba9f8218ecd6f1f07832f91de8b039 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 12 Feb 2017 12:18:25 +0000 Subject: [PATCH 05/25] Only Region file formats are allowed as parameters for RegionLoaders --- src/pocketmine/level/format/io/region/RegionLoader.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pocketmine/level/format/io/region/RegionLoader.php b/src/pocketmine/level/format/io/region/RegionLoader.php index ef5bd167a8e..177d28eca27 100644 --- a/src/pocketmine/level/format/io/region/RegionLoader.php +++ b/src/pocketmine/level/format/io/region/RegionLoader.php @@ -25,7 +25,6 @@ use pocketmine\level\format\Chunk; use pocketmine\level\format\io\ChunkException; -use pocketmine\level\format\io\LevelProvider; use pocketmine\utils\Binary; use pocketmine\utils\MainLogger; @@ -41,13 +40,13 @@ class RegionLoader{ protected $filePath; protected $filePointer; protected $lastSector; - /** @var LevelProvider */ + /** @var McRegion */ protected $levelProvider; protected $locationTable = []; public $lastUsed; - public function __construct(LevelProvider $level, int $regionX, int $regionZ, string $fileExtension = McRegion::REGION_FILE_EXTENSION){ + public function __construct(McRegion $level, int $regionX, int $regionZ, string $fileExtension = McRegion::REGION_FILE_EXTENSION){ $this->x = $regionX; $this->z = $regionZ; $this->levelProvider = $level; From 8f9c52507a4b1357f7a08c52482db084461019f1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 12 Feb 2017 12:36:02 +0000 Subject: [PATCH 06/25] Some PhpStorm cleanup --- src/pocketmine/PocketMine.php | 1 - src/pocketmine/command/Command.php | 3 --- src/pocketmine/command/CommandReader.php | 2 +- src/pocketmine/level/format/io/ChunkUtils.php | 2 -- src/pocketmine/wizard/Installer.php | 4 ++-- 5 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index 0e1fa6f67eb..5f816eb395c 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -65,7 +65,6 @@ function dummy(){ } namespace pocketmine { - use pocketmine\network\protocol\Info as ProtocolInfo; use pocketmine\utils\Binary; use pocketmine\utils\MainLogger; use pocketmine\utils\ServerKiller; diff --git a/src/pocketmine/command/Command.php b/src/pocketmine/command/Command.php index 174a2a7861a..859bbc823dc 100644 --- a/src/pocketmine/command/Command.php +++ b/src/pocketmine/command/Command.php @@ -65,9 +65,6 @@ abstract class Command{ /** @var string */ protected $usageMessage; - /** @var string */ - private $permission = null; - /** @var string */ private $permissionMessage = null; diff --git a/src/pocketmine/command/CommandReader.php b/src/pocketmine/command/CommandReader.php index 92979c432e5..fcfaa984d8f 100644 --- a/src/pocketmine/command/CommandReader.php +++ b/src/pocketmine/command/CommandReader.php @@ -35,7 +35,6 @@ class CommandReader extends Thread{ protected $buffer; private $shutdown = false; private $type = self::TYPE_STREAM; - private $lastLine = -1; public function __construct(){ $this->buffer = new \Threaded; @@ -89,6 +88,7 @@ private function initStdin(){ /** * Checks if the specified stream is a FIFO pipe. * + * @param resource $stream * @return bool */ private function isPipe($stream) : bool{ diff --git a/src/pocketmine/level/format/io/ChunkUtils.php b/src/pocketmine/level/format/io/ChunkUtils.php index 6fbc56934a3..934ab46b27f 100644 --- a/src/pocketmine/level/format/io/ChunkUtils.php +++ b/src/pocketmine/level/format/io/ChunkUtils.php @@ -36,8 +36,6 @@ public static final function reorderByteArray(string $array) : string{ $result = str_repeat("\x00", 4096); if($array !== $result){ $i = 0; - $zM = 0; - $yM = 0; for($x = 0; $x < 16; ++$x){ $zM = $x + 256; for($z = $x; $z < $zM; $z += 16){ diff --git a/src/pocketmine/wizard/Installer.php b/src/pocketmine/wizard/Installer.php index 5e967610423..f6f3c8ee2f5 100644 --- a/src/pocketmine/wizard/Installer.php +++ b/src/pocketmine/wizard/Installer.php @@ -58,13 +58,13 @@ public function run(){ $this->lang = new InstallerLang($lang); - echo "[*] " . $this->lang->language_has_been_selected . "\n"; + echo "[*] " . $this->lang->get("language_has_been_selected") . "\n"; if(!$this->showLicense()){ return false; } - echo "[?] " . $this->lang->skip_installer . " (y/N): "; + echo "[?] " . $this->lang->get("skip_installer") . " (y/N): "; if(strtolower($this->getInput()) === "y"){ return true; } From 27f2aec16016410e06dc595c435ae5aaec1d4b9e Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 12 Feb 2017 12:52:02 +0000 Subject: [PATCH 07/25] Fixed wrong docs for Plugin->getPluginFilters() --- src/pocketmine/plugin/PharPluginLoader.php | 2 +- src/pocketmine/plugin/PluginLoader.php | 4 ++-- src/pocketmine/plugin/ScriptPluginLoader.php | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pocketmine/plugin/PharPluginLoader.php b/src/pocketmine/plugin/PharPluginLoader.php index 030e9882912..c5cbf77dbad 100644 --- a/src/pocketmine/plugin/PharPluginLoader.php +++ b/src/pocketmine/plugin/PharPluginLoader.php @@ -95,7 +95,7 @@ public function getPluginDescription($file){ /** * Returns the filename patterns that this loader accepts * - * @return array + * @return string */ public function getPluginFilters(){ return "/\\.phar$/i"; diff --git a/src/pocketmine/plugin/PluginLoader.php b/src/pocketmine/plugin/PluginLoader.php index 4cdeab66bf6..720786ac5d0 100644 --- a/src/pocketmine/plugin/PluginLoader.php +++ b/src/pocketmine/plugin/PluginLoader.php @@ -45,9 +45,9 @@ public function loadPlugin($file); public function getPluginDescription($file); /** - * Returns the filename patterns that this loader accepts + * Returns the filename regex patterns that this loader accepts * - * @return string[] + * @return string */ public function getPluginFilters(); diff --git a/src/pocketmine/plugin/ScriptPluginLoader.php b/src/pocketmine/plugin/ScriptPluginLoader.php index cb499a08e4b..15e9267cc25 100644 --- a/src/pocketmine/plugin/ScriptPluginLoader.php +++ b/src/pocketmine/plugin/ScriptPluginLoader.php @@ -118,7 +118,7 @@ public function getPluginDescription($file){ /** * Returns the filename patterns that this loader accepts * - * @return array + * @return string */ public function getPluginFilters(){ return "/\\.php$/i"; From 91fd99d76a32044189fd9758e205e630e24845a0 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 12 Feb 2017 16:01:23 +0000 Subject: [PATCH 08/25] Fixed DestroyBlockParticle --- src/pocketmine/Player.php | 2 +- src/pocketmine/level/Level.php | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index d33e6fc49f0..b3c96a2257f 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -2361,7 +2361,7 @@ public function handleDataPacket(DataPacket $packet){ $oldItem = clone $item; - if($this->canInteract($vector->add(0.5, 0.5, 0.5), $this->isCreative() ? 13 : 6) and $this->level->useBreakOn($vector, $item, $this)){ + if($this->canInteract($vector->add(0.5, 0.5, 0.5), $this->isCreative() ? 13 : 6) and $this->level->useBreakOn($vector, $item, $this, true)){ if($this->isSurvival()){ if(!$item->deepEquals($oldItem) or $item->getCount() !== $oldItem->getCount()){ $this->inventory->setItemInHand($item); diff --git a/src/pocketmine/level/Level.php b/src/pocketmine/level/Level.php index 8a543ddefb4..ee2abdf08b9 100644 --- a/src/pocketmine/level/Level.php +++ b/src/pocketmine/level/Level.php @@ -1572,12 +1572,7 @@ public function useBreakOn(Vector3 $vector, Item &$item = null, Player $player = } if($createParticles){ - $players = $this->getChunkPlayers($target->x >> 4, $target->z >> 4); - if($player !== null){ - unset($players[$player->getLoaderId()]); - } - - $this->addParticle(new DestroyBlockParticle($target->add(0.5), $target), $players); + $this->addParticle(new DestroyBlockParticle($target->add(0.5, 0.5, 0.5), $target)); } $target->onBreak($item); From 8a3c30ee7e6ce147f2f0d1d7beb3d2c7eeb097c6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2017 14:05:16 +0000 Subject: [PATCH 09/25] Moved entity metadata methods out of Binary --- .../network/protocol/AddEntityPacket.php | 8 +- .../network/protocol/AddPlayerPacket.php | 8 +- .../network/protocol/CraftingEventPacket.php | 3 + .../network/protocol/DataPacket.php | 112 ++++++++++++++++ .../network/protocol/SetEntityDataPacket.php | 7 +- src/pocketmine/utils/Binary.php | 122 +----------------- 6 files changed, 119 insertions(+), 141 deletions(-) diff --git a/src/pocketmine/network/protocol/AddEntityPacket.php b/src/pocketmine/network/protocol/AddEntityPacket.php index 02cfc5cafc4..b987fd4c6db 100644 --- a/src/pocketmine/network/protocol/AddEntityPacket.php +++ b/src/pocketmine/network/protocol/AddEntityPacket.php @@ -25,11 +25,6 @@ use pocketmine\entity\Attribute; -#ifndef COMPILE -use pocketmine\utils\Binary; - -#endif - class AddEntityPacket extends DataPacket{ const NETWORK_ID = Info::ADD_ENTITY_PACKET; @@ -68,8 +63,7 @@ public function encode(){ $this->putLFloat($entry->getValue()); $this->putLFloat($entry->getMaxValue()); } - $meta = Binary::writeMetadata($this->metadata); - $this->put($meta); + $this->putEntityMetadata($this->metadata); $this->putUnsignedVarInt(count($this->links)); foreach($this->links as $link){ $this->putEntityId($link[0]); diff --git a/src/pocketmine/network/protocol/AddPlayerPacket.php b/src/pocketmine/network/protocol/AddPlayerPacket.php index 139b4103183..892cb391c53 100644 --- a/src/pocketmine/network/protocol/AddPlayerPacket.php +++ b/src/pocketmine/network/protocol/AddPlayerPacket.php @@ -23,11 +23,6 @@ #include -#ifndef COMPILE -use pocketmine\utils\Binary; - -#endif - class AddPlayerPacket extends DataPacket{ const NETWORK_ID = Info::ADD_PLAYER_PACKET; @@ -62,8 +57,7 @@ public function encode(){ $this->putLFloat($this->headYaw ?? $this->yaw); $this->putLFloat($this->yaw); $this->putSlot($this->item); - $meta = Binary::writeMetadata($this->metadata); - $this->put($meta); + $this->putEntityMetadata($this->metadata); } } diff --git a/src/pocketmine/network/protocol/CraftingEventPacket.php b/src/pocketmine/network/protocol/CraftingEventPacket.php index 8474cfb8306..ffc294b19f6 100644 --- a/src/pocketmine/network/protocol/CraftingEventPacket.php +++ b/src/pocketmine/network/protocol/CraftingEventPacket.php @@ -23,6 +23,7 @@ #include +use pocketmine\item\Item; class CraftingEventPacket extends DataPacket{ const NETWORK_ID = Info::CRAFTING_EVENT_PACKET; @@ -30,7 +31,9 @@ class CraftingEventPacket extends DataPacket{ public $windowId; public $type; public $id; + /** @var Item[] */ public $input = []; + /** @var Item[] */ public $output = []; public function clean(){ diff --git a/src/pocketmine/network/protocol/DataPacket.php b/src/pocketmine/network/protocol/DataPacket.php index 03d3525105c..94d989ee1b9 100644 --- a/src/pocketmine/network/protocol/DataPacket.php +++ b/src/pocketmine/network/protocol/DataPacket.php @@ -23,6 +23,8 @@ #include +use pocketmine\entity\Entity; +use pocketmine\item\Item; use pocketmine\utils\BinaryStream; use pocketmine\utils\Utils; @@ -67,4 +69,114 @@ public function __debugInfo(){ return $data; } + + /** + * Decodes entity metadata from the stream. + * + * @param bool $types Whether to include metadata types along with values in the returned array + * + * @return array + */ + public function getEntityMetadata(bool $types = true) : array{ + $count = $this->getUnsignedVarInt(); + $data = []; + for($i = 0; $i < $count; ++$i){ + $key = $this->getUnsignedVarInt(); + $type = $this->getUnsignedVarInt(); + $value = null; + switch($type){ + case Entity::DATA_TYPE_BYTE: + $value = $this->getByte(); + break; + case Entity::DATA_TYPE_SHORT: + $value = $this->getLShort(true); //signed + break; + case Entity::DATA_TYPE_INT: + $value = $this->getVarInt(); + break; + case Entity::DATA_TYPE_FLOAT: + $value = $this->getLFloat(); + break; + case Entity::DATA_TYPE_STRING: + $value = $this->getString(); + break; + case Entity::DATA_TYPE_SLOT: + //TODO: use objects directly + $value = []; + $item = $this->getSlot(); + $value[0] = $item->getId(); + $value[1] = $item->getCount(); + $value[2] = $item->getDamage(); + break; + case Entity::DATA_TYPE_POS: + $value = []; + $value[0] = $this->getVarInt(); //x + $value[1] = $this->getVarInt(); //y (SIGNED) + $value[2] = $this->getVarInt(); //z + break; + case Entity::DATA_TYPE_LONG: + $value = $this->getVarInt(); //TODO: varint64 proper support + break; + case Entity::DATA_TYPE_VECTOR3F: + $value = [0.0, 0.0, 0.0]; + $this->getVector3f($value[0], $value[1], $value[2]); + break; + default: + $value = []; + } + if($types === true){ + $data[$key] = [$value, $type]; + }else{ + $data[$key] = $value; + } + } + + return $data; + } + + /** + * Writes entity metadata to the packet buffer. + * + * @param array $metadata + */ + public function putEntityMetadata(array $metadata){ + $this->putUnsignedVarInt(count($metadata)); + foreach($metadata as $key => $d){ + $this->putUnsignedVarInt($key); //data key + $this->putUnsignedVarInt($d[0]); //data type + switch($d[0]){ + case Entity::DATA_TYPE_BYTE: + $this->putByte($d[1]); + break; + case Entity::DATA_TYPE_SHORT: + $this->putLShort($d[1]); //SIGNED short! + break; + case Entity::DATA_TYPE_INT: + $this->putVarInt($d[1]); + break; + case Entity::DATA_TYPE_FLOAT: + $this->putLFloat($d[1]); + break; + case Entity::DATA_TYPE_STRING: + $this->putString($d[1]); + break; + case Entity::DATA_TYPE_SLOT: + //TODO: change this implementation (use objects) + $this->putSlot(Item::get($d[1][0], $d[1][2], $d[1][1])); //ID, damage, count + break; + case Entity::DATA_TYPE_POS: + //TODO: change this implementation (use objects) + $this->putVarInt($d[1][0]); //x + $this->putVarInt($d[1][1]); //y (SIGNED) + $this->putVarInt($d[1][2]); //z + break; + case Entity::DATA_TYPE_LONG: + $this->putVarInt($d[1]); //TODO: varint64 support + break; + case Entity::DATA_TYPE_VECTOR3F: + //TODO: change this implementation (use objects) + $this->putVector3f($d[1][0], $d[1][1], $d[1][2]); //x, y, z + } + } + } } diff --git a/src/pocketmine/network/protocol/SetEntityDataPacket.php b/src/pocketmine/network/protocol/SetEntityDataPacket.php index f116faf7068..32b3697467b 100644 --- a/src/pocketmine/network/protocol/SetEntityDataPacket.php +++ b/src/pocketmine/network/protocol/SetEntityDataPacket.php @@ -23,10 +23,6 @@ #include -#ifndef COMPILE -use pocketmine\utils\Binary; - -#endif class SetEntityDataPacket extends DataPacket{ const NETWORK_ID = Info::SET_ENTITY_DATA_PACKET; @@ -41,8 +37,7 @@ public function decode(){ public function encode(){ $this->reset(); $this->putEntityId($this->eid); - $meta = Binary::writeMetadata($this->metadata); - $this->put($meta); + $this->putEntityMetadata($this->metadata); } } diff --git a/src/pocketmine/utils/Binary.php b/src/pocketmine/utils/Binary.php index 95449724573..7899e538388 100644 --- a/src/pocketmine/utils/Binary.php +++ b/src/pocketmine/utils/Binary.php @@ -20,12 +20,10 @@ */ /** - * Various Utilities used around the code + * Methods for working with binary strings */ namespace pocketmine\utils; -use pocketmine\entity\Entity; -use pocketmine\item\Item; class Binary{ const BIG_ENDIAN = 0x00; @@ -81,124 +79,6 @@ public static function writeLTriad($value){ return substr(pack("V", $value), 0, -1); } - /** - * Writes a coded metadata string - * - * @param array $data - * - * @return string - */ - public static function writeMetadata(array $data){ - $stream = new BinaryStream(); - $stream->putUnsignedVarInt(count($data)); - foreach($data as $key => $d){ - $stream->putUnsignedVarInt($key); //data key - $stream->putUnsignedVarInt($d[0]); //data type - switch($d[0]){ - case Entity::DATA_TYPE_BYTE: - $stream->putByte($d[1]); - break; - case Entity::DATA_TYPE_SHORT: - $stream->putLShort($d[1]); //SIGNED short! - break; - case Entity::DATA_TYPE_INT: - $stream->putVarInt($d[1]); - break; - case Entity::DATA_TYPE_FLOAT: - $stream->putLFloat($d[1]); - break; - case Entity::DATA_TYPE_STRING: - $stream->putString($d[1]); - break; - case Entity::DATA_TYPE_SLOT: - //TODO: change this implementation (use objects) - $stream->putSlot(Item::get($d[1][0], $d[1][2], $d[1][1])); //ID, damage, count - break; - case Entity::DATA_TYPE_POS: - //TODO: change this implementation (use objects) - $stream->putVarInt($d[1][0]); //x - $stream->putVarInt($d[1][1]); //y (SIGNED) - $stream->putVarInt($d[1][2]); //z - break; - case Entity::DATA_TYPE_LONG: - $stream->putVarInt($d[1]); //TODO: varint64 support - break; - case Entity::DATA_TYPE_VECTOR3F: - //TODO: change this implementation (use objects) - $stream->putVector3f($d[1][0], $d[1][1], $d[1][2]); //x, y, z - } - } - - return $stream->getBuffer(); - } - - /** - * Reads a metadata coded string - * - * @param $value - * @param bool $types - * - * @return array - */ - public static function readMetadata($value, $types = false){ - $stream = new BinaryStream(); - $stream->setBuffer($value); - $count = $stream->getUnsignedVarInt(); - $data = []; - for($i = 0; $i < $count; ++$i){ - $key = $stream->getUnsignedVarInt(); - $type = $stream->getUnsignedVarInt(); - $value = null; - switch($type){ - case Entity::DATA_TYPE_BYTE: - $value = $stream->getByte(); - break; - case Entity::DATA_TYPE_SHORT: - $value = $stream->getLShort(true); //signed - break; - case Entity::DATA_TYPE_INT: - $value = $stream->getVarInt(); - break; - case Entity::DATA_TYPE_FLOAT: - $value = $stream->getLFloat(); - break; - case Entity::DATA_TYPE_STRING: - $value = $stream->getString(); - break; - case Entity::DATA_TYPE_SLOT: - //TODO: use objects directly - $value = []; - $item = $stream->getSlot(); - $value[0] = $item->getId(); - $value[1] = $item->getCount(); - $value[2] = $item->getDamage(); - break; - case Entity::DATA_TYPE_POS: - $value = []; - $value[0] = $stream->getVarInt(); //x - $value[1] = $stream->getVarInt(); //y (SIGNED) - $value[2] = $stream->getVarInt(); //z - break; - case Entity::DATA_TYPE_LONG: - $value = $stream->getVarInt(); //TODO: varint64 proper support - break; - case Entity::DATA_TYPE_VECTOR3F: - $value = [0.0, 0.0, 0.0]; - $stream->getVector3f($value[0], $value[1], $value[2]); - break; - default: - $value = []; - } - if($types === true){ - $data[$key] = [$value, $type]; - }else{ - $data[$key] = $value; - } - } - - return $data; - } - /** * Reads a byte boolean * From 903534572d533e35972f76b7ba089b48c8b6ab6a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2017 14:27:17 +0000 Subject: [PATCH 10/25] Shut some inspections up --- src/pocketmine/Player.php | 5 ++++- src/pocketmine/block/BurningFurnace.php | 3 ++- src/pocketmine/block/ItemFrame.php | 6 ++++-- src/pocketmine/block/MobHead.php | 3 ++- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index b3c96a2257f..ef320dd606c 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -2680,6 +2680,7 @@ public function handleDataPacket(DataPacket $packet){ if($recipe instanceof ShapedRecipe){ for($x = 0; $x < 3 and $canCraft; ++$x){ for($y = 0; $y < 3; ++$y){ + /** @var Item $item */ $item = $packet->input[$y * 3 + $x]; $ingredient = $recipe->getIngredient($x, $y); if($item->getCount() > 0){ @@ -2695,6 +2696,7 @@ public function handleDataPacket(DataPacket $packet){ for($x = 0; $x < 3 and $canCraft; ++$x){ for($y = 0; $y < 3; ++$y){ + /** @var Item $item */ $item = clone $packet->input[$y * 3 + $x]; foreach($needed as $k => $n){ @@ -2946,7 +2948,8 @@ public function handleDataPacket(DataPacket $packet){ break; } - if(($tile = $this->level->getTile($this->temporalVector->setComponents($packet->x, $packet->y, $packet->z))) instanceof ItemFrame){ + $tile = $this->level->getTile($this->temporalVector->setComponents($packet->x, $packet->y, $packet->z)); + if($tile instanceof ItemFrame){ if(!$tile->getItem()->equals($packet->item) and !$this->isCreative(true)){ $tile->spawnTo($this); break; diff --git a/src/pocketmine/block/BurningFurnace.php b/src/pocketmine/block/BurningFurnace.php index 6ed6cbbaab6..6c056165c26 100644 --- a/src/pocketmine/block/BurningFurnace.php +++ b/src/pocketmine/block/BurningFurnace.php @@ -101,7 +101,8 @@ public function onBreak(Item $item){ public function onActivate(Item $item, Player $player = null){ if($player instanceof Player){ - if(!(($furnace = $this->getLevel()->getTile($this)) instanceof TileFurnace)){ + $furnace = $this->getLevel()->getTile($this); + if(!($furnace instanceof TileFurnace)){ $nbt = new CompoundTag("", [ new ListTag("Items", []), new StringTag("id", Tile::FURNACE), diff --git a/src/pocketmine/block/ItemFrame.php b/src/pocketmine/block/ItemFrame.php index 0610d5dacba..b78ad8fa861 100644 --- a/src/pocketmine/block/ItemFrame.php +++ b/src/pocketmine/block/ItemFrame.php @@ -46,7 +46,8 @@ public function canBeActivated(){ } public function onActivate(Item $item, Player $player = null){ - if(!(($tile = $this->level->getTile($this)) instanceof TileItemFrame)){ + $tile = $this->level->getTile($this); + if(!($tile instanceof TileItemFrame)){ $nbt = new CompoundTag("", [ new StringTag("id", Tile::ITEM_FRAME), new IntTag("x", $this->x), @@ -76,7 +77,8 @@ public function onActivate(Item $item, Player $player = null){ } public function onBreak(Item $item){ - if(($tile = $this->level->getTile($this)) instanceof TileItemFrame){ + $tile = $this->level->getTile($this); + if($tile instanceof TileItemFrame){ //TODO: add events if(lcg_value() <= $tile->getItemDropChance() and $tile->getItem()->getId() !== Item::AIR){ $this->level->dropItem($tile->getBlock(), $tile->getItem()); diff --git a/src/pocketmine/block/MobHead.php b/src/pocketmine/block/MobHead.php index a84ca2caa9f..0aafffa5a6a 100644 --- a/src/pocketmine/block/MobHead.php +++ b/src/pocketmine/block/MobHead.php @@ -107,7 +107,8 @@ public function onUpdate($type){ } public function getDrops(Item $item){ - if(($tile = $this->level->getTile($this)) instanceof SkullTile){ + $tile = $this->level->getTile($this); + if($tile instanceof SkullTile){ return [ [Item::MOB_HEAD, $tile->getType(), 1] ]; From 01a07a0b090ce72ba38d4de8c6641a93910cc748 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2017 14:41:30 +0000 Subject: [PATCH 11/25] Removed years-old leftovers from old PocketMine --- src/pocketmine/utils/BinaryStream.php | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/pocketmine/utils/BinaryStream.php b/src/pocketmine/utils/BinaryStream.php index 6d4ae6bbfe4..506a162f03e 100644 --- a/src/pocketmine/utils/BinaryStream.php +++ b/src/pocketmine/utils/BinaryStream.php @@ -176,22 +176,6 @@ public function putByte($v){ $this->buffer .= chr($v); } - public function getDataArray($len = 10){ - $data = []; - for($i = 1; $i <= $len and !$this->feof(); ++$i){ - $data[] = $this->get($this->getTriad()); - } - - return $data; - } - - public function putDataArray(array $data = []){ - foreach($data as $v){ - $this->putTriad(strlen($v)); - $this->put($v); - } - } - public function getUUID(){ return UUID::fromBinary($this->get(16)); } From 119e458ac8fe06d0e8350842970266c9edbaf119 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 14 Feb 2017 11:04:20 +0000 Subject: [PATCH 12/25] Removed SQLite3 dependency (no longer used by PocketMine-MP core) BEFORE anyone yells at me about plugins, having the core demand every extension that a plugin could possibly need is very much sub-optimal. An API for plugin-required extensions will be added in the future. --- README.md | 1 - src/pocketmine/PocketMine.php | 5 ----- 2 files changed, 6 deletions(-) diff --git a/README.md b/README.md index ca28079d1a4..0623a0329da 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,6 @@ Head over to our [official Jenkins server](https://jenkins.pmmp.io/) ## Third-party Libraries/Protocols Used * __[PHP Sockets](http://php.net/manual/en/book.sockets.php)__ * __[PHP mbstring](http://php.net/manual/en/book.mbstring.php)__ -* __[PHP SQLite3](http://php.net/manual/en/book.sqlite3.php)__ * __[PHP BCMath](http://php.net/manual/en/book.bc.php)__ * __[PHP pthreads](http://pthreads.org/)__ by _[krakjoe](https://github.com/krakjoe)_: Threading for PHP - Share Nothing, Do Everything. * __[PHP YAML](https://code.google.com/p/php-yaml/)__ by _Bryan Davis_: The Yaml PHP Extension provides a wrapper to the LibYAML library. diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index 5f816eb395c..efb55c2b75c 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -441,11 +441,6 @@ function cleanPath($path){ ++$errors; } - if(!extension_loaded("sqlite3")){ - $logger->critical("Unable to find the SQLite3 extension."); - ++$errors; - } - if(!extension_loaded("zlib")){ $logger->critical("Unable to find the Zlib extension."); ++$errors; From 14a0ff5caa5bcbb6d54ae8a908513ce5e6d4afaa Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 14 Feb 2017 12:44:31 +0000 Subject: [PATCH 13/25] Call PlayerQuitEvent after unloading chunks, removed some weird code, fixed crash when unloading player level on quit, close #284 --- src/pocketmine/Player.php | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index ef320dd606c..f5c6304ddbf 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -3090,12 +3090,6 @@ public final function close($message = "", $reason = "generic reason", $notify = } $this->connected = false; - if(strlen($this->getName()) > 0){ - $this->server->getPluginManager()->callEvent($ev = new PlayerQuitEvent($this, $message, true)); - if($this->loggedIn === true and $ev->getAutoSave()){ - $this->save(); - } - } foreach($this->server->getOnlinePlayers() as $player){ if(!$player->canSee($this)){ @@ -3124,8 +3118,15 @@ public final function close($message = "", $reason = "generic reason", $notify = $this->loggedIn = false; - if(isset($ev) and $this->username != "" and $this->spawned !== false and $ev->getQuitMessage() != ""){ - $this->server->broadcastMessage($ev->getQuitMessage()); + if(strlen($this->getName()) > 0){ + $this->server->getPluginManager()->callEvent($ev = new PlayerQuitEvent($this, $message, true)); + if($this->loggedIn === true and $ev->getAutoSave()){ + $this->save(); + } + + if($this->spawned !== false and $ev->getQuitMessage() != ""){ + $this->server->broadcastMessage($ev->getQuitMessage()); + } } $this->server->getPluginManager()->unsubscribeFromPermission(Server::BROADCAST_CHANNEL_USERS, $this); From b3beb9f71dacbc722e743e45b340056c947d607a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 14 Feb 2017 13:40:58 +0000 Subject: [PATCH 14/25] fixed player data not saving --- src/pocketmine/Player.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index f5c6304ddbf..a81e1142b2f 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -3116,8 +3116,6 @@ public final function close($message = "", $reason = "generic reason", $notify = $this->server->removeOnlinePlayer($this); } - $this->loggedIn = false; - if(strlen($this->getName()) > 0){ $this->server->getPluginManager()->callEvent($ev = new PlayerQuitEvent($this, $message, true)); if($this->loggedIn === true and $ev->getAutoSave()){ @@ -3129,6 +3127,7 @@ public final function close($message = "", $reason = "generic reason", $notify = } } + $this->loggedIn = false; $this->server->getPluginManager()->unsubscribeFromPermission(Server::BROADCAST_CHANNEL_USERS, $this); $this->spawned = false; $this->server->getLogger()->info($this->getServer()->getLanguage()->translateString("pocketmine.player.logOut", [ From 2d5567d9dd45061ab3d1f24dc6e16d0807a7ae29 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 15 Feb 2017 14:43:38 +0000 Subject: [PATCH 15/25] Removed InstallerLang mess, language improvements, updated PocketMine-Language submodule --- src/pocketmine/PocketMine.php | 4 +- src/pocketmine/lang/BaseLang.php | 28 ++++- src/pocketmine/lang/Installer/af_ZA.ini | 6 - src/pocketmine/lang/Installer/ar_SA.ini | 23 ---- src/pocketmine/lang/Installer/cs_CZ.ini | 18 --- src/pocketmine/lang/Installer/de_DE.ini | 45 ------- src/pocketmine/lang/Installer/el_GR.ini | 18 --- src/pocketmine/lang/Installer/en.ini | 45 ------- src/pocketmine/lang/Installer/en_PT.ini | 6 - src/pocketmine/lang/Installer/en_US.ini | 45 ------- src/pocketmine/lang/Installer/es_ES.ini | 45 ------- src/pocketmine/lang/Installer/et_EE.ini | 6 - src/pocketmine/lang/Installer/fi_FI.ini | 4 - src/pocketmine/lang/Installer/fr_FR.ini | 45 ------- src/pocketmine/lang/Installer/ga_IE.ini | 6 - src/pocketmine/lang/Installer/he_IL.ini | 6 - src/pocketmine/lang/Installer/id_ID.ini | 6 - src/pocketmine/lang/Installer/it_IT.ini | 45 ------- src/pocketmine/lang/Installer/ja_JP.ini | 45 ------- src/pocketmine/lang/Installer/ko_KR.ini | 45 ------- src/pocketmine/lang/Installer/lv_LV.ini | 6 - src/pocketmine/lang/Installer/ms_MY.ini | 45 ------- src/pocketmine/lang/Installer/mt_MT.ini | 6 - src/pocketmine/lang/Installer/nl_NL.ini | 45 ------- src/pocketmine/lang/Installer/no_NO.ini | 45 ------- src/pocketmine/lang/Installer/pl_PL.ini | 23 ---- src/pocketmine/lang/Installer/pt_PT.ini | 6 - src/pocketmine/lang/Installer/ru_RU.ini | 45 ------- src/pocketmine/lang/Installer/sv_SE.ini | 45 ------- src/pocketmine/lang/Installer/th_TH.ini | 6 - src/pocketmine/lang/Installer/tlh_AA.ini | 6 - src/pocketmine/lang/Installer/tr_TR.ini | 45 ------- src/pocketmine/lang/Installer/uk_UA.ini | 9 -- src/pocketmine/lang/Installer/vi_VN.ini | 31 ----- src/pocketmine/lang/Installer/zh_CN.ini | 46 ------- src/pocketmine/lang/Installer/zu_ZA.ini | 45 ------- src/pocketmine/lang/locale | 2 +- src/pocketmine/wizard/InstallerLang.php | 118 ------------------ .../wizard/{Installer.php => SetupWizard.php} | 90 ++++++------- 39 files changed, 74 insertions(+), 1081 deletions(-) delete mode 100644 src/pocketmine/lang/Installer/af_ZA.ini delete mode 100644 src/pocketmine/lang/Installer/ar_SA.ini delete mode 100644 src/pocketmine/lang/Installer/cs_CZ.ini delete mode 100644 src/pocketmine/lang/Installer/de_DE.ini delete mode 100644 src/pocketmine/lang/Installer/el_GR.ini delete mode 100644 src/pocketmine/lang/Installer/en.ini delete mode 100644 src/pocketmine/lang/Installer/en_PT.ini delete mode 100644 src/pocketmine/lang/Installer/en_US.ini delete mode 100644 src/pocketmine/lang/Installer/es_ES.ini delete mode 100644 src/pocketmine/lang/Installer/et_EE.ini delete mode 100644 src/pocketmine/lang/Installer/fi_FI.ini delete mode 100644 src/pocketmine/lang/Installer/fr_FR.ini delete mode 100644 src/pocketmine/lang/Installer/ga_IE.ini delete mode 100644 src/pocketmine/lang/Installer/he_IL.ini delete mode 100644 src/pocketmine/lang/Installer/id_ID.ini delete mode 100644 src/pocketmine/lang/Installer/it_IT.ini delete mode 100644 src/pocketmine/lang/Installer/ja_JP.ini delete mode 100644 src/pocketmine/lang/Installer/ko_KR.ini delete mode 100644 src/pocketmine/lang/Installer/lv_LV.ini delete mode 100644 src/pocketmine/lang/Installer/ms_MY.ini delete mode 100644 src/pocketmine/lang/Installer/mt_MT.ini delete mode 100644 src/pocketmine/lang/Installer/nl_NL.ini delete mode 100644 src/pocketmine/lang/Installer/no_NO.ini delete mode 100644 src/pocketmine/lang/Installer/pl_PL.ini delete mode 100644 src/pocketmine/lang/Installer/pt_PT.ini delete mode 100644 src/pocketmine/lang/Installer/ru_RU.ini delete mode 100644 src/pocketmine/lang/Installer/sv_SE.ini delete mode 100644 src/pocketmine/lang/Installer/th_TH.ini delete mode 100644 src/pocketmine/lang/Installer/tlh_AA.ini delete mode 100644 src/pocketmine/lang/Installer/tr_TR.ini delete mode 100644 src/pocketmine/lang/Installer/uk_UA.ini delete mode 100644 src/pocketmine/lang/Installer/vi_VN.ini delete mode 100644 src/pocketmine/lang/Installer/zh_CN.ini delete mode 100644 src/pocketmine/lang/Installer/zu_ZA.ini delete mode 100644 src/pocketmine/wizard/InstallerLang.php rename src/pocketmine/wizard/{Installer.php => SetupWizard.php} (63%) diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index efb55c2b75c..8e569d79005 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -70,7 +70,7 @@ function dummy(){ use pocketmine\utils\ServerKiller; use pocketmine\utils\Terminal; use pocketmine\utils\Utils; - use pocketmine\wizard\Installer; + use pocketmine\wizard\SetupWizard; use raklib\RakLib; const VERSION = "1.6.2dev"; @@ -474,7 +474,7 @@ function cleanPath($path){ if(!file_exists(\pocketmine\DATA . "server.properties") and !isset($opts["no-wizard"])){ - $installer = new Installer(); + $installer = new SetupWizard(); if(!$installer->run()){ $logger->shutdown(); $logger->join(); diff --git a/src/pocketmine/lang/BaseLang.php b/src/pocketmine/lang/BaseLang.php index d90897a66e7..c04fcbf671c 100644 --- a/src/pocketmine/lang/BaseLang.php +++ b/src/pocketmine/lang/BaseLang.php @@ -29,6 +29,28 @@ class BaseLang{ const FALLBACK_LANGUAGE = "eng"; + public static function getLanguageList(string $path = "") : array{ + if($path === ""){ + $path = \pocketmine\PATH . "src/pocketmine/lang/locale/"; + } + + $files = array_filter(scandir($path), function($filename){ + return substr($filename, -4) === ".ini"; + }); + + $result = []; + + foreach($files as $file){ + $strings = []; + self::loadLang($path . $file, $strings); + if(isset($strings["language.name"])){ + $result[substr($file, 0, -4)] = $strings["language.name"]; + } + } + + return $result; + } + protected $langName; protected $lang = []; @@ -42,10 +64,10 @@ public function __construct($lang, $path = null, $fallback = self::FALLBACK_LANG $path = \pocketmine\PATH . "src/pocketmine/lang/locale/"; } - if(!$this->loadLang($file = $path . $this->langName . ".ini", $this->lang)){ + if(!self::loadLang($file = $path . $this->langName . ".ini", $this->lang)){ MainLogger::getLogger()->error("Missing required language file $file"); } - if(!$this->loadLang($file = $path . $fallback . ".ini", $this->fallbackLang)){ + if(!self::loadLang($file = $path . $fallback . ".ini", $this->fallbackLang)){ MainLogger::getLogger()->error("Missing required language file $file"); } } @@ -58,7 +80,7 @@ public function getLang(){ return $this->langName; } - protected function loadLang($path, array &$d){ + protected static function loadLang($path, array &$d){ if(file_exists($path)){ if(strlen($content = file_get_contents($path)) > 0){ foreach(explode("\n", $content) as $line){ diff --git a/src/pocketmine/lang/Installer/af_ZA.ini b/src/pocketmine/lang/Installer/af_ZA.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/af_ZA.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/ar_SA.ini b/src/pocketmine/lang/Installer/ar_SA.ini deleted file mode 100644 index 6548b10b6ae..00000000000 --- a/src/pocketmine/lang/Installer/ar_SA.ini +++ /dev/null @@ -1,23 +0,0 @@ -language_has_been_selected = وقد تم اختيار اللغة الإنجليزية بشكل صحيح. -skip_installer = هل تريد تخطي معالج الإعداد؟ - -welcome_to_pocketmine = مرحبا بكم في PocketMine-MP! \ nBefore بدء إعداد ملقم جديد لديك لقبول الترخيص. \ مرخص nPocketMine-MP تحت رخصة LGPL، \ n التي يمكنك أن تقرأ فتح ملف الترخيص على هذا folder.Do كنت ترغب في تخطي المعالج انشاء؟ -accept_license = هل تقبل رخصة؟ -you_have_to_accept_the_license = عليك أن تقبل رخصة LGPL إلى الاستمرار في استخدام PocketMine-MP - -setting_up_server_now = أنت ذاهب لإعداد الخادم الخاص بك الآن. -default_values_info = إذا كنت لا تريد تغيير القيمة الافتراضية، فقط اضغط على Enter. -server_properties = يمكنك تحريرها في وقت لاحق على الملف server.properties. - -name_your_server = إعطاء اسم على الخادم الخاص بك -port_warning = لا تقم بتغيير قيمة المنفذ الافتراضي إذا كان هذا هو الخادم الخاص بك أولا. -server_port = منفذ خادم -invalid_port = منفذ خادم غير صالحة -ram_warning = ذاكرة الوصول العشوائي هو الحد الأقصى لمقدار الذاكرة سوف تستخدم PocketMine-MP. ينصح قيمة 128-256 ميغا بايت -server_ram = RAM الخادم في ميغا بايت -gamemode_info = الاختيار بين العمل الإبداعي (1) أو البقاء على قيد الحياة (0) -default_gamemode = الوضع الاصلي للعبة -max_players = الحد الاعلى للاعبين المتواجدين الان - - - diff --git a/src/pocketmine/lang/Installer/cs_CZ.ini b/src/pocketmine/lang/Installer/cs_CZ.ini deleted file mode 100644 index 25094d56e64..00000000000 --- a/src/pocketmine/lang/Installer/cs_CZ.ini +++ /dev/null @@ -1,18 +0,0 @@ -language_has_been_selected = Čeština byla vybrána. - -accept_license = Přijímáte Licenci ? - -server_properties = Můžete je upravit později v souboru server.properties. - -name_your_server = Dejte jméno serveru -server_port = Port serveru -server_ram = Server RAM v MB -gamemode_info = Vyberte mezi Kreativním (1) nebo Přežití (0) -max_players = Max. hrajících hráčů -spawn_protection_info = Ochrana spawnu nedovolí stavět/rozbíjet bloky ve spawn zóně kromě OP -spawn_protection = Povolit spawn ochranu? - -op_info = OP je admin serveru. OP může spustit více příkazů než normální hráči -whitelist_enable = Chcete umožnit bílou listinu? - - diff --git a/src/pocketmine/lang/Installer/de_DE.ini b/src/pocketmine/lang/Installer/de_DE.ini deleted file mode 100644 index 029c8065d49..00000000000 --- a/src/pocketmine/lang/Installer/de_DE.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = Englisch haben Sie richtig ausgewählt. -skip_installer = Möchten Sie den Setup-Assistenten überspringen? - -welcome_to_pocketmine = Willkommen auf PocketMine-MP!\nBevor Sie die Einrichtung Ihres neuen Server starten, müssen Sie die Lizenz akzeptieren. \nPocketMine-MP ist unter der LGPL-Lizenz, \ndamit Sie die LIZENZ in diesem Ordner lesen oder öffnen können. -accept_license = Akzeptieren Sie die Lizenz? -you_have_to_accept_the_license = Sie müssen die LGPL Lizenz akzeptieren, um weiterhin PocketMine-MP zu nutzen - -setting_up_server_now = Sie werden jetzt Ihren Server einrichten. -default_values_info = Wenn Sie nicht den Standardwert ändern möchten, drücken Sie einfach Enter. -server_properties = Sie können sie später in der server.properties Datei bearbeiten. - -name_your_server = Geben Sie einen Namen für Ihren Server ein -port_warning = Ändern Sie den Standard-Port-Wert nicht, wenn dies Ihr erster Server ist. -server_port = Server-Port -invalid_port = Ungültiger Server-Port -ram_warning = Der RAM ist die maximale Speichermenge die PocketMine-MP verwenden kann. Ein Wert zwischen 128 bis 256 MB wird empfohlen -server_ram = Server RAM in MB -gamemode_info = Wählen Sie zwischen Kreativ (1) oder Überleben (0) -default_gamemode = Standard Spielmodus -max_players = Max. Online-Spieler -spawn_protection_info = Der Spawn-Schutz verbietet Platzierung/Zerstörung der Blöcke in der Einstiegszone, was aber nicht für OPs gilt -spawn_protection = Aktiviere Spawn-Schutz? - -op_info = Ein OP ist der Admin Spieler des Servers. OPs können mehr Befehle ausführen als normale Spieler -op_who = OP Spieler Name (z.B. dein Spiel-Name) -op_warning = Sie werden in der Lage sein einen OP Benutzer später mit /op hinzuzufügen -whitelist_info = Nur die Spieler auf der white-list können zu ihrem Spiel verbinden. -whitelist_enable = Möchten Sie die white-list aktivieren? -whitelist_warning = Sie müssen die Spieler zur white-list hinzufügen - -query_warning1 = Query ist ein Protokoll das von verschiedenen Tools verwendet wird, um Informationen von Ihrem Server und eingeloggten Spieler zu nehmen. -query_warning2 = Wenn Sie es deaktivieren, werden Sie nicht in der Lage sein, Server-Listen zu verwenden. -query_disable = Wollen Sie Query deaktivieren? -rcon_info = RCON ist ein Protokoll für eine Remote-Verbindung mit der Server-Konsole, mit der Benutzung eines Passworts. -rcon_enable = Wollen Sie RCON aktivieren? -rcon_password = RCON Passwort (Sie können es später ändern) -usage_info = Die anonymen Nutzungsdaten ermöglichen es uns, globale Statistiken für PocketMine-MP und seine Plugins zu berechnen. Sie können sie auf stats.pocketmine.net ansehen -usage_disable = Wollen Sie die anonyme Nutzung deaktivieren? -ip_get = Bekomme deine externe IP und interne IP -ip_warning = Ihre externe IP ist {{EXTERNAL_IP}}. Evtl. musst Du einen port-forward auf deine interne IP {{INTERNAL_IP}} machen -ip_confirm = Achten Sie darauf, wenn Sie den Port forwarden müssen und Sie es überspringen, dass keine externen Spieler beitreten können. [Drücke Enter] - -you_have_finished = Sie haben den Setup-Assistenten korrekt beendet -pocketmine_will_start = PocketMine-MP wird nun gestartet. Tippe /help um die Liste der verfügbaren Befehle anzuzeigen. -pocketmine_plugins = Überprüfen Sie das Plugin Repository um neue Features, Minispiele, oder einen erweiterten Schutz für Ihren Server hinzuzufügen diff --git a/src/pocketmine/lang/Installer/el_GR.ini b/src/pocketmine/lang/Installer/el_GR.ini deleted file mode 100644 index 8fffefcae44..00000000000 --- a/src/pocketmine/lang/Installer/el_GR.ini +++ /dev/null @@ -1,18 +0,0 @@ -language_has_been_selected = Τα Αγγλικά έχουν επιλεχθεί σωστά. -skip_installer = Θέλετε να παραλείψετε τον οδηγό εγκατάστασης; - -accept_license = Αποδέχεστε την Άδεια; - - -name_your_server = Δώστε ένα όνομα στο διακομιστή -server_port = Θύρα διακομιστή -invalid_port = Μη έγκυρη θύρα διακομιστή -server_ram = RAM διακομιστή σε MB -default_gamemode = Προεπιλεγμένη Λειτουργία Παιχνιδιού -max_players = Μεγ. online παίκτες - -whitelist_enable = Θέλετε να ενεργοποιήσετε τη λευκή-λίστα; - -rcon_password = Κωδικός πρόσβασης RCON (μπορείτε να τον αλλάξετε αργότερα) -ip_warning = Η εξωτερική σας IP είναι {{EXTERNAL_IP}}. Ίσως να πρέπει να κάνετε port-forward στην εσωτερική σας IP {{INTERNAL_IP}} - diff --git a/src/pocketmine/lang/Installer/en.ini b/src/pocketmine/lang/Installer/en.ini deleted file mode 100644 index 714299c8724..00000000000 --- a/src/pocketmine/lang/Installer/en.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = English has been correctly selected. -skip_installer = Do you want to skip the set-up wizard? - -welcome_to_pocketmine = Welcome to PocketMine-MP!\nBefore starting setting up your new server you have to accept the license.\nPocketMine-MP is licensed under the LGPL License,\nthat you can read opening the LICENSE file on this folder. -accept_license = Do you accept the License? -you_have_to_accept_the_license = You have to accept the LGPL license to continue using PocketMine-MP - -setting_up_server_now = You are going to set up your server now. -default_values_info = If you don't want to change the default value, just press Enter. -server_properties = You can edit them later on the server.properties file. - -name_your_server = Give a name to your server -port_warning = Do not change the default port value if this is your first server. -server_port = Server port -invalid_port = Invalid server port -ram_warning = The RAM is the maximum amount of memory PocketMine-MP will use. A value of 128-256 MB is recommended -server_ram = Server RAM in MB -gamemode_info = Choose between Creative (1) or Survival (0) -default_gamemode = Default Game mode -max_players = Max. online players -spawn_protection_info = The spawn protection disallows placing/breaking blocks in the spawn zone except for OPs -spawn_protection = Enable spawn protection? - -op_info = An OP is the player admin of the server. OPs can run more commands than normal players -op_who = OP player name (example, your game name) -op_warning = You will be able to add an OP user later using /op -whitelist_info = The white-list only allows players in it to join. -whitelist_enable = Do you want to enable the white-list? -whitelist_warning = You will have to add the players to the white-list - -query_warning1 = Query is a protocol used by different tools to get information of your server and players logged in. -query_warning2 = If you disable it, you won't be able to use server lists. -query_disable = Do you want to disable Query? -rcon_info = RCON is a protocol to remote connect with the server console using a password. -rcon_enable = Do you want to enable RCON? -rcon_password = RCON password (you can change it later) -usage_info = The anonymous usage data allows us to calculate global statistics for PocketMine-MP and its plugins. You can view them on stats.pocketmine.net -usage_disable = Do you want to disable the anonymous usage? -ip_get = Getting your external IP and internal IP -ip_warning = Your external IP is {{EXTERNAL_IP}}. You may have to port-forward to your internal IP {{INTERNAL_IP}} -ip_confirm = Be sure to check it, if you have to forward and you skip that, no external players will be able to join. [Press Enter] - -you_have_finished = You have finished the set-up wizard correctly -pocketmine_will_start = PocketMine-MP will now start. Type /help to view the list of available commands. -pocketmine_plugins = Check the Plugin Repository to add new features, minigames, or advanced protection to your server diff --git a/src/pocketmine/lang/Installer/en_PT.ini b/src/pocketmine/lang/Installer/en_PT.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/en_PT.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/en_US.ini b/src/pocketmine/lang/Installer/en_US.ini deleted file mode 100644 index 84300b8e4b4..00000000000 --- a/src/pocketmine/lang/Installer/en_US.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = English has been correctly selected. -skip_installer = Do you want to skip the set-up wizard? - -welcome_to_pocketmine = Welcome to PocketMine-MP!\nBefore starting setting up your new server you have to accept the license.\nPocketMine-MP is licensed under the LGPL License,\nthat you can read opening the LICENSE file on this folder. -accept_license = Do you accept the License? -you_have_to_accept_the_license = You have to accept the LGPL license to continue using PocketMine-MP - -setting_up_server_now = You are going to set up your server now. -default_values_info = If you don't want to change the default value, just press Enter. -server_properties = You can edit them later on the server.properties file. - -name_your_server = Give a name to your server -port_warning = Do not change the default port value if this is your first server. -server_port = Server port -invalid_port = Invalid server port -ram_warning = The RAM is the maximum amount of memory PocketMine-MP will use. A value of 128-256 MB is recommended -server_ram = Server RAM in MB -gamemode_info = Choose between Creative (1) or Survival (0) -default_gamemode = Default Game mode -max_players = Max. online players -spawn_protection_info = The spawn protection disallows placing/breaking blocks in the spawn zone except for OPs -spawn_protection = Enable spawn protection? - -op_info = An OP is the player admin of the server. OPs can run more commands than normal players -op_who = OP player name (example, your game name) -op_warning = You will be able to add an OP user later using /op -whitelist_info = The white-list only allows players in it to join. -whitelist_enable = Do you want to enable the white-list? -whitelist_warning = You will have to add the players to the white-list - -query_warning1 = Query is a protocol used by diferent tools to get information of your server and players logged in. -query_warning2 = If you disable it, you won't be able to use server lists. -query_disable = Do you want to disable Query? -rcon_info = RCON is a protocol to remote connect with the server console using a password. -rcon_enable = Do you want to enable RCON? -rcon_password = RCON password (you can change it later) -usage_info = The anonymous usage data allows us to calculate global statistics for PocketMine-MP and its plugins. You can view them on stats.pocketmine.net -usage_disable = Do you want to disable the anonymous usage? -ip_get = Getting your external IP and internal IP -ip_warning = Your external IP is {{EXTERNAL_IP}}. You may have to port-forward to your internal IP {{INTERNAL_IP}} -ip_confirm = Be sure to check it, if you have to forward and you skip that, no external players will be able to join. [Press Enter] - -you_have_finished = You have finished the set-up wizard correctly -pocketmine_will_start = PocketMine-MP will now start. Type /help to view the list of available commands. -pocketmine_plugins = Check the Plugin Repository to add new features, minigames, or advanced protection to your server diff --git a/src/pocketmine/lang/Installer/es_ES.ini b/src/pocketmine/lang/Installer/es_ES.ini deleted file mode 100644 index 95a95b31cbd..00000000000 --- a/src/pocketmine/lang/Installer/es_ES.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = Idioma español sido seleccionado correctamente. -skip_installer = ¿Quieres saltarte el asistente de configuración? - -welcome_to_pocketmine = Bienvenido a PocketMine-MP!\nAntes de comenzar a configurar tu nuevo servidor, tienes que aceptar la licencia.\nPocketMine-MP está licenciado con la licencia LGPL,\nque puedes leer abriendo el archivo LICENSE en esta carpeta. -accept_license = ¿Aceptas la Licencia? -you_have_to_accept_the_license = Tienes que aceptar la licencia LGPL antes de continuar usando PocketMine-MP - -setting_up_server_now = Se iniciara la configuración del servidor. -default_values_info = Si no quieres cambiar el valor por defecto, pulsa Enter. -server_properties = Tranquilo, podrás editarlo después en el fichero server.properties. - -name_your_server = Nombre del servidor -port_warning = No cambies el puerto por defecto si este es tu primer servidor. -server_port = Puerto del servidor -invalid_port = Puerto inválido -ram_warning = La RAM es la máxima memoria que PocketMine-MP usará. Es recomendado usar un valor de 128-256 MB -server_ram = RAM del servidor en MB -gamemode_info = Elige entre modo creativo (1) o modo de supervivencia (0) -default_gamemode = Modo de juego por defecto -max_players = Límite de jugadores conectados -spawn_protection_info = La protección del inicio bloquea poner y/o romper bloques en la zona de inicio, excepto los OPs -spawn_protection = ¿Activar protección de inicio? - -op_info = Un OP es el jugador administrador del servidor. Los OPs pueden usar más comandos que los jugadores normales -op_who = Jugador OP (por ejemplo, tu nombre de jugador) -op_warning = Podrás añadir mas OPs después usando /op -whitelist_info = La lista blanca permite entrar solo a los jugadores que estén ahí. Como una lista VIP. -whitelist_enable = ¿Quieres activar la lista blanca? -whitelist_warning = Tendrás que añadir los jugadores a la lista blanca - -query_warning1 = Query es un protocolo usado por diferentes herramientas para conseguir informacion de tu servidor y los jugadores conectados. -query_warning2 = Si lo desactivas, no podrás usar listas de servidores. -query_disable = ¿Quieres desactivar Query? -rcon_info = RCON es un protocolo que permite conectarte a la consola del servidor usando una contraseña. -rcon_enable = ¿Queres activar RCON? -rcon_password = Contraseña RCON (puedes cambiarla después) -usage_info = Los datos de uso anónimos nos permiten calcular estadísticas globales para PocketMine-MP y sus plugins. Puedes verlas en stats.pocketmine.net -usage_disable = ¿Quieres desactivar las datos de uso anónimos? -ip_get = Obteniendo tu IP externa e IP interna -ip_warning = Tu IP externa es {{EXTERNAL_IP}}. Quizás debas redireccionar el puerto a tu IP interna {{INTERNAL_IP}} -ip_confirm = Asegúrate de hacerlo y verificarlo, ya que si no lo haces, ningun otro jugador externo podra entrar. [Pulsa Enter] - -you_have_finished = Has completado el asistente de configuración correctamente -pocketmine_will_start = PocketMine-MP se iniciará ahora. Escribe /help para ver la lista de los comandos disponibles. -pocketmine_plugins = Ves al Repositorio de Plugins para añadir nuevas funcionalidades, minijuegos o protección avanzada para tu servidor. El resto de cosas que veras a partir de ahora sera en ingles, no te enojes si no lo encuentras en español diff --git a/src/pocketmine/lang/Installer/et_EE.ini b/src/pocketmine/lang/Installer/et_EE.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/et_EE.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/fi_FI.ini b/src/pocketmine/lang/Installer/fi_FI.ini deleted file mode 100644 index e136759e36b..00000000000 --- a/src/pocketmine/lang/Installer/fi_FI.ini +++ /dev/null @@ -1,4 +0,0 @@ -default_gamemode = Normaali Peli Tila - - - diff --git a/src/pocketmine/lang/Installer/fr_FR.ini b/src/pocketmine/lang/Installer/fr_FR.ini deleted file mode 100644 index b767a43c980..00000000000 --- a/src/pocketmine/lang/Installer/fr_FR.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = Français a été correctement sélectionné. -skip_installer = Voulez-vous passer l'assistant d'installation? - -welcome_to_pocketmine = Bienvenue sur PocketMine-MP!\nAvant de commencer à paramétrer votre nouveau serveur, vous devez accepter la license d'utilisation.\nPocketMine-MP est sous licence LGPL,\nvous pouvez la lire en ouvrant le fichier LICENSE dans ce dossier. -accept_license = Acceptez-vous la Licence? -you_have_to_accept_the_license = Vous devez accepter la licence LGPL pour continuer à utiliser PocketMine-MP - -setting_up_server_now = Vous êtes maintenant prêt à paramétrer votre serveur. -default_values_info = Si vous ne voulez pas changer la valeur par défaut, pressez juste Enter. -server_properties = Vous pouvez éditer cela plus tard dans le fichier server.properties. - -name_your_server = Donnez un nom à votre serveur -port_warning = Ne changez pas la valeur par défaut du port si c'est votre premier serveur. -server_port = Port du serveur -invalid_port = Port du serveur invalide -ram_warning = La RAM est au maximum de sa capacité par rapport à la mémoire utilisée par PocketMine-MP. Une valeur de 128-256 MB est recommandée -server_ram = RAM du serveur en MB -gamemode_info = Choisir entre Créatif (1) ou Survie (0) -default_gamemode = Mode de jeu par défaut -max_players = Joueurs max. en ligne -spawn_protection_info = La protection de spawn désactive le placement/cassement de blocs dans la zone de spawn excepté pour les OPs -spawn_protection = Activer la protection de spawn? - -op_info = Un OP est un administrateur du serveur. Les OPs peuvent exécuter plus de commandes que les joueurs normaux -op_who = Nom de joueur OP (exemple, votre nom de jeu) -op_warning = Vous serez en mesure d'ajouter un OP plus tard en utilisant /op -whitelist_info = La white-list autorise seulement les joueurs présents sur celle-ci. -whitelist_enable = Voulez-vous activer la white-list? -whitelist_warning = Vous devrez ajouter les joueurs à la white-list - -query_warning1 = Query est un protocole utilisé par différents outils pour avoir des informations sur votre serveur et les joueurs connectés. -query_warning2 = Si vous le désactivez, vous ne pourrez pas utiliser les listes du serveur. -query_disable = Voulez-vous désactiver Query? -rcon_info = RCON est un protocole pour se connecter à distance à la console du serveur par un mot de passe. -rcon_enable = Voulez-vous activer RCON? -rcon_password = Mot de passe RCON (vous pouvez le changer plus tard) -usage_info = Les données d'utilisation anonyme vous permettent de calculer les statistiques globales de PocketMine-MP et ses plugins. Vous pouvez les voir sur stats.pocketmine.net -usage_disable = Voulez-vous désactiver l'utilisation anonyme? -ip_get = Obtention de votre IP externe et IP interne -ip_warning = Votre IP externe est {{EXTERNAL_IP}}. Vous pourriez avoir à transmettre au port votre IP interne {{INTERNAL_IP}} -ip_confirm = Vérifiez-le bien, si vous avancez et sautez cette étape, les joueurs extérieurs ne pourront pas rejoindre votre serveur. [Tapez Enter] - -you_have_finished = Vous avez correctement terminé l'assistant d'installation -pocketmine_will_start = PocketMine-MP démarre. Tapez /help pour voir la liste des commandes disponibles. -pocketmine_plugins = Vérification du répertoire de plugin pour ajouter des nouvelles caractéristiques, mini-jeux, ou une protection avancée de votre serveur diff --git a/src/pocketmine/lang/Installer/ga_IE.ini b/src/pocketmine/lang/Installer/ga_IE.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/ga_IE.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/he_IL.ini b/src/pocketmine/lang/Installer/he_IL.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/he_IL.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/id_ID.ini b/src/pocketmine/lang/Installer/id_ID.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/id_ID.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/it_IT.ini b/src/pocketmine/lang/Installer/it_IT.ini deleted file mode 100644 index a2e74ea91e5..00000000000 --- a/src/pocketmine/lang/Installer/it_IT.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = Italiano selezionato correttamente. -skip_installer = Vuoi evitare il programma di installazione? - -welcome_to_pocketmine = Benvenuto in PocketMine-MP!\nPrima di iniziare a impostare il tuo nuovo server devi accettare la licenza.\nPocketMine-MP è distribuito sotto licenza LGPL,\nche potrai leggere aprendo il file LICNESE in questa cartella. -accept_license = Accetti i termini della licenza? -you_have_to_accept_the_license = Devi accettare i termini della licenza LGPL per continuare ad usare PocketMine-MP - -setting_up_server_now = Stai per iniziare ad impostare il tuo server. -default_values_info = Se non vuoi cambiare i valori proposti, premi Invio. -server_properties = Potrai modificarli in seguito nel file server.properties. - -name_your_server = Dai un nome al tuo server -port_warning = Non cambiare la porta predefinita se questo è il tuo primo server. -server_port = Porta del server -invalid_port = Porta del server non valida -ram_warning = La RAM è la massima quantità di memoria che PocketMine-MP potrà usare. Un valore di 128-256 MB è raccomandata -server_ram = RAM del server in MB -gamemode_info = Scegli tra Creative (1) o Survival (0) -default_gamemode = Modalità di gioco predefinita -max_players = Players massimi -spawn_protection_info = La protezione dello spawn non permette di piazzare/rompere blocchi nella zona di spawn, ad eccezione degli Operatori -spawn_protection = Abilitare la protezione dello spawn? - -op_info = Un Operatore (OP) è un player amministratore del server. Gli operatori possono usare più comandi dei players normali -op_who = Nome del player OP (ad esempio, il tuo nome in gioco) -op_warning = Sarà possibile aggiungere un player OP più tardi con /op -whitelist_info = La white-list permette solo ad i players in lista di entrare. -whitelist_enable = Vuoi abilitare la white-list? -whitelist_warning = Dovrai aggiungere i players in white-list - -query_warning1 = Query è un protocollo usato da differenti programmi per ottenere informazioni dal tuo server e dai player che ci entrano. -query_warning2 = Se lo disabiliti, non sarai in grado di usare le liste server. -query_disable = Vuoi disabilitare Query? -rcon_info = RCON è un protocollo per connessioni remote con la console del server grazie all'utilizzo di una password. -rcon_enable = Vuoi abilitare RCON? -rcon_password = Password RCON (potrai cambiarla più tardi) -usage_info = L'invio anonimo dei dati di utilizzo ci aiuta a calcolare statistiche generali per PocketMine-MP ed i suoi plugins. Puoi vederle su stats.pocketmine.net -usage_disable = Vuoi disabilitare l'invio anonimo dei dati di utilizzo? -ip_get = Ottengo il tuo indirizzo IP interno ed esterno -ip_warning = Il tuo indirizzo IP è {{EXTERNAL_IP}}. Potresti dover redirigere le porte al tuo IP interno: {{INTERNAL_IP}} -ip_confirm = Sii sicuro di farlo, se devi redirigere le porte e non lo fai, nessun player esterno sarà in grado di entrare. [Premi Invio] - -you_have_finished = Hai completato l'installazione con successo -pocketmine_will_start = Ora PocketMine-MP si avvierà. Digita /help per visualizzare la lista dei comandi disponibili. -pocketmine_plugins = Controlla il Repository dei Plugins per aggiungere nuove funzionalità, minigiochi, o protezioni avanzate al tuo server diff --git a/src/pocketmine/lang/Installer/ja_JP.ini b/src/pocketmine/lang/Installer/ja_JP.ini deleted file mode 100644 index af4d77feddb..00000000000 --- a/src/pocketmine/lang/Installer/ja_JP.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = 日本語に設定されました -skip_installer = セットアップウィザードをスキップしますか? - -welcome_to_pocketmine = PocketMine-MPをインストールして頂きありがとうございます!サーバのセットアップを開始するにはライセンスに同意する必要があります。PocketMine-MPはLGPLライセンスに基づいて認可されており、これについてはこのフォルダ内のLICENSEファイルから確認することができます。 -accept_license = ライセンスに同意しますか? -you_have_to_accept_the_license = PocketMine-MPを使用するにはLGPLライセンスに同意する必要があります - -setting_up_server_now = サーバのセットアップを開始します -default_values_info = 設定を変更しない場合は、Enterキーを押してください。 -server_properties = それらの設定は後からでもserver.propertiesファイルから変更できます - -name_your_server = あなたのサーバに名前を付けてください -port_warning = これが初めてのサーバの場合は、ポート番号をデフォルトから変更しないでください -server_port = サーバポート -invalid_port = 不適切なサーバポートです -ram_warning = RAMはPocketMine-MPが使用し得るメモリの最大値を示しています。128-256MBの範囲内で指定することを推奨します。 -server_ram = RAMの単位はMBです -gamemode_info = クリエイティブモード(1)、またはサバイバルモード(0)を選択してください -default_gamemode = デフォルトのゲームモード -max_players = 最大プレイヤー数 -spawn_protection_info = スポーンプロテクションは、OPでないプレイヤーによるスポーン地点付近でのブロックの設置/破壊を制限します -spawn_protection = スポーンプロテクションを有効にしますか? - -op_info = OPとはそのサーバの管理権限を指します。OPを持ったプレイヤーは他のプレイヤーよりも多くのコマンドを使用できます。 -op_who = OPプレイヤー名(例: あなたのゲーム内での名前) -op_warning = 後から/op <プレイヤー名>コマンドを実行してOPプレイヤーを追加することもできます -whitelist_info = ホワイトリストはこのサーバに入ることのできるプレイヤーを制限します。 -whitelist_enable = ホワイトリストを有効にしますか? -whitelist_warning = プレイヤーをホワイトリストに追加してください - -query_warning1 = クエリは他のツールによりあなたのサーバやプレイヤーの情報を取得するためのプロトコルです。 -query_warning2 = それを無効にした場合、サーバリストを使用できなくなる可能性があります。 -query_disable = クエリを無効にしますか? -rcon_info = RCONはパスワードを用いてサーバコンソールからリモート接続するためのプロトコルです。 -rcon_enable = RCONを有効にしますか? -rcon_password = RCONパスワード(後から変更できます) -usage_info = 世界中で使われているPocketMine-MPやそのプラグインの統計を算出するために匿名の使用データが送信されます。統計はこちらから確認できます。stats.pocketmine.net -usage_disable = 匿名の使用データの送信を拒否しますか? -ip_get = グローバルIPとプライベートIPの取得 -ip_warning = あなたのグローバルIPは{{EXTERNAL_IP}}です。プライベートIP{{INTERNAL_IP}}をポート解放してください。 -ip_confirm = 必ずポート解放ができているか確認してください。ポートが解放できていなかった場合、他のプレイヤーがサーバに入れなくなる恐れがあります。[Enterキーを押してください] - -you_have_finished = セットアップは正しく終了しました -pocketmine_will_start = PocketMine_MPを起動します。/helpと入力すれば使用可能なコマンド一覧を表示できます。 -pocketmine_plugins = 拡張機能や管理システム、ミニゲームなどを追加できるプラグインリポジトリも確認してみてください diff --git a/src/pocketmine/lang/Installer/ko_KR.ini b/src/pocketmine/lang/Installer/ko_KR.ini deleted file mode 100644 index 4a9e6ae1641..00000000000 --- a/src/pocketmine/lang/Installer/ko_KR.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = 한국어가 언어로 선택되었습니다. -skip_installer = 설치 마법사를 건너뛰겠습니까? - -welcome_to_pocketmine = PocketMine-MP에 오신 것을 환영합니다!\n서버 설치를 시작하기 전, 약관에 동의해야 합니다. \nPocketMine-MP는 GNU 약소 일반 공중 사용 허가서(LGPL) 하에 배포되고 있습니다. \n이 폴더에서 약관을 읽을 수 있습니다. -accept_license = 약관에 동의하십니까? -you_have_to_accept_the_license = GNU 약소 일반 공중 사용 허가서(LGPL)에 동의하셔야 PocketMine-MP를 사용할 수 있습니다. - -setting_up_server_now = 서버 설정을 시작합니다. -default_values_info = 기본값을 수정하고 싶지 않으면, 엔터를 누르십시기 바랍니다. -server_properties = 이 설정들은 server.properties 파일에서 세부적으로 변경이 가능합니다. - -name_your_server = 당신의 서버 이름을 입력하시기 바랍니다. -port_warning = 만약 당신이 서버를 처음 설정한다면 포트 값을 변경하지 마세요. -server_port = 서버 포트 -invalid_port = 서버 포트가 잘못 입력되었습니다. -ram_warning = RAM 값은 PocketMine-MP에 할당할 메모리의 크기입니다. 128~256MB를 권장합니다. -server_ram = 서버의 램(RAM) (MB) -gamemode_info = 크리에이티브 (1) 또는 서바이벌 (0) 게임모드 중 하나를 고르세요. -default_gamemode = 기본 게임 모드 -max_players = 최대 동시접속 인원 수 -spawn_protection_info = 스폰 보호는 OP를 제외한 유저들이 스폰 지역 근처에서 블럭을 놓거나 부수는것을 방지합니다. -spawn_protection = 스폰 지역 보호를 사용하겠습니까? - -op_info = OP는 서버 관리자를 뜻합니다. OP는 일반 플레이어보다 훨씬 많은 명령어들을 사용할 수 있습니다 -op_who = OP 권한을 줄 플레이어 이름(예: 당신의 닉네임) -op_warning = 또는 이후에 /op <플레이어 이름> 을 입력해 그 유저에게 OP 권한을 줄 수도 있습니다 -whitelist_info = 화이트리스트를 사용하면 허용된 플레이어들만 서버에 접속할 수 있습니다. -whitelist_enable = 화이트리스트를 사용하겠습니까? -whitelist_warning = 당신은 접속을 허용할 플레이어들의 이름을 적어야 합니다 - -query_warning1 = 쿼리 (Query)는 당신의 서버와 현재 접속한 플레이어들의 정보를 알 수 있게 해주는 여러가지 기능이 담긴 프로토콜입니다. -query_warning2 = 쿼리를 사용하지 않으면, 당신은 서버 리스트를 사용할 수 없게 됩니다. -query_disable = 쿼리를 사용하지 않겠습니까? -rcon_info = RCON은 비밀 번호를 사용하여 서버 명령창에 원격으로 접소갈 수 있는 프로토콜입니다. -rcon_enable = RCON 을 사용하시겠습니까? -rcon_password = RCON 비밀번호 설정 (나중에 server.properties 에서 변경이 가능합니다.) -usage_info = 익명 사용 통계 전송을 허용하면 PocketMine-MP가 세계의 서버 상황과 플러그인들을 통계화하는 데 사용할 수 있습니다. 당신은 stats.pocketmine.net에서 이를 확인할 수 있습니다 -usage_disable = 익명 사용 통계 전송을 사용하지 않으시겠습니까? -ip_get = 내/외부 IP 주소 얻기 -ip_warning = 당신의 외부 IP는 {{EXTERNAL_IP}}입니다. 당신의 내부 IP {{INTERNAL_IP}}로 포트포워딩이 필요할 수 있습니다 -ip_confirm = 신중하게 확인하세요. 만약 포트 포워딩이 필요하지만 하지 않을 경우 외부에서 플레이어들이 접속할 수 없게 됩니다. [계속 하시려면 엔터를 누르세요] - -you_have_finished = PocketMine-MP의 설치가 모두 완료되었습니다. -pocketmine_will_start = PocketMine-MP 서버를 구동합니다. /help로 사용 가능한 모든 명령어의 목록을 보시기 바랍니다. -pocketmine_plugins = 플러그인 저장소에서 새로운 기능을 추가하세요. 새로운 기능, 미니게임을 추가하거나 고급 기능으로 당신의 서버를 보호할 수 있습니다 diff --git a/src/pocketmine/lang/Installer/lv_LV.ini b/src/pocketmine/lang/Installer/lv_LV.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/lv_LV.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/ms_MY.ini b/src/pocketmine/lang/Installer/ms_MY.ini deleted file mode 100644 index e3d352a3114..00000000000 --- a/src/pocketmine/lang/Installer/ms_MY.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = Bahasa Melayu telah dipilih dengan betul. -skip_installer = Adakah anda mahu meninggalkan 'set-up' ini? - -welcome_to_pocketmine = Selamat datang ke PocketMine-MP!\nSebelum memulakan setting untuk server baru anda, anda perlu setuju dengan lesen. \nPocketMine-MP telah dilesen dibawah LGPL License,\nthat anda boleh membaca LICENSE fail dalam folder ini. -accept_license = Adakah anda setuju dengan lesen ini? -you_have_to_accept_the_license = Anda peru setuju dengan lesen LGPL untuk meneruskan menggunakan PocketMine-MP - -setting_up_server_now = Anda perlu memulakan 'set-up' server sekarang. -default_values_info = Jika anda tidak mahu menukar bilangan 'value', hanya tekan Enter. -server_properties = Anda boleh edit itu selepas ini di fail server.properties. - -name_your_server = Berikan satu nama kepada pelayan anda -port_warning = Jangan tukar 'default port value' jika ini pelayan pertama anda. -server_port = Port pelayan -invalid_port = Port pelayan tidak boleh digunakan -ram_warning = Angka RAM maksimum bagi memori untuk PocketMIne-MP akan digunakan. Nilai baginya ialah 128-256 MB adalah disyorkan -server_ram = RAM pelayan adalah di dalam MB -gamemode_info = Pilih di antara Kreatif (1) atau Ikhtiar (0) -default_gamemode = Mod permainan asal -max_players = Maks. pemain dalam talian -spawn_protection_info = Perlindungan 'spawn' tidak membenarkan meletakkan / memecah blok di zon 'spawn' kecuali OP -spawn_protection = Aktifkan perlindungan 'spawn' ? - -op_info = Satu OP adalah admin pemain pelayan. OP boleh menjalankan lebih arahan daripada pemain biasa -op_who = Nama Pemain OP (contohnya, nama permainan anda) -op_warning = Anda akan dapat untuk menambah pengguna OP kemudian menggunakan /op -whitelist_info = Senarai putih ini hanya membenarkan pemain dalam itu untuk masuk. -whitelist_enable = Adakah anda ingin untuk membolehkan senarai putih? -whitelist_warning = Anda perlu menambah pemain untuk senarai putih - -query_warning1 = Query adalah protokol yang digunakan oleh alat yang berbeza untuk mendapatkan maklumat pelayan dan pemain anda log masuk. -query_warning2 = Jika anda nyahaktifkan, anda tidak akan dapat menggunakan senarai pelayan. -query_disable = Adakah anda ingin untuk menyahboleh Query? -rcon_info = RCON merupakan protokol untuk menyambung jauh dengan konsol pelayan dengan menggunakan kata laluan. -rcon_enable = Mahu aktifkan RCON? -rcon_password = Kata laluan RCON (anda boleh tukarnya kemudian) -usage_info = Data penggunaan tanpa nama membolehkan kita untuk mengira statistik global untuk PocketMine-MP dan plugin itu. Anda boleh melihat itu di stats.pocketmine.net -usage_disable = Adakah anda mahu nyah-aktifkan penggunaan tanpa nama? -ip_get = Mendapatkan external IP dan internal IP anda -ip_warning = External IP anda ialah {{EXTERNAL_IP}} Anda perlu port-foward anda punya internal IP {{INTERNAL_IP}} -ip_confirm = Pastikan anda menyemak ia, jika anda perlu ke depan dan skip ia, tiada pemain external akan dapat masuk. [Tekan Enter] - -you_have_finished = Anda telah selesaikan set-up dengan betul dan selamat -pocketmine_will_start = PocketMine-MP akan mula sekarang. Taip /help untuk melihat command-command. -pocketmine_plugins = Semak Plugin Repository untuk menambah feature baru, permainan kecil, ataupun keselamatan untuk anda punya pelayan diff --git a/src/pocketmine/lang/Installer/mt_MT.ini b/src/pocketmine/lang/Installer/mt_MT.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/mt_MT.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/nl_NL.ini b/src/pocketmine/lang/Installer/nl_NL.ini deleted file mode 100644 index dcc2297381b..00000000000 --- a/src/pocketmine/lang/Installer/nl_NL.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = Nederlands is nu geselecteerd. -skip_installer = Wil je de set-up help overslaan? - -welcome_to_pocketmine = Welkom op de PocketMine-MP!\nVoordat je je nieuwe server klaarmaakt, moet je onze gebruikersovereenkomst accepteren.\nPocketMine-MP is gelicenseerd onder LGPL License,\nwat je kunt lezen door de LICENSE file in deze map te openen. -accept_license = Accepteer je de gebruikersvoorwaarden? -you_have_to_accept_the_license = Je moet de LGPL gebruikersvoorwaarden accepteren voordat je verder gaat met het gebruiken van de services van PocketMine-MP - -setting_up_server_now = Je gaat nu een server klaarmaken voor gebruik. -default_values_info = Druk op Enter als je de gebruikelijke waarde niet wilt veranderen. -server_properties = Je kunt ze later veranderen in het server.properties bestand. - -name_your_server = Geef een naam aan je server -port_warning = Verander de gebruikelijke poort niet als dit je eerste server is. -server_port = Server poort -invalid_port = Ongeldige server poort -ram_warning = De RAM is het maximale aantal memory wat PocketMine-MP zal gebruiken. Een aantal tussen de 128 en de 256 MB is aanbevolen -server_ram = Server RAM in MB -gamemode_info = Kies tussen Creative (1) of Survival (0) -default_gamemode = Gebruikelijke spelmodus -max_players = Maximale online spelers -spawn_protection_info = De spawnbeveiliging verbiedt het plaatsen/slopen van blokken in het spawn gebied behalve voor OP's -spawn_protection = Wil je spawnbeveiliging aanzetten? - -op_info = Een OP is de beheerder van de server. OP's kunnen meer commando's gebruiken dan normale spelers -op_who = OP speler naam (voorbeeld: je username) -op_warning = Je kunt later meerdere OP's toevoegen met het commando /op -whitelist_info = De whitelist laat alleen de spelers die in de lijst staan op de server. -whitelist_enable = Wil je de whitelist aanzetten? -whitelist_warning = Je moet wel spelers aan de whitelist toevoegen. - -query_warning1 = Query is een protocol dat gebruikt wordt door verschillende programma's om informatie te verkrijgen van je server en welke spelers ingelogd zijn. -query_warning2 = Als je het uitzet, zul je geen mogelijkheid hebben om server lijsten te gebruiken. -query_disable = Wil je Query uitschakelen? -rcon_info = RCON is een protocol om je server op afstand te beheren via de server console door middel van een wachtwoord. -rcon_enable = Wil je RCON aanzetten? -rcon_password = RCON wachtwoord (deze kun je later veranderen) -usage_info = De anonieme gebruikersdata laat ons toe om de globale statistieken voor PocketMine-ML te zien en zijn plugins. Je kunt de statistieken zien op stats.pocketmine.net -usage_disable = Wil je anonieme data uitschakelen? -ip_get = Je externe IP en interne IP verkrijgen -ip_warning = Je externe IP is {{EXTERNAL_IP}}. Het is mogelijk dat je moet port-forwarden naar je interne IP:{{INTERNAL_IP}} -ip_confirm = Wees niet bang om het te controleren, als je moet port-forwarden en je slaat dit over, kunnen externe spelers niet op de server. - -you_have_finished = Je hebt de set-up help volledig beëindigd. -pocketmine_will_start = PocketMine-MP zal nu opstarten. Type /help om de lijst van beschikbare commando's te weergeven. -pocketmine_plugins = Check de Plugin Opslag om nieuwe features, minigames of geavanceerde spawnbeveiliging toe te voegen aan je server diff --git a/src/pocketmine/lang/Installer/no_NO.ini b/src/pocketmine/lang/Installer/no_NO.ini deleted file mode 100644 index d56318d6972..00000000000 --- a/src/pocketmine/lang/Installer/no_NO.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = Norsk har blitt valgt. -skip_installer = Vil du hoppe over installasjons veiviseren? - -welcome_to_pocketmine = Velkommen til PocketMine-MP!\nFør vi starter med å sette opp din nye server må du akseptere vår lisens.\nPocketMine-MP er lisensiert under LGPL lisensen,\nsom du kan lese ved å åpne LISENS filen i denne mappen. -accept_license = Aksepterer du lisensen? -you_have_to_accept_the_license = Du må akseptere LGPL lisensen for å fortsette med å bruke PocketMine-MP - -setting_up_server_now = Nå skal du sette opp din server. -default_values_info = Hvis du ikke vil gjøre forskjell med den ordinære verdien, så trenger du bare å trykke Enter. -server_properties = Du kan redigere dem senere i server.properties filen. - -name_your_server = Gi et navn til din server -port_warning = Ikke bytt på den vanlige port verdien hvis dette er din første server. -server_port = Server port -invalid_port = Ugyldig server port -ram_warning = RAM er den maksimale mengde med minne PocketMine-MP vil bruke. En verdi på 128-256 MB er anbefalt -server_ram = Server RAM i MB -gamemode_info = Velg mellom Kreativ (1) eller Overlevelse (0) -default_gamemode = Standard spillmodus -max_players = Maks online spillere -spawn_protection_info = Spawn-beskyttelsen deaktiverer plassering/ødelegging av blokker i spawn-sonen foralle som ikke er OP -spawn_protection = Aktiver spawn-beskyttelse? - -op_info = En Operatør er en administrator spiller av serveren. Operatører kan bruke mer kommandoer enn vanlige spillere -op_who = Operatør spiller navn (eksempel, ditt spill-navn) -op_warning = Du vil ha muligheten til å legge til en Operatør bruker senere med /op -whitelist_info = Hvitelisten tillater bare brukere som er i den å bli med. -whitelist_enable = Vil du aktivere hvitelisten? -whitelist_warning = Du må legge til spillere til hvitelisten - -query_warning1 = Query er en protokoll brukt av forskjellige verktøy for å få informasjon fra din server og spillere som er logget inn. -query_warning2 = Hvis du deaktiverer det, kan du ikke bruke server lister. -query_disable = Vil du deaktivere Query? -rcon_info = RCON er en protokoll for ekstern kobling til server konsollen med et passord. -rcon_enable = Vil du aktivere RCON? -rcon_password = RCON passord (du kan endre det senere) -usage_info = Den anonyme bruksdata gir oss mulighet til å kalkulere global statistikk for PocketMine-MP og dens utvidelser. Du kan se dette på stats.pocketmine.net -usage_disable = Vil du deaktivere den anonyme bruksdata? -ip_get = Henter din eksterne IP og interne IP -ip_warning = Din eksterne IP er {{EXTERNAL_IP}}. Du må kanskje port forwarde til din interne IP {{INTERNAL_IP}} -ip_confirm = Pass på å sjekke det, hvis du må port forwarde og du skipper det, kan ingen eksterne spillere koble til serveren. [Trykk på Enter] - -you_have_finished = Du har nå fullført opsettingsveiledningen -pocketmine_will_start = PocketMine-MP vil nå starte. Skriv /help for å se en liste av alle tilgjengelige kommandoer. -pocketmine_plugins = Sjekk utvidelse depotet for å legge til nye funksjoner, minispill, eller avansert beskyttelse for din server diff --git a/src/pocketmine/lang/Installer/pl_PL.ini b/src/pocketmine/lang/Installer/pl_PL.ini deleted file mode 100644 index 92bdf5b96db..00000000000 --- a/src/pocketmine/lang/Installer/pl_PL.ini +++ /dev/null @@ -1,23 +0,0 @@ -language_has_been_selected = Język angielski jest aktualnie wybrany. -skip_installer = Chcesz pominąć proces konfiguracji? - -accept_license = Akceptujesz Licencję? - - -name_your_server = Wpisz nazwę swojego serwera -server_port = Serwer port -invalid_port = Nieprawidłowy server port -server_ram = Server RAM w MB -default_gamemode = Domyślny Game mode -max_players = Maksymalna ilość graczy -spawn_protection = Aktywować ochronę spawnu? - -whitelist_enable = Chcesz aktywować white-list? - -query_disable = Chcesz dezaktywować Query? -rcon_info = RCON jest protokołem do zdalnego połączenia z konsolą serwera przy użyciu hasła. -rcon_enable = Chcesz aktywować RCON? -rcon_password = RCON hasło (możesz zmienić je póżniej) - -you_have_finished = Właśnie zakończyłeś proces konfiguracji -pocketmine_will_start = PocketMine-MP jest włączony. Wpisz /help aby zobaczyć wszystkie dostępne komendy. diff --git a/src/pocketmine/lang/Installer/pt_PT.ini b/src/pocketmine/lang/Installer/pt_PT.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/pt_PT.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/ru_RU.ini b/src/pocketmine/lang/Installer/ru_RU.ini deleted file mode 100644 index a1a06c6e170..00000000000 --- a/src/pocketmine/lang/Installer/ru_RU.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = Был выбран русский язык. -skip_installer = Вы хотите пропустить мастер настройки? - -welcome_to_pocketmine = Добро пожаловать в PocketMine-MP!\nПеред началом установки нового сервера, вы должны согласиться с лицензией. \nPocketMine-MP лицензировано на условиях LGPL лицензии, \nс которой вы можете ознакомиться, открыв файл LICENSE в этой папке. -accept_license = Принимаете ли вы лицензию? -you_have_to_accept_the_license = Вы должны принять LGPL лицензию, чтобы продолжить использование PocketMine-MP - -setting_up_server_now = Теперь вы можете настроить сервер. -default_values_info = Если вы не хотите изменять стандартное значение, просто нажмите Enter. -server_properties = Вы можете редактировать их позже в файле server.properties. - -name_your_server = Дайте имя вашему серверу -port_warning = Не изменяйте значение порта по умолчанию, если это ваш первый сервер. -server_port = Порт сервера -invalid_port = Неверный порт сервера -ram_warning = RAM - максимальный объем памяти, котооый будет использовать PocketMine-MP, рекомендуемое значение 128-256 МБ -server_ram = Оперативная память сервера в МБ -gamemode_info = Выберите между Креативом-(1), или Выживанием (0) -default_gamemode = Режим игры по умолчанию -max_players = Максимум онлайн игроков -spawn_protection_info = Защита спавна запрещает размещение/разрушение блоков на спавне, за исключением операторов -spawn_protection = Включить защиту спавна? - -op_info = Оператор - Администратор сервера, который может использовать больше команд, чем обычный игрок -op_who = Имя оператора (К примеру ваш ник в игре) -op_warning = Вы можете добавить оператора позже используя команду /op -whitelist_info = White-list позволяет присоединиться только игрокам в этом списке. -whitelist_enable = Вы хотите включить white-list? -whitelist_warning = Вам придётся добавить игроков в white-list - -query_warning1 = Query это протокол, используемый разными инструментами, чтобы получить информацию о вашем сервере и о зашедших игроках. -query_warning2 = Если вы отключите его, вы не сможете использовать списки серверов. -query_disable = Вы хотите отключить Query? -rcon_info = RCON - это протокол для удаленного управления сервером через консоль, с использованием пароля. -rcon_enable = Вы хотите включить RCON? -rcon_password = RCON пароль (вы сможете изменить его позже) -usage_info = Сбор анонимных данных о использовании поможет нам проанализировать глобальную статистику для PocketMine-MP и плагинов. Статистика доступна по адресу stats.pocketmine.net -usage_disable = Вы хотите отключить сбор анонимных данных о использовании? -ip_get = Получение вашего внешнего и внутреннего IP адреса -ip_warning = Ваш внешний IP адрес: {{EXTERNAL_IP}}. Возможно вам необходимо открыть порты к вашему внутреннему IP адресу: {{INTERNAL_IP}} -ip_confirm = Убедитесь в том, что вы открыли порты, в противном случае игроки вне вашей локальной сети не смогут подключится. [Нажмите Enter] - -you_have_finished = Вы закончили работу с мастером установки -pocketmine_will_start = PocketMine-MP сейчас запустится. Введите /help для просмотра доступных вам команд. -pocketmine_plugins = Посетите репозиторий плагинов для получения новых функций, мини-игр, или повышения защиты вашего сервера diff --git a/src/pocketmine/lang/Installer/sv_SE.ini b/src/pocketmine/lang/Installer/sv_SE.ini deleted file mode 100644 index 530b93c9214..00000000000 --- a/src/pocketmine/lang/Installer/sv_SE.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = Svenska har bilvit valt. -skip_installer = Vill du hoppa över Installations programmet? - -welcome_to_pocketmine = Välkommen till PocketMine-MP! Före du börja ställa in din server måste du godkänna licensen. PocketMIne-MP är licenserat under LGPL Licensen som du kan läsa genom att öppna LICENSE filen i den här mappen. -accept_license = Accepterar du Licensen? -you_have_to_accept_the_license = Du måste godkänna LGPL licensen för att fortsätta använda PocketMine-MP - -setting_up_server_now = Du håller på att börja ställa in din server nu. -default_values_info = Om du inte vill ändra standard värdet, tryck bara ENTER. -server_properties = Du kan redigera dem senare i server.properies filen. - -name_your_server = Ge ett namn till din server -port_warning = ändra INTE standard porten om detta är din första server. -server_port = Server port -invalid_port = Ogiltig Server port -ram_warning = RAM är max mängden minne PocketMine-MP kommer använda. Ett väre av 128-256 MB är rekommenderat -server_ram = Server RAM i MB -gamemode_info = Välj mellan Kreativt läge (1) eller Överlevnad (0) -default_gamemode = Standard spelläge -max_players = Max spelare online -spawn_protection_info = Spawn skydd stoppar spelare från att bygga / krossa block i Spawn-zonen förutom för OPs -spawn_protection = Aktivera Spawn-skydd? - -op_info = En OP är en spelar Administratör på servern. OPs kan köra fler kommandon än vanliga spelare -op_who = OP spelar namn (Ditt IGN här) -op_warning = Du kommer kunna lägga till fler OPs senare me /op -whitelist_info = whitelisten är en lista på spelare som får komma in på servern. -whitelist_enable = Vill du aktivera whitelisten? -whitelist_warning = Du måste i så fall lägga till spelare på whitelisten - -query_warning1 = Query är ett protokoll som används av olika verktyg för att samla in information om din server och spelare loggade in. -query_warning2 = Om du stänger av den så kommer du inte kunna använda serverlistor. -query_disable = Vill du stänga av Query? -rcon_info = RCON är ett protocol för att trådlöst ansluta till server konsolen med ett lösenord. -rcon_enable = Vill du aktivera RCON? -rcon_password = RCON lösenord (kan bytas senare) -usage_info = Anonym data användning tillåter oss att räkna ut global statistik för PocketMine-MP och dess plugin. Du kan se dessa på stats.pocketmine.net -usage_disable = Vill du stänga av anonym data använding? -ip_get = Hämtar din externa IP och interna IP -ip_warning = Din externa Ip är {{EXTERNAL_IP}}} Du kan behöva göra en "port-foward" till din Interna IP {{INTERNAL_IP}} -ip_confirm = Var säker på att du kollar den. Om du måste göra en "port-foward" men skippar det så kommer inga externa spelare att kunna logga in på din server. [Tryck på ENTER] - -you_have_finished = Du är nu klar. Allt har genomförts korrekt -pocketmine_will_start = Din Server kommer nu att starta. skriv /help eller /? för en list på tillgängliga kommandon. -pocketmine_plugins = Kolla in Plugin Hemsidan för att lägga till nya saker till din server, minispel, eller avancerat skydd diff --git a/src/pocketmine/lang/Installer/th_TH.ini b/src/pocketmine/lang/Installer/th_TH.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/th_TH.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/tlh_AA.ini b/src/pocketmine/lang/Installer/tlh_AA.ini deleted file mode 100644 index 6fb66a5e2f0..00000000000 --- a/src/pocketmine/lang/Installer/tlh_AA.ini +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pocketmine/lang/Installer/tr_TR.ini b/src/pocketmine/lang/Installer/tr_TR.ini deleted file mode 100644 index 702383f2a60..00000000000 --- a/src/pocketmine/lang/Installer/tr_TR.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = İngilizce başarıyla seçildi. -skip_installer = Kurulum yazılımını atlamak istiyormusunuz? - -welcome_to_pocketmine = PocketMine-MP dünyasına hoşgeldin.\nYeni sunucunu ayarlamaya başlamadan önce lisans sözleşmesini kabul etmelisin.\nPocketMine-MP LGPL Linsansı altında lisanslıdır,\nBu klasörden LİSANS dosyasını açıp okuyabilirsin. -accept_license = Lisans sözleşmesini kabul ediyor musunuz? -you_have_to_accept_the_license = PocketMine-MP'yi kullanabilmeniz için LGPL lisansını kabul etmeniz gereklidir - -setting_up_server_now = Sunucunuz şimdi kurulacak, Devam edilsin mi? -default_values_info = Varsayılan değeri değiştirmek istemiyorsan Enter'a bas. -server_properties = Bunları daha sonra server.properties dosyasından düzenleyebilirsin. - -name_your_server = Sunucuna bir isim ver -port_warning = Eğer bu senin ilk sunucun ise varsayılan port değerini değiştirme. -server_port = Sunucu portu -invalid_port = Hatalı sunucu portu -ram_warning = PocketMine-MP için ayrılan maksimum RAM değeri. 128-256 MB yapman önerilir -server_ram = Kullanılan RAM (MB) -gamemode_info = Yaratıcılık (1) ve Hayatta Kalma (0) arasından seçim yap -default_gamemode = Varsayılan oyun modu -max_players = Max. online oyuncu -spawn_protection_info = Spawn koruması, OP olmayan oyuncuların spawn bölgesinde blok kırmasını/koymasını engeller -spawn_protection = Spawn korumasını aktif et? - -op_info = Bir OP sunucunun admin oyuncusudur. OPlar normal oyunculardan daha fazla komut kullanabilir -op_who = OP oyuncu adı (örnek, senin oyun adın) -op_warning = Daha sonra /op yazarak oyuncuları OP yapabilirsin -whitelist_info = White-list yalnızca izin verilen oyuncuların giriş yapmasını sağlar. -whitelist_enable = White-list özelliğini aktif etmek ister misin? -whitelist_warning = White-list'e oyuncu eklemelisin - -query_warning1 = Query, farklı araçların sunucu ve bağlı oyuncu bilgilerini çekebilmesi için var olan bir protokoldür. -query_warning2 = Eğer devre dışı bırakırsan, sunucu listelerini kullanamayacaksın. -query_disable = Query'i devre dışı bırakmak ister misin? -rcon_info = RCON, sunucu konsoluna şifre ile bağlanmak için kullanılan bir protokoldür. -rcon_enable = RCON'u aktif etmek ister misin? -rcon_password = RCON şifresi (daha sonra değiştirebilirsin) -usage_info = Anonim kullanım, PocketMine-MP ve eklentileri için global istatistikleri hesaplar. Bu istatistiklere stats.pocketmine.net adresinden bakabilirsin -usage_disable = Anonim kullanımı kapatmak ister misin? -ip_get = Dış IP adresi ve iç IP adresi tespit ediliyor -ip_warning = Dış IP adresin {{EXTERNAL_IP}}. İç IP adresin olan {{INTERNAL_IP}} adresine port yönlendirme yapmalısın -ip_confirm = Lütfen bu adımı gözden geçirin. Bu adımı atlarsanız, Lokal olmayan oyuncular sunucuya bağlanamayacak. [Enter'a Bas] - -you_have_finished = Kurulum başarıyla tamamlandı. -pocketmine_will_start = PocketMine-MP şimdi başlayacak. /help yazarak kullanılbilir komutların listesini görebilirsin. -pocketmine_plugins = Sunucuna minigames veya gelişmiş korumalar eklemek için eklenti kütüphanesine bak diff --git a/src/pocketmine/lang/Installer/uk_UA.ini b/src/pocketmine/lang/Installer/uk_UA.ini deleted file mode 100644 index b58b9041064..00000000000 --- a/src/pocketmine/lang/Installer/uk_UA.ini +++ /dev/null @@ -1,9 +0,0 @@ -language_has_been_selected = Українська була вибрана правильно. -skip_installer = Ви хочете пропустити майстер настройки? - -welcome_to_pocketmine = Ласкаво просимо до PocketMine-MP!\nПеред початком встановлення нового сервера, ви повинні погодитись з ліцензією.\nPocketMine-MP ліцензована по LGPL ліцензії, \nяку ви можете прочитати, відкривши файл ліцензії в цій папці. - - - - - diff --git a/src/pocketmine/lang/Installer/vi_VN.ini b/src/pocketmine/lang/Installer/vi_VN.ini deleted file mode 100644 index e98190d52c3..00000000000 --- a/src/pocketmine/lang/Installer/vi_VN.ini +++ /dev/null @@ -1,31 +0,0 @@ -language_has_been_selected = Tiếng Anh đã được chọn. -skip_installer = Bạn có muốn bỏ qua hướng dẫn set-up? - -welcome_to_pocketmine = Chào mừng tới PocketMine-MP!\nTrước khi bắt đầu, bạn phải chấp nhận hợp đồng. \nPocketMine-MP được hợp đồng bởi LGPL License,\nbạn có thể đọc file LICENSE trong thư mục này. -accept_license = Bạn có chấp nhận hợp đồng ? -you_have_to_accept_the_license = Bạn phải chấp nhận LGPL license để sử dụng PocketMine-MP - -setting_up_server_now = Bạn sẽ bắt đầu set up server của bạn ngay. -default_values_info = Nếu bạn không muốn đổi giá trị mặc định, nhấn Enter. -server_properties = Bạn có thể chỉnh sửa lại vào file server.properties . - -name_your_server = Đặt tên server -port_warning = Không được đổi giá trị port mặc định nếu đây là server đầu tiên của bạn. -server_port = Server port -invalid_port = Server port không đúng -ram_warning = RAM là tất cả bộ nhớ mà PocketMine-MP sẽ sử dụng. 128/256 MB là cần thiết -server_ram = Server RAM theo MB -gamemode_info = Chọn Creative (1) hoặc Survival (0) -default_gamemode = Chế độ mặc định -max_players = Giới hạn lượng người chơi -spawn_protection_info = Spawn protection không cho phép đặt/đập trong khu vực hồi sinh trừ OPs -spawn_protection = Mở Spawn protection? - -op_info = OP là chủ/quản lí server. OPs có nhiều quyền hạn hơn người thường -op_who = Tên OP (ví dụ, tên bạn) -op_warning = Bạn có thể thêm OP bằng lệnh /op -whitelist_info = White-list chỉ cho người có phép của quản lí tham gia. -whitelist_enable = Bạn có muốn bật white-list? -whitelist_warning = Bạn sẽ phải thêm người chơi vào white-list - - diff --git a/src/pocketmine/lang/Installer/zh_CN.ini b/src/pocketmine/lang/Installer/zh_CN.ini deleted file mode 100644 index 07a95d7b301..00000000000 --- a/src/pocketmine/lang/Installer/zh_CN.ini +++ /dev/null @@ -1,46 +0,0 @@ -language_has_been_selected = 您现在选择了简体中文. -skip_installer = 您想跳过安装向导吗? - -welcome_to_pocketmine = 欢迎来到PocketMine-MP!\n在开始使用您的新服务器之前,您需要接受以下协议\nPocketMine-MP使用了LGPL协议,\n你可以在这个文件夹中找到LICENCE文件。 -accept_license = 您接受协议内容吗? -you_have_to_accept_the_license = 您要接受LGPL协议才可继续使用PocketMine-MP - -setting_up_server_now = 你现在要开始设置您的服务器了。 -default_values_info = 如果您希望留住默认设置,请直接按下回车键。 -server_properties = 您以后可以在server.properties中修改设置. - -name_your_server = 命名您的服务器: -port_warning = 如果这是您第一次设置服务器,尽量不要改变端口。 -server_port = 服务器端口: -invalid_port = 服务器端口不正确。 -ram_warning = RAM是PocketMine-MP可用的最大内存. 推荐范围: 128-256 MB -server_ram = 分配给服务器的内存(RAM)(MB): -gamemode_info = 选择模式: (1)生存模式 或 (2)创造模式 -default_gamemode = 默认游戏模式 -max_players = 最多在线人数 -spawn_protection_info = 出生点保护可以在出生点范围内保护所有方块不被改變。 -spawn_protection = 启用出生点保护? - -op_info = OP是一个服务器的管理员, 可以执行比普通玩家更多的命令. -op_who = OP的用户名是什么? -op_warning = 你可以执行\"/op <用户名>\"来添加OP. -whitelist_info = 白名单可以只允许在其列表内的玩家加入. -whitelist_enable = 您想启用白名单吗? -whitelist_warning = 你可以用"/whitelist add <用户名>"把别人加入白名单. - -query_warning1 = 请求是一个用于不同的程序的协议用来获取您服务器数据和登录的玩家. -query_warning2 = 如果您禁止了它, 您将不能使用服务器列表. -query_disable = 您希望禁用Query请求吗? -rcon_info = RCON是一个用来远程连接到服务器控制台的协议(需要密码). -rcon_enable = 您希望启用RCON吗? -rcon_password = RCON密码 (您也以后更改它) : -usage_info = 匿名数据让我们可以获得全球的PocketMine-MP和它的插件的统计信息. 您可以在 stats.pocketmine.net 查看统计信息. - -usage_disable = 您希望禁用匿名数据吗? -ip_get = 获得你的外部IP和内部IP -ip_warning = 您的外部IP是 {{EXTERNAL_IP}} . 您可能需要端口转发到您的内网IP {{INTERNAL_IP}} . -ip_confirm = 请确认您检查了它, 如果您直接进入下一步并跳过这一步, 没有外部的玩家可以加入. [按\"回车\"键] - -you_have_finished = 您已经成功完成了服务器设置向导. -pocketmine_will_start = PocketMine-MP现在开始运行. 输入 \"/help\" 来看所有可用的命令. -pocketmine_plugins = 请查看插件源来添加新的功能, 迷你游戏或者对服务器的高级保护. diff --git a/src/pocketmine/lang/Installer/zu_ZA.ini b/src/pocketmine/lang/Installer/zu_ZA.ini deleted file mode 100644 index 860f671a152..00000000000 --- a/src/pocketmine/lang/Installer/zu_ZA.ini +++ /dev/null @@ -1,45 +0,0 @@ -language_has_been_selected = crwdns106:0crwdne106:0 -skip_installer = crwdns107:0crwdne107:0 - -welcome_to_pocketmine = crwdns108:0crwdne108:0 -accept_license = crwdns109:0crwdne109:0 -you_have_to_accept_the_license = crwdns110:0crwdne110:0 - -setting_up_server_now = crwdns111:0crwdne111:0 -default_values_info = crwdns112:0crwdne112:0 -server_properties = crwdns113:0crwdne113:0 - -name_your_server = crwdns114:0crwdne114:0 -port_warning = crwdns115:0crwdne115:0 -server_port = crwdns116:0crwdne116:0 -invalid_port = crwdns117:0crwdne117:0 -ram_warning = crwdns118:0crwdne118:0 -server_ram = crwdns119:0crwdne119:0 -gamemode_info = crwdns120:0crwdne120:0 -default_gamemode = crwdns121:0crwdne121:0 -max_players = crwdns122:0crwdne122:0 -spawn_protection_info = crwdns123:0crwdne123:0 -spawn_protection = crwdns124:0crwdne124:0 - -op_info = crwdns125:0crwdne125:0 -op_who = crwdns126:0crwdne126:0 -op_warning = crwdns127:0crwdne127:0 -whitelist_info = crwdns128:0crwdne128:0 -whitelist_enable = crwdns129:0crwdne129:0 -whitelist_warning = crwdns130:0crwdne130:0 - -query_warning1 = crwdns131:0crwdne131:0 -query_warning2 = crwdns132:0crwdne132:0 -query_disable = crwdns133:0crwdne133:0 -rcon_info = crwdns134:0crwdne134:0 -rcon_enable = crwdns135:0crwdne135:0 -rcon_password = crwdns136:0crwdne136:0 -usage_info = crwdns137:0crwdne137:0 -usage_disable = crwdns138:0crwdne138:0 -ip_get = crwdns139:0crwdne139:0 -ip_warning = crwdns140:0{{EXTERNAL_IP}}crwdnd140:0{{INTERNAL_IP}}crwdne140:0 -ip_confirm = crwdns141:0crwdne141:0 - -you_have_finished = crwdns142:0crwdne142:0 -pocketmine_will_start = crwdns143:0crwdne143:0 -pocketmine_plugins = crwdns144:0crwdne144:0 diff --git a/src/pocketmine/lang/locale b/src/pocketmine/lang/locale index b85aa7108f3..0ad9ce517f2 160000 --- a/src/pocketmine/lang/locale +++ b/src/pocketmine/lang/locale @@ -1 +1 @@ -Subproject commit b85aa7108f34cf14b195beaf8069a8c23688a4ad +Subproject commit 0ad9ce517f2d45ef27bd482ed3db2ff987c63e30 diff --git a/src/pocketmine/wizard/InstallerLang.php b/src/pocketmine/wizard/InstallerLang.php deleted file mode 100644 index 973494213b8..00000000000 --- a/src/pocketmine/wizard/InstallerLang.php +++ /dev/null @@ -1,118 +0,0 @@ - "English", - "es" => "Español", - "zh" => "中文", - "ru" => "Pyccĸий", - "ja" => "日本語", - "de" => "Deutsch", - //"vi" => "Tiếng Việt", - "ko" => "한국어", - "nl" => "Nederlands", - "fr" => "Français", - "it" => "Italiano", - //"lv" => "Latviešu", - "ms" => "Melayu", - "no" => "Norsk", - //"pt" => "Português", - "sv" => "Svenska", - "fi" => "Suomi", - "tr" => "Türkçe", - //"et" => "Eesti", - ]; - private $texts = []; - private $lang; - private $langfile; - - public function __construct($lang = ""){ - if(file_exists(\pocketmine\PATH . "src/pocketmine/lang/Installer/" . $lang . ".ini")){ - $this->lang = $lang; - $this->langfile = \pocketmine\PATH . "src/pocketmine/lang/Installer/" . $lang . ".ini"; - }else{ - $files = []; - foreach(new \DirectoryIterator(\pocketmine\PATH . "src/pocketmine/lang/Installer/") as $file){ - if($file->getExtension() === "ini" and substr($file->getFilename(), 0, 2) === $lang){ - $files[$file->getFilename()] = $file->getSize(); - } - } - - if(count($files) > 0){ - arsort($files); - reset($files); - $l = key($files); - $l = substr($l, 0, -4); - $this->lang = isset(self::$languages[$l]) ? $l : $lang; - $this->langfile = \pocketmine\PATH . "src/pocketmine/lang/Installer/" . $l . ".ini"; - }else{ - $this->lang = "en"; - $this->langfile = \pocketmine\PATH . "src/pocketmine/lang/Installer/en.ini"; - } - } - - $this->loadLang(\pocketmine\PATH . "src/pocketmine/lang/Installer/en.ini", "en"); - if($this->lang !== "en"){ - $this->loadLang($this->langfile, $this->lang); - } - - } - - public function getLang(){ - return ($this->lang); - } - - public function loadLang($langfile, $lang = "en"){ - $this->texts[$lang] = []; - $texts = explode("\n", str_replace(["\r", "\\/\\/"], ["", "//"], file_get_contents($langfile))); - foreach($texts as $line){ - $line = trim($line); - if($line === ""){ - continue; - } - $line = explode("=", $line); - $this->texts[$lang][trim(array_shift($line))] = trim(str_replace(["\\n", "\\N",], "\n", implode("=", $line))); - } - } - - public function get($name, $search = [], $replace = []){ - if(!isset($this->texts[$this->lang][$name])){ - if($this->lang !== "en" and isset($this->texts["en"][$name])){ - return $this->texts["en"][$name]; - }else{ - return $name; - } - }elseif(count($search) > 0){ - return str_replace($search, $replace, $this->texts[$this->lang][$name]); - }else{ - return $this->texts[$this->lang][$name]; - } - } - - public function __get($name){ - return $this->get($name); - } - -} \ No newline at end of file diff --git a/src/pocketmine/wizard/Installer.php b/src/pocketmine/wizard/SetupWizard.php similarity index 63% rename from src/pocketmine/wizard/Installer.php rename to src/pocketmine/wizard/SetupWizard.php index f6f3c8ee2f5..2b78a106c8f 100644 --- a/src/pocketmine/wizard/Installer.php +++ b/src/pocketmine/wizard/SetupWizard.php @@ -25,16 +25,18 @@ */ namespace pocketmine\wizard; +use pocketmine\lang\BaseLang; use pocketmine\utils\Config; use pocketmine\utils\Utils; -class Installer{ +class SetupWizard{ const DEFAULT_NAME = "Minecraft: PE Server"; const DEFAULT_PORT = 19132; const DEFAULT_MEMORY = 256; const DEFAULT_PLAYERS = 20; const DEFAULT_GAMEMODE = 0; + /** @var BaseLang */ private $lang; public function __construct(){ @@ -44,18 +46,20 @@ public function __construct(){ public function run(){ echo "[*] PocketMine-MP set-up wizard\n"; echo "[*] Please select a language:\n"; - foreach(InstallerLang::$languages as $short => $native){ + $langs = BaseLang::getLanguageList(); + foreach($langs as $short => $native){ echo " $native => $short\n"; } do{ - echo "[?] Language (en): "; - $lang = strtolower($this->getInput("en")); - if(!isset(InstallerLang::$languages[$lang])){ + echo "[?] Language (eng): "; + $lang = strtolower($this->getInput("eng")); + if(!isset($langs[$lang])){ echo "[!] Couldn't find the language\n"; - $lang = false; + $lang = null; } - }while($lang == false); - $this->lang = new InstallerLang($lang); + }while($lang === null); + + $this->lang = new BaseLang($lang); echo "[*] " . $this->lang->get("language_has_been_selected") . "\n"; @@ -80,7 +84,7 @@ public function run(){ } private function showLicense(){ - echo $this->lang->welcome_to_pocketmine . "\n"; + echo $this->lang->get("welcome_to_pocketmine") . "\n"; echo <<lang->accept_license . " (y/N): "; + echo "\n[?] " . $this->lang->get("accept_license") . " (y/N): "; if(strtolower($this->getInput("n")) != "y"){ - echo "[!] " . $this->lang->you_have_to_accept_the_license . "\n"; + echo "[!] " . $this->lang->get("you_have_to_accept_the_license") . "\n"; sleep(5); return false; @@ -101,39 +105,37 @@ private function showLicense(){ } private function welcome(){ - echo "[*] " . $this->lang->setting_up_server_now . "\n"; - echo "[*] " . $this->lang->default_values_info . "\n"; - echo "[*] " . $this->lang->server_properties . "\n"; + echo "[*] " . $this->lang->get("setting_up_server_now") . "\n"; + echo "[*] " . $this->lang->get("default_values_info") . "\n"; + echo "[*] " . $this->lang->get("server_properties") . "\n"; } private function generateBaseConfig(){ $config = new Config(\pocketmine\DATA . "server.properties", Config::PROPERTIES); - echo "[?] " . $this->lang->name_your_server . " (" . self::DEFAULT_NAME . "): "; + echo "[?] " . $this->lang->get("name_your_server") . " (" . self::DEFAULT_NAME . "): "; $config->set("motd", ($name = $this->getInput(self::DEFAULT_NAME))); $config->set("server-name", $name); - echo "[*] " . $this->lang->port_warning . "\n"; + echo "[*] " . $this->lang->get("port_warning") . "\n"; do{ - echo "[?] " . $this->lang->server_port . " (" . self::DEFAULT_PORT . "): "; + echo "[?] " . $this->lang->get("server_port") . " (" . self::DEFAULT_PORT . "): "; $port = (int) $this->getInput(self::DEFAULT_PORT); if($port <= 0 or $port > 65535){ - echo "[!] " . $this->lang->invalid_port . "\n"; + echo "[!] " . $this->lang->get("invalid_port") . "\n"; } }while($port <= 0 or $port > 65535); $config->set("server-port", $port); - /*echo "[*] " . $this->lang->ram_warning . "\n"; - echo "[?] " . $this->lang->server_ram . " (" . self::DEFAULT_MEMORY . "): "; - $config->set("memory-limit", ((int) $this->getInput(self::DEFAULT_MEMORY)) . "M");*/ - echo "[*] " . $this->lang->gamemode_info . "\n"; + + echo "[*] " . $this->lang->get("gamemode_info") . "\n"; do{ - echo "[?] " . $this->lang->default_gamemode . ": (" . self::DEFAULT_GAMEMODE . "): "; + echo "[?] " . $this->lang->get("default_gamemode") . ": (" . self::DEFAULT_GAMEMODE . "): "; $gamemode = (int) $this->getInput(self::DEFAULT_GAMEMODE); }while($gamemode < 0 or $gamemode > 3); $config->set("gamemode", $gamemode); - echo "[?] " . $this->lang->max_players . " (" . self::DEFAULT_PLAYERS . "): "; + echo "[?] " . $this->lang->get("max_players") . " (" . self::DEFAULT_PLAYERS . "): "; $config->set("max-players", (int) $this->getInput(self::DEFAULT_PLAYERS)); - echo "[*] " . $this->lang->spawn_protection_info . "\n"; - echo "[?] " . $this->lang->spawn_protection . " (Y/n): "; + echo "[*] " . $this->lang->get("spawn_protection_info") . "\n"; + echo "[?] " . $this->lang->get("spawn_protection") . " (Y/n): "; if(strtolower($this->getInput("y")) == "n"){ $config->set("spawn-protection", -1); }else{ @@ -143,21 +145,21 @@ private function generateBaseConfig(){ } private function generateUserFiles(){ - echo "[*] " . $this->lang->op_info . "\n"; - echo "[?] " . $this->lang->op_who . ": "; + echo "[*] " . $this->lang->get("op_info") . "\n"; + echo "[?] " . $this->lang->get("op_who") . ": "; $op = strtolower($this->getInput("")); if($op === ""){ - echo "[!] " . $this->lang->op_warning . "\n"; + echo "[!] " . $this->lang->get("op_warning") . "\n"; }else{ $ops = new Config(\pocketmine\DATA . "ops.txt", Config::ENUM); $ops->set($op, true); $ops->save(); } - echo "[*] " . $this->lang->whitelist_info . "\n"; - echo "[?] " . $this->lang->whitelist_enable . " (y/N): "; + echo "[*] " . $this->lang->get("whitelist_info") . "\n"; + echo "[?] " . $this->lang->get("whitelist_enable") . " (y/N): "; $config = new Config(\pocketmine\DATA . "server.properties", Config::PROPERTIES); if(strtolower($this->getInput("n")) === "y"){ - echo "[!] " . $this->lang->whitelist_warning . "\n"; + echo "[!] " . $this->lang->get("whitelist_warning") . "\n"; $config->set("white-list", true); }else{ $config->set("white-list", false); @@ -167,22 +169,22 @@ private function generateUserFiles(){ private function networkFunctions(){ $config = new Config(\pocketmine\DATA . "server.properties", Config::PROPERTIES); - echo "[!] " . $this->lang->query_warning1 . "\n"; - echo "[!] " . $this->lang->query_warning2 . "\n"; - echo "[?] " . $this->lang->query_disable . " (y/N): "; + echo "[!] " . $this->lang->get("query_warning1") . "\n"; + echo "[!] " . $this->lang->get("query_warning2") . "\n"; + echo "[?] " . $this->lang->get("query_disable") . " (y/N): "; if(strtolower($this->getInput("n")) === "y"){ $config->set("enable-query", false); }else{ $config->set("enable-query", true); } - echo "[*] " . $this->lang->rcon_info . "\n"; - echo "[?] " . $this->lang->rcon_enable . " (y/N): "; + echo "[*] " . $this->lang->get("rcon_info") . "\n"; + echo "[?] " . $this->lang->get("rcon_enable") . " (y/N): "; if(strtolower($this->getInput("n")) === "y"){ $config->set("enable-rcon", true); $password = substr(base64_encode(random_bytes(20)), 3, 10); $config->set("rcon.password", $password); - echo "[*] " . $this->lang->rcon_password . ": " . $password . "\n"; + echo "[*] " . $this->lang->get("rcon_password") . ": " . $password . "\n"; }else{ $config->set("enable-rcon", false); } @@ -197,20 +199,20 @@ private function networkFunctions(){ $config->save(); - echo "[*] " . $this->lang->ip_get . "\n"; + echo "[*] " . $this->lang->get("ip_get") . "\n"; $externalIP = Utils::getIP(); $internalIP = gethostbyname(trim(`hostname`)); - echo "[!] " . $this->lang->get("ip_warning", ["{{EXTERNAL_IP}}", "{{INTERNAL_IP}}"], [$externalIP, $internalIP]) . "\n"; - echo "[!] " . $this->lang->ip_confirm; + echo "[!] " . $this->lang->translateString("ip_warning", ["EXTERNAL_IP" => $externalIP, "INTERNAL_IP" => $internalIP]) . "\n"; + echo "[!] " . $this->lang->get("ip_confirm"); $this->getInput(); } private function endWizard(){ - echo "[*] " . $this->lang->you_have_finished . "\n"; - echo "[*] " . $this->lang->pocketmine_plugins . "\n"; - echo "[*] " . $this->lang->pocketmine_will_start . "\n\n\n"; + echo "[*] " . $this->lang->get("you_have_finished") . "\n"; + echo "[*] " . $this->lang->get("pocketmine_plugins") . "\n"; + echo "[*] " . $this->lang->get("pocketmine_will_start") . "\n\n\n"; sleep(4); } From 1908ed581275009f687c721c1f8b7aa24ecc9f7c Mon Sep 17 00:00:00 2001 From: Intyre Date: Wed, 15 Feb 2017 15:48:11 +0100 Subject: [PATCH 16/25] Fix for incorrect gamemode messages, close #83 (#86) Shows the correct message ingame but not in the console. PocketMine doesn't handle the translation for gamemode changes, MCPE does. No idea why but it requires the second and third parameter.... commands.gamemode.success.other=Set %2$s's game mode to %3$s commands.gamemode.success.self=Set own game mode to %3$s To solve the problem we have to change the language files and let PocketMine-MP translate it. --- src/pocketmine/command/defaults/GamemodeCommand.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pocketmine/command/defaults/GamemodeCommand.php b/src/pocketmine/command/defaults/GamemodeCommand.php index 30b562a6828..331c5953e03 100644 --- a/src/pocketmine/command/defaults/GamemodeCommand.php +++ b/src/pocketmine/command/defaults/GamemodeCommand.php @@ -77,10 +77,10 @@ public function execute(CommandSender $sender, $currentAlias, array $args){ $sender->sendMessage("Game mode change for " . $target->getName() . " failed!"); }else{ if($target === $sender){ - Command::broadcastCommandMessage($sender, new TranslationContainer("commands.gamemode.success.self", [Server::getGamemodeString($gameMode)])); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.gamemode.success.self", ['blame', 'mojang', Server::getGamemodeString($gameMode)])); }else{ $target->sendMessage(new TranslationContainer("gameMode.changed")); - Command::broadcastCommandMessage($sender, new TranslationContainer("commands.gamemode.success.other", [$target->getName(), Server::getGamemodeString($gameMode)])); + Command::broadcastCommandMessage($sender, new TranslationContainer("commands.gamemode.success.other", ['blame mojang', $target->getName(), Server::getGamemodeString($gameMode)])); } } From 5c281c6435e91d9bf6e8523fdd89e1bcc25b6077 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 15 Feb 2017 14:58:41 +0000 Subject: [PATCH 17/25] Merged #103 --- src/pocketmine/block/Bed.php | 7 ++++--- src/pocketmine/lang/locale | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/pocketmine/block/Bed.php b/src/pocketmine/block/Bed.php index 7ea73b35195..2fb29fd7efa 100644 --- a/src/pocketmine/block/Bed.php +++ b/src/pocketmine/block/Bed.php @@ -21,6 +21,7 @@ namespace pocketmine\block; +use pocketmine\event\TranslationContainer; use pocketmine\item\Item; use pocketmine\level\Level; use pocketmine\math\AxisAlignedBB; @@ -65,7 +66,7 @@ public function onActivate(Item $item, Player $player = null){ $isNight = ($time >= Level::TIME_NIGHT and $time < Level::TIME_SUNRISE); if($player instanceof Player and !$isNight){ - $player->sendMessage(TextFormat::GRAY . "You can only sleep at night"); + $player->sendMessage(new TranslationContainer(TextFormat::GRAY . "%tile.bed.noSleep")); return true; } @@ -94,7 +95,7 @@ public function onActivate(Item $item, Player $player = null){ } if($player instanceof Player and $player->sleepOn($b) === false){ - $player->sendMessage(TextFormat::GRAY . "This bed is occupied"); + $player->sendMessage(new TranslationContainer(TextFormat::GRAY . "%tile.bed.occupied")); } return true; @@ -162,4 +163,4 @@ public function getDrops(Item $item){ ]; } -} \ No newline at end of file +} diff --git a/src/pocketmine/lang/locale b/src/pocketmine/lang/locale index 0ad9ce517f2..54473084f59 160000 --- a/src/pocketmine/lang/locale +++ b/src/pocketmine/lang/locale @@ -1 +1 @@ -Subproject commit 0ad9ce517f2d45ef27bd482ed3db2ff987c63e30 +Subproject commit 54473084f59ad4fd6d78e6666c7afcd11d3992ab From f8b9a134407bc0d3435ce9d75039e6c0d7557d23 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 15 Feb 2017 16:06:02 +0000 Subject: [PATCH 18/25] Updated PocketMine-Language submodule --- src/pocketmine/lang/locale | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pocketmine/lang/locale b/src/pocketmine/lang/locale index 54473084f59..3851be8ea62 160000 --- a/src/pocketmine/lang/locale +++ b/src/pocketmine/lang/locale @@ -1 +1 @@ -Subproject commit 54473084f59ad4fd6d78e6666c7afcd11d3992ab +Subproject commit 3851be8ea62b7397a8464963b602c000d52b3b6b From abffe1297dee1a63860b389aabb12891b69301bd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 15 Feb 2017 17:51:41 +0000 Subject: [PATCH 19/25] Fixed crashes closing entities with unloaded levels --- src/pocketmine/Player.php | 42 +++++++++++++++++--------------- src/pocketmine/entity/Entity.php | 4 +-- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index a81e1142b2f..188fd911fcc 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -1699,11 +1699,16 @@ protected function processLogin(){ $this->allowFlight = (bool) ($this->gamemode & 0x01); if(($level = $this->server->getLevelByName($nbt["Level"])) === null){ - $this->setLevel($this->server->getDefaultLevel()); - $nbt["Level"] = $this->level->getName(); - $nbt["Pos"][0] = $this->level->getSpawnLocation()->x; - $nbt["Pos"][1] = $this->level->getSpawnLocation()->y; - $nbt["Pos"][2] = $this->level->getSpawnLocation()->z; + if($this->server->getDefaultLevel() instanceof Level){ + $this->setLevel($this->server->getDefaultLevel()); + $nbt["Level"] = $this->level->getName(); + $nbt["Pos"][0] = $this->level->getSpawnLocation()->x; + $nbt["Pos"][1] = $this->level->getSpawnLocation()->y; + $nbt["Pos"][2] = $this->level->getSpawnLocation()->z; + }else{ + $this->close("", "No default level is loaded", true); + return; + } }else{ $this->setLevel($level); } @@ -3081,7 +3086,6 @@ public function sendWhisper($sender, $message){ * @param bool $notify */ public final function close($message = "", $reason = "generic reason", $notify = true){ - if($this->connected and !$this->closed){ if($notify and strlen((string) $reason) > 0){ $pk = new DisconnectPacket; @@ -3108,8 +3112,6 @@ public final function close($message = "", $reason = "generic reason", $notify = unset($this->usedChunks[$index]); } - parent::close(); - $this->interface->close($this, $notify ? $reason : ""); if($this->loggedIn){ @@ -3127,6 +3129,8 @@ public final function close($message = "", $reason = "generic reason", $notify = } } + parent::close(); + $this->loggedIn = false; $this->server->getPluginManager()->unsubscribeFromPermission(Server::BROADCAST_CHANNEL_USERS, $this); $this->spawned = false; @@ -3142,21 +3146,21 @@ public final function close($message = "", $reason = "generic reason", $notify = $this->loadQueue = []; $this->hasSpawned = []; $this->spawnPosition = null; - } - if($this->perm !== null){ - $this->perm->clearPermissions(); - $this->perm = null; - } + if($this->perm !== null){ + $this->perm->clearPermissions(); + $this->perm = null; + } - if($this->inventory !== null){ - $this->inventory = null; - $this->currentTransaction = null; - } + if($this->inventory !== null){ + $this->inventory = null; + $this->currentTransaction = null; + } - $this->chunk = null; + $this->chunk = null; - $this->server->removePlayer($this); + $this->server->removePlayer($this); + } } public function __debugInfo(){ diff --git a/src/pocketmine/entity/Entity.php b/src/pocketmine/entity/Entity.php index 1af83010444..8f154b3df49 100644 --- a/src/pocketmine/entity/Entity.php +++ b/src/pocketmine/entity/Entity.php @@ -1636,8 +1636,8 @@ public function close(){ if($this->chunk !== null){ $this->chunk->removeEntity($this); } - if($this->level !== null){ - $this->level->removeEntity($this); + if($this->getLevel() !== null){ + $this->getLevel()->removeEntity($this); } } } From f2f51a88e5e69c2cb201d26d6823a3f4738ac58b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 15 Feb 2017 17:55:55 +0000 Subject: [PATCH 20/25] Updated PocketMine-Language submodule (again) --- src/pocketmine/lang/locale | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pocketmine/lang/locale b/src/pocketmine/lang/locale index 3851be8ea62..24b5e323c44 160000 --- a/src/pocketmine/lang/locale +++ b/src/pocketmine/lang/locale @@ -1 +1 @@ -Subproject commit 3851be8ea62b7397a8464963b602c000d52b3b6b +Subproject commit 24b5e323c440144561111d3843a5a59e8e21f973 From ee523eb5cc49c442dd38a4a01a75c040853dd399 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 16 Feb 2017 21:03:09 +0000 Subject: [PATCH 21/25] Reverted botched fix for #284, close #362 Revert "fixed player data not saving" This reverts commit b3beb9f71dacbc722e743e45b340056c947d607a. Revert "Call PlayerQuitEvent after unloading chunks, removed some weird code, fixed crash when unloading player level on quit, close #284" This reverts commit 14a0ff5caa5bcbb6d54ae8a908513ce5e6d4afaa. --- src/pocketmine/Player.php | 60 ++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 188fd911fcc..ef320dd606c 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -1699,16 +1699,11 @@ protected function processLogin(){ $this->allowFlight = (bool) ($this->gamemode & 0x01); if(($level = $this->server->getLevelByName($nbt["Level"])) === null){ - if($this->server->getDefaultLevel() instanceof Level){ - $this->setLevel($this->server->getDefaultLevel()); - $nbt["Level"] = $this->level->getName(); - $nbt["Pos"][0] = $this->level->getSpawnLocation()->x; - $nbt["Pos"][1] = $this->level->getSpawnLocation()->y; - $nbt["Pos"][2] = $this->level->getSpawnLocation()->z; - }else{ - $this->close("", "No default level is loaded", true); - return; - } + $this->setLevel($this->server->getDefaultLevel()); + $nbt["Level"] = $this->level->getName(); + $nbt["Pos"][0] = $this->level->getSpawnLocation()->x; + $nbt["Pos"][1] = $this->level->getSpawnLocation()->y; + $nbt["Pos"][2] = $this->level->getSpawnLocation()->z; }else{ $this->setLevel($level); } @@ -3086,6 +3081,7 @@ public function sendWhisper($sender, $message){ * @param bool $notify */ public final function close($message = "", $reason = "generic reason", $notify = true){ + if($this->connected and !$this->closed){ if($notify and strlen((string) $reason) > 0){ $pk = new DisconnectPacket; @@ -3094,6 +3090,12 @@ public final function close($message = "", $reason = "generic reason", $notify = } $this->connected = false; + if(strlen($this->getName()) > 0){ + $this->server->getPluginManager()->callEvent($ev = new PlayerQuitEvent($this, $message, true)); + if($this->loggedIn === true and $ev->getAutoSave()){ + $this->save(); + } + } foreach($this->server->getOnlinePlayers() as $player){ if(!$player->canSee($this)){ @@ -3112,26 +3114,20 @@ public final function close($message = "", $reason = "generic reason", $notify = unset($this->usedChunks[$index]); } + parent::close(); + $this->interface->close($this, $notify ? $reason : ""); if($this->loggedIn){ $this->server->removeOnlinePlayer($this); } - if(strlen($this->getName()) > 0){ - $this->server->getPluginManager()->callEvent($ev = new PlayerQuitEvent($this, $message, true)); - if($this->loggedIn === true and $ev->getAutoSave()){ - $this->save(); - } + $this->loggedIn = false; - if($this->spawned !== false and $ev->getQuitMessage() != ""){ - $this->server->broadcastMessage($ev->getQuitMessage()); - } + if(isset($ev) and $this->username != "" and $this->spawned !== false and $ev->getQuitMessage() != ""){ + $this->server->broadcastMessage($ev->getQuitMessage()); } - parent::close(); - - $this->loggedIn = false; $this->server->getPluginManager()->unsubscribeFromPermission(Server::BROADCAST_CHANNEL_USERS, $this); $this->spawned = false; $this->server->getLogger()->info($this->getServer()->getLanguage()->translateString("pocketmine.player.logOut", [ @@ -3146,21 +3142,21 @@ public final function close($message = "", $reason = "generic reason", $notify = $this->loadQueue = []; $this->hasSpawned = []; $this->spawnPosition = null; + } - if($this->perm !== null){ - $this->perm->clearPermissions(); - $this->perm = null; - } + if($this->perm !== null){ + $this->perm->clearPermissions(); + $this->perm = null; + } - if($this->inventory !== null){ - $this->inventory = null; - $this->currentTransaction = null; - } + if($this->inventory !== null){ + $this->inventory = null; + $this->currentTransaction = null; + } - $this->chunk = null; + $this->chunk = null; - $this->server->removePlayer($this); - } + $this->server->removePlayer($this); } public function __debugInfo(){ From 91907485b4b229ad33b349f7d8f707c2ffb36569 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 18 Feb 2017 10:42:00 +0000 Subject: [PATCH 22/25] Fixed prismarine bad meta crashes --- src/pocketmine/block/Prismarine.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pocketmine/block/Prismarine.php b/src/pocketmine/block/Prismarine.php index 164655b5aa8..ba8e76c13f0 100644 --- a/src/pocketmine/block/Prismarine.php +++ b/src/pocketmine/block/Prismarine.php @@ -46,7 +46,7 @@ public function getName(){ self::DARK => "Dark Prismarine", self::BRICKS => "Prismarine Bricks", ]; - return $names[$this->meta & 0x0f]; + return $names[$this->meta & 0x03] ?? "Unknown"; } public function getToolType(){ @@ -56,7 +56,7 @@ public function getToolType(){ public function getDrops(Item $item){ if($item->isPickaxe() >= Tool::TIER_WOODEN){ return [ - [$this->id, $this->meta & 0x0f, 1], + [$this->id, $this->meta & 0x03, 1], ]; }else{ return []; From 834dc343b038bc67adef1bd246fa4fcb67d66ed2 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sat, 18 Feb 2017 15:09:44 +0000 Subject: [PATCH 23/25] Updated ItemFrameDropItemPacket for >=1.0.3, fix decode errors Sorry, this DOES NOT FIX creative, blame Mojang. https://bugs.mojang.com/browse/MCPE-20070 --- src/pocketmine/Player.php | 6 +++--- src/pocketmine/network/protocol/ItemFrameDropItemPacket.php | 2 -- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index ef320dd606c..ecee9ce8e44 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -2950,13 +2950,13 @@ public function handleDataPacket(DataPacket $packet){ $tile = $this->level->getTile($this->temporalVector->setComponents($packet->x, $packet->y, $packet->z)); if($tile instanceof ItemFrame){ - if(!$tile->getItem()->equals($packet->item) and !$this->isCreative(true)){ + if($this->isSpectator()){ $tile->spawnTo($this); break; } - if(lcg_value() <= $tile->getItemDropChance() and $packet->item->getId() !== Item::AIR){ - $this->level->dropItem($tile->getBlock(), $packet->item); //Use the packet item to handle creative drops correctly + if(lcg_value() <= $tile->getItemDropChance()){ + $this->level->dropItem($tile->getBlock(), $tile->getItem()); } $tile->setItem(null); $tile->setItemRotation(0); diff --git a/src/pocketmine/network/protocol/ItemFrameDropItemPacket.php b/src/pocketmine/network/protocol/ItemFrameDropItemPacket.php index e5b9fdfaf5c..267d79a27f3 100644 --- a/src/pocketmine/network/protocol/ItemFrameDropItemPacket.php +++ b/src/pocketmine/network/protocol/ItemFrameDropItemPacket.php @@ -30,11 +30,9 @@ class ItemFrameDropItemPacket extends DataPacket{ public $x; public $y; public $z; - public $item; public function decode(){ $this->getBlockCoords($this->x, $this->y, $this->z); - $this->item = $this->getSlot(); } public function encode(){ From 89216c3bd42747b9d92c56ae43694462664ef66a Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 19 Feb 2017 15:53:22 +0000 Subject: [PATCH 24/25] Use parse_ini_file instead of home-grown solution (#366) * Use parse_ini_file instead of home-grown solution * Updated PocketMine-Language submodule --- src/pocketmine/lang/BaseLang.php | 23 +---------------------- src/pocketmine/lang/locale | 2 +- 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/src/pocketmine/lang/BaseLang.php b/src/pocketmine/lang/BaseLang.php index c04fcbf671c..71db6d84b81 100644 --- a/src/pocketmine/lang/BaseLang.php +++ b/src/pocketmine/lang/BaseLang.php @@ -82,28 +82,7 @@ public function getLang(){ protected static function loadLang($path, array &$d){ if(file_exists($path)){ - if(strlen($content = file_get_contents($path)) > 0){ - foreach(explode("\n", $content) as $line){ - $line = trim($line); - if($line === "" or $line{0} === "#"){ - continue; - } - - $t = explode("=", $line, 2); - if(count($t) < 2){ - continue; - } - - $key = trim($t[0]); - $value = trim($t[1]); - - if($value === ""){ - continue; - } - - $d[$key] = $value; - } - } + $d = parse_ini_file($path, false, INI_SCANNER_RAW); return true; }else{ return false; diff --git a/src/pocketmine/lang/locale b/src/pocketmine/lang/locale index 24b5e323c44..3499fe4a6a1 160000 --- a/src/pocketmine/lang/locale +++ b/src/pocketmine/lang/locale @@ -1 +1 @@ -Subproject commit 24b5e323c440144561111d3843a5a59e8e21f973 +Subproject commit 3499fe4a6a1973cc965396f184eb01c52de79aa4 From 20c7e5107798348502a21547d6fe93f5ae8d2dbd Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 19 Feb 2017 17:35:23 +0000 Subject: [PATCH 25/25] Allow 0.01 of a block diff Fixes loss of precision when handling player movements causing some position issues. --- src/pocketmine/Player.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index ecee9ce8e44..c800231b3dc 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -1922,7 +1922,7 @@ public function handleDataPacket(DataPacket $packet){ case ProtocolInfo::MOVE_PLAYER_PACKET: $newPos = new Vector3($packet->x, $packet->y - $this->getEyeHeight(), $packet->z); - if($newPos->distanceSquared($this) < 0.01 and ($packet->yaw % 360) === $this->yaw and ($packet->pitch % 360) === $this->pitch){ //player hasn't moved, just client spamming packets + if($newPos->distanceSquared($this) < 0.0001 and ($packet->yaw % 360) === $this->yaw and ($packet->pitch % 360) === $this->pitch){ //player hasn't moved, just client spamming packets break; }