Giter Site home page Giter Site logo

sergeydertan / sregionprotector-pmmp Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 0.0 152 KB

Flexible protection plugin for PocketMine

License: GNU General Public License v3.0

PHP 100.00%
pocketmine-plugins pocketmine-plugin pocketmine-mp-plugin pocketmine-mp-plugins pocketmine

sregionprotector-pmmp's Introduction

SRegionProtector

SRegionProtector is a plugin that allows players to protect their regions.

Download

  • Soon

Features

  • Chest and form UI with custom page support
  • API for another plugins
  • Lots of flags
  • Flexible settings
  • High performance

Commands and permissions can be found at Wiki.

!Warning! some flags may not work because they are disabled, pls check config.yml first

sregionprotector-pmmp's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

sregionprotector-pmmp's Issues

error after /rggui command execution

Is this plugin usable or is there still work in progress?

Found this error...

09:08:04] [Server thread/CRITICAL]: Error: "Class 'pocketmine\network\mcpe\protocol\BlockEntityDataPacket' not found" (EXCEPTION) in "plugins/SRegionProtector-pmmp.phar/src/sergeydertan/sregionprotector/ui/chest/ChestUIManager" at line 57
[09:08:04] [Server thread/CRITICAL]: #0 plugins/SRegionProtector-pmmp.phar/src/sergeydertan/sregionprotector/ui/chest/ChestUIManager(38): sergeydertan\sregionprotector\ui\chest\ChestUIManager::sendFakeChest(object pocketmine\Player, string[3] jjj)
[09:08:04] [Server thread/CRITICAL]: #1 plugins/SRegionProtector-pmmp.phar/src/sergeydertan/sregionprotector/command/manage/OpenUICommand(72): sergeydertan\sregionprotector\ui\chest\ChestUIManager::open(object pocketmine\Player, object sergeydertan\sregionprotector\region\Region)
[09:08:04] [Server thread/CRITICAL]: #2 plugins/SRegionProtector-pmmp.phar/src/sergeydertan/sregionprotector/command/manage/OpenUICommand(61): sergeydertan\sregionprotector\command\manage\OpenUICommand->openUI(object pocketmine\Player, object sergeydertan\sregionprotector\region\Region)
[09:08:04] [Server thread/CRITICAL]: #3 src/pocketmine/command/SimpleCommandMap(248): sergeydertan\sregionprotector\command\manage\OpenUICommand->execute(object pocketmine\Player, string[5] rggui, array[1])
[09:08:04] [Server thread/CRITICAL]: #4 src/pocketmine/Server(1811): pocketmine\command\SimpleCommandMap->dispatch(object pocketmine\Player, string[9] rggui jjj)
[09:08:04] [Server thread/CRITICAL]: #5 src/pocketmine/Player(2310): pocketmine\Server->dispatchCommand(object pocketmine\Player, string[9] rggui jjj)
[09:08:04] [Server thread/CRITICAL]: #6 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(244): pocketmine\Player->chat(string[10] /rggui jjj)
[09:08:04] [Server thread/CRITICAL]: #7 src/pocketmine/network/mcpe/protocol/CommandRequestPacket(54): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleCommandRequest(object pocketmine\network\mcpe\protocol\CommandRequestPacket)
[09:08:04] [Server thread/CRITICAL]: #8 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(110): pocketmine\network\mcpe\protocol\CommandRequestPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
[09:08:04] [Server thread/CRITICAL]: #9 src/pocketmine/network/mcpe/protocol/BatchPacket(127): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\CommandRequestPacket)
[09:08:04] [Server thread/CRITICAL]: #10 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(110): pocketmine\network\mcpe\protocol\BatchPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
[09:08:04] [Server thread/CRITICAL]: #11 src/pocketmine/Player(3247): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
[09:08:04] [Server thread/CRITICAL]: #12 src/pocketmine/network/mcpe/RakLibInterface(169): pocketmine\Player->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
[09:08:04] [Server thread/CRITICAL]: #13 vendor/pocketmine/raklib/src/server/ServerHandler(99): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string[20] 85.216.222.137 53377, object raklib\protocol\EncapsulatedPacket, integer 0)
[09:08:04] [Server thread/CRITICAL]: #14 src/pocketmine/network/mcpe/RakLibInterface(109): raklib\server\ServerHandler->handlePacket()
[09:08:04] [Server thread/CRITICAL]: #15 src/pocketmine/network/mcpe/RakLibInterface(99): pocketmine\network\mcpe\RakLibInterface->process()
[09:08:04] [Server thread/CRITICAL]: #16 vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe{closure}()
[09:08:04] [Server thread/CRITICAL]: #17 vendor/pocketmine/snooze/src/SleeperHandler(85): pocketmine\snooze\SleeperHandler->processNotifications()
[09:08:04] [Server thread/CRITICAL]: #18 src/pocketmine/Server(2157): pocketmine\snooze\SleeperHandler->sleepUntil(double 1596186484.8159)
[09:08:04] [Server thread/CRITICAL]: #19 src/pocketmine/Server(1994): pocketmine\Server->tickProcessor()
[09:08:04] [Server thread/CRITICAL]: #20 src/pocketmine/Server(1588): pocketmine\Server->start()
[09:08:04] [Server thread/CRITICAL]: #21 src/pocketmine/PocketMine(273): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[28] /home/minecraft-pe-2/server/, string[36] /home/minecraft-pe-2/server/plugins/)
[09:08:04] [Server thread/CRITICAL]: #22 src/pocketmine/PocketMine(304): pocketmine\server()
[09:08:04] [Server thread/CRITICAL]: #23 (11): require(string[83] phar:///home/minecraft-pe-2/server/PocketMine-MP.phar/src/pocketmine/PocketMine.)

/rg copyflags command error

  1. Use /rg copyflags command
  2. Look at the console error:
[21:12:54] [Server thread/CRITICAL]: TypeError: "Argument 1 passed to pocketmine\Server::getLevelByName() must be of the type string, null given, called in phar://C:/Users/crypt/Desktop/Altay-master/plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/region/flags/flag/RegionTeleportFlag.php on line 32" (EXCEPTION) in "src/pocketmine/Server" at line 1029
[21:12:54] [Server thread/DEBUG]: #0 plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/region/flags/flag/RegionTeleportFlag(32): pocketmine\Server->getLevelByName(NULL )
[21:12:54] [Server thread/DEBUG]: #1 plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/region/Region(210): sergeydertan\sregionprotector\region\flags\flag\RegionTeleportFlag->getPosition()
[21:12:54] [Server thread/DEBUG]: #2 plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/command/manage/CopyFlagsCommand(41): sergeydertan\sregionprotector\region\Region->getTeleportFlagPos()
[21:12:54] [Server thread/DEBUG]: #3 plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/command/RegionCommand(38): sergeydertan\sregionprotector\command\manage\CopyFlagsCommand->execute(object pocketmine\Player, string[9] copyflags, array[2])
[21:12:54] [Server thread/DEBUG]: #4 src/pocketmine/command/SimpleCommandMap(270): sergeydertan\sregionprotector\command\RegionCommand->execute(object pocketmine\Player, string[6] region, array[2])
[21:12:54] [Server thread/DEBUG]: #5 src/pocketmine/Server(2019): pocketmine\command\SimpleCommandMap->dispatch(object pocketmine\Player, string[31] region copyflags nethersp endsp)
[21:12:54] [Server thread/DEBUG]: #6 src/pocketmine/Player(2231): pocketmine\Server->dispatchCommand(object pocketmine\Player, string[31] region copyflags nethersp endsp)
[21:12:54] [Server thread/DEBUG]: #7 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(240): pocketmine\Player->chat(string[32] /region copyflags nethersp endsp)
[21:12:54] [Server thread/DEBUG]: #8 src/pocketmine/network/mcpe/protocol/CommandRequestPacket(54): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleCommandRequest(object pocketmine\network\mcpe\protocol\CommandRequestPacket)
[21:12:54] [Server thread/DEBUG]: #9 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(110): pocketmine\network\mcpe\protocol\CommandRequestPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
[21:12:54] [Server thread/DEBUG]: #10 src/pocketmine/network/mcpe/protocol/BatchPacket(123): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\CommandRequestPacket)
[21:12:54] [Server thread/DEBUG]: #11 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(110): pocketmine\network\mcpe\protocol\BatchPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
[21:12:54] [Server thread/DEBUG]: #12 src/pocketmine/Player(3124): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
[21:12:54] [Server thread/DEBUG]: #13 src/pocketmine/network/mcpe/RakLibInterface(169): pocketmine\Player->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
[21:12:54] [Server thread/DEBUG]: #14 vendor/pocketmine/raklib/src/server/ServerHandler(99): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string[20] 46.139.254.142 58183, object raklib\protocol\EncapsulatedPacket, integer 0)
[21:12:54] [Server thread/DEBUG]: #15 src/pocketmine/network/mcpe/RakLibInterface(109): raklib\server\ServerHandler->handlePacket()
[21:12:54] [Server thread/DEBUG]: #16 src/pocketmine/network/mcpe/RakLibInterface(99): pocketmine\network\mcpe\RakLibInterface->process()
[21:12:54] [Server thread/DEBUG]: #17 vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe\{closure}()
[21:12:54] [Server thread/DEBUG]: #18 vendor/pocketmine/snooze/src/SleeperHandler(85): pocketmine\snooze\SleeperHandler->processNotifications()
[21:12:54] [Server thread/DEBUG]: #19 src/pocketmine/Server(2338): pocketmine\snooze\SleeperHandler->sleepUntil(double 1560543174.9514)
[21:12:54] [Server thread/DEBUG]: #20 src/pocketmine/Server(2195): pocketmine\Server->tickProcessor()
[21:12:54] [Server thread/DEBUG]: #21 src/pocketmine/Server(1774): pocketmine\Server->start()
[21:12:54] [Server thread/DEBUG]: #22 src/pocketmine/PocketMine(266): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[36] C:\Users\crypt\Desktop\Altay-master\, string[44] C:\Users\crypt\Desktop\Altay-master\plugins\)
[21:12:54] [Server thread/DEBUG]: #23 (1): require(string[90] phar://C:/Users/crypt/Desktop/Altay-master/Altay_v3.8.3.phar/src/pocketmine/Pock)

/rg create command error

  1. Use /wand and set pos1
  2. Use /region pos2 command
  3. Use /region create command
  4. Look at console error:
[20:23:21] [Server thread/CRITICAL]: TypeError: "Argument 7 passed to sergeydertan\sregionprotector\region\Region::__construct() must be of the type integer, float given, called in phar://C:/Users/crypt/Desktop/Altay-master/plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/region/RegionManager.php on line 99" (EXCEPTION) in "plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/region/Region" at line 86
[20:23:21] [Server thread/DEBUG]: #0 plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/region/RegionManager(99): sergeydertan\sregionprotector\region\Region->__construct(string[5] spawn, string[7] Crypthu, string[4] piac, integer 158, integer 67, integer 104, double 250.8132, double 109.0844, double 193.7273)
[20:23:21] [Server thread/DEBUG]: #1 plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/command/creation/CreateRegionCommand(85): sergeydertan\sregionprotector\region\RegionManager->createRegion(string[5] spawn, string[7] Crypthu, object pocketmine\level\Position, object pocketmine\level\Position, object pocketmine\level\Level)
[20:23:21] [Server thread/DEBUG]: #2 plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/command/RegionCommand(38): sergeydertan\sregionprotector\command\creation\CreateRegionCommand->execute(object pocketmine\Player, string[6] create, array[0])
[20:23:21] [Server thread/DEBUG]: #3 src/pocketmine/command/SimpleCommandMap(270): sergeydertan\sregionprotector\command\RegionCommand->execute(object pocketmine\Player, string[6] region, array[1])
[20:23:21] [Server thread/DEBUG]: #4 src/pocketmine/Server(2019): pocketmine\command\SimpleCommandMap->dispatch(object pocketmine\Player, string[19] region create spawn)
[20:23:21] [Server thread/DEBUG]: #5 src/pocketmine/Player(2231): pocketmine\Server->dispatchCommand(object pocketmine\Player, string[19] region create spawn)
[20:23:21] [Server thread/DEBUG]: #6 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(240): pocketmine\Player->chat(string[20] /region create spawn)
[20:23:21] [Server thread/DEBUG]: #7 src/pocketmine/network/mcpe/protocol/CommandRequestPacket(54): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleCommandRequest(object pocketmine\network\mcpe\protocol\CommandRequestPacket)
[20:23:21] [Server thread/DEBUG]: #8 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(110): pocketmine\network\mcpe\protocol\CommandRequestPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
[20:23:21] [Server thread/DEBUG]: #9 src/pocketmine/network/mcpe/protocol/BatchPacket(123): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\CommandRequestPacket)
[20:23:21] [Server thread/DEBUG]: #10 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(110): pocketmine\network\mcpe\protocol\BatchPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter)
[20:23:21] [Server thread/DEBUG]: #11 src/pocketmine/Player(3124): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
[20:23:21] [Server thread/DEBUG]: #12 src/pocketmine/network/mcpe/RakLibInterface(169): pocketmine\Player->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket)
[20:23:21] [Server thread/DEBUG]: #13 vendor/pocketmine/raklib/src/server/ServerHandler(99): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string[20] 46.139.254.142 58183, object raklib\protocol\EncapsulatedPacket, integer 0)
[20:23:21] [Server thread/DEBUG]: #14 src/pocketmine/network/mcpe/RakLibInterface(109): raklib\server\ServerHandler->handlePacket()
[20:23:21] [Server thread/DEBUG]: #15 src/pocketmine/network/mcpe/RakLibInterface(99): pocketmine\network\mcpe\RakLibInterface->process()
[20:23:21] [Server thread/DEBUG]: #16 vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe\{closure}()
[20:23:21] [Server thread/DEBUG]: #17 vendor/pocketmine/snooze/src/SleeperHandler(85): pocketmine\snooze\SleeperHandler->processNotifications()
[20:23:21] [Server thread/DEBUG]: #18 src/pocketmine/Server(2338): pocketmine\snooze\SleeperHandler->sleepUntil(double 1560540201.1543)
[20:23:21] [Server thread/DEBUG]: #19 src/pocketmine/Server(2195): pocketmine\Server->tickProcessor()
[20:23:21] [Server thread/DEBUG]: #20 src/pocketmine/Server(1774): pocketmine\Server->start()
[20:23:21] [Server thread/DEBUG]: #21 src/pocketmine/PocketMine(266): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[36] C:\Users\crypt\Desktop\Altay-master\, string[44] C:\Users\crypt\Desktop\Altay-master\plugins\)
[20:23:21] [Server thread/DEBUG]: #22 (1): require(string[90] phar://C:/Users/crypt/Desktop/Altay-master/Altay_v3.8.3.phar/src/pocketmine/Pock)

Server crash

PocketMine-MP Crash Dump Fri Jun 14 23:11:09 BST 2019

Error: Call to a member function getName() on null
File: plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/event/RegionEventsHandler
Line: 109
Type: Error

THIS CRASH WAS CAUSED BY A PLUGIN
BAD PLUGIN: SRegionProtector v1.0

Code:
[100]             }
[101]         }
[102]         $this->handleEvent(RegionFlags::FLAG_BREAK, $e->getBlock(), $e, $e->getPlayer());
[103]     }
[104] 
[105]     private function handleEvent(int $flag, Position $pos, Event $event, Player $player = null, bool $mustBeMember = true, bool $checkPerm = true): void
[106]     {
[107]         if (!$this->flagStatus[$flag]) return;
[108]         if ($checkPerm && ($player !== null && $player->hasPermission("sregionprotector.admin"))) return;
[109]         $chunk = $this->chunkManager->getChunk((int)$pos->x, (int)$pos->z, $pos->level->getName(), true, false);
[110]         if ($chunk === null) return;
[111] 
[112]         foreach ($chunk->getRegions() as $region) {
[113]             if (!$region->isVectorInside($pos) || ($player !== null && $mustBeMember && $region->isLivesIn($player->getName()))) {
[114]                 continue;
[115]             }
[116]             if (!$region->getFlagState($flag)) {
[117]                 if ($this->prioritySystem) {
[118]                     break;
[119]                 } else {

Backtrace:
#0 plugins/SRegionProtector-pmmp_dev-10.phar/src/sergeydertan/sregionprotector/event/RegionEventsHandler(381): sergeydertan\sregionprotector\event\RegionEventsHandler->handleEvent(integer 12, object pocketmine\level\Location, object pocketmine\event\player\PlayerMoveEvent, object pocketmine\Player)
#1 src/pocketmine/plugin/MethodEventExecutor(38): sergeydertan\sregionprotector\event\RegionEventsHandler->playerMove(object pocketmine\event\player\PlayerMoveEvent)
#2 src/pocketmine/plugin/RegisteredListener(98): pocketmine\plugin\MethodEventExecutor->execute(object sergeydertan\sregionprotector\event\RegionEventsHandler, object pocketmine\event\player\PlayerMoveEvent)
#3 src/pocketmine/event/Event(99): pocketmine\plugin\RegisteredListener->callEvent(object pocketmine\event\player\PlayerMoveEvent)
#4 src/pocketmine/Player(1650): pocketmine\event\Event->call()
#5 src/pocketmine/Player(1755): pocketmine\Player->processMovement(integer 1)
#6 src/pocketmine/level/Level(848): pocketmine\Player->onUpdate(integer 10675)
#7 src/pocketmine/level/Level(786): pocketmine\level\Level->actuallyDoTick(integer 10675)
#8 src/pocketmine/Server(2435): pocketmine\level\Level->doTick(integer 10675)
#9 src/pocketmine/Server(2566): pocketmine\Server->checkTickUpdates(integer 10675, double 1560550269.1826)
#10 src/pocketmine/Server(2335): pocketmine\Server->tick()
#11 src/pocketmine/Server(2195): pocketmine\Server->tickProcessor()
#12 src/pocketmine/Server(1774): pocketmine\Server->start()
#13 src/pocketmine/PocketMine(266): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[36] C:\Users\crypt\Desktop\Altay-master\, string[44] C:\Users\crypt\Desktop\Altay-master\plugins\)
#14 (1): require(string[90] phar://C:/Users/crypt/Desktop/Altay-master/Altay_v3.8.3.phar/src/pocketmine/Pock)

Idea

Adding a feature that covers the whole world.

for example:

Worlds:

  world:

    # Keep players from getting hurt?
    Invincible: true

    # Keep players from editing the world?
    Break: false

    # Keep players from touching blocks?
    Place: false

  world2:

    # Keep players from getting hurt?
    Invincible: true

    # Keep players from editing the world?
    Break: false

    # Keep players from touching blocks?
    Place: false

Урон в привате, хотя он отключен

Когда стреляешь с лука зачаренным на огонь в привате с выключенным пвп все равно проходит урон по игрокам. Прошу исправить, пожалуйста :)

new api 4.0.0

Add supported please api 4.0.0
Could not load plugin '/home/pmmp/plugins/SRegionProtector-pmmp_dev-31.phar': Invalid plugin manifest: Invalid Plugin "permissions": Nested permission declarations are no longer supported. Declare each permission separately.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.