From 876451f91d1a263f0f041b2ba1ba482ba71bae91 Mon Sep 17 00:00:00 2001 From: HashimTheArab Date: Thu, 13 Nov 2025 18:05:37 +0300 Subject: [PATCH 1/2] feat: fully working command system with autocompletion (excludes entity targets) --- cmd/plugins/plugins.yaml | 7 +- examples/plugins/php/composer.json | 3 +- examples/plugins/php/lib/Commands/Command.php | 314 +++ .../php/lib/Commands/CommandSender.php | 10 + .../plugins/php/lib/Commands/Optional.php | 29 + examples/plugins/php/lib/Commands/Varargs.php | 15 + examples/plugins/php/lib/PluginBase.php | 128 +- .../plugins/php/lib/Util/EnumResolver.php | 78 + examples/plugins/php/src/EffectCommand.php | 59 + examples/plugins/php/src/HelloPlugin.php | 3 + examples/plugins/typescript/src/index.ts | 6 +- go.mod | 4 +- plugin/adapters/plugin/commands.go | 70 +- plugin/adapters/plugin/player_events.go | 13 +- proto/generated/command.pb.go | 460 +++++ proto/generated/cpp/command.grpc.pb.cc | 29 + proto/generated/cpp/command.grpc.pb.h | 37 + proto/generated/cpp/command.pb.cc | 1565 ++++++++++++++ proto/generated/cpp/command.pb.h | 1806 +++++++++++++++++ proto/generated/cpp/player_events.pb.cc | 554 +---- proto/generated/cpp/player_events.pb.h | 612 +----- proto/generated/cpp/plugin.pb.cc | 678 ++----- proto/generated/cpp/plugin.pb.h | 457 +---- .../generated/php/Df/Plugin/CommandEvent.php | 6 +- proto/generated/php/Df/Plugin/CommandSpec.php | 33 +- .../php/Df/Plugin/GPBMetadata/Command.php | 25 + .../Df/Plugin/GPBMetadata/PlayerEvents.php | 2 +- .../php/Df/Plugin/GPBMetadata/Plugin.php | 3 +- proto/generated/php/Df/Plugin/ParamSpec.php | 187 ++ proto/generated/php/Df/Plugin/ParamType.php | 71 + proto/generated/player_events.pb.go | 300 +-- proto/generated/plugin.pb.go | 911 ++++----- proto/generated/python/command_pb2.py | 43 + proto/generated/python/command_pb2_grpc.py | 4 + proto/generated/python/player_events_pb2.py | 8 +- proto/generated/python/plugin_pb2.py | 45 +- proto/generated/rust/df.plugin.rs | 115 +- proto/generated/ts/command.js | 393 ++++ proto/generated/ts/command.ts | 481 +++++ proto/generated/ts/player_events.js | 113 -- proto/generated/ts/player_events.ts | 135 -- proto/generated/ts/plugin.js | 86 +- proto/generated/ts/plugin.ts | 100 +- proto/types/command.proto | 45 + proto/types/player_events.proto | 8 - proto/types/plugin.proto | 7 +- 46 files changed, 6706 insertions(+), 3352 deletions(-) create mode 100644 examples/plugins/php/lib/Commands/Command.php create mode 100644 examples/plugins/php/lib/Commands/CommandSender.php create mode 100644 examples/plugins/php/lib/Commands/Optional.php create mode 100644 examples/plugins/php/lib/Commands/Varargs.php create mode 100644 examples/plugins/php/lib/Util/EnumResolver.php create mode 100644 examples/plugins/php/src/EffectCommand.php create mode 100644 proto/generated/command.pb.go create mode 100644 proto/generated/cpp/command.grpc.pb.cc create mode 100644 proto/generated/cpp/command.grpc.pb.h create mode 100644 proto/generated/cpp/command.pb.cc create mode 100644 proto/generated/cpp/command.pb.h create mode 100644 proto/generated/php/Df/Plugin/GPBMetadata/Command.php create mode 100644 proto/generated/php/Df/Plugin/ParamSpec.php create mode 100644 proto/generated/php/Df/Plugin/ParamType.php create mode 100644 proto/generated/python/command_pb2.py create mode 100644 proto/generated/python/command_pb2_grpc.py create mode 100644 proto/generated/ts/command.js create mode 100644 proto/generated/ts/command.ts create mode 100644 proto/types/command.proto diff --git a/cmd/plugins/plugins.yaml b/cmd/plugins/plugins.yaml index 1ae418c..a8b88e3 100644 --- a/cmd/plugins/plugins.yaml +++ b/cmd/plugins/plugins.yaml @@ -21,8 +21,11 @@ plugins: # NODE_ENV: development - id: example-typescript name: Example TypeScript Plugin - command: "node" - args: ["../examples/plugins/typescript/dist/index.js"] + #command: "node" + #args: ["../examples/plugins/typescript/dist/index.js"] + command: "npm" + args: ["run", "dev"] + work_dir: "../examples/plugins/typescript" env: NODE_ENV: production - id: example-php diff --git a/examples/plugins/php/composer.json b/examples/plugins/php/composer.json index f8ad4e5..0645e08 100644 --- a/examples/plugins/php/composer.json +++ b/examples/plugins/php/composer.json @@ -13,7 +13,8 @@ "autoload": { "psr-4": { "Df\\": "../../../proto/generated/php/Df/", - "Dragonfly\\PluginLib\\": "lib/" + "Dragonfly\\PluginLib\\": "lib/", + "ExamplePhp\\": "src/" } }, "config": { diff --git a/examples/plugins/php/lib/Commands/Command.php b/examples/plugins/php/lib/Commands/Command.php new file mode 100644 index 0000000..adda20c --- /dev/null +++ b/examples/plugins/php/lib/Commands/Command.php @@ -0,0 +1,314 @@ + *\/ + * public Optional $y; + * public float $z; + * public function execute(CommandSender $sender, EventContext $ctx): void { ... } + * } + */ +abstract class Command { + // Metadata + protected string $name = ''; + protected string $description = ''; + /** @var string[] */ + protected array $aliases = []; + + abstract public function execute(CommandSender $sender, EventContext $ctx): void; + + public function getName(): string { + return $this->name; + } + + public function getDescription(): string { + return $this->description; + } + + /** + * @return string[] + */ + public function getAliases(): array { + return $this->aliases; + } + + /** + * Parse command arguments. Returns true on success, false on usage error. + * + * @param string[] $rawArgs + */ + public function parseArgs(array $rawArgs): bool { + try { + $this->validateSignature(); + } catch (\Throwable) { + return false; + } + $schema = $this->inspectParameters(); + $ref = new ReflectionClass($this); + $props = $this->getCommandProperties($ref); + $propMap = []; + foreach ($props as $p) { + $p->setAccessible(true); + $propMap[$p->getName()] = $p; + } + + $argIndex = 0; + $argCount = count($rawArgs); + $paramCount = count($schema); + + foreach ($schema as $idx => $param) { + $name = $param['name']; + $type = $param['type']; // int|float|bool|string|varargs + $optional = !empty($param['optional']); + + $prop = $propMap[$name] ?? null; + if (!$prop) { + return false; + } + + if ($type === 'varargs') { + if ($idx !== $paramCount - 1) { + return false; + } + $remaining = array_slice($rawArgs, $argIndex); + $prop->setValue($this, new Varargs(implode(' ', $remaining))); + return true; + } + + if ($argIndex >= $argCount) { + if ($optional) { + if ($this->getTypeName($prop->getType()) === Optional::class) { + $prop->setValue($this, new Optional()); + continue; + } + return false; + } + return false; + } + + $parsed = $this->parseTypedValue($rawArgs[$argIndex], $type); + if ($parsed === null && $type !== 'string') { + return false; + } + + if ($this->getTypeName($prop->getType()) === Optional::class) { + $opt = new Optional(); + $opt->set($parsed); + $prop->setValue($this, $opt); + } else { + $prop->setValue($this, $parsed); + } + $argIndex++; + } + if ($argIndex < $argCount) { + return false; + } + return true; + } + + /** + * Validate parameter ordering rules: + * - Optional parameters may only appear at the end (can be multiple). + * - Varargs must be the final parameter. + */ + public function validateSignature(): void { + $ref = new ReflectionClass($this); + $props = $this->getCommandProperties($ref); + + $seenOptional = false; + foreach ($props as $index => $prop) { + $typeName = $this->getTypeName($prop->getType()); + if ($typeName === Varargs::class) { + if ($index !== count($props) - 1) { + throw new RuntimeException('Varargs must be the last parameter.'); + } + continue; + } + if ($seenOptional && $typeName !== Optional::class) { + throw new RuntimeException('Optional parameters must be at the end.'); + } + if ($typeName === Optional::class) { + $seenOptional = true; + } + } + } + + /** + * Generate a human-friendly usage string. + */ + public function generateUsage(): string { + $parts = ['/' . $this->name]; + foreach ($this->inspectParameters() as $p) { + $name = $p['name']; + $type = $p['type']; + $optional = !empty($p['optional']); + if ($type === 'varargs') { + $parts[] = '<' . $name . '...>'; + } elseif ($optional) { + $parts[] = '[' . $name . ']'; + } else { + $parts[] = '<' . $name . '>'; + } + } + return implode(' ', $parts); + } + + /** + * Export parameter specification for transport to the host (Go) side. + * Format: list of ['name' => string, 'type' => string, 'optional' => bool] + * Types: int|float|bool|string|varargs + * + * @return array + */ + public function serializeParamSpec(): array { + return $this->inspectParameters(); + } + + /** + * @return ReflectionProperty[] + */ + private function getCommandProperties(ReflectionClass $ref): array { + $props = $ref->getProperties(ReflectionProperty::IS_PUBLIC); + $filtered = []; + foreach ($props as $p) { + $n = $p->getName(); + if ($n === 'name' || $n === 'description' || $n === 'aliases') { + continue; + } + $filtered[] = $p; + } + return $filtered; + } + + private function getTypeName(?ReflectionType $type): ?string { + if ($type instanceof ReflectionNamedType) { + return $type->getName(); + } + return null; + } + + private function parseTypedValue(string $arg, ?string $typeName): mixed { + return match ($typeName) { + 'int' => filter_var($arg, FILTER_VALIDATE_INT), + 'float' => filter_var($arg, FILTER_VALIDATE_FLOAT), + 'bool' => $this->parseBool($arg), + null, 'string' => $arg, + default => null, + }; + } + + private function parseBool(string $arg): ?bool { + $v = strtolower($arg); + return match ($v) { + 'true', '1', 'yes', 'on' => true, + 'false', '0', 'no', 'off' => false, + default => null, + }; + } + + /** + * Build a normalized parameter schema from the command's public properties. + * @return array + */ + private function inspectParameters(): array { + $ref = new ReflectionClass($this); + $props = $this->getCommandProperties($ref); + $out = []; + foreach ($props as $prop) { + $name = $prop->getName(); + $typeName = $this->getTypeName($prop->getType()); + if ($typeName === Varargs::class) { + $out[] = ['name' => $name, 'type' => 'varargs']; + break; + } + if ($typeName === Optional::class) { + $t = $this->getOptionalWrappedType($prop); + $out[] = ['name' => $name, 'type' => $t, 'optional' => true]; + continue; + } + $mapped = match ($typeName) { + 'int' => 'int', + 'float', 'double' => 'float', + 'bool' => 'bool', + default => 'string', + }; + $out[] = ['name' => $name, 'type' => $mapped]; + } + return $out; + } + + /** + * Convenience: attach enum values to a parameter in a schema. + * + * @param array}> $schema + * @param string $paramName + * @param string[] $values + * @return array + */ + protected function withEnum(array $schema, string $paramName, array $values): array { + foreach ($schema as &$p) { + if ($p['name'] === $paramName) { + $p['enum_values'] = array_values($values); + $p['type'] = 'enum'; + break; + } + } + return $schema; + } + + /** + * Convenience: enum names from a class' constants, with optional excludes. + * + * @param string $class Fully-qualified class name + * @param string[] $excludeNames + * @return string[] + */ + protected function enumNamesFromClass(string $class, array $excludeNames = []): array { + $names = array_keys((new \ReflectionClass($class))->getConstants()); + if (!empty($excludeNames)) { + $names = array_values(array_filter($names, fn ($n) => !in_array($n, $excludeNames, true))); + } + return $names; + } + + /** + * Attempt to infer the wrapped type for Optional from @var docblock. + */ + private function getOptionalWrappedType(ReflectionProperty $prop): string { + $doc = $prop->getDocComment() ?: ''; + if (preg_match('/@var\s+Optional<\s*([A-Za-z_][A-Za-z0-9_]*)\s*>/i', $doc, $m)) { + $t = strtolower($m[1]); + return match ($t) { + 'int' => 'int', + 'float', 'double' => 'float', + 'bool', 'boolean' => 'bool', + 'string' => 'string', + default => 'string', + }; + } + // Default to string if not annotated. + return 'string'; + } +} diff --git a/examples/plugins/php/lib/Commands/CommandSender.php b/examples/plugins/php/lib/Commands/CommandSender.php new file mode 100644 index 0000000..313b172 --- /dev/null +++ b/examples/plugins/php/lib/Commands/CommandSender.php @@ -0,0 +1,10 @@ +value = $value; + $this->present = true; + } + + public function isPresent(): bool { + return $this->present; + } + + public function get(): mixed { + return $this->value; + } + + public function getOr(mixed $default): mixed { + return $this->present ? $this->value : $default; + } +} diff --git a/examples/plugins/php/lib/Commands/Varargs.php b/examples/plugins/php/lib/Commands/Varargs.php new file mode 100644 index 0000000..20fca50 --- /dev/null +++ b/examples/plugins/php/lib/Commands/Varargs.php @@ -0,0 +1,15 @@ +value; + } +} diff --git a/examples/plugins/php/lib/PluginBase.php b/examples/plugins/php/lib/PluginBase.php index c71b5c2..17fd346 100644 --- a/examples/plugins/php/lib/PluginBase.php +++ b/examples/plugins/php/lib/PluginBase.php @@ -10,6 +10,10 @@ use Df\Plugin\PluginHello; use Df\Plugin\PluginToHost; use Df\Plugin\CustomItemDefinition; +use Df\Plugin\ParamSpec as PbParamSpec; +use Df\Plugin\ParamType as PbParamType; +use Dragonfly\PluginLib\Commands\Command; +use Dragonfly\PluginLib\Commands\CommandSender; use Dragonfly\PluginLib\Events\EventContext; use Dragonfly\PluginLib\Events\Listener; use Grpc\ChannelCredentials; @@ -41,12 +45,16 @@ abstract class PluginBase { private bool $running = false; - /** @var array */ + /** @var array */ private array $commandSpecs = []; /** @var CustomItemDefinition[] */ private array $customItems = []; + /** @var array name/alias => command instance */ + private array $commandInstances = []; + private bool $commandHandlerRegistered = false; + public function __construct(?string $pluginId = null, ?string $serverAddress = null) { $this->pluginId = $pluginId ?? (getenv('DF_PLUGIN_ID') ?: 'php-plugin'); $address = $serverAddress ?? (getenv('DF_PLUGIN_SERVER_ADDRESS') ?: $this->getDefaultAddress()); @@ -122,6 +130,36 @@ public function registerCommand(string $name, string $description): void { $this->commandSpecs[] = ['name' => $name, 'description' => $description]; } + /** + * Register a Command class. Automatically wires command event handling and + * includes aliases in the handshake. + */ + public function registerCommandClass(Command $cmd): void { + $name = $cmd->getName(); + if ($name === '') { + throw new \InvalidArgumentException('Command name must not be empty.'); + } + // Store instance by name and aliases for quick lookup. + $this->commandInstances[$name] = $cmd; + foreach ($cmd->getAliases() as $alias) { + if ($alias !== '' && !isset($this->commandInstances[$alias])) { + $this->commandInstances[$alias] = $cmd; + } + } + // Queue spec for handshake (with aliases). + $spec = [ + 'name' => $name, + 'description' => $cmd->getDescription(), + ]; + $aliases = $cmd->getAliases(); + if (!empty($aliases)) { + $spec['aliases'] = array_values(array_unique($aliases)); + } + $this->commandSpecs[] = $spec; + // Ensure we are subscribed to command events. + $this->ensureCommandHandler(); + } + /** * Queue a custom item definition to be sent in PluginHello. */ @@ -279,6 +317,39 @@ public function run(): void { $c = new CommandSpec(); $c->setName($spec['name']); $c->setDescription($spec['description']); + if (isset($spec['aliases']) && is_array($spec['aliases']) && !empty($spec['aliases'])) { + $c->setAliases($spec['aliases']); + } + // If protobuf has params field, populate it from the registered command class. + if (method_exists($c, 'setParams') && isset($this->commandInstances[$spec['name']])) { + $cmd = $this->commandInstances[$spec['name']]; + $schema = $cmd->serializeParamSpec(); + $pbParams = []; + foreach ($schema as $p) { + $pp = new PbParamSpec(); + $pp->setName($p['name']); + // Map string type to enum. + $type = $p['type'] ?? 'string'; + $pp->setType(match ($type) { + 'int' => PbParamType::PARAM_INT, + 'float' => PbParamType::PARAM_FLOAT, + 'bool' => PbParamType::PARAM_BOOL, + 'enum' => PbParamType::PARAM_ENUM, + 'varargs' => PbParamType::PARAM_VARARGS, + default => PbParamType::PARAM_STRING, + }); + if (!empty($p['optional'])) { + $pp->setOptional(true); + } + if (!empty($p['enum_values']) && method_exists($pp, 'setEnumValues')) { + $pp->setEnumValues($p['enum_values']); + } + $pbParams[] = $pp; + } + if (!empty($pbParams)) { + $c->setParams($pbParams); + } + } $cmds[] = $c; } $pluginHello->setCommands($cmds); @@ -355,6 +426,61 @@ public function run(): void { } } + /** + * Ensure a command event handler is registered once to parse and execute + * registered Command classes. + */ + private function ensureCommandHandler(): void { + if ($this->commandHandlerRegistered) { + return; + } + $this->commandHandlerRegistered = true; + $this->addEventHandler(EventType::COMMAND, function (string $eventId, EventEnvelope $event): void { + $cmdEvt = $event->getCommand(); + if ($cmdEvt === null) { + return; + } + $commandName = $cmdEvt->getCommand(); + if ($commandName === '' || !isset($this->commandInstances[$commandName])) { + return; + } + // Work with a fresh instance per execution. + $template = $this->commandInstances[$commandName]; + $cmd = clone $template; + + $senderUuid = $cmdEvt->getPlayerUuid(); + $senderName = $cmdEvt->getName(); + $sender = new CommandSender($senderUuid, $senderName); + $ctx = new EventContext($this->pluginId, $eventId, $this->sender, $event->getExpectsResponse()); + + try { + $argsField = $cmdEvt->getArgs(); + // Convert protobuf RepeatedField to a native array. + if (is_array($argsField)) { + $args = $argsField; + } elseif ($argsField instanceof \Traversable) { + $args = iterator_to_array($argsField); + } else { + $args = []; + } + if (!$cmd->parseArgs($args)) { + $usage = method_exists($cmd, 'generateUsage') ? $cmd->generateUsage() : ('/' . $commandName); + $ctx->chatToUuid($senderUuid, "§cUsage: " . $usage); + $ctx->cancel(); + return; + } + $cmd->execute($sender, $ctx); + // Ensure base command execution is suppressed server-side. + $ctx->cancel(); + } catch (\Throwable $e) { + $ctx->chatToUuid($senderUuid, "§cCommand error: " . $e->getMessage()); + // Suppress base command execution even on error to avoid duplicate messages. + $ctx->cancel(); + } finally { + $ctx->ackIfUnhandled(); + } + }); + } } diff --git a/examples/plugins/php/lib/Util/EnumResolver.php b/examples/plugins/php/lib/Util/EnumResolver.php new file mode 100644 index 0000000..eb81d08 --- /dev/null +++ b/examples/plugins/php/lib/Util/EnumResolver.php @@ -0,0 +1,78 @@ + !isset($exclude[$n]))); + } + return $names; + } + + /** + * Lowercase variant of name(). + */ + public static function lowerName(string $enumClass, int $value): string { + return strtolower(self::name($enumClass, $value)); + } + + /** + * Lowercase variant of names(). + * + * @param string[] $excludeNames + * @return string[] + */ + public static function lowerNames(string $enumClass, array $excludeNames = []): array { + return array_map('strtolower', self::names($enumClass, $excludeNames)); + } + + /** + * Cache and return enum constants for a given class. + * + * @return array + */ + private static function constants(string $enumClass): array { + static $cache = []; + if (isset($cache[$enumClass])) { + return $cache[$enumClass]; + } + $cache[$enumClass] = (new ReflectionClass($enumClass))->getConstants(); + return $cache[$enumClass]; + } +} diff --git a/examples/plugins/php/src/EffectCommand.php b/examples/plugins/php/src/EffectCommand.php new file mode 100644 index 0000000..38c2412 --- /dev/null +++ b/examples/plugins/php/src/EffectCommand.php @@ -0,0 +1,59 @@ + */ + public Optional $level; + /** @var Optional */ + public Optional $durationSeconds; + /** @var Optional */ + public Optional $showParticles; + + public function execute(CommandSender $sender, EventContext $ctx): void { + $effectId = $this->resolveEffectId($this->effect); + if ($effectId === null) { + $ctx->chatToUuid($sender->uuid, "§cUnknown effect: {$this->effect}"); + return; + } + + $level = max(1, (int)$this->level->getOr(1)); + $seconds = max(0, (int)$this->durationSeconds->getOr(30)); + $show = $this->showParticles->getOr(true); + $durationMs = $seconds * 1000; + + $ctx->addEffectUuid($sender->uuid, $effectId, $level, $durationMs, $show); + $ctx->chatToUuid($sender->uuid, "Applied effect " . $this->enumName($effectId) . " (id {$effectId}) level {$level} for {$seconds}s" . ($show ? '' : ' (hidden)')); + } + + /** + * Provide enum values for the 'effect' parameter so the client shows suggestions. + * + * @return array}> + */ + public function serializeParamSpec(): array { + $names = EnumResolver::lowerNames(EffectType::class, ['EFFECT_UNKNOWN']); + return $this->withEnum(parent::serializeParamSpec(), 'effect', $names); + } + + private function resolveEffectId(string $input): ?int { + return EnumResolver::value(EffectType::class, $input); + } + + private function enumName(int $value): string { + return EnumResolver::lowerName(EffectType::class, $value); + } +} + + diff --git a/examples/plugins/php/src/HelloPlugin.php b/examples/plugins/php/src/HelloPlugin.php index 1e82202..0bc4bb4 100644 --- a/examples/plugins/php/src/HelloPlugin.php +++ b/examples/plugins/php/src/HelloPlugin.php @@ -1,4 +1,5 @@ registerCommandClass(new EffectCommand()); $this->registerCommand('/cheers', 'Send a toast from PHP'); $this->registerCommand('/pokemon', 'Give a Pokemon item'); // Register custom items diff --git a/examples/plugins/typescript/src/index.ts b/examples/plugins/typescript/src/index.ts index d9997f8..7104de0 100644 --- a/examples/plugins/typescript/src/index.ts +++ b/examples/plugins/typescript/src/index.ts @@ -377,9 +377,9 @@ const helloMessage: PluginToHost = { version: '0.1.0', apiVersion: API_VERSION, commands: [ - { name: '/greet', description: 'Send a greeting from the TypeScript plugin', aliases: [] }, - { name: '/tp', description: 'Teleport to spawn', aliases: [] }, - { name: '/gamemode', description: 'Change game mode (survival, creative, adventure, spectator)', aliases: ['gm'] }, + { name: '/greet', description: 'Send a greeting from the TypeScript plugin', aliases: [], params: [] }, + { name: '/tp', description: 'Teleport to spawn', aliases: [], params: [] }, + { name: '/gamemode', description: 'Change game mode (survival, creative, adventure, spectator)', aliases: ['gm'], params: [] }, ], customItems: [], }, diff --git a/go.mod b/go.mod index c8e592f..752b89c 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,8 @@ module github.com/secmc/plugin go 1.25.0 +replace github.com/df-mc/dragonfly => ./dragonfly + require ( github.com/df-mc/dragonfly v0.10.10-0.20251030151444-930c985297ef github.com/didntpot/pregdk v0.0.0-20251104095621-63cf2e4d7716 @@ -35,4 +37,4 @@ require ( golang.org/x/text v0.27.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect -) +) \ No newline at end of file diff --git a/plugin/adapters/plugin/commands.go b/plugin/adapters/plugin/commands.go index 87cc7db..08db39c 100644 --- a/plugin/adapters/plugin/commands.go +++ b/plugin/adapters/plugin/commands.go @@ -33,7 +33,13 @@ func (m *Manager) registerCommands(p *pluginProcess, specs []*pb.CommandSpec) { } m.mu.Unlock() - cmd.Register(cmd.New(name, spec.Description, aliases, pluginCommand{mgr: m, pluginID: p.id, name: name})) + pc := pluginCommand{ + mgr: m, + pluginID: p.id, + name: name, + params: buildParamInfo(spec), + } + cmd.Register(cmd.New(name, spec.Description, aliases, pc)) } } @@ -41,6 +47,10 @@ type pluginCommand struct { mgr *Manager pluginID string name string + params []cmd.ParamInfo + // Args swallows all provided arguments so Dragonfly's parser doesn't reject the command + // for having leftover args. Actual parsing/dispatch is handled elsewhere via events. + Args cmd.Varargs } func (c pluginCommand) Run(src cmd.Source, output *cmd.Output, tx *world.Tx) { @@ -51,3 +61,61 @@ func (c pluginCommand) Run(src cmd.Source, output *cmd.Output, tx *world.Tx) { } // No-op: PlayerHandler.HandleCommandExecution emits command events } + +// DescribeParams exposes parameter info to Dragonfly so the client can render usage and enums. +func (c pluginCommand) DescribeParams(src cmd.Source) []cmd.ParamInfo { + return c.params +} + +type staticEnum struct { + typeName string + options []string +} + +func (e staticEnum) Type() string { return e.typeName } +func (e staticEnum) Options(cmd.Source) []string { return e.options } + +func buildParamInfo(spec *pb.CommandSpec) []cmd.ParamInfo { + if spec == nil || len(spec.Params) == 0 { + return nil + } + params := make([]cmd.ParamInfo, 0, len(spec.Params)) + for _, p := range spec.Params { + if p == nil { + continue + } + var value any + switch p.Type { + case pb.ParamType_PARAM_INT: + value = int(0) + case pb.ParamType_PARAM_FLOAT: + value = float64(0) + case pb.ParamType_PARAM_BOOL: + value = false + case pb.ParamType_PARAM_VARARGS: + value = cmd.Varargs("") + case pb.ParamType_PARAM_ENUM: + // Prefer explicit enum values provided by the plugin. + if len(p.EnumValues) > 0 { + value = staticEnum{typeName: "Enum:" + p.Name, options: p.EnumValues} + } else { + // No values provided; fall back to plain string. + value = "" + } + default: // PARAM_STRING and fallback + // If enum values provided for a string param, treat as enum. + if len(p.EnumValues) > 0 { + value = staticEnum{typeName: "Enum:" + p.Name, options: p.EnumValues} + } else { + value = "" + } + } + params = append(params, cmd.ParamInfo{ + Name: p.Name, + Value: value, + Optional: p.Optional, + Suffix: p.Suffix, + }) + } + return params +} diff --git a/plugin/adapters/plugin/player_events.go b/plugin/adapters/plugin/player_events.go index 8180baa..42139ce 100644 --- a/plugin/adapters/plugin/player_events.go +++ b/plugin/adapters/plugin/player_events.go @@ -70,9 +70,11 @@ func (m *Manager) EmitCommand(ctx *player.Context, p *player.Player, cmdName str if p == nil { return } + // Normalize arguments: trim spaces and drop empties to avoid usage errors on trailing/multiple spaces. + norm := normalizeArgs(args) raw := "/" + cmdName - if len(args) > 0 { - raw += " " + strings.Join(args, " ") + if len(norm) > 0 { + raw += " " + strings.Join(norm, " ") } m.emitCancellable(ctx, &pb.EventEnvelope{ Type: pb.EventType_COMMAND, @@ -82,12 +84,17 @@ func (m *Manager) EmitCommand(ctx *player.Context, p *player.Player, cmdName str Name: p.Name(), Raw: raw, Command: cmdName, - Args: args, + Args: norm, }, }, }) } +// normalizeArgs trims each argument and removes empty entries. +func normalizeArgs(args []string) []string { + return strings.Fields(strings.Join(args, " ")) +} + func (m *Manager) EmitBlockBreak(ctx *player.Context, p *player.Player, pos cube.Pos, drops *[]item.Stack, xp *int, worldDim string) { if p == nil { return diff --git a/proto/generated/command.pb.go b/proto/generated/command.pb.go new file mode 100644 index 0000000..d806d65 --- /dev/null +++ b/proto/generated/command.pb.go @@ -0,0 +1,460 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.33.0 +// protoc (unknown) +// source: command.proto + +package generated + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Supported parameter types for commands. +type ParamType int32 + +const ( + ParamType_PARAM_STRING ParamType = 0 + ParamType_PARAM_INT ParamType = 1 + ParamType_PARAM_FLOAT ParamType = 2 + ParamType_PARAM_BOOL ParamType = 3 + ParamType_PARAM_VARARGS ParamType = 4 + ParamType_PARAM_ENUM ParamType = 5 +) + +// Enum value maps for ParamType. +var ( + ParamType_name = map[int32]string{ + 0: "PARAM_STRING", + 1: "PARAM_INT", + 2: "PARAM_FLOAT", + 3: "PARAM_BOOL", + 4: "PARAM_VARARGS", + 5: "PARAM_ENUM", + } + ParamType_value = map[string]int32{ + "PARAM_STRING": 0, + "PARAM_INT": 1, + "PARAM_FLOAT": 2, + "PARAM_BOOL": 3, + "PARAM_VARARGS": 4, + "PARAM_ENUM": 5, + } +) + +func (x ParamType) Enum() *ParamType { + p := new(ParamType) + *p = x + return p +} + +func (x ParamType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ParamType) Descriptor() protoreflect.EnumDescriptor { + return file_command_proto_enumTypes[0].Descriptor() +} + +func (ParamType) Type() protoreflect.EnumType { + return &file_command_proto_enumTypes[0] +} + +func (x ParamType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ParamType.Descriptor instead. +func (ParamType) EnumDescriptor() ([]byte, []int) { + return file_command_proto_rawDescGZIP(), []int{0} +} + +// Parameter specification for a command. +type ParamSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type ParamType `protobuf:"varint,2,opt,name=type,proto3,enum=df.plugin.ParamType" json:"type,omitempty"` + Optional bool `protobuf:"varint,3,opt,name=optional,proto3" json:"optional,omitempty"` + // Optional suffix as supported by Go cmd tags (e.g., units) + Suffix string `protobuf:"bytes,4,opt,name=suffix,proto3" json:"suffix,omitempty"` + // Optional list of enum values to present in the client UI. + // When set, the parameter is shown as an enum selector regardless of ParamType. + EnumValues []string `protobuf:"bytes,5,rep,name=enum_values,json=enumValues,proto3" json:"enum_values,omitempty"` +} + +func (x *ParamSpec) Reset() { + *x = ParamSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ParamSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParamSpec) ProtoMessage() {} + +func (x *ParamSpec) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParamSpec.ProtoReflect.Descriptor instead. +func (*ParamSpec) Descriptor() ([]byte, []int) { + return file_command_proto_rawDescGZIP(), []int{0} +} + +func (x *ParamSpec) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ParamSpec) GetType() ParamType { + if x != nil { + return x.Type + } + return ParamType_PARAM_STRING +} + +func (x *ParamSpec) GetOptional() bool { + if x != nil { + return x.Optional + } + return false +} + +func (x *ParamSpec) GetSuffix() string { + if x != nil { + return x.Suffix + } + return "" +} + +func (x *ParamSpec) GetEnumValues() []string { + if x != nil { + return x.EnumValues + } + return nil +} + +// Command specification announced by a plugin during handshake. +type CommandSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Aliases []string `protobuf:"bytes,3,rep,name=aliases,proto3" json:"aliases,omitempty"` + Params []*ParamSpec `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty"` +} + +func (x *CommandSpec) Reset() { + *x = CommandSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommandSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommandSpec) ProtoMessage() {} + +func (x *CommandSpec) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommandSpec.ProtoReflect.Descriptor instead. +func (*CommandSpec) Descriptor() ([]byte, []int) { + return file_command_proto_rawDescGZIP(), []int{1} +} + +func (x *CommandSpec) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CommandSpec) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CommandSpec) GetAliases() []string { + if x != nil { + return x.Aliases + } + return nil +} + +func (x *CommandSpec) GetParams() []*ParamSpec { + if x != nil { + return x.Params + } + return nil +} + +// Player command execution event. +type CommandEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PlayerUuid string `protobuf:"bytes,1,opt,name=player_uuid,json=playerUuid,proto3" json:"player_uuid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Raw string `protobuf:"bytes,3,opt,name=raw,proto3" json:"raw,omitempty"` // Full command string like "/tp 100 64 200" + Command string `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"` // Just the command name like "tp" + Args []string `protobuf:"bytes,5,rep,name=args,proto3" json:"args,omitempty"` // Parsed arguments like ["100", "64", "200"] +} + +func (x *CommandEvent) Reset() { + *x = CommandEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommandEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommandEvent) ProtoMessage() {} + +func (x *CommandEvent) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommandEvent.ProtoReflect.Descriptor instead. +func (*CommandEvent) Descriptor() ([]byte, []int) { + return file_command_proto_rawDescGZIP(), []int{2} +} + +func (x *CommandEvent) GetPlayerUuid() string { + if x != nil { + return x.PlayerUuid + } + return "" +} + +func (x *CommandEvent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CommandEvent) GetRaw() string { + if x != nil { + return x.Raw + } + return "" +} + +func (x *CommandEvent) GetCommand() string { + if x != nil { + return x.Command + } + return "" +} + +func (x *CommandEvent) GetArgs() []string { + if x != nil { + return x.Args + } + return nil +} + +var File_command_proto protoreflect.FileDescriptor + +var file_command_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x09, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x09, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x64, 0x66, 0x2e, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, + 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x0b, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, 0x66, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x53, 0x70, 0x65, + 0x63, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0c, 0x43, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x61, + 0x77, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, + 0x72, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x2a, + 0x70, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, + 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0d, + 0x0a, 0x09, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0f, 0x0a, + 0x0b, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0e, + 0x0a, 0x0a, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x03, 0x12, 0x11, + 0x0a, 0x0d, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x56, 0x41, 0x52, 0x41, 0x52, 0x47, 0x53, 0x10, + 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, + 0x05, 0x42, 0x8b, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x42, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x73, 0x65, 0x63, 0x6d, 0x63, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0xa2, 0x02, 0x03, 0x44, + 0x50, 0x58, 0xaa, 0x02, 0x09, 0x44, 0x66, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0xca, 0x02, + 0x09, 0x44, 0x66, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0xe2, 0x02, 0x15, 0x44, 0x66, 0x5c, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x0a, 0x44, 0x66, 0x3a, 0x3a, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_command_proto_rawDescOnce sync.Once + file_command_proto_rawDescData = file_command_proto_rawDesc +) + +func file_command_proto_rawDescGZIP() []byte { + file_command_proto_rawDescOnce.Do(func() { + file_command_proto_rawDescData = protoimpl.X.CompressGZIP(file_command_proto_rawDescData) + }) + return file_command_proto_rawDescData +} + +var file_command_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_command_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_command_proto_goTypes = []interface{}{ + (ParamType)(0), // 0: df.plugin.ParamType + (*ParamSpec)(nil), // 1: df.plugin.ParamSpec + (*CommandSpec)(nil), // 2: df.plugin.CommandSpec + (*CommandEvent)(nil), // 3: df.plugin.CommandEvent +} +var file_command_proto_depIdxs = []int32{ + 0, // 0: df.plugin.ParamSpec.type:type_name -> df.plugin.ParamType + 1, // 1: df.plugin.CommandSpec.params:type_name -> df.plugin.ParamSpec + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_command_proto_init() } +func file_command_proto_init() { + if File_command_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_command_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParamSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommandSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommandEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_command_proto_rawDesc, + NumEnums: 1, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_command_proto_goTypes, + DependencyIndexes: file_command_proto_depIdxs, + EnumInfos: file_command_proto_enumTypes, + MessageInfos: file_command_proto_msgTypes, + }.Build() + File_command_proto = out.File + file_command_proto_rawDesc = nil + file_command_proto_goTypes = nil + file_command_proto_depIdxs = nil +} diff --git a/proto/generated/cpp/command.grpc.pb.cc b/proto/generated/cpp/command.grpc.pb.cc new file mode 100644 index 0000000..06e2091 --- /dev/null +++ b/proto/generated/cpp/command.grpc.pb.cc @@ -0,0 +1,29 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: command.proto + +#include "command.pb.h" +#include "command.grpc.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace df { +namespace plugin { + +} // namespace df +} // namespace plugin +#include + diff --git a/proto/generated/cpp/command.grpc.pb.h b/proto/generated/cpp/command.grpc.pb.h new file mode 100644 index 0000000..5aa81fd --- /dev/null +++ b/proto/generated/cpp/command.grpc.pb.h @@ -0,0 +1,37 @@ +// Generated by the gRPC C++ plugin. +// If you make any local change, they will be lost. +// source: command.proto +#ifndef GRPC_command_2eproto__INCLUDED +#define GRPC_command_2eproto__INCLUDED + +#include "command.pb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace df { +namespace plugin { + +} // namespace plugin +} // namespace df + + +#include +#endif // GRPC_command_2eproto__INCLUDED diff --git a/proto/generated/cpp/command.pb.cc b/proto/generated/cpp/command.pb.cc new file mode 100644 index 0000000..67b4c76 --- /dev/null +++ b/proto/generated/cpp/command.pb.cc @@ -0,0 +1,1565 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: command.proto +// Protobuf C++ Version: 6.33.0 + +#include "command.pb.h" + +#include +#include +#include "google/protobuf/io/coded_stream.h" +#include "google/protobuf/generated_message_tctable_impl.h" +#include "google/protobuf/extension_set.h" +#include "google/protobuf/generated_message_util.h" +#include "google/protobuf/wire_format_lite.h" +#include "google/protobuf/descriptor.h" +#include "google/protobuf/generated_message_reflection.h" +#include "google/protobuf/reflection_ops.h" +#include "google/protobuf/wire_format.h" +// @@protoc_insertion_point(includes) + +// Must be included last. +#include "google/protobuf/port_def.inc" +PROTOBUF_PRAGMA_INIT_SEG +namespace _pb = ::google::protobuf; +namespace _pbi = ::google::protobuf::internal; +namespace _fl = ::google::protobuf::internal::field_layout; +namespace df { +namespace plugin { + +inline constexpr ParamSpec::Impl_::Impl_( + ::_pbi::ConstantInitialized) noexcept + : _cached_size_{0}, + enum_values_{}, + name_( + &::google::protobuf::internal::fixed_address_empty_string, + ::_pbi::ConstantInitialized()), + suffix_( + &::google::protobuf::internal::fixed_address_empty_string, + ::_pbi::ConstantInitialized()), + type_{static_cast< ::df::plugin::ParamType >(0)}, + optional_{false} {} + +template +PROTOBUF_CONSTEXPR ParamSpec::ParamSpec(::_pbi::ConstantInitialized) +#if defined(PROTOBUF_CUSTOM_VTABLE) + : ::google::protobuf::Message(ParamSpec_class_data_.base()), +#else // PROTOBUF_CUSTOM_VTABLE + : ::google::protobuf::Message(), +#endif // PROTOBUF_CUSTOM_VTABLE + _impl_(::_pbi::ConstantInitialized()) { +} +struct ParamSpecDefaultTypeInternal { + PROTOBUF_CONSTEXPR ParamSpecDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} + ~ParamSpecDefaultTypeInternal() {} + union { + ParamSpec _instance; + }; +}; + +PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT + PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ParamSpecDefaultTypeInternal _ParamSpec_default_instance_; + +inline constexpr CommandEvent::Impl_::Impl_( + ::_pbi::ConstantInitialized) noexcept + : _cached_size_{0}, + args_{}, + player_uuid_( + &::google::protobuf::internal::fixed_address_empty_string, + ::_pbi::ConstantInitialized()), + name_( + &::google::protobuf::internal::fixed_address_empty_string, + ::_pbi::ConstantInitialized()), + raw_( + &::google::protobuf::internal::fixed_address_empty_string, + ::_pbi::ConstantInitialized()), + command_( + &::google::protobuf::internal::fixed_address_empty_string, + ::_pbi::ConstantInitialized()) {} + +template +PROTOBUF_CONSTEXPR CommandEvent::CommandEvent(::_pbi::ConstantInitialized) +#if defined(PROTOBUF_CUSTOM_VTABLE) + : ::google::protobuf::Message(CommandEvent_class_data_.base()), +#else // PROTOBUF_CUSTOM_VTABLE + : ::google::protobuf::Message(), +#endif // PROTOBUF_CUSTOM_VTABLE + _impl_(::_pbi::ConstantInitialized()) { +} +struct CommandEventDefaultTypeInternal { + PROTOBUF_CONSTEXPR CommandEventDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} + ~CommandEventDefaultTypeInternal() {} + union { + CommandEvent _instance; + }; +}; + +PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT + PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CommandEventDefaultTypeInternal _CommandEvent_default_instance_; + +inline constexpr CommandSpec::Impl_::Impl_( + ::_pbi::ConstantInitialized) noexcept + : _cached_size_{0}, + aliases_{}, + params_{}, + name_( + &::google::protobuf::internal::fixed_address_empty_string, + ::_pbi::ConstantInitialized()), + description_( + &::google::protobuf::internal::fixed_address_empty_string, + ::_pbi::ConstantInitialized()) {} + +template +PROTOBUF_CONSTEXPR CommandSpec::CommandSpec(::_pbi::ConstantInitialized) +#if defined(PROTOBUF_CUSTOM_VTABLE) + : ::google::protobuf::Message(CommandSpec_class_data_.base()), +#else // PROTOBUF_CUSTOM_VTABLE + : ::google::protobuf::Message(), +#endif // PROTOBUF_CUSTOM_VTABLE + _impl_(::_pbi::ConstantInitialized()) { +} +struct CommandSpecDefaultTypeInternal { + PROTOBUF_CONSTEXPR CommandSpecDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} + ~CommandSpecDefaultTypeInternal() {} + union { + CommandSpec _instance; + }; +}; + +PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT + PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CommandSpecDefaultTypeInternal _CommandSpec_default_instance_; +} // namespace plugin +} // namespace df +static const ::_pb::EnumDescriptor* PROTOBUF_NONNULL + file_level_enum_descriptors_command_2eproto[1]; +static constexpr const ::_pb::ServiceDescriptor* PROTOBUF_NONNULL* PROTOBUF_NULLABLE + file_level_service_descriptors_command_2eproto = nullptr; +const ::uint32_t + TableStruct_command_2eproto::offsets[] ABSL_ATTRIBUTE_SECTION_VARIABLE( + protodesc_cold) = { + 0x081, // bitmap + PROTOBUF_FIELD_OFFSET(::df::plugin::ParamSpec, _impl_._has_bits_), + 8, // hasbit index offset + PROTOBUF_FIELD_OFFSET(::df::plugin::ParamSpec, _impl_.name_), + PROTOBUF_FIELD_OFFSET(::df::plugin::ParamSpec, _impl_.type_), + PROTOBUF_FIELD_OFFSET(::df::plugin::ParamSpec, _impl_.optional_), + PROTOBUF_FIELD_OFFSET(::df::plugin::ParamSpec, _impl_.suffix_), + PROTOBUF_FIELD_OFFSET(::df::plugin::ParamSpec, _impl_.enum_values_), + 1, + 3, + 4, + 2, + 0, + 0x081, // bitmap + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandSpec, _impl_._has_bits_), + 7, // hasbit index offset + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandSpec, _impl_.name_), + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandSpec, _impl_.description_), + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandSpec, _impl_.aliases_), + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandSpec, _impl_.params_), + 2, + 3, + 0, + 1, + 0x081, // bitmap + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_._has_bits_), + 8, // hasbit index offset + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_.player_uuid_), + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_.name_), + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_.raw_), + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_.command_), + PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_.args_), + 1, + 2, + 3, + 4, + 0, +}; + +static const ::_pbi::MigrationSchema + schemas[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = { + {0, sizeof(::df::plugin::ParamSpec)}, + {13, sizeof(::df::plugin::CommandSpec)}, + {24, sizeof(::df::plugin::CommandEvent)}, +}; +static const ::_pb::Message* PROTOBUF_NONNULL const file_default_instances[] = { + &::df::plugin::_ParamSpec_default_instance_._instance, + &::df::plugin::_CommandSpec_default_instance_._instance, + &::df::plugin::_CommandEvent_default_instance_._instance, +}; +const char descriptor_table_protodef_command_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE( + protodesc_cold) = { + "\n\rcommand.proto\022\tdf.plugin\"\236\001\n\tParamSpec" + "\022\022\n\004name\030\001 \001(\tR\004name\022(\n\004type\030\002 \001(\0162\024.df." + "plugin.ParamTypeR\004type\022\032\n\010optional\030\003 \001(\010" + "R\010optional\022\026\n\006suffix\030\004 \001(\tR\006suffix\022\037\n\013en" + "um_values\030\005 \003(\tR\nenumValues\"\213\001\n\013CommandS" + "pec\022\022\n\004name\030\001 \001(\tR\004name\022 \n\013description\030\002" + " \001(\tR\013description\022\030\n\007aliases\030\003 \003(\tR\007alia" + "ses\022,\n\006params\030\004 \003(\0132\024.df.plugin.ParamSpe" + "cR\006params\"\203\001\n\014CommandEvent\022\037\n\013player_uui" + "d\030\001 \001(\tR\nplayerUuid\022\022\n\004name\030\002 \001(\tR\004name\022" + "\020\n\003raw\030\003 \001(\tR\003raw\022\030\n\007command\030\004 \001(\tR\007comm" + "and\022\022\n\004args\030\005 \003(\tR\004args*p\n\tParamType\022\020\n\014" + "PARAM_STRING\020\000\022\r\n\tPARAM_INT\020\001\022\017\n\013PARAM_F" + "LOAT\020\002\022\016\n\nPARAM_BOOL\020\003\022\021\n\rPARAM_VARARGS\020" + "\004\022\016\n\nPARAM_ENUM\020\005B\213\001\n\rcom.df.pluginB\014Com" + "mandProtoP\001Z\'github.com/secmc/plugin/pro" + "to/generated\242\002\003DPX\252\002\tDf.Plugin\312\002\tDf\\Plug" + "in\342\002\025Df\\Plugin\\GPBMetadata\352\002\nDf::Pluginb" + "\006proto3" +}; +static ::absl::once_flag descriptor_table_command_2eproto_once; +PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_command_2eproto = { + false, + false, + 727, + descriptor_table_protodef_command_2eproto, + "command.proto", + &descriptor_table_command_2eproto_once, + nullptr, + 0, + 3, + schemas, + file_default_instances, + TableStruct_command_2eproto::offsets, + file_level_enum_descriptors_command_2eproto, + file_level_service_descriptors_command_2eproto, +}; +namespace df { +namespace plugin { +const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ParamType_descriptor() { + ::google::protobuf::internal::AssignDescriptors(&descriptor_table_command_2eproto); + return file_level_enum_descriptors_command_2eproto[0]; +} +PROTOBUF_CONSTINIT const uint32_t ParamType_internal_data_[] = { + 393216u, 0u, }; +// =================================================================== + +class ParamSpec::_Internal { + public: + using HasBits = + decltype(::std::declval()._impl_._has_bits_); + static constexpr ::int32_t kHasBitsOffset = + 8 * PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_._has_bits_); +}; + +ParamSpec::ParamSpec(::google::protobuf::Arena* PROTOBUF_NULLABLE arena) +#if defined(PROTOBUF_CUSTOM_VTABLE) + : ::google::protobuf::Message(arena, ParamSpec_class_data_.base()) { +#else // PROTOBUF_CUSTOM_VTABLE + : ::google::protobuf::Message(arena) { +#endif // PROTOBUF_CUSTOM_VTABLE + SharedCtor(arena); + // @@protoc_insertion_point(arena_constructor:df.plugin.ParamSpec) +} +PROTOBUF_NDEBUG_INLINE ParamSpec::Impl_::Impl_( + [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility, + [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from, + [[maybe_unused]] const ::df::plugin::ParamSpec& from_msg) + : _has_bits_{from._has_bits_}, + _cached_size_{0}, + enum_values_{visibility, arena, from.enum_values_}, + name_(arena, from.name_), + suffix_(arena, from.suffix_) {} + +ParamSpec::ParamSpec( + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, + const ParamSpec& from) +#if defined(PROTOBUF_CUSTOM_VTABLE) + : ::google::protobuf::Message(arena, ParamSpec_class_data_.base()) { +#else // PROTOBUF_CUSTOM_VTABLE + : ::google::protobuf::Message(arena) { +#endif // PROTOBUF_CUSTOM_VTABLE + ParamSpec* const _this = this; + (void)_this; + _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( + from._internal_metadata_); + new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from); + ::memcpy(reinterpret_cast(&_impl_) + + offsetof(Impl_, type_), + reinterpret_cast(&from._impl_) + + offsetof(Impl_, type_), + offsetof(Impl_, optional_) - + offsetof(Impl_, type_) + + sizeof(Impl_::optional_)); + + // @@protoc_insertion_point(copy_constructor:df.plugin.ParamSpec) +} +PROTOBUF_NDEBUG_INLINE ParamSpec::Impl_::Impl_( + [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility, + [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) + : _cached_size_{0}, + enum_values_{visibility, arena}, + name_(arena), + suffix_(arena) {} + +inline void ParamSpec::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) { + new (&_impl_) Impl_(internal_visibility(), arena); + ::memset(reinterpret_cast(&_impl_) + + offsetof(Impl_, type_), + 0, + offsetof(Impl_, optional_) - + offsetof(Impl_, type_) + + sizeof(Impl_::optional_)); +} +ParamSpec::~ParamSpec() { + // @@protoc_insertion_point(destructor:df.plugin.ParamSpec) + SharedDtor(*this); +} +inline void ParamSpec::SharedDtor(MessageLite& self) { + ParamSpec& this_ = static_cast(self); + if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { + this_.CheckHasBitConsistency(); + } + this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); + ABSL_DCHECK(this_.GetArena() == nullptr); + this_._impl_.name_.Destroy(); + this_._impl_.suffix_.Destroy(); + this_._impl_.~Impl_(); +} + +inline void* PROTOBUF_NONNULL ParamSpec::PlacementNew_( + const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) { + return ::new (mem) ParamSpec(arena); +} +constexpr auto ParamSpec::InternalNewImpl_() { + constexpr auto arena_bits = ::google::protobuf::internal::EncodePlacementArenaOffsets({ + PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.enum_values_) + + decltype(ParamSpec::_impl_.enum_values_):: + InternalGetArenaOffset( + ::google::protobuf::Message::internal_visibility()), + }); + if (arena_bits.has_value()) { + return ::google::protobuf::internal::MessageCreator::CopyInit( + sizeof(ParamSpec), alignof(ParamSpec), *arena_bits); + } else { + return ::google::protobuf::internal::MessageCreator(&ParamSpec::PlacementNew_, + sizeof(ParamSpec), + alignof(ParamSpec)); + } +} +constexpr auto ParamSpec::InternalGenerateClassData_() { + return ::google::protobuf::internal::ClassDataFull{ + ::google::protobuf::internal::ClassData{ + &_ParamSpec_default_instance_._instance, + &_table_.header, + nullptr, // OnDemandRegisterArenaDtor + nullptr, // IsInitialized + &ParamSpec::MergeImpl, + ::google::protobuf::Message::GetNewImpl(), +#if defined(PROTOBUF_CUSTOM_VTABLE) + &ParamSpec::SharedDtor, + ::google::protobuf::Message::GetClearImpl(), &ParamSpec::ByteSizeLong, + &ParamSpec::_InternalSerialize, +#endif // PROTOBUF_CUSTOM_VTABLE + PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_._cached_size_), + false, + }, + &ParamSpec::kDescriptorMethods, + &descriptor_table_command_2eproto, + nullptr, // tracker + }; +} + +PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const + ::google::protobuf::internal::ClassDataFull ParamSpec_class_data_ = + ParamSpec::InternalGenerateClassData_(); + +PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL +ParamSpec::GetClassData() const { + ::google::protobuf::internal::PrefetchToLocalCache(&ParamSpec_class_data_); + ::google::protobuf::internal::PrefetchToLocalCache(ParamSpec_class_data_.tc_table); + return ParamSpec_class_data_.base(); +} +PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 +const ::_pbi::TcParseTable<3, 5, 0, 49, 2> +ParamSpec::_table_ = { + { + PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_._has_bits_), + 0, // no _extensions_ + 5, 56, // max_field_number, fast_idx_mask + offsetof(decltype(_table_), field_lookup_table), + 4294967264, // skipmap + offsetof(decltype(_table_), field_entries), + 5, // num_field_entries + 0, // num_aux_entries + offsetof(decltype(_table_), field_names), // no aux_entries + ParamSpec_class_data_.base(), + nullptr, // post_loop_handler + ::_pbi::TcParser::GenericFallback, // fallback + #ifdef PROTOBUF_PREFETCH_PARSE_TABLE + ::_pbi::TcParser::GetTable<::df::plugin::ParamSpec>(), // to_prefetch + #endif // PROTOBUF_PREFETCH_PARSE_TABLE + }, {{ + {::_pbi::TcParser::MiniParse, {}}, + // string name = 1 [json_name = "name"]; + {::_pbi::TcParser::FastUS1, + {10, 1, 0, + PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.name_)}}, + // .df.plugin.ParamType type = 2 [json_name = "type"]; + {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ParamSpec, _impl_.type_), 3>(), + {16, 3, 0, + PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.type_)}}, + // bool optional = 3 [json_name = "optional"]; + {::_pbi::TcParser::SingularVarintNoZag1(), + {24, 4, 0, + PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.optional_)}}, + // string suffix = 4 [json_name = "suffix"]; + {::_pbi::TcParser::FastUS1, + {34, 2, 0, + PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.suffix_)}}, + // repeated string enum_values = 5 [json_name = "enumValues"]; + {::_pbi::TcParser::FastUR1, + {42, 0, 0, + PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.enum_values_)}}, + {::_pbi::TcParser::MiniParse, {}}, + {::_pbi::TcParser::MiniParse, {}}, + }}, {{ + 65535, 65535 + }}, {{ + // string name = 1 [json_name = "name"]; + {PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.name_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, + // .df.plugin.ParamType type = 2 [json_name = "type"]; + {PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.type_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)}, + // bool optional = 3 [json_name = "optional"]; + {PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.optional_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)}, + // string suffix = 4 [json_name = "suffix"]; + {PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.suffix_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, + // repeated string enum_values = 5 [json_name = "enumValues"]; + {PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.enum_values_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUtf8String | ::_fl::kRepSString)}, + }}, + // no aux_entries + {{ + "\23\4\0\0\6\13\0\0" + "df.plugin.ParamSpec" + "name" + "suffix" + "enum_values" + }}, +}; +PROTOBUF_NOINLINE void ParamSpec::Clear() { +// @@protoc_insertion_point(message_clear_start:df.plugin.ParamSpec) + ::google::protobuf::internal::TSanWrite(&_impl_); + ::uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + cached_has_bits = _impl_._has_bits_[0]; + if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) { + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + _impl_.enum_values_.Clear(); + } + if (CheckHasBit(cached_has_bits, 0x00000002U)) { + _impl_.name_.ClearNonDefaultToEmpty(); + } + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + _impl_.suffix_.ClearNonDefaultToEmpty(); + } + } + if (BatchCheckHasBit(cached_has_bits, 0x00000018U)) { + ::memset(&_impl_.type_, 0, static_cast<::size_t>( + reinterpret_cast(&_impl_.optional_) - + reinterpret_cast(&_impl_.type_)) + sizeof(_impl_.optional_)); + } + _impl_._has_bits_.Clear(); + _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); +} + +#if defined(PROTOBUF_CUSTOM_VTABLE) +::uint8_t* PROTOBUF_NONNULL ParamSpec::_InternalSerialize( + const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) { + const ParamSpec& this_ = static_cast(base); +#else // PROTOBUF_CUSTOM_VTABLE +::uint8_t* PROTOBUF_NONNULL ParamSpec::_InternalSerialize( + ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const { + const ParamSpec& this_ = *this; +#endif // PROTOBUF_CUSTOM_VTABLE + if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { + this_.CheckHasBitConsistency(); + } + // @@protoc_insertion_point(serialize_to_array_start:df.plugin.ParamSpec) + ::uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + cached_has_bits = this_._impl_._has_bits_[0]; + // string name = 1 [json_name = "name"]; + if (CheckHasBit(cached_has_bits, 0x00000002U)) { + if (!this_._internal_name().empty()) { + const ::std::string& _s = this_._internal_name(); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.ParamSpec.name"); + target = stream->WriteStringMaybeAliased(1, _s, target); + } + } + + // .df.plugin.ParamType type = 2 [json_name = "type"]; + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + if (this_._internal_type() != 0) { + target = stream->EnsureSpace(target); + target = ::_pbi::WireFormatLite::WriteEnumToArray( + 2, this_._internal_type(), target); + } + } + + // bool optional = 3 [json_name = "optional"]; + if (CheckHasBit(cached_has_bits, 0x00000010U)) { + if (this_._internal_optional() != 0) { + target = stream->EnsureSpace(target); + target = ::_pbi::WireFormatLite::WriteBoolToArray( + 3, this_._internal_optional(), target); + } + } + + // string suffix = 4 [json_name = "suffix"]; + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + if (!this_._internal_suffix().empty()) { + const ::std::string& _s = this_._internal_suffix(); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.ParamSpec.suffix"); + target = stream->WriteStringMaybeAliased(4, _s, target); + } + } + + // repeated string enum_values = 5 [json_name = "enumValues"]; + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + for (int i = 0, n = this_._internal_enum_values_size(); i < n; ++i) { + const auto& s = this_._internal_enum_values().Get(i); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.ParamSpec.enum_values"); + target = stream->WriteString(5, s, target); + } + } + + if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) { + target = + ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( + this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); + } + // @@protoc_insertion_point(serialize_to_array_end:df.plugin.ParamSpec) + return target; +} + +#if defined(PROTOBUF_CUSTOM_VTABLE) +::size_t ParamSpec::ByteSizeLong(const MessageLite& base) { + const ParamSpec& this_ = static_cast(base); +#else // PROTOBUF_CUSTOM_VTABLE +::size_t ParamSpec::ByteSizeLong() const { + const ParamSpec& this_ = *this; +#endif // PROTOBUF_CUSTOM_VTABLE + // @@protoc_insertion_point(message_byte_size_start:df.plugin.ParamSpec) + ::size_t total_size = 0; + + ::uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + ::_pbi::Prefetch5LinesFrom7Lines(&this_); + cached_has_bits = this_._impl_._has_bits_[0]; + if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) { + // repeated string enum_values = 5 [json_name = "enumValues"]; + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + total_size += + 1 * ::google::protobuf::internal::FromIntSize(this_._internal_enum_values().size()); + for (int i = 0, n = this_._internal_enum_values().size(); i < n; ++i) { + total_size += ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_enum_values().Get(i)); + } + } + // string name = 1 [json_name = "name"]; + if (CheckHasBit(cached_has_bits, 0x00000002U)) { + if (!this_._internal_name().empty()) { + total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_name()); + } + } + // string suffix = 4 [json_name = "suffix"]; + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + if (!this_._internal_suffix().empty()) { + total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_suffix()); + } + } + // .df.plugin.ParamType type = 2 [json_name = "type"]; + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + if (this_._internal_type() != 0) { + total_size += 1 + + ::_pbi::WireFormatLite::EnumSize(this_._internal_type()); + } + } + // bool optional = 3 [json_name = "optional"]; + if (CheckHasBit(cached_has_bits, 0x00000010U)) { + if (this_._internal_optional() != 0) { + total_size += 2; + } + } + } + return this_.MaybeComputeUnknownFieldsSize(total_size, + &this_._impl_._cached_size_); +} + +void ParamSpec::MergeImpl(::google::protobuf::MessageLite& to_msg, + const ::google::protobuf::MessageLite& from_msg) { + auto* const _this = + static_cast(&to_msg); + auto& from = static_cast(from_msg); + if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { + from.CheckHasBitConsistency(); + } + ::google::protobuf::Arena* arena = _this->GetArena(); + // @@protoc_insertion_point(class_specific_merge_from_start:df.plugin.ParamSpec) + ABSL_DCHECK_NE(&from, _this); + ::uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + cached_has_bits = from._impl_._has_bits_[0]; + if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) { + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + _this->_internal_mutable_enum_values()->InternalMergeFromWithArena( + ::google::protobuf::MessageLite::internal_visibility(), arena, + from._internal_enum_values()); + } + if (CheckHasBit(cached_has_bits, 0x00000002U)) { + if (!from._internal_name().empty()) { + _this->_internal_set_name(from._internal_name()); + } else { + if (_this->_impl_.name_.IsDefault()) { + _this->_internal_set_name(""); + } + } + } + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + if (!from._internal_suffix().empty()) { + _this->_internal_set_suffix(from._internal_suffix()); + } else { + if (_this->_impl_.suffix_.IsDefault()) { + _this->_internal_set_suffix(""); + } + } + } + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + if (from._internal_type() != 0) { + _this->_impl_.type_ = from._impl_.type_; + } + } + if (CheckHasBit(cached_has_bits, 0x00000010U)) { + if (from._internal_optional() != 0) { + _this->_impl_.optional_ = from._impl_.optional_; + } + } + } + _this->_impl_._has_bits_[0] |= cached_has_bits; + _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( + from._internal_metadata_); +} + +void ParamSpec::CopyFrom(const ParamSpec& from) { + // @@protoc_insertion_point(class_specific_copy_from_start:df.plugin.ParamSpec) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + + +void ParamSpec::InternalSwap(ParamSpec* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) { + using ::std::swap; + auto* arena = GetArena(); + ABSL_DCHECK_EQ(arena, other->GetArena()); + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); + _impl_.enum_values_.InternalSwap(&other->_impl_.enum_values_); + ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); + ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.suffix_, &other->_impl_.suffix_, arena); + ::google::protobuf::internal::memswap< + PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.optional_) + + sizeof(ParamSpec::_impl_.optional_) + - PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.type_)>( + reinterpret_cast(&_impl_.type_), + reinterpret_cast(&other->_impl_.type_)); +} + +::google::protobuf::Metadata ParamSpec::GetMetadata() const { + return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full()); +} +// =================================================================== + +class CommandSpec::_Internal { + public: + using HasBits = + decltype(::std::declval()._impl_._has_bits_); + static constexpr ::int32_t kHasBitsOffset = + 8 * PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_._has_bits_); +}; + +CommandSpec::CommandSpec(::google::protobuf::Arena* PROTOBUF_NULLABLE arena) +#if defined(PROTOBUF_CUSTOM_VTABLE) + : ::google::protobuf::Message(arena, CommandSpec_class_data_.base()) { +#else // PROTOBUF_CUSTOM_VTABLE + : ::google::protobuf::Message(arena) { +#endif // PROTOBUF_CUSTOM_VTABLE + SharedCtor(arena); + // @@protoc_insertion_point(arena_constructor:df.plugin.CommandSpec) +} +PROTOBUF_NDEBUG_INLINE CommandSpec::Impl_::Impl_( + [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility, + [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from, + [[maybe_unused]] const ::df::plugin::CommandSpec& from_msg) + : _has_bits_{from._has_bits_}, + _cached_size_{0}, + aliases_{visibility, arena, from.aliases_}, + params_{visibility, arena, from.params_}, + name_(arena, from.name_), + description_(arena, from.description_) {} + +CommandSpec::CommandSpec( + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, + const CommandSpec& from) +#if defined(PROTOBUF_CUSTOM_VTABLE) + : ::google::protobuf::Message(arena, CommandSpec_class_data_.base()) { +#else // PROTOBUF_CUSTOM_VTABLE + : ::google::protobuf::Message(arena) { +#endif // PROTOBUF_CUSTOM_VTABLE + CommandSpec* const _this = this; + (void)_this; + _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( + from._internal_metadata_); + new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from); + + // @@protoc_insertion_point(copy_constructor:df.plugin.CommandSpec) +} +PROTOBUF_NDEBUG_INLINE CommandSpec::Impl_::Impl_( + [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility, + [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) + : _cached_size_{0}, + aliases_{visibility, arena}, + params_{visibility, arena}, + name_(arena), + description_(arena) {} + +inline void CommandSpec::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) { + new (&_impl_) Impl_(internal_visibility(), arena); +} +CommandSpec::~CommandSpec() { + // @@protoc_insertion_point(destructor:df.plugin.CommandSpec) + SharedDtor(*this); +} +inline void CommandSpec::SharedDtor(MessageLite& self) { + CommandSpec& this_ = static_cast(self); + if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { + this_.CheckHasBitConsistency(); + } + this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); + ABSL_DCHECK(this_.GetArena() == nullptr); + this_._impl_.name_.Destroy(); + this_._impl_.description_.Destroy(); + this_._impl_.~Impl_(); +} + +inline void* PROTOBUF_NONNULL CommandSpec::PlacementNew_( + const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) { + return ::new (mem) CommandSpec(arena); +} +constexpr auto CommandSpec::InternalNewImpl_() { + constexpr auto arena_bits = ::google::protobuf::internal::EncodePlacementArenaOffsets({ + PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.aliases_) + + decltype(CommandSpec::_impl_.aliases_):: + InternalGetArenaOffset( + ::google::protobuf::Message::internal_visibility()), + PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.params_) + + decltype(CommandSpec::_impl_.params_):: + InternalGetArenaOffset( + ::google::protobuf::Message::internal_visibility()), + }); + if (arena_bits.has_value()) { + return ::google::protobuf::internal::MessageCreator::CopyInit( + sizeof(CommandSpec), alignof(CommandSpec), *arena_bits); + } else { + return ::google::protobuf::internal::MessageCreator(&CommandSpec::PlacementNew_, + sizeof(CommandSpec), + alignof(CommandSpec)); + } +} +constexpr auto CommandSpec::InternalGenerateClassData_() { + return ::google::protobuf::internal::ClassDataFull{ + ::google::protobuf::internal::ClassData{ + &_CommandSpec_default_instance_._instance, + &_table_.header, + nullptr, // OnDemandRegisterArenaDtor + nullptr, // IsInitialized + &CommandSpec::MergeImpl, + ::google::protobuf::Message::GetNewImpl(), +#if defined(PROTOBUF_CUSTOM_VTABLE) + &CommandSpec::SharedDtor, + ::google::protobuf::Message::GetClearImpl(), &CommandSpec::ByteSizeLong, + &CommandSpec::_InternalSerialize, +#endif // PROTOBUF_CUSTOM_VTABLE + PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_._cached_size_), + false, + }, + &CommandSpec::kDescriptorMethods, + &descriptor_table_command_2eproto, + nullptr, // tracker + }; +} + +PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const + ::google::protobuf::internal::ClassDataFull CommandSpec_class_data_ = + CommandSpec::InternalGenerateClassData_(); + +PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL +CommandSpec::GetClassData() const { + ::google::protobuf::internal::PrefetchToLocalCache(&CommandSpec_class_data_); + ::google::protobuf::internal::PrefetchToLocalCache(CommandSpec_class_data_.tc_table); + return CommandSpec_class_data_.base(); +} +PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 +const ::_pbi::TcParseTable<2, 4, 1, 52, 2> +CommandSpec::_table_ = { + { + PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_._has_bits_), + 0, // no _extensions_ + 4, 24, // max_field_number, fast_idx_mask + offsetof(decltype(_table_), field_lookup_table), + 4294967280, // skipmap + offsetof(decltype(_table_), field_entries), + 4, // num_field_entries + 1, // num_aux_entries + offsetof(decltype(_table_), aux_entries), + CommandSpec_class_data_.base(), + nullptr, // post_loop_handler + ::_pbi::TcParser::GenericFallback, // fallback + #ifdef PROTOBUF_PREFETCH_PARSE_TABLE + ::_pbi::TcParser::GetTable<::df::plugin::CommandSpec>(), // to_prefetch + #endif // PROTOBUF_PREFETCH_PARSE_TABLE + }, {{ + // repeated .df.plugin.ParamSpec params = 4 [json_name = "params"]; + {::_pbi::TcParser::FastMtR1, + {34, 1, 0, + PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.params_)}}, + // string name = 1 [json_name = "name"]; + {::_pbi::TcParser::FastUS1, + {10, 2, 0, + PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.name_)}}, + // string description = 2 [json_name = "description"]; + {::_pbi::TcParser::FastUS1, + {18, 3, 0, + PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.description_)}}, + // repeated string aliases = 3 [json_name = "aliases"]; + {::_pbi::TcParser::FastUR1, + {26, 0, 0, + PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.aliases_)}}, + }}, {{ + 65535, 65535 + }}, {{ + // string name = 1 [json_name = "name"]; + {PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.name_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, + // string description = 2 [json_name = "description"]; + {PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.description_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, + // repeated string aliases = 3 [json_name = "aliases"]; + {PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.aliases_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUtf8String | ::_fl::kRepSString)}, + // repeated .df.plugin.ParamSpec params = 4 [json_name = "params"]; + {PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.params_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)}, + }}, + {{ + {::_pbi::TcParser::GetTable<::df::plugin::ParamSpec>()}, + }}, + {{ + "\25\4\13\7\0\0\0\0" + "df.plugin.CommandSpec" + "name" + "description" + "aliases" + }}, +}; +PROTOBUF_NOINLINE void CommandSpec::Clear() { +// @@protoc_insertion_point(message_clear_start:df.plugin.CommandSpec) + ::google::protobuf::internal::TSanWrite(&_impl_); + ::uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + cached_has_bits = _impl_._has_bits_[0]; + if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) { + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + _impl_.aliases_.Clear(); + } + if (CheckHasBitForRepeated(cached_has_bits, 0x00000002U)) { + _impl_.params_.Clear(); + } + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + _impl_.name_.ClearNonDefaultToEmpty(); + } + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + _impl_.description_.ClearNonDefaultToEmpty(); + } + } + _impl_._has_bits_.Clear(); + _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); +} + +#if defined(PROTOBUF_CUSTOM_VTABLE) +::uint8_t* PROTOBUF_NONNULL CommandSpec::_InternalSerialize( + const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) { + const CommandSpec& this_ = static_cast(base); +#else // PROTOBUF_CUSTOM_VTABLE +::uint8_t* PROTOBUF_NONNULL CommandSpec::_InternalSerialize( + ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const { + const CommandSpec& this_ = *this; +#endif // PROTOBUF_CUSTOM_VTABLE + if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { + this_.CheckHasBitConsistency(); + } + // @@protoc_insertion_point(serialize_to_array_start:df.plugin.CommandSpec) + ::uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + cached_has_bits = this_._impl_._has_bits_[0]; + // string name = 1 [json_name = "name"]; + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + if (!this_._internal_name().empty()) { + const ::std::string& _s = this_._internal_name(); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandSpec.name"); + target = stream->WriteStringMaybeAliased(1, _s, target); + } + } + + // string description = 2 [json_name = "description"]; + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + if (!this_._internal_description().empty()) { + const ::std::string& _s = this_._internal_description(); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandSpec.description"); + target = stream->WriteStringMaybeAliased(2, _s, target); + } + } + + // repeated string aliases = 3 [json_name = "aliases"]; + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + for (int i = 0, n = this_._internal_aliases_size(); i < n; ++i) { + const auto& s = this_._internal_aliases().Get(i); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandSpec.aliases"); + target = stream->WriteString(3, s, target); + } + } + + // repeated .df.plugin.ParamSpec params = 4 [json_name = "params"]; + if (CheckHasBitForRepeated(cached_has_bits, 0x00000002U)) { + for (unsigned i = 0, n = static_cast( + this_._internal_params_size()); + i < n; i++) { + const auto& repfield = this_._internal_params().Get(i); + target = + ::google::protobuf::internal::WireFormatLite::InternalWriteMessage( + 4, repfield, repfield.GetCachedSize(), + target, stream); + } + } + + if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) { + target = + ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( + this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); + } + // @@protoc_insertion_point(serialize_to_array_end:df.plugin.CommandSpec) + return target; +} + +#if defined(PROTOBUF_CUSTOM_VTABLE) +::size_t CommandSpec::ByteSizeLong(const MessageLite& base) { + const CommandSpec& this_ = static_cast(base); +#else // PROTOBUF_CUSTOM_VTABLE +::size_t CommandSpec::ByteSizeLong() const { + const CommandSpec& this_ = *this; +#endif // PROTOBUF_CUSTOM_VTABLE + // @@protoc_insertion_point(message_byte_size_start:df.plugin.CommandSpec) + ::size_t total_size = 0; + + ::uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + ::_pbi::Prefetch5LinesFrom7Lines(&this_); + cached_has_bits = this_._impl_._has_bits_[0]; + if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) { + // repeated string aliases = 3 [json_name = "aliases"]; + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + total_size += + 1 * ::google::protobuf::internal::FromIntSize(this_._internal_aliases().size()); + for (int i = 0, n = this_._internal_aliases().size(); i < n; ++i) { + total_size += ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_aliases().Get(i)); + } + } + // repeated .df.plugin.ParamSpec params = 4 [json_name = "params"]; + if (CheckHasBitForRepeated(cached_has_bits, 0x00000002U)) { + total_size += 1UL * this_._internal_params_size(); + for (const auto& msg : this_._internal_params()) { + total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg); + } + } + // string name = 1 [json_name = "name"]; + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + if (!this_._internal_name().empty()) { + total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_name()); + } + } + // string description = 2 [json_name = "description"]; + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + if (!this_._internal_description().empty()) { + total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_description()); + } + } + } + return this_.MaybeComputeUnknownFieldsSize(total_size, + &this_._impl_._cached_size_); +} + +void CommandSpec::MergeImpl(::google::protobuf::MessageLite& to_msg, + const ::google::protobuf::MessageLite& from_msg) { + auto* const _this = + static_cast(&to_msg); + auto& from = static_cast(from_msg); + if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { + from.CheckHasBitConsistency(); + } + ::google::protobuf::Arena* arena = _this->GetArena(); + // @@protoc_insertion_point(class_specific_merge_from_start:df.plugin.CommandSpec) + ABSL_DCHECK_NE(&from, _this); + ::uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + cached_has_bits = from._impl_._has_bits_[0]; + if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) { + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + _this->_internal_mutable_aliases()->InternalMergeFromWithArena( + ::google::protobuf::MessageLite::internal_visibility(), arena, + from._internal_aliases()); + } + if (CheckHasBitForRepeated(cached_has_bits, 0x00000002U)) { + _this->_internal_mutable_params()->InternalMergeFromWithArena( + ::google::protobuf::MessageLite::internal_visibility(), arena, + from._internal_params()); + } + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + if (!from._internal_name().empty()) { + _this->_internal_set_name(from._internal_name()); + } else { + if (_this->_impl_.name_.IsDefault()) { + _this->_internal_set_name(""); + } + } + } + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + if (!from._internal_description().empty()) { + _this->_internal_set_description(from._internal_description()); + } else { + if (_this->_impl_.description_.IsDefault()) { + _this->_internal_set_description(""); + } + } + } + } + _this->_impl_._has_bits_[0] |= cached_has_bits; + _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( + from._internal_metadata_); +} + +void CommandSpec::CopyFrom(const CommandSpec& from) { + // @@protoc_insertion_point(class_specific_copy_from_start:df.plugin.CommandSpec) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + + +void CommandSpec::InternalSwap(CommandSpec* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) { + using ::std::swap; + auto* arena = GetArena(); + ABSL_DCHECK_EQ(arena, other->GetArena()); + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); + _impl_.aliases_.InternalSwap(&other->_impl_.aliases_); + _impl_.params_.InternalSwap(&other->_impl_.params_); + ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); + ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.description_, &other->_impl_.description_, arena); +} + +::google::protobuf::Metadata CommandSpec::GetMetadata() const { + return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full()); +} +// =================================================================== + +class CommandEvent::_Internal { + public: + using HasBits = + decltype(::std::declval()._impl_._has_bits_); + static constexpr ::int32_t kHasBitsOffset = + 8 * PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_._has_bits_); +}; + +CommandEvent::CommandEvent(::google::protobuf::Arena* PROTOBUF_NULLABLE arena) +#if defined(PROTOBUF_CUSTOM_VTABLE) + : ::google::protobuf::Message(arena, CommandEvent_class_data_.base()) { +#else // PROTOBUF_CUSTOM_VTABLE + : ::google::protobuf::Message(arena) { +#endif // PROTOBUF_CUSTOM_VTABLE + SharedCtor(arena); + // @@protoc_insertion_point(arena_constructor:df.plugin.CommandEvent) +} +PROTOBUF_NDEBUG_INLINE CommandEvent::Impl_::Impl_( + [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility, + [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from, + [[maybe_unused]] const ::df::plugin::CommandEvent& from_msg) + : _has_bits_{from._has_bits_}, + _cached_size_{0}, + args_{visibility, arena, from.args_}, + player_uuid_(arena, from.player_uuid_), + name_(arena, from.name_), + raw_(arena, from.raw_), + command_(arena, from.command_) {} + +CommandEvent::CommandEvent( + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, + const CommandEvent& from) +#if defined(PROTOBUF_CUSTOM_VTABLE) + : ::google::protobuf::Message(arena, CommandEvent_class_data_.base()) { +#else // PROTOBUF_CUSTOM_VTABLE + : ::google::protobuf::Message(arena) { +#endif // PROTOBUF_CUSTOM_VTABLE + CommandEvent* const _this = this; + (void)_this; + _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( + from._internal_metadata_); + new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from); + + // @@protoc_insertion_point(copy_constructor:df.plugin.CommandEvent) +} +PROTOBUF_NDEBUG_INLINE CommandEvent::Impl_::Impl_( + [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility, + [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) + : _cached_size_{0}, + args_{visibility, arena}, + player_uuid_(arena), + name_(arena), + raw_(arena), + command_(arena) {} + +inline void CommandEvent::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) { + new (&_impl_) Impl_(internal_visibility(), arena); +} +CommandEvent::~CommandEvent() { + // @@protoc_insertion_point(destructor:df.plugin.CommandEvent) + SharedDtor(*this); +} +inline void CommandEvent::SharedDtor(MessageLite& self) { + CommandEvent& this_ = static_cast(self); + if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { + this_.CheckHasBitConsistency(); + } + this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); + ABSL_DCHECK(this_.GetArena() == nullptr); + this_._impl_.player_uuid_.Destroy(); + this_._impl_.name_.Destroy(); + this_._impl_.raw_.Destroy(); + this_._impl_.command_.Destroy(); + this_._impl_.~Impl_(); +} + +inline void* PROTOBUF_NONNULL CommandEvent::PlacementNew_( + const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) { + return ::new (mem) CommandEvent(arena); +} +constexpr auto CommandEvent::InternalNewImpl_() { + constexpr auto arena_bits = ::google::protobuf::internal::EncodePlacementArenaOffsets({ + PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.args_) + + decltype(CommandEvent::_impl_.args_):: + InternalGetArenaOffset( + ::google::protobuf::Message::internal_visibility()), + }); + if (arena_bits.has_value()) { + return ::google::protobuf::internal::MessageCreator::CopyInit( + sizeof(CommandEvent), alignof(CommandEvent), *arena_bits); + } else { + return ::google::protobuf::internal::MessageCreator(&CommandEvent::PlacementNew_, + sizeof(CommandEvent), + alignof(CommandEvent)); + } +} +constexpr auto CommandEvent::InternalGenerateClassData_() { + return ::google::protobuf::internal::ClassDataFull{ + ::google::protobuf::internal::ClassData{ + &_CommandEvent_default_instance_._instance, + &_table_.header, + nullptr, // OnDemandRegisterArenaDtor + nullptr, // IsInitialized + &CommandEvent::MergeImpl, + ::google::protobuf::Message::GetNewImpl(), +#if defined(PROTOBUF_CUSTOM_VTABLE) + &CommandEvent::SharedDtor, + ::google::protobuf::Message::GetClearImpl(), &CommandEvent::ByteSizeLong, + &CommandEvent::_InternalSerialize, +#endif // PROTOBUF_CUSTOM_VTABLE + PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_._cached_size_), + false, + }, + &CommandEvent::kDescriptorMethods, + &descriptor_table_command_2eproto, + nullptr, // tracker + }; +} + +PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const + ::google::protobuf::internal::ClassDataFull CommandEvent_class_data_ = + CommandEvent::InternalGenerateClassData_(); + +PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL +CommandEvent::GetClassData() const { + ::google::protobuf::internal::PrefetchToLocalCache(&CommandEvent_class_data_); + ::google::protobuf::internal::PrefetchToLocalCache(CommandEvent_class_data_.tc_table); + return CommandEvent_class_data_.base(); +} +PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 +const ::_pbi::TcParseTable<3, 5, 0, 60, 2> +CommandEvent::_table_ = { + { + PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_._has_bits_), + 0, // no _extensions_ + 5, 56, // max_field_number, fast_idx_mask + offsetof(decltype(_table_), field_lookup_table), + 4294967264, // skipmap + offsetof(decltype(_table_), field_entries), + 5, // num_field_entries + 0, // num_aux_entries + offsetof(decltype(_table_), field_names), // no aux_entries + CommandEvent_class_data_.base(), + nullptr, // post_loop_handler + ::_pbi::TcParser::GenericFallback, // fallback + #ifdef PROTOBUF_PREFETCH_PARSE_TABLE + ::_pbi::TcParser::GetTable<::df::plugin::CommandEvent>(), // to_prefetch + #endif // PROTOBUF_PREFETCH_PARSE_TABLE + }, {{ + {::_pbi::TcParser::MiniParse, {}}, + // string player_uuid = 1 [json_name = "playerUuid"]; + {::_pbi::TcParser::FastUS1, + {10, 1, 0, + PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.player_uuid_)}}, + // string name = 2 [json_name = "name"]; + {::_pbi::TcParser::FastUS1, + {18, 2, 0, + PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.name_)}}, + // string raw = 3 [json_name = "raw"]; + {::_pbi::TcParser::FastUS1, + {26, 3, 0, + PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.raw_)}}, + // string command = 4 [json_name = "command"]; + {::_pbi::TcParser::FastUS1, + {34, 4, 0, + PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.command_)}}, + // repeated string args = 5 [json_name = "args"]; + {::_pbi::TcParser::FastUR1, + {42, 0, 0, + PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.args_)}}, + {::_pbi::TcParser::MiniParse, {}}, + {::_pbi::TcParser::MiniParse, {}}, + }}, {{ + 65535, 65535 + }}, {{ + // string player_uuid = 1 [json_name = "playerUuid"]; + {PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.player_uuid_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, + // string name = 2 [json_name = "name"]; + {PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.name_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, + // string raw = 3 [json_name = "raw"]; + {PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.raw_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, + // string command = 4 [json_name = "command"]; + {PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.command_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, + // repeated string args = 5 [json_name = "args"]; + {PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.args_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUtf8String | ::_fl::kRepSString)}, + }}, + // no aux_entries + {{ + "\26\13\4\3\7\4\0\0" + "df.plugin.CommandEvent" + "player_uuid" + "name" + "raw" + "command" + "args" + }}, +}; +PROTOBUF_NOINLINE void CommandEvent::Clear() { +// @@protoc_insertion_point(message_clear_start:df.plugin.CommandEvent) + ::google::protobuf::internal::TSanWrite(&_impl_); + ::uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + cached_has_bits = _impl_._has_bits_[0]; + if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) { + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + _impl_.args_.Clear(); + } + if (CheckHasBit(cached_has_bits, 0x00000002U)) { + _impl_.player_uuid_.ClearNonDefaultToEmpty(); + } + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + _impl_.name_.ClearNonDefaultToEmpty(); + } + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + _impl_.raw_.ClearNonDefaultToEmpty(); + } + if (CheckHasBit(cached_has_bits, 0x00000010U)) { + _impl_.command_.ClearNonDefaultToEmpty(); + } + } + _impl_._has_bits_.Clear(); + _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); +} + +#if defined(PROTOBUF_CUSTOM_VTABLE) +::uint8_t* PROTOBUF_NONNULL CommandEvent::_InternalSerialize( + const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) { + const CommandEvent& this_ = static_cast(base); +#else // PROTOBUF_CUSTOM_VTABLE +::uint8_t* PROTOBUF_NONNULL CommandEvent::_InternalSerialize( + ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const { + const CommandEvent& this_ = *this; +#endif // PROTOBUF_CUSTOM_VTABLE + if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { + this_.CheckHasBitConsistency(); + } + // @@protoc_insertion_point(serialize_to_array_start:df.plugin.CommandEvent) + ::uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + cached_has_bits = this_._impl_._has_bits_[0]; + // string player_uuid = 1 [json_name = "playerUuid"]; + if (CheckHasBit(cached_has_bits, 0x00000002U)) { + if (!this_._internal_player_uuid().empty()) { + const ::std::string& _s = this_._internal_player_uuid(); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandEvent.player_uuid"); + target = stream->WriteStringMaybeAliased(1, _s, target); + } + } + + // string name = 2 [json_name = "name"]; + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + if (!this_._internal_name().empty()) { + const ::std::string& _s = this_._internal_name(); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandEvent.name"); + target = stream->WriteStringMaybeAliased(2, _s, target); + } + } + + // string raw = 3 [json_name = "raw"]; + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + if (!this_._internal_raw().empty()) { + const ::std::string& _s = this_._internal_raw(); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandEvent.raw"); + target = stream->WriteStringMaybeAliased(3, _s, target); + } + } + + // string command = 4 [json_name = "command"]; + if (CheckHasBit(cached_has_bits, 0x00000010U)) { + if (!this_._internal_command().empty()) { + const ::std::string& _s = this_._internal_command(); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandEvent.command"); + target = stream->WriteStringMaybeAliased(4, _s, target); + } + } + + // repeated string args = 5 [json_name = "args"]; + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + for (int i = 0, n = this_._internal_args_size(); i < n; ++i) { + const auto& s = this_._internal_args().Get(i); + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandEvent.args"); + target = stream->WriteString(5, s, target); + } + } + + if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) { + target = + ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( + this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); + } + // @@protoc_insertion_point(serialize_to_array_end:df.plugin.CommandEvent) + return target; +} + +#if defined(PROTOBUF_CUSTOM_VTABLE) +::size_t CommandEvent::ByteSizeLong(const MessageLite& base) { + const CommandEvent& this_ = static_cast(base); +#else // PROTOBUF_CUSTOM_VTABLE +::size_t CommandEvent::ByteSizeLong() const { + const CommandEvent& this_ = *this; +#endif // PROTOBUF_CUSTOM_VTABLE + // @@protoc_insertion_point(message_byte_size_start:df.plugin.CommandEvent) + ::size_t total_size = 0; + + ::uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void)cached_has_bits; + + ::_pbi::Prefetch5LinesFrom7Lines(&this_); + cached_has_bits = this_._impl_._has_bits_[0]; + if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) { + // repeated string args = 5 [json_name = "args"]; + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + total_size += + 1 * ::google::protobuf::internal::FromIntSize(this_._internal_args().size()); + for (int i = 0, n = this_._internal_args().size(); i < n; ++i) { + total_size += ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_args().Get(i)); + } + } + // string player_uuid = 1 [json_name = "playerUuid"]; + if (CheckHasBit(cached_has_bits, 0x00000002U)) { + if (!this_._internal_player_uuid().empty()) { + total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_player_uuid()); + } + } + // string name = 2 [json_name = "name"]; + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + if (!this_._internal_name().empty()) { + total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_name()); + } + } + // string raw = 3 [json_name = "raw"]; + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + if (!this_._internal_raw().empty()) { + total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_raw()); + } + } + // string command = 4 [json_name = "command"]; + if (CheckHasBit(cached_has_bits, 0x00000010U)) { + if (!this_._internal_command().empty()) { + total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( + this_._internal_command()); + } + } + } + return this_.MaybeComputeUnknownFieldsSize(total_size, + &this_._impl_._cached_size_); +} + +void CommandEvent::MergeImpl(::google::protobuf::MessageLite& to_msg, + const ::google::protobuf::MessageLite& from_msg) { + auto* const _this = + static_cast(&to_msg); + auto& from = static_cast(from_msg); + if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { + from.CheckHasBitConsistency(); + } + ::google::protobuf::Arena* arena = _this->GetArena(); + // @@protoc_insertion_point(class_specific_merge_from_start:df.plugin.CommandEvent) + ABSL_DCHECK_NE(&from, _this); + ::uint32_t cached_has_bits = 0; + (void)cached_has_bits; + + cached_has_bits = from._impl_._has_bits_[0]; + if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) { + if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { + _this->_internal_mutable_args()->InternalMergeFromWithArena( + ::google::protobuf::MessageLite::internal_visibility(), arena, + from._internal_args()); + } + if (CheckHasBit(cached_has_bits, 0x00000002U)) { + if (!from._internal_player_uuid().empty()) { + _this->_internal_set_player_uuid(from._internal_player_uuid()); + } else { + if (_this->_impl_.player_uuid_.IsDefault()) { + _this->_internal_set_player_uuid(""); + } + } + } + if (CheckHasBit(cached_has_bits, 0x00000004U)) { + if (!from._internal_name().empty()) { + _this->_internal_set_name(from._internal_name()); + } else { + if (_this->_impl_.name_.IsDefault()) { + _this->_internal_set_name(""); + } + } + } + if (CheckHasBit(cached_has_bits, 0x00000008U)) { + if (!from._internal_raw().empty()) { + _this->_internal_set_raw(from._internal_raw()); + } else { + if (_this->_impl_.raw_.IsDefault()) { + _this->_internal_set_raw(""); + } + } + } + if (CheckHasBit(cached_has_bits, 0x00000010U)) { + if (!from._internal_command().empty()) { + _this->_internal_set_command(from._internal_command()); + } else { + if (_this->_impl_.command_.IsDefault()) { + _this->_internal_set_command(""); + } + } + } + } + _this->_impl_._has_bits_[0] |= cached_has_bits; + _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( + from._internal_metadata_); +} + +void CommandEvent::CopyFrom(const CommandEvent& from) { + // @@protoc_insertion_point(class_specific_copy_from_start:df.plugin.CommandEvent) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + + +void CommandEvent::InternalSwap(CommandEvent* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) { + using ::std::swap; + auto* arena = GetArena(); + ABSL_DCHECK_EQ(arena, other->GetArena()); + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); + _impl_.args_.InternalSwap(&other->_impl_.args_); + ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.player_uuid_, &other->_impl_.player_uuid_, arena); + ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); + ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.raw_, &other->_impl_.raw_, arena); + ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.command_, &other->_impl_.command_, arena); +} + +::google::protobuf::Metadata CommandEvent::GetMetadata() const { + return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full()); +} +// @@protoc_insertion_point(namespace_scope) +} // namespace plugin +} // namespace df +namespace google { +namespace protobuf { +} // namespace protobuf +} // namespace google +// @@protoc_insertion_point(global_scope) +PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::std::false_type + _static_init2_ [[maybe_unused]] = + (::_pbi::AddDescriptors(&descriptor_table_command_2eproto), + ::std::false_type{}); +#include "google/protobuf/port_undef.inc" diff --git a/proto/generated/cpp/command.pb.h b/proto/generated/cpp/command.pb.h new file mode 100644 index 0000000..8c9df76 --- /dev/null +++ b/proto/generated/cpp/command.pb.h @@ -0,0 +1,1806 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: command.proto +// Protobuf C++ Version: 6.33.0 + +#ifndef command_2eproto_2epb_2eh +#define command_2eproto_2epb_2eh + +#include +#include +#include +#include + +#include "google/protobuf/runtime_version.h" +#if PROTOBUF_VERSION != 6033000 +#error "Protobuf C++ gencode is built with an incompatible version of" +#error "Protobuf C++ headers/runtime. See" +#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp" +#endif +#include "google/protobuf/io/coded_stream.h" +#include "google/protobuf/arena.h" +#include "google/protobuf/arenastring.h" +#include "google/protobuf/generated_message_tctable_decl.h" +#include "google/protobuf/generated_message_util.h" +#include "google/protobuf/metadata_lite.h" +#include "google/protobuf/generated_message_reflection.h" +#include "google/protobuf/message.h" +#include "google/protobuf/message_lite.h" +#include "google/protobuf/repeated_field.h" // IWYU pragma: export +#include "google/protobuf/extension_set.h" // IWYU pragma: export +#include "google/protobuf/generated_enum_reflection.h" +#include "google/protobuf/unknown_field_set.h" +// @@protoc_insertion_point(includes) + +// Must be included last. +#include "google/protobuf/port_def.inc" + +#define PROTOBUF_INTERNAL_EXPORT_command_2eproto + +namespace google { +namespace protobuf { +namespace internal { +template +::absl::string_view GetAnyMessageName(); +} // namespace internal +} // namespace protobuf +} // namespace google + +// Internal implementation detail -- do not use these members. +struct TableStruct_command_2eproto { + static const ::uint32_t offsets[]; +}; +extern "C" { +extern const ::google::protobuf::internal::DescriptorTable descriptor_table_command_2eproto; +} // extern "C" +namespace df { +namespace plugin { +enum ParamType : int; +extern const uint32_t ParamType_internal_data_[]; +class CommandEvent; +struct CommandEventDefaultTypeInternal; +extern CommandEventDefaultTypeInternal _CommandEvent_default_instance_; +extern const ::google::protobuf::internal::ClassDataFull CommandEvent_class_data_; +class CommandSpec; +struct CommandSpecDefaultTypeInternal; +extern CommandSpecDefaultTypeInternal _CommandSpec_default_instance_; +extern const ::google::protobuf::internal::ClassDataFull CommandSpec_class_data_; +class ParamSpec; +struct ParamSpecDefaultTypeInternal; +extern ParamSpecDefaultTypeInternal _ParamSpec_default_instance_; +extern const ::google::protobuf::internal::ClassDataFull ParamSpec_class_data_; +} // namespace plugin +} // namespace df +namespace google { +namespace protobuf { +template <> +internal::EnumTraitsT<::df::plugin::ParamType_internal_data_> + internal::EnumTraitsImpl::value<::df::plugin::ParamType>; +} // namespace protobuf +} // namespace google + +namespace df { +namespace plugin { +enum ParamType : int { + PARAM_STRING = 0, + PARAM_INT = 1, + PARAM_FLOAT = 2, + PARAM_BOOL = 3, + PARAM_VARARGS = 4, + PARAM_ENUM = 5, + ParamType_INT_MIN_SENTINEL_DO_NOT_USE_ = + ::std::numeric_limits<::int32_t>::min(), + ParamType_INT_MAX_SENTINEL_DO_NOT_USE_ = + ::std::numeric_limits<::int32_t>::max(), +}; + +extern const uint32_t ParamType_internal_data_[]; +inline constexpr ParamType ParamType_MIN = + static_cast(0); +inline constexpr ParamType ParamType_MAX = + static_cast(5); +inline bool ParamType_IsValid(int value) { + return 0 <= value && value <= 5; +} +inline constexpr int ParamType_ARRAYSIZE = 5 + 1; +const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ParamType_descriptor(); +template +const ::std::string& ParamType_Name(T value) { + static_assert(::std::is_same::value || + ::std::is_integral::value, + "Incorrect type passed to ParamType_Name()."); + return ParamType_Name(static_cast(value)); +} +template <> +inline const ::std::string& ParamType_Name(ParamType value) { + return ::google::protobuf::internal::NameOfDenseEnum( + static_cast(value)); +} +inline bool ParamType_Parse( + ::absl::string_view name, ParamType* PROTOBUF_NONNULL value) { + return ::google::protobuf::internal::ParseNamedEnum(ParamType_descriptor(), name, + value); +} + +// =================================================================== + + +// ------------------------------------------------------------------- + +class ParamSpec final : public ::google::protobuf::Message +/* @@protoc_insertion_point(class_definition:df.plugin.ParamSpec) */ { + public: + inline ParamSpec() : ParamSpec(nullptr) {} + ~ParamSpec() PROTOBUF_FINAL; + +#if defined(PROTOBUF_CUSTOM_VTABLE) + void operator delete(ParamSpec* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) { + SharedDtor(*msg); + ::google::protobuf::internal::SizedDelete(msg, sizeof(ParamSpec)); + } +#endif + + template + explicit PROTOBUF_CONSTEXPR ParamSpec(::google::protobuf::internal::ConstantInitialized); + + inline ParamSpec(const ParamSpec& from) : ParamSpec(nullptr, from) {} + inline ParamSpec(ParamSpec&& from) noexcept + : ParamSpec(nullptr, ::std::move(from)) {} + inline ParamSpec& operator=(const ParamSpec& from) { + CopyFrom(from); + return *this; + } + inline ParamSpec& operator=(ParamSpec&& from) noexcept { + if (this == &from) return *this; + if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) { + InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); + } + inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); + } + + static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() { + return GetDescriptor(); + } + static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() { + return default_instance().GetMetadata().descriptor; + } + static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() { + return default_instance().GetMetadata().reflection; + } + static const ParamSpec& default_instance() { + return *reinterpret_cast( + &_ParamSpec_default_instance_); + } + static constexpr int kIndexInFileMessages = 0; + friend void swap(ParamSpec& a, ParamSpec& b) { a.Swap(&b); } + inline void Swap(ParamSpec* PROTOBUF_NONNULL other) { + if (other == this) return; + if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) { + InternalSwap(other); + } else { + ::google::protobuf::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ParamSpec* PROTOBUF_NONNULL other) { + if (other == this) return; + ABSL_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + ParamSpec* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const { + return ::google::protobuf::Message::DefaultConstruct(arena); + } + using ::google::protobuf::Message::CopyFrom; + void CopyFrom(const ParamSpec& from); + using ::google::protobuf::Message::MergeFrom; + void MergeFrom(const ParamSpec& from) { ParamSpec::MergeImpl(*this, from); } + + private: + static void MergeImpl(::google::protobuf::MessageLite& to_msg, + const ::google::protobuf::MessageLite& from_msg); + + public: + bool IsInitialized() const { + return true; + } + ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL; + #if defined(PROTOBUF_CUSTOM_VTABLE) + private: + static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg); + static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( + const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream); + + public: + ::size_t ByteSizeLong() const { return ByteSizeLong(*this); } + ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( + ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const { + return _InternalSerialize(*this, target, stream); + } + #else // PROTOBUF_CUSTOM_VTABLE + ::size_t ByteSizeLong() const final; + ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( + ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final; + #endif // PROTOBUF_CUSTOM_VTABLE + int GetCachedSize() const { return _impl_._cached_size_.Get(); } + + private: + void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + static void SharedDtor(MessageLite& self); + void InternalSwap(ParamSpec* PROTOBUF_NONNULL other); + private: + template + friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)(); + static ::absl::string_view FullMessageName() { return "df.plugin.ParamSpec"; } + + explicit ParamSpec(::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + ParamSpec(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ParamSpec& from); + ParamSpec( + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ParamSpec&& from) noexcept + : ParamSpec(arena) { + *this = ::std::move(from); + } + const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL; + static void* PROTOBUF_NONNULL PlacementNew_( + const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + static constexpr auto InternalNewImpl_(); + + public: + static constexpr auto InternalGenerateClassData_(); + + ::google::protobuf::Metadata GetMetadata() const; + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + enum : int { + kEnumValuesFieldNumber = 5, + kNameFieldNumber = 1, + kSuffixFieldNumber = 4, + kTypeFieldNumber = 2, + kOptionalFieldNumber = 3, + }; + // repeated string enum_values = 5 [json_name = "enumValues"]; + int enum_values_size() const; + private: + int _internal_enum_values_size() const; + + public: + void clear_enum_values() ; + const ::std::string& enum_values(int index) const; + ::std::string* PROTOBUF_NONNULL mutable_enum_values(int index); + template + void set_enum_values(int index, Arg_&& value, Args_... args); + ::std::string* PROTOBUF_NONNULL add_enum_values(); + template + void add_enum_values(Arg_&& value, Args_... args); + const ::google::protobuf::RepeatedPtrField<::std::string>& enum_values() const; + ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_enum_values(); + + private: + const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_enum_values() const; + ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_enum_values(); + + public: + // string name = 1 [json_name = "name"]; + void clear_name() ; + const ::std::string& name() const; + template + void set_name(Arg_&& arg, Args_... args); + ::std::string* PROTOBUF_NONNULL mutable_name(); + [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name(); + void set_allocated_name(::std::string* PROTOBUF_NULLABLE value); + + private: + const ::std::string& _internal_name() const; + PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value); + ::std::string* PROTOBUF_NONNULL _internal_mutable_name(); + + public: + // string suffix = 4 [json_name = "suffix"]; + void clear_suffix() ; + const ::std::string& suffix() const; + template + void set_suffix(Arg_&& arg, Args_... args); + ::std::string* PROTOBUF_NONNULL mutable_suffix(); + [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_suffix(); + void set_allocated_suffix(::std::string* PROTOBUF_NULLABLE value); + + private: + const ::std::string& _internal_suffix() const; + PROTOBUF_ALWAYS_INLINE void _internal_set_suffix(const ::std::string& value); + ::std::string* PROTOBUF_NONNULL _internal_mutable_suffix(); + + public: + // .df.plugin.ParamType type = 2 [json_name = "type"]; + void clear_type() ; + ::df::plugin::ParamType type() const; + void set_type(::df::plugin::ParamType value); + + private: + ::df::plugin::ParamType _internal_type() const; + void _internal_set_type(::df::plugin::ParamType value); + + public: + // bool optional = 3 [json_name = "optional"]; + void clear_optional() ; + bool optional() const; + void set_optional(bool value); + + private: + bool _internal_optional() const; + void _internal_set_optional(bool value); + + public: + // @@protoc_insertion_point(class_scope:df.plugin.ParamSpec) + private: + class _Internal; + friend class ::google::protobuf::internal::TcParser; + static const ::google::protobuf::internal::TcParseTable<3, 5, + 0, 49, + 2> + _table_; + + friend class ::google::protobuf::MessageLite; + friend class ::google::protobuf::Arena; + template + friend class ::google::protobuf::Arena::InternalHelper; + using InternalArenaConstructable_ = void; + using DestructorSkippable_ = void; + struct Impl_ { + inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept; + inline explicit Impl_( + ::google::protobuf::internal::InternalVisibility visibility, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + inline explicit Impl_( + ::google::protobuf::internal::InternalVisibility visibility, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from, + const ParamSpec& from_msg); + ::google::protobuf::internal::HasBits<1> _has_bits_; + ::google::protobuf::internal::CachedSize _cached_size_; + ::google::protobuf::RepeatedPtrField<::std::string> enum_values_; + ::google::protobuf::internal::ArenaStringPtr name_; + ::google::protobuf::internal::ArenaStringPtr suffix_; + int type_; + bool optional_; + PROTOBUF_TSAN_DECLARE_MEMBER + }; + union { Impl_ _impl_; }; + friend struct ::TableStruct_command_2eproto; +}; + +extern const ::google::protobuf::internal::ClassDataFull ParamSpec_class_data_; +// ------------------------------------------------------------------- + +class CommandEvent final : public ::google::protobuf::Message +/* @@protoc_insertion_point(class_definition:df.plugin.CommandEvent) */ { + public: + inline CommandEvent() : CommandEvent(nullptr) {} + ~CommandEvent() PROTOBUF_FINAL; + +#if defined(PROTOBUF_CUSTOM_VTABLE) + void operator delete(CommandEvent* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) { + SharedDtor(*msg); + ::google::protobuf::internal::SizedDelete(msg, sizeof(CommandEvent)); + } +#endif + + template + explicit PROTOBUF_CONSTEXPR CommandEvent(::google::protobuf::internal::ConstantInitialized); + + inline CommandEvent(const CommandEvent& from) : CommandEvent(nullptr, from) {} + inline CommandEvent(CommandEvent&& from) noexcept + : CommandEvent(nullptr, ::std::move(from)) {} + inline CommandEvent& operator=(const CommandEvent& from) { + CopyFrom(from); + return *this; + } + inline CommandEvent& operator=(CommandEvent&& from) noexcept { + if (this == &from) return *this; + if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) { + InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); + } + inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); + } + + static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() { + return GetDescriptor(); + } + static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() { + return default_instance().GetMetadata().descriptor; + } + static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() { + return default_instance().GetMetadata().reflection; + } + static const CommandEvent& default_instance() { + return *reinterpret_cast( + &_CommandEvent_default_instance_); + } + static constexpr int kIndexInFileMessages = 2; + friend void swap(CommandEvent& a, CommandEvent& b) { a.Swap(&b); } + inline void Swap(CommandEvent* PROTOBUF_NONNULL other) { + if (other == this) return; + if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) { + InternalSwap(other); + } else { + ::google::protobuf::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CommandEvent* PROTOBUF_NONNULL other) { + if (other == this) return; + ABSL_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + CommandEvent* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const { + return ::google::protobuf::Message::DefaultConstruct(arena); + } + using ::google::protobuf::Message::CopyFrom; + void CopyFrom(const CommandEvent& from); + using ::google::protobuf::Message::MergeFrom; + void MergeFrom(const CommandEvent& from) { CommandEvent::MergeImpl(*this, from); } + + private: + static void MergeImpl(::google::protobuf::MessageLite& to_msg, + const ::google::protobuf::MessageLite& from_msg); + + public: + bool IsInitialized() const { + return true; + } + ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL; + #if defined(PROTOBUF_CUSTOM_VTABLE) + private: + static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg); + static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( + const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream); + + public: + ::size_t ByteSizeLong() const { return ByteSizeLong(*this); } + ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( + ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const { + return _InternalSerialize(*this, target, stream); + } + #else // PROTOBUF_CUSTOM_VTABLE + ::size_t ByteSizeLong() const final; + ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( + ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final; + #endif // PROTOBUF_CUSTOM_VTABLE + int GetCachedSize() const { return _impl_._cached_size_.Get(); } + + private: + void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + static void SharedDtor(MessageLite& self); + void InternalSwap(CommandEvent* PROTOBUF_NONNULL other); + private: + template + friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)(); + static ::absl::string_view FullMessageName() { return "df.plugin.CommandEvent"; } + + explicit CommandEvent(::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + CommandEvent(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CommandEvent& from); + CommandEvent( + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CommandEvent&& from) noexcept + : CommandEvent(arena) { + *this = ::std::move(from); + } + const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL; + static void* PROTOBUF_NONNULL PlacementNew_( + const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + static constexpr auto InternalNewImpl_(); + + public: + static constexpr auto InternalGenerateClassData_(); + + ::google::protobuf::Metadata GetMetadata() const; + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + enum : int { + kArgsFieldNumber = 5, + kPlayerUuidFieldNumber = 1, + kNameFieldNumber = 2, + kRawFieldNumber = 3, + kCommandFieldNumber = 4, + }; + // repeated string args = 5 [json_name = "args"]; + int args_size() const; + private: + int _internal_args_size() const; + + public: + void clear_args() ; + const ::std::string& args(int index) const; + ::std::string* PROTOBUF_NONNULL mutable_args(int index); + template + void set_args(int index, Arg_&& value, Args_... args); + ::std::string* PROTOBUF_NONNULL add_args(); + template + void add_args(Arg_&& value, Args_... args); + const ::google::protobuf::RepeatedPtrField<::std::string>& args() const; + ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_args(); + + private: + const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_args() const; + ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_args(); + + public: + // string player_uuid = 1 [json_name = "playerUuid"]; + void clear_player_uuid() ; + const ::std::string& player_uuid() const; + template + void set_player_uuid(Arg_&& arg, Args_... args); + ::std::string* PROTOBUF_NONNULL mutable_player_uuid(); + [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_player_uuid(); + void set_allocated_player_uuid(::std::string* PROTOBUF_NULLABLE value); + + private: + const ::std::string& _internal_player_uuid() const; + PROTOBUF_ALWAYS_INLINE void _internal_set_player_uuid(const ::std::string& value); + ::std::string* PROTOBUF_NONNULL _internal_mutable_player_uuid(); + + public: + // string name = 2 [json_name = "name"]; + void clear_name() ; + const ::std::string& name() const; + template + void set_name(Arg_&& arg, Args_... args); + ::std::string* PROTOBUF_NONNULL mutable_name(); + [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name(); + void set_allocated_name(::std::string* PROTOBUF_NULLABLE value); + + private: + const ::std::string& _internal_name() const; + PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value); + ::std::string* PROTOBUF_NONNULL _internal_mutable_name(); + + public: + // string raw = 3 [json_name = "raw"]; + void clear_raw() ; + const ::std::string& raw() const; + template + void set_raw(Arg_&& arg, Args_... args); + ::std::string* PROTOBUF_NONNULL mutable_raw(); + [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_raw(); + void set_allocated_raw(::std::string* PROTOBUF_NULLABLE value); + + private: + const ::std::string& _internal_raw() const; + PROTOBUF_ALWAYS_INLINE void _internal_set_raw(const ::std::string& value); + ::std::string* PROTOBUF_NONNULL _internal_mutable_raw(); + + public: + // string command = 4 [json_name = "command"]; + void clear_command() ; + const ::std::string& command() const; + template + void set_command(Arg_&& arg, Args_... args); + ::std::string* PROTOBUF_NONNULL mutable_command(); + [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_command(); + void set_allocated_command(::std::string* PROTOBUF_NULLABLE value); + + private: + const ::std::string& _internal_command() const; + PROTOBUF_ALWAYS_INLINE void _internal_set_command(const ::std::string& value); + ::std::string* PROTOBUF_NONNULL _internal_mutable_command(); + + public: + // @@protoc_insertion_point(class_scope:df.plugin.CommandEvent) + private: + class _Internal; + friend class ::google::protobuf::internal::TcParser; + static const ::google::protobuf::internal::TcParseTable<3, 5, + 0, 60, + 2> + _table_; + + friend class ::google::protobuf::MessageLite; + friend class ::google::protobuf::Arena; + template + friend class ::google::protobuf::Arena::InternalHelper; + using InternalArenaConstructable_ = void; + using DestructorSkippable_ = void; + struct Impl_ { + inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept; + inline explicit Impl_( + ::google::protobuf::internal::InternalVisibility visibility, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + inline explicit Impl_( + ::google::protobuf::internal::InternalVisibility visibility, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from, + const CommandEvent& from_msg); + ::google::protobuf::internal::HasBits<1> _has_bits_; + ::google::protobuf::internal::CachedSize _cached_size_; + ::google::protobuf::RepeatedPtrField<::std::string> args_; + ::google::protobuf::internal::ArenaStringPtr player_uuid_; + ::google::protobuf::internal::ArenaStringPtr name_; + ::google::protobuf::internal::ArenaStringPtr raw_; + ::google::protobuf::internal::ArenaStringPtr command_; + PROTOBUF_TSAN_DECLARE_MEMBER + }; + union { Impl_ _impl_; }; + friend struct ::TableStruct_command_2eproto; +}; + +extern const ::google::protobuf::internal::ClassDataFull CommandEvent_class_data_; +// ------------------------------------------------------------------- + +class CommandSpec final : public ::google::protobuf::Message +/* @@protoc_insertion_point(class_definition:df.plugin.CommandSpec) */ { + public: + inline CommandSpec() : CommandSpec(nullptr) {} + ~CommandSpec() PROTOBUF_FINAL; + +#if defined(PROTOBUF_CUSTOM_VTABLE) + void operator delete(CommandSpec* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) { + SharedDtor(*msg); + ::google::protobuf::internal::SizedDelete(msg, sizeof(CommandSpec)); + } +#endif + + template + explicit PROTOBUF_CONSTEXPR CommandSpec(::google::protobuf::internal::ConstantInitialized); + + inline CommandSpec(const CommandSpec& from) : CommandSpec(nullptr, from) {} + inline CommandSpec(CommandSpec&& from) noexcept + : CommandSpec(nullptr, ::std::move(from)) {} + inline CommandSpec& operator=(const CommandSpec& from) { + CopyFrom(from); + return *this; + } + inline CommandSpec& operator=(CommandSpec&& from) noexcept { + if (this == &from) return *this; + if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) { + InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); + } + inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); + } + + static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() { + return GetDescriptor(); + } + static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() { + return default_instance().GetMetadata().descriptor; + } + static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() { + return default_instance().GetMetadata().reflection; + } + static const CommandSpec& default_instance() { + return *reinterpret_cast( + &_CommandSpec_default_instance_); + } + static constexpr int kIndexInFileMessages = 1; + friend void swap(CommandSpec& a, CommandSpec& b) { a.Swap(&b); } + inline void Swap(CommandSpec* PROTOBUF_NONNULL other) { + if (other == this) return; + if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) { + InternalSwap(other); + } else { + ::google::protobuf::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(CommandSpec* PROTOBUF_NONNULL other) { + if (other == this) return; + ABSL_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + CommandSpec* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const { + return ::google::protobuf::Message::DefaultConstruct(arena); + } + using ::google::protobuf::Message::CopyFrom; + void CopyFrom(const CommandSpec& from); + using ::google::protobuf::Message::MergeFrom; + void MergeFrom(const CommandSpec& from) { CommandSpec::MergeImpl(*this, from); } + + private: + static void MergeImpl(::google::protobuf::MessageLite& to_msg, + const ::google::protobuf::MessageLite& from_msg); + + public: + bool IsInitialized() const { + return true; + } + ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL; + #if defined(PROTOBUF_CUSTOM_VTABLE) + private: + static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg); + static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( + const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream); + + public: + ::size_t ByteSizeLong() const { return ByteSizeLong(*this); } + ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( + ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const { + return _InternalSerialize(*this, target, stream); + } + #else // PROTOBUF_CUSTOM_VTABLE + ::size_t ByteSizeLong() const final; + ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( + ::uint8_t* PROTOBUF_NONNULL target, + ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final; + #endif // PROTOBUF_CUSTOM_VTABLE + int GetCachedSize() const { return _impl_._cached_size_.Get(); } + + private: + void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + static void SharedDtor(MessageLite& self); + void InternalSwap(CommandSpec* PROTOBUF_NONNULL other); + private: + template + friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)(); + static ::absl::string_view FullMessageName() { return "df.plugin.CommandSpec"; } + + explicit CommandSpec(::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + CommandSpec(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CommandSpec& from); + CommandSpec( + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CommandSpec&& from) noexcept + : CommandSpec(arena) { + *this = ::std::move(from); + } + const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL; + static void* PROTOBUF_NONNULL PlacementNew_( + const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + static constexpr auto InternalNewImpl_(); + + public: + static constexpr auto InternalGenerateClassData_(); + + ::google::protobuf::Metadata GetMetadata() const; + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + enum : int { + kAliasesFieldNumber = 3, + kParamsFieldNumber = 4, + kNameFieldNumber = 1, + kDescriptionFieldNumber = 2, + }; + // repeated string aliases = 3 [json_name = "aliases"]; + int aliases_size() const; + private: + int _internal_aliases_size() const; + + public: + void clear_aliases() ; + const ::std::string& aliases(int index) const; + ::std::string* PROTOBUF_NONNULL mutable_aliases(int index); + template + void set_aliases(int index, Arg_&& value, Args_... args); + ::std::string* PROTOBUF_NONNULL add_aliases(); + template + void add_aliases(Arg_&& value, Args_... args); + const ::google::protobuf::RepeatedPtrField<::std::string>& aliases() const; + ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_aliases(); + + private: + const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_aliases() const; + ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_aliases(); + + public: + // repeated .df.plugin.ParamSpec params = 4 [json_name = "params"]; + int params_size() const; + private: + int _internal_params_size() const; + + public: + void clear_params() ; + ::df::plugin::ParamSpec* PROTOBUF_NONNULL mutable_params(int index); + ::google::protobuf::RepeatedPtrField<::df::plugin::ParamSpec>* PROTOBUF_NONNULL mutable_params(); + + private: + const ::google::protobuf::RepeatedPtrField<::df::plugin::ParamSpec>& _internal_params() const; + ::google::protobuf::RepeatedPtrField<::df::plugin::ParamSpec>* PROTOBUF_NONNULL _internal_mutable_params(); + public: + const ::df::plugin::ParamSpec& params(int index) const; + ::df::plugin::ParamSpec* PROTOBUF_NONNULL add_params(); + const ::google::protobuf::RepeatedPtrField<::df::plugin::ParamSpec>& params() const; + // string name = 1 [json_name = "name"]; + void clear_name() ; + const ::std::string& name() const; + template + void set_name(Arg_&& arg, Args_... args); + ::std::string* PROTOBUF_NONNULL mutable_name(); + [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name(); + void set_allocated_name(::std::string* PROTOBUF_NULLABLE value); + + private: + const ::std::string& _internal_name() const; + PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value); + ::std::string* PROTOBUF_NONNULL _internal_mutable_name(); + + public: + // string description = 2 [json_name = "description"]; + void clear_description() ; + const ::std::string& description() const; + template + void set_description(Arg_&& arg, Args_... args); + ::std::string* PROTOBUF_NONNULL mutable_description(); + [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_description(); + void set_allocated_description(::std::string* PROTOBUF_NULLABLE value); + + private: + const ::std::string& _internal_description() const; + PROTOBUF_ALWAYS_INLINE void _internal_set_description(const ::std::string& value); + ::std::string* PROTOBUF_NONNULL _internal_mutable_description(); + + public: + // @@protoc_insertion_point(class_scope:df.plugin.CommandSpec) + private: + class _Internal; + friend class ::google::protobuf::internal::TcParser; + static const ::google::protobuf::internal::TcParseTable<2, 4, + 1, 52, + 2> + _table_; + + friend class ::google::protobuf::MessageLite; + friend class ::google::protobuf::Arena; + template + friend class ::google::protobuf::Arena::InternalHelper; + using InternalArenaConstructable_ = void; + using DestructorSkippable_ = void; + struct Impl_ { + inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept; + inline explicit Impl_( + ::google::protobuf::internal::InternalVisibility visibility, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena); + inline explicit Impl_( + ::google::protobuf::internal::InternalVisibility visibility, + ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from, + const CommandSpec& from_msg); + ::google::protobuf::internal::HasBits<1> _has_bits_; + ::google::protobuf::internal::CachedSize _cached_size_; + ::google::protobuf::RepeatedPtrField<::std::string> aliases_; + ::google::protobuf::RepeatedPtrField< ::df::plugin::ParamSpec > params_; + ::google::protobuf::internal::ArenaStringPtr name_; + ::google::protobuf::internal::ArenaStringPtr description_; + PROTOBUF_TSAN_DECLARE_MEMBER + }; + union { Impl_ _impl_; }; + friend struct ::TableStruct_command_2eproto; +}; + +extern const ::google::protobuf::internal::ClassDataFull CommandSpec_class_data_; + +// =================================================================== + + + + +// =================================================================== + + +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif // __GNUC__ +// ------------------------------------------------------------------- + +// ParamSpec + +// string name = 1 [json_name = "name"]; +inline void ParamSpec::clear_name() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.name_.ClearToEmpty(); + ClearHasBit(_impl_._has_bits_[0], + 0x00000002U); +} +inline const ::std::string& ParamSpec::name() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.ParamSpec.name) + return _internal_name(); +} +template +PROTOBUF_ALWAYS_INLINE void ParamSpec::set_name(Arg_&& arg, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + SetHasBit(_impl_._has_bits_[0], 0x00000002U); + _impl_.name_.Set(static_cast(arg), args..., GetArena()); + // @@protoc_insertion_point(field_set:df.plugin.ParamSpec.name) +} +inline ::std::string* PROTOBUF_NONNULL ParamSpec::mutable_name() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBit(_impl_._has_bits_[0], 0x00000002U); + ::std::string* _s = _internal_mutable_name(); + // @@protoc_insertion_point(field_mutable:df.plugin.ParamSpec.name) + return _s; +} +inline const ::std::string& ParamSpec::_internal_name() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.name_.Get(); +} +inline void ParamSpec::_internal_set_name(const ::std::string& value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.name_.Set(value, GetArena()); +} +inline ::std::string* PROTOBUF_NONNULL ParamSpec::_internal_mutable_name() { + ::google::protobuf::internal::TSanWrite(&_impl_); + return _impl_.name_.Mutable( GetArena()); +} +inline ::std::string* PROTOBUF_NULLABLE ParamSpec::release_name() { + ::google::protobuf::internal::TSanWrite(&_impl_); + // @@protoc_insertion_point(field_release:df.plugin.ParamSpec.name) + if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) { + return nullptr; + } + ClearHasBit(_impl_._has_bits_[0], 0x00000002U); + auto* released = _impl_.name_.Release(); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { + _impl_.name_.Set("", GetArena()); + } + return released; +} +inline void ParamSpec::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + if (value != nullptr) { + SetHasBit(_impl_._has_bits_[0], 0x00000002U); + } else { + ClearHasBit(_impl_._has_bits_[0], 0x00000002U); + } + _impl_.name_.SetAllocated(value, GetArena()); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) { + _impl_.name_.Set("", GetArena()); + } + // @@protoc_insertion_point(field_set_allocated:df.plugin.ParamSpec.name) +} + +// .df.plugin.ParamType type = 2 [json_name = "type"]; +inline void ParamSpec::clear_type() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.type_ = 0; + ClearHasBit(_impl_._has_bits_[0], + 0x00000008U); +} +inline ::df::plugin::ParamType ParamSpec::type() const { + // @@protoc_insertion_point(field_get:df.plugin.ParamSpec.type) + return _internal_type(); +} +inline void ParamSpec::set_type(::df::plugin::ParamType value) { + _internal_set_type(value); + SetHasBit(_impl_._has_bits_[0], 0x00000008U); + // @@protoc_insertion_point(field_set:df.plugin.ParamSpec.type) +} +inline ::df::plugin::ParamType ParamSpec::_internal_type() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return static_cast<::df::plugin::ParamType>(_impl_.type_); +} +inline void ParamSpec::_internal_set_type(::df::plugin::ParamType value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.type_ = value; +} + +// bool optional = 3 [json_name = "optional"]; +inline void ParamSpec::clear_optional() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.optional_ = false; + ClearHasBit(_impl_._has_bits_[0], + 0x00000010U); +} +inline bool ParamSpec::optional() const { + // @@protoc_insertion_point(field_get:df.plugin.ParamSpec.optional) + return _internal_optional(); +} +inline void ParamSpec::set_optional(bool value) { + _internal_set_optional(value); + SetHasBit(_impl_._has_bits_[0], 0x00000010U); + // @@protoc_insertion_point(field_set:df.plugin.ParamSpec.optional) +} +inline bool ParamSpec::_internal_optional() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.optional_; +} +inline void ParamSpec::_internal_set_optional(bool value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.optional_ = value; +} + +// string suffix = 4 [json_name = "suffix"]; +inline void ParamSpec::clear_suffix() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.suffix_.ClearToEmpty(); + ClearHasBit(_impl_._has_bits_[0], + 0x00000004U); +} +inline const ::std::string& ParamSpec::suffix() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.ParamSpec.suffix) + return _internal_suffix(); +} +template +PROTOBUF_ALWAYS_INLINE void ParamSpec::set_suffix(Arg_&& arg, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + SetHasBit(_impl_._has_bits_[0], 0x00000004U); + _impl_.suffix_.Set(static_cast(arg), args..., GetArena()); + // @@protoc_insertion_point(field_set:df.plugin.ParamSpec.suffix) +} +inline ::std::string* PROTOBUF_NONNULL ParamSpec::mutable_suffix() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBit(_impl_._has_bits_[0], 0x00000004U); + ::std::string* _s = _internal_mutable_suffix(); + // @@protoc_insertion_point(field_mutable:df.plugin.ParamSpec.suffix) + return _s; +} +inline const ::std::string& ParamSpec::_internal_suffix() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.suffix_.Get(); +} +inline void ParamSpec::_internal_set_suffix(const ::std::string& value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.suffix_.Set(value, GetArena()); +} +inline ::std::string* PROTOBUF_NONNULL ParamSpec::_internal_mutable_suffix() { + ::google::protobuf::internal::TSanWrite(&_impl_); + return _impl_.suffix_.Mutable( GetArena()); +} +inline ::std::string* PROTOBUF_NULLABLE ParamSpec::release_suffix() { + ::google::protobuf::internal::TSanWrite(&_impl_); + // @@protoc_insertion_point(field_release:df.plugin.ParamSpec.suffix) + if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) { + return nullptr; + } + ClearHasBit(_impl_._has_bits_[0], 0x00000004U); + auto* released = _impl_.suffix_.Release(); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { + _impl_.suffix_.Set("", GetArena()); + } + return released; +} +inline void ParamSpec::set_allocated_suffix(::std::string* PROTOBUF_NULLABLE value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + if (value != nullptr) { + SetHasBit(_impl_._has_bits_[0], 0x00000004U); + } else { + ClearHasBit(_impl_._has_bits_[0], 0x00000004U); + } + _impl_.suffix_.SetAllocated(value, GetArena()); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.suffix_.IsDefault()) { + _impl_.suffix_.Set("", GetArena()); + } + // @@protoc_insertion_point(field_set_allocated:df.plugin.ParamSpec.suffix) +} + +// repeated string enum_values = 5 [json_name = "enumValues"]; +inline int ParamSpec::_internal_enum_values_size() const { + return _internal_enum_values().size(); +} +inline int ParamSpec::enum_values_size() const { + return _internal_enum_values_size(); +} +inline void ParamSpec::clear_enum_values() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.enum_values_.Clear(); + ClearHasBitForRepeated(_impl_._has_bits_[0], + 0x00000001U); +} +inline ::std::string* PROTOBUF_NONNULL ParamSpec::add_enum_values() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + ::google::protobuf::internal::TSanWrite(&_impl_); + ::std::string* _s = + _internal_mutable_enum_values()->InternalAddWithArena( + ::google::protobuf::MessageLite::internal_visibility(), GetArena()); + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); + // @@protoc_insertion_point(field_add_mutable:df.plugin.ParamSpec.enum_values) + return _s; +} +inline const ::std::string& ParamSpec::enum_values(int index) const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.ParamSpec.enum_values) + return _internal_enum_values().Get(index); +} +inline ::std::string* PROTOBUF_NONNULL ParamSpec::mutable_enum_values(int index) + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_mutable:df.plugin.ParamSpec.enum_values) + return _internal_mutable_enum_values()->Mutable(index); +} +template +inline void ParamSpec::set_enum_values(int index, Arg_&& value, Args_... args) { + ::google::protobuf::internal::AssignToString(*_internal_mutable_enum_values()->Mutable(index), ::std::forward(value), + args... ); + // @@protoc_insertion_point(field_set:df.plugin.ParamSpec.enum_values) +} +template +inline void ParamSpec::add_enum_values(Arg_&& value, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + ::google::protobuf::internal::AddToRepeatedPtrField( + ::google::protobuf::MessageLite::internal_visibility(), GetArena(), + *_internal_mutable_enum_values(), ::std::forward(value), + args... ); + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); + // @@protoc_insertion_point(field_add:df.plugin.ParamSpec.enum_values) +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& ParamSpec::enum_values() + const ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_list:df.plugin.ParamSpec.enum_values) + return _internal_enum_values(); +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL +ParamSpec::mutable_enum_values() ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); + // @@protoc_insertion_point(field_mutable_list:df.plugin.ParamSpec.enum_values) + ::google::protobuf::internal::TSanWrite(&_impl_); + return _internal_mutable_enum_values(); +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& +ParamSpec::_internal_enum_values() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.enum_values_; +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL +ParamSpec::_internal_mutable_enum_values() { + ::google::protobuf::internal::TSanRead(&_impl_); + return &_impl_.enum_values_; +} + +// ------------------------------------------------------------------- + +// CommandSpec + +// string name = 1 [json_name = "name"]; +inline void CommandSpec::clear_name() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.name_.ClearToEmpty(); + ClearHasBit(_impl_._has_bits_[0], + 0x00000004U); +} +inline const ::std::string& CommandSpec::name() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.CommandSpec.name) + return _internal_name(); +} +template +PROTOBUF_ALWAYS_INLINE void CommandSpec::set_name(Arg_&& arg, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + SetHasBit(_impl_._has_bits_[0], 0x00000004U); + _impl_.name_.Set(static_cast(arg), args..., GetArena()); + // @@protoc_insertion_point(field_set:df.plugin.CommandSpec.name) +} +inline ::std::string* PROTOBUF_NONNULL CommandSpec::mutable_name() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBit(_impl_._has_bits_[0], 0x00000004U); + ::std::string* _s = _internal_mutable_name(); + // @@protoc_insertion_point(field_mutable:df.plugin.CommandSpec.name) + return _s; +} +inline const ::std::string& CommandSpec::_internal_name() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.name_.Get(); +} +inline void CommandSpec::_internal_set_name(const ::std::string& value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.name_.Set(value, GetArena()); +} +inline ::std::string* PROTOBUF_NONNULL CommandSpec::_internal_mutable_name() { + ::google::protobuf::internal::TSanWrite(&_impl_); + return _impl_.name_.Mutable( GetArena()); +} +inline ::std::string* PROTOBUF_NULLABLE CommandSpec::release_name() { + ::google::protobuf::internal::TSanWrite(&_impl_); + // @@protoc_insertion_point(field_release:df.plugin.CommandSpec.name) + if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) { + return nullptr; + } + ClearHasBit(_impl_._has_bits_[0], 0x00000004U); + auto* released = _impl_.name_.Release(); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { + _impl_.name_.Set("", GetArena()); + } + return released; +} +inline void CommandSpec::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + if (value != nullptr) { + SetHasBit(_impl_._has_bits_[0], 0x00000004U); + } else { + ClearHasBit(_impl_._has_bits_[0], 0x00000004U); + } + _impl_.name_.SetAllocated(value, GetArena()); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) { + _impl_.name_.Set("", GetArena()); + } + // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandSpec.name) +} + +// string description = 2 [json_name = "description"]; +inline void CommandSpec::clear_description() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.description_.ClearToEmpty(); + ClearHasBit(_impl_._has_bits_[0], + 0x00000008U); +} +inline const ::std::string& CommandSpec::description() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.CommandSpec.description) + return _internal_description(); +} +template +PROTOBUF_ALWAYS_INLINE void CommandSpec::set_description(Arg_&& arg, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + SetHasBit(_impl_._has_bits_[0], 0x00000008U); + _impl_.description_.Set(static_cast(arg), args..., GetArena()); + // @@protoc_insertion_point(field_set:df.plugin.CommandSpec.description) +} +inline ::std::string* PROTOBUF_NONNULL CommandSpec::mutable_description() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBit(_impl_._has_bits_[0], 0x00000008U); + ::std::string* _s = _internal_mutable_description(); + // @@protoc_insertion_point(field_mutable:df.plugin.CommandSpec.description) + return _s; +} +inline const ::std::string& CommandSpec::_internal_description() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.description_.Get(); +} +inline void CommandSpec::_internal_set_description(const ::std::string& value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.description_.Set(value, GetArena()); +} +inline ::std::string* PROTOBUF_NONNULL CommandSpec::_internal_mutable_description() { + ::google::protobuf::internal::TSanWrite(&_impl_); + return _impl_.description_.Mutable( GetArena()); +} +inline ::std::string* PROTOBUF_NULLABLE CommandSpec::release_description() { + ::google::protobuf::internal::TSanWrite(&_impl_); + // @@protoc_insertion_point(field_release:df.plugin.CommandSpec.description) + if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) { + return nullptr; + } + ClearHasBit(_impl_._has_bits_[0], 0x00000008U); + auto* released = _impl_.description_.Release(); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { + _impl_.description_.Set("", GetArena()); + } + return released; +} +inline void CommandSpec::set_allocated_description(::std::string* PROTOBUF_NULLABLE value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + if (value != nullptr) { + SetHasBit(_impl_._has_bits_[0], 0x00000008U); + } else { + ClearHasBit(_impl_._has_bits_[0], 0x00000008U); + } + _impl_.description_.SetAllocated(value, GetArena()); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.description_.IsDefault()) { + _impl_.description_.Set("", GetArena()); + } + // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandSpec.description) +} + +// repeated string aliases = 3 [json_name = "aliases"]; +inline int CommandSpec::_internal_aliases_size() const { + return _internal_aliases().size(); +} +inline int CommandSpec::aliases_size() const { + return _internal_aliases_size(); +} +inline void CommandSpec::clear_aliases() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.aliases_.Clear(); + ClearHasBitForRepeated(_impl_._has_bits_[0], + 0x00000001U); +} +inline ::std::string* PROTOBUF_NONNULL CommandSpec::add_aliases() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + ::google::protobuf::internal::TSanWrite(&_impl_); + ::std::string* _s = + _internal_mutable_aliases()->InternalAddWithArena( + ::google::protobuf::MessageLite::internal_visibility(), GetArena()); + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); + // @@protoc_insertion_point(field_add_mutable:df.plugin.CommandSpec.aliases) + return _s; +} +inline const ::std::string& CommandSpec::aliases(int index) const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.CommandSpec.aliases) + return _internal_aliases().Get(index); +} +inline ::std::string* PROTOBUF_NONNULL CommandSpec::mutable_aliases(int index) + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_mutable:df.plugin.CommandSpec.aliases) + return _internal_mutable_aliases()->Mutable(index); +} +template +inline void CommandSpec::set_aliases(int index, Arg_&& value, Args_... args) { + ::google::protobuf::internal::AssignToString(*_internal_mutable_aliases()->Mutable(index), ::std::forward(value), + args... ); + // @@protoc_insertion_point(field_set:df.plugin.CommandSpec.aliases) +} +template +inline void CommandSpec::add_aliases(Arg_&& value, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + ::google::protobuf::internal::AddToRepeatedPtrField( + ::google::protobuf::MessageLite::internal_visibility(), GetArena(), + *_internal_mutable_aliases(), ::std::forward(value), + args... ); + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); + // @@protoc_insertion_point(field_add:df.plugin.CommandSpec.aliases) +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& CommandSpec::aliases() + const ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_list:df.plugin.CommandSpec.aliases) + return _internal_aliases(); +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL +CommandSpec::mutable_aliases() ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); + // @@protoc_insertion_point(field_mutable_list:df.plugin.CommandSpec.aliases) + ::google::protobuf::internal::TSanWrite(&_impl_); + return _internal_mutable_aliases(); +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& +CommandSpec::_internal_aliases() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.aliases_; +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL +CommandSpec::_internal_mutable_aliases() { + ::google::protobuf::internal::TSanRead(&_impl_); + return &_impl_.aliases_; +} + +// repeated .df.plugin.ParamSpec params = 4 [json_name = "params"]; +inline int CommandSpec::_internal_params_size() const { + return _internal_params().size(); +} +inline int CommandSpec::params_size() const { + return _internal_params_size(); +} +inline void CommandSpec::clear_params() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.params_.Clear(); + ClearHasBitForRepeated(_impl_._has_bits_[0], + 0x00000002U); +} +inline ::df::plugin::ParamSpec* PROTOBUF_NONNULL CommandSpec::mutable_params(int index) + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_mutable:df.plugin.CommandSpec.params) + return _internal_mutable_params()->Mutable(index); +} +inline ::google::protobuf::RepeatedPtrField<::df::plugin::ParamSpec>* PROTOBUF_NONNULL CommandSpec::mutable_params() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U); + // @@protoc_insertion_point(field_mutable_list:df.plugin.CommandSpec.params) + ::google::protobuf::internal::TSanWrite(&_impl_); + return _internal_mutable_params(); +} +inline const ::df::plugin::ParamSpec& CommandSpec::params(int index) const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.CommandSpec.params) + return _internal_params().Get(index); +} +inline ::df::plugin::ParamSpec* PROTOBUF_NONNULL CommandSpec::add_params() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + ::google::protobuf::internal::TSanWrite(&_impl_); + ::df::plugin::ParamSpec* _add = + _internal_mutable_params()->InternalAddWithArena( + ::google::protobuf::MessageLite::internal_visibility(), GetArena()); + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U); + // @@protoc_insertion_point(field_add:df.plugin.CommandSpec.params) + return _add; +} +inline const ::google::protobuf::RepeatedPtrField<::df::plugin::ParamSpec>& CommandSpec::params() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_list:df.plugin.CommandSpec.params) + return _internal_params(); +} +inline const ::google::protobuf::RepeatedPtrField<::df::plugin::ParamSpec>& +CommandSpec::_internal_params() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.params_; +} +inline ::google::protobuf::RepeatedPtrField<::df::plugin::ParamSpec>* PROTOBUF_NONNULL +CommandSpec::_internal_mutable_params() { + ::google::protobuf::internal::TSanRead(&_impl_); + return &_impl_.params_; +} + +// ------------------------------------------------------------------- + +// CommandEvent + +// string player_uuid = 1 [json_name = "playerUuid"]; +inline void CommandEvent::clear_player_uuid() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.player_uuid_.ClearToEmpty(); + ClearHasBit(_impl_._has_bits_[0], + 0x00000002U); +} +inline const ::std::string& CommandEvent::player_uuid() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.CommandEvent.player_uuid) + return _internal_player_uuid(); +} +template +PROTOBUF_ALWAYS_INLINE void CommandEvent::set_player_uuid(Arg_&& arg, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + SetHasBit(_impl_._has_bits_[0], 0x00000002U); + _impl_.player_uuid_.Set(static_cast(arg), args..., GetArena()); + // @@protoc_insertion_point(field_set:df.plugin.CommandEvent.player_uuid) +} +inline ::std::string* PROTOBUF_NONNULL CommandEvent::mutable_player_uuid() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBit(_impl_._has_bits_[0], 0x00000002U); + ::std::string* _s = _internal_mutable_player_uuid(); + // @@protoc_insertion_point(field_mutable:df.plugin.CommandEvent.player_uuid) + return _s; +} +inline const ::std::string& CommandEvent::_internal_player_uuid() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.player_uuid_.Get(); +} +inline void CommandEvent::_internal_set_player_uuid(const ::std::string& value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.player_uuid_.Set(value, GetArena()); +} +inline ::std::string* PROTOBUF_NONNULL CommandEvent::_internal_mutable_player_uuid() { + ::google::protobuf::internal::TSanWrite(&_impl_); + return _impl_.player_uuid_.Mutable( GetArena()); +} +inline ::std::string* PROTOBUF_NULLABLE CommandEvent::release_player_uuid() { + ::google::protobuf::internal::TSanWrite(&_impl_); + // @@protoc_insertion_point(field_release:df.plugin.CommandEvent.player_uuid) + if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) { + return nullptr; + } + ClearHasBit(_impl_._has_bits_[0], 0x00000002U); + auto* released = _impl_.player_uuid_.Release(); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { + _impl_.player_uuid_.Set("", GetArena()); + } + return released; +} +inline void CommandEvent::set_allocated_player_uuid(::std::string* PROTOBUF_NULLABLE value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + if (value != nullptr) { + SetHasBit(_impl_._has_bits_[0], 0x00000002U); + } else { + ClearHasBit(_impl_._has_bits_[0], 0x00000002U); + } + _impl_.player_uuid_.SetAllocated(value, GetArena()); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.player_uuid_.IsDefault()) { + _impl_.player_uuid_.Set("", GetArena()); + } + // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandEvent.player_uuid) +} + +// string name = 2 [json_name = "name"]; +inline void CommandEvent::clear_name() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.name_.ClearToEmpty(); + ClearHasBit(_impl_._has_bits_[0], + 0x00000004U); +} +inline const ::std::string& CommandEvent::name() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.CommandEvent.name) + return _internal_name(); +} +template +PROTOBUF_ALWAYS_INLINE void CommandEvent::set_name(Arg_&& arg, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + SetHasBit(_impl_._has_bits_[0], 0x00000004U); + _impl_.name_.Set(static_cast(arg), args..., GetArena()); + // @@protoc_insertion_point(field_set:df.plugin.CommandEvent.name) +} +inline ::std::string* PROTOBUF_NONNULL CommandEvent::mutable_name() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBit(_impl_._has_bits_[0], 0x00000004U); + ::std::string* _s = _internal_mutable_name(); + // @@protoc_insertion_point(field_mutable:df.plugin.CommandEvent.name) + return _s; +} +inline const ::std::string& CommandEvent::_internal_name() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.name_.Get(); +} +inline void CommandEvent::_internal_set_name(const ::std::string& value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.name_.Set(value, GetArena()); +} +inline ::std::string* PROTOBUF_NONNULL CommandEvent::_internal_mutable_name() { + ::google::protobuf::internal::TSanWrite(&_impl_); + return _impl_.name_.Mutable( GetArena()); +} +inline ::std::string* PROTOBUF_NULLABLE CommandEvent::release_name() { + ::google::protobuf::internal::TSanWrite(&_impl_); + // @@protoc_insertion_point(field_release:df.plugin.CommandEvent.name) + if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) { + return nullptr; + } + ClearHasBit(_impl_._has_bits_[0], 0x00000004U); + auto* released = _impl_.name_.Release(); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { + _impl_.name_.Set("", GetArena()); + } + return released; +} +inline void CommandEvent::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + if (value != nullptr) { + SetHasBit(_impl_._has_bits_[0], 0x00000004U); + } else { + ClearHasBit(_impl_._has_bits_[0], 0x00000004U); + } + _impl_.name_.SetAllocated(value, GetArena()); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) { + _impl_.name_.Set("", GetArena()); + } + // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandEvent.name) +} + +// string raw = 3 [json_name = "raw"]; +inline void CommandEvent::clear_raw() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.raw_.ClearToEmpty(); + ClearHasBit(_impl_._has_bits_[0], + 0x00000008U); +} +inline const ::std::string& CommandEvent::raw() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.CommandEvent.raw) + return _internal_raw(); +} +template +PROTOBUF_ALWAYS_INLINE void CommandEvent::set_raw(Arg_&& arg, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + SetHasBit(_impl_._has_bits_[0], 0x00000008U); + _impl_.raw_.Set(static_cast(arg), args..., GetArena()); + // @@protoc_insertion_point(field_set:df.plugin.CommandEvent.raw) +} +inline ::std::string* PROTOBUF_NONNULL CommandEvent::mutable_raw() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBit(_impl_._has_bits_[0], 0x00000008U); + ::std::string* _s = _internal_mutable_raw(); + // @@protoc_insertion_point(field_mutable:df.plugin.CommandEvent.raw) + return _s; +} +inline const ::std::string& CommandEvent::_internal_raw() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.raw_.Get(); +} +inline void CommandEvent::_internal_set_raw(const ::std::string& value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.raw_.Set(value, GetArena()); +} +inline ::std::string* PROTOBUF_NONNULL CommandEvent::_internal_mutable_raw() { + ::google::protobuf::internal::TSanWrite(&_impl_); + return _impl_.raw_.Mutable( GetArena()); +} +inline ::std::string* PROTOBUF_NULLABLE CommandEvent::release_raw() { + ::google::protobuf::internal::TSanWrite(&_impl_); + // @@protoc_insertion_point(field_release:df.plugin.CommandEvent.raw) + if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) { + return nullptr; + } + ClearHasBit(_impl_._has_bits_[0], 0x00000008U); + auto* released = _impl_.raw_.Release(); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { + _impl_.raw_.Set("", GetArena()); + } + return released; +} +inline void CommandEvent::set_allocated_raw(::std::string* PROTOBUF_NULLABLE value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + if (value != nullptr) { + SetHasBit(_impl_._has_bits_[0], 0x00000008U); + } else { + ClearHasBit(_impl_._has_bits_[0], 0x00000008U); + } + _impl_.raw_.SetAllocated(value, GetArena()); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.raw_.IsDefault()) { + _impl_.raw_.Set("", GetArena()); + } + // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandEvent.raw) +} + +// string command = 4 [json_name = "command"]; +inline void CommandEvent::clear_command() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.command_.ClearToEmpty(); + ClearHasBit(_impl_._has_bits_[0], + 0x00000010U); +} +inline const ::std::string& CommandEvent::command() const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.CommandEvent.command) + return _internal_command(); +} +template +PROTOBUF_ALWAYS_INLINE void CommandEvent::set_command(Arg_&& arg, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + SetHasBit(_impl_._has_bits_[0], 0x00000010U); + _impl_.command_.Set(static_cast(arg), args..., GetArena()); + // @@protoc_insertion_point(field_set:df.plugin.CommandEvent.command) +} +inline ::std::string* PROTOBUF_NONNULL CommandEvent::mutable_command() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBit(_impl_._has_bits_[0], 0x00000010U); + ::std::string* _s = _internal_mutable_command(); + // @@protoc_insertion_point(field_mutable:df.plugin.CommandEvent.command) + return _s; +} +inline const ::std::string& CommandEvent::_internal_command() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.command_.Get(); +} +inline void CommandEvent::_internal_set_command(const ::std::string& value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.command_.Set(value, GetArena()); +} +inline ::std::string* PROTOBUF_NONNULL CommandEvent::_internal_mutable_command() { + ::google::protobuf::internal::TSanWrite(&_impl_); + return _impl_.command_.Mutable( GetArena()); +} +inline ::std::string* PROTOBUF_NULLABLE CommandEvent::release_command() { + ::google::protobuf::internal::TSanWrite(&_impl_); + // @@protoc_insertion_point(field_release:df.plugin.CommandEvent.command) + if (!CheckHasBit(_impl_._has_bits_[0], 0x00000010U)) { + return nullptr; + } + ClearHasBit(_impl_._has_bits_[0], 0x00000010U); + auto* released = _impl_.command_.Release(); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { + _impl_.command_.Set("", GetArena()); + } + return released; +} +inline void CommandEvent::set_allocated_command(::std::string* PROTOBUF_NULLABLE value) { + ::google::protobuf::internal::TSanWrite(&_impl_); + if (value != nullptr) { + SetHasBit(_impl_._has_bits_[0], 0x00000010U); + } else { + ClearHasBit(_impl_._has_bits_[0], 0x00000010U); + } + _impl_.command_.SetAllocated(value, GetArena()); + if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.command_.IsDefault()) { + _impl_.command_.Set("", GetArena()); + } + // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandEvent.command) +} + +// repeated string args = 5 [json_name = "args"]; +inline int CommandEvent::_internal_args_size() const { + return _internal_args().size(); +} +inline int CommandEvent::args_size() const { + return _internal_args_size(); +} +inline void CommandEvent::clear_args() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.args_.Clear(); + ClearHasBitForRepeated(_impl_._has_bits_[0], + 0x00000001U); +} +inline ::std::string* PROTOBUF_NONNULL CommandEvent::add_args() + ABSL_ATTRIBUTE_LIFETIME_BOUND { + ::google::protobuf::internal::TSanWrite(&_impl_); + ::std::string* _s = + _internal_mutable_args()->InternalAddWithArena( + ::google::protobuf::MessageLite::internal_visibility(), GetArena()); + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); + // @@protoc_insertion_point(field_add_mutable:df.plugin.CommandEvent.args) + return _s; +} +inline const ::std::string& CommandEvent::args(int index) const + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_get:df.plugin.CommandEvent.args) + return _internal_args().Get(index); +} +inline ::std::string* PROTOBUF_NONNULL CommandEvent::mutable_args(int index) + ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_mutable:df.plugin.CommandEvent.args) + return _internal_mutable_args()->Mutable(index); +} +template +inline void CommandEvent::set_args(int index, Arg_&& value, Args_... args) { + ::google::protobuf::internal::AssignToString(*_internal_mutable_args()->Mutable(index), ::std::forward(value), + args... ); + // @@protoc_insertion_point(field_set:df.plugin.CommandEvent.args) +} +template +inline void CommandEvent::add_args(Arg_&& value, Args_... args) { + ::google::protobuf::internal::TSanWrite(&_impl_); + ::google::protobuf::internal::AddToRepeatedPtrField( + ::google::protobuf::MessageLite::internal_visibility(), GetArena(), + *_internal_mutable_args(), ::std::forward(value), + args... ); + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); + // @@protoc_insertion_point(field_add:df.plugin.CommandEvent.args) +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& CommandEvent::args() + const ABSL_ATTRIBUTE_LIFETIME_BOUND { + // @@protoc_insertion_point(field_list:df.plugin.CommandEvent.args) + return _internal_args(); +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL +CommandEvent::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { + SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); + // @@protoc_insertion_point(field_mutable_list:df.plugin.CommandEvent.args) + ::google::protobuf::internal::TSanWrite(&_impl_); + return _internal_mutable_args(); +} +inline const ::google::protobuf::RepeatedPtrField<::std::string>& +CommandEvent::_internal_args() const { + ::google::protobuf::internal::TSanRead(&_impl_); + return _impl_.args_; +} +inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL +CommandEvent::_internal_mutable_args() { + ::google::protobuf::internal::TSanRead(&_impl_); + return &_impl_.args_; +} + +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif // __GNUC__ + +// @@protoc_insertion_point(namespace_scope) +} // namespace plugin +} // namespace df + + +namespace google { +namespace protobuf { + +template <> +struct is_proto_enum<::df::plugin::ParamType> : std::true_type {}; +template <> +inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::df::plugin::ParamType>() { + return ::df::plugin::ParamType_descriptor(); +} + +} // namespace protobuf +} // namespace google + +// @@protoc_insertion_point(global_scope) + +#include "google/protobuf/port_undef.inc" + +#endif // command_2eproto_2epb_2eh diff --git a/proto/generated/cpp/player_events.pb.cc b/proto/generated/cpp/player_events.pb.cc index 08c4e5f..6ecbc11 100644 --- a/proto/generated/cpp/player_events.pb.cc +++ b/proto/generated/cpp/player_events.pb.cc @@ -359,43 +359,6 @@ struct PlayerDiagnosticsEventDefaultTypeInternal { PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PlayerDiagnosticsEventDefaultTypeInternal _PlayerDiagnosticsEvent_default_instance_; -inline constexpr CommandEvent::Impl_::Impl_( - ::_pbi::ConstantInitialized) noexcept - : _cached_size_{0}, - args_{}, - player_uuid_( - &::google::protobuf::internal::fixed_address_empty_string, - ::_pbi::ConstantInitialized()), - name_( - &::google::protobuf::internal::fixed_address_empty_string, - ::_pbi::ConstantInitialized()), - raw_( - &::google::protobuf::internal::fixed_address_empty_string, - ::_pbi::ConstantInitialized()), - command_( - &::google::protobuf::internal::fixed_address_empty_string, - ::_pbi::ConstantInitialized()) {} - -template -PROTOBUF_CONSTEXPR CommandEvent::CommandEvent(::_pbi::ConstantInitialized) -#if defined(PROTOBUF_CUSTOM_VTABLE) - : ::google::protobuf::Message(CommandEvent_class_data_.base()), -#else // PROTOBUF_CUSTOM_VTABLE - : ::google::protobuf::Message(), -#endif // PROTOBUF_CUSTOM_VTABLE - _impl_(::_pbi::ConstantInitialized()) { -} -struct CommandEventDefaultTypeInternal { - PROTOBUF_CONSTEXPR CommandEventDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} - ~CommandEventDefaultTypeInternal() {} - union { - CommandEvent _instance; - }; -}; - -PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT - PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CommandEventDefaultTypeInternal _CommandEvent_default_instance_; - inline constexpr ChatEvent::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, @@ -1715,19 +1678,6 @@ const ::uint32_t 1, 2, 0x081, // bitmap - PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_._has_bits_), - 8, // hasbit index offset - PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_.player_uuid_), - PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_.name_), - PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_.raw_), - PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_.command_), - PROTOBUF_FIELD_OFFSET(::df::plugin::CommandEvent, _impl_.args_), - 1, - 2, - 3, - 4, - 0, - 0x081, // bitmap PROTOBUF_FIELD_OFFSET(::df::plugin::PlayerDiagnosticsEvent, _impl_._has_bits_), 14, // hasbit index offset PROTOBUF_FIELD_OFFSET(::df::plugin::PlayerDiagnosticsEvent, _impl_.player_uuid_), @@ -1791,8 +1741,7 @@ static const ::_pbi::MigrationSchema {380, sizeof(::df::plugin::PlayerHeldSlotChangeEvent)}, {393, sizeof(::df::plugin::PlayerItemDropEvent)}, {404, sizeof(::df::plugin::PlayerTransferEvent)}, - {413, sizeof(::df::plugin::CommandEvent)}, - {426, sizeof(::df::plugin::PlayerDiagnosticsEvent)}, + {413, sizeof(::df::plugin::PlayerDiagnosticsEvent)}, }; static const ::_pb::Message* PROTOBUF_NONNULL const file_default_instances[] = { &::df::plugin::_PlayerJoinEvent_default_instance_._instance, @@ -1830,7 +1779,6 @@ static const ::_pb::Message* PROTOBUF_NONNULL const file_default_instances[] = { &::df::plugin::_PlayerHeldSlotChangeEvent_default_instance_._instance, &::df::plugin::_PlayerItemDropEvent_default_instance_._instance, &::df::plugin::_PlayerTransferEvent_default_instance_._instance, - &::df::plugin::_CommandEvent_default_instance_._instance, &::df::plugin::_PlayerDiagnosticsEvent_default_instance_._instance, }; const char descriptor_table_protodef_player_5fevents_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE( @@ -1981,29 +1929,26 @@ const char descriptor_table_protodef_player_5fevents_2eproto[] ABSL_ATTRIBUTE_SE "\n\023PlayerTransferEvent\022\037\n\013player_uuid\030\001 \001" "(\tR\nplayerUuid\022\022\n\004name\030\002 \001(\tR\004name\0221\n\007ad" "dress\030\003 \001(\0132\022.df.plugin.AddressH\000R\007addre" - "ss\210\001\001B\n\n\010_address\"\203\001\n\014CommandEvent\022\037\n\013pl" - "ayer_uuid\030\001 \001(\tR\nplayerUuid\022\022\n\004name\030\002 \001(" - "\tR\004name\022\020\n\003raw\030\003 \001(\tR\003raw\022\030\n\007command\030\004 \001" - "(\tR\007command\022\022\n\004args\030\005 \003(\tR\004args\"\342\004\n\026Play" - "erDiagnosticsEvent\022\037\n\013player_uuid\030\001 \001(\tR" - "\nplayerUuid\022\022\n\004name\030\002 \001(\tR\004name\0229\n\031avera" - "ge_frames_per_second\030\003 \001(\001R\026averageFrame" - "sPerSecond\022>\n\034average_server_sim_tick_ti" - "me\030\004 \001(\001R\030averageServerSimTickTime\022>\n\034av" - "erage_client_sim_tick_time\030\005 \001(\001R\030averag" - "eClientSimTickTime\0227\n\030average_begin_fram" - "e_time\030\006 \001(\001R\025averageBeginFrameTime\022,\n\022a" - "verage_input_time\030\007 \001(\001R\020averageInputTim" - "e\022.\n\023average_render_time\030\010 \001(\001R\021averageR" - "enderTime\0223\n\026average_end_frame_time\030\t \001(" - "\001R\023averageEndFrameTime\022C\n\036average_remain" - "der_time_percent\030\n \001(\001R\033averageRemainder" - "TimePercent\022G\n average_unaccounted_time_" - "percent\030\013 \001(\001R\035averageUnaccountedTimePer" - "centB\220\001\n\rcom.df.pluginB\021PlayerEventsProt" - "oP\001Z\'github.com/secmc/plugin/proto/gener" - "ated\242\002\003DPX\252\002\tDf.Plugin\312\002\tDf\\Plugin\342\002\025Df\\" - "Plugin\\GPBMetadata\352\002\nDf::Pluginb\006proto3" + "ss\210\001\001B\n\n\010_address\"\342\004\n\026PlayerDiagnosticsE" + "vent\022\037\n\013player_uuid\030\001 \001(\tR\nplayerUuid\022\022\n" + "\004name\030\002 \001(\tR\004name\0229\n\031average_frames_per_" + "second\030\003 \001(\001R\026averageFramesPerSecond\022>\n\034" + "average_server_sim_tick_time\030\004 \001(\001R\030aver" + "ageServerSimTickTime\022>\n\034average_client_s" + "im_tick_time\030\005 \001(\001R\030averageClientSimTick" + "Time\0227\n\030average_begin_frame_time\030\006 \001(\001R\025" + "averageBeginFrameTime\022,\n\022average_input_t" + "ime\030\007 \001(\001R\020averageInputTime\022.\n\023average_r" + "ender_time\030\010 \001(\001R\021averageRenderTime\0223\n\026a" + "verage_end_frame_time\030\t \001(\001R\023averageEndF" + "rameTime\022C\n\036average_remainder_time_perce" + "nt\030\n \001(\001R\033averageRemainderTimePercent\022G\n" + " average_unaccounted_time_percent\030\013 \001(\001R" + "\035averageUnaccountedTimePercentB\220\001\n\rcom.d" + "f.pluginB\021PlayerEventsProtoP\001Z\'github.co" + "m/secmc/plugin/proto/generated\242\002\003DPX\252\002\tD" + "f.Plugin\312\002\tDf\\Plugin\342\002\025Df\\Plugin\\GPBMeta" + "data\352\002\nDf::Pluginb\006proto3" }; static const ::_pbi::DescriptorTable* PROTOBUF_NONNULL const descriptor_table_player_5fevents_2eproto_deps[1] = { @@ -2013,13 +1958,13 @@ static ::absl::once_flag descriptor_table_player_5fevents_2eproto_once; PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_player_5fevents_2eproto = { false, false, - 6759, + 6625, descriptor_table_protodef_player_5fevents_2eproto, "player_events.proto", &descriptor_table_player_5fevents_2eproto_once, descriptor_table_player_5fevents_2eproto_deps, 1, - 37, + 36, schemas, file_default_instances, TableStruct_player_5fevents_2eproto::offsets, @@ -16740,459 +16685,6 @@ ::google::protobuf::Metadata PlayerTransferEvent::GetMetadata() const { } // =================================================================== -class CommandEvent::_Internal { - public: - using HasBits = - decltype(::std::declval()._impl_._has_bits_); - static constexpr ::int32_t kHasBitsOffset = - 8 * PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_._has_bits_); -}; - -CommandEvent::CommandEvent(::google::protobuf::Arena* PROTOBUF_NULLABLE arena) -#if defined(PROTOBUF_CUSTOM_VTABLE) - : ::google::protobuf::Message(arena, CommandEvent_class_data_.base()) { -#else // PROTOBUF_CUSTOM_VTABLE - : ::google::protobuf::Message(arena) { -#endif // PROTOBUF_CUSTOM_VTABLE - SharedCtor(arena); - // @@protoc_insertion_point(arena_constructor:df.plugin.CommandEvent) -} -PROTOBUF_NDEBUG_INLINE CommandEvent::Impl_::Impl_( - [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility, - [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from, - [[maybe_unused]] const ::df::plugin::CommandEvent& from_msg) - : _has_bits_{from._has_bits_}, - _cached_size_{0}, - args_{visibility, arena, from.args_}, - player_uuid_(arena, from.player_uuid_), - name_(arena, from.name_), - raw_(arena, from.raw_), - command_(arena, from.command_) {} - -CommandEvent::CommandEvent( - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, - const CommandEvent& from) -#if defined(PROTOBUF_CUSTOM_VTABLE) - : ::google::protobuf::Message(arena, CommandEvent_class_data_.base()) { -#else // PROTOBUF_CUSTOM_VTABLE - : ::google::protobuf::Message(arena) { -#endif // PROTOBUF_CUSTOM_VTABLE - CommandEvent* const _this = this; - (void)_this; - _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( - from._internal_metadata_); - new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from); - - // @@protoc_insertion_point(copy_constructor:df.plugin.CommandEvent) -} -PROTOBUF_NDEBUG_INLINE CommandEvent::Impl_::Impl_( - [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility, - [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) - : _cached_size_{0}, - args_{visibility, arena}, - player_uuid_(arena), - name_(arena), - raw_(arena), - command_(arena) {} - -inline void CommandEvent::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) { - new (&_impl_) Impl_(internal_visibility(), arena); -} -CommandEvent::~CommandEvent() { - // @@protoc_insertion_point(destructor:df.plugin.CommandEvent) - SharedDtor(*this); -} -inline void CommandEvent::SharedDtor(MessageLite& self) { - CommandEvent& this_ = static_cast(self); - if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { - this_.CheckHasBitConsistency(); - } - this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); - ABSL_DCHECK(this_.GetArena() == nullptr); - this_._impl_.player_uuid_.Destroy(); - this_._impl_.name_.Destroy(); - this_._impl_.raw_.Destroy(); - this_._impl_.command_.Destroy(); - this_._impl_.~Impl_(); -} - -inline void* PROTOBUF_NONNULL CommandEvent::PlacementNew_( - const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem, - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) { - return ::new (mem) CommandEvent(arena); -} -constexpr auto CommandEvent::InternalNewImpl_() { - constexpr auto arena_bits = ::google::protobuf::internal::EncodePlacementArenaOffsets({ - PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.args_) + - decltype(CommandEvent::_impl_.args_):: - InternalGetArenaOffset( - ::google::protobuf::Message::internal_visibility()), - }); - if (arena_bits.has_value()) { - return ::google::protobuf::internal::MessageCreator::CopyInit( - sizeof(CommandEvent), alignof(CommandEvent), *arena_bits); - } else { - return ::google::protobuf::internal::MessageCreator(&CommandEvent::PlacementNew_, - sizeof(CommandEvent), - alignof(CommandEvent)); - } -} -constexpr auto CommandEvent::InternalGenerateClassData_() { - return ::google::protobuf::internal::ClassDataFull{ - ::google::protobuf::internal::ClassData{ - &_CommandEvent_default_instance_._instance, - &_table_.header, - nullptr, // OnDemandRegisterArenaDtor - nullptr, // IsInitialized - &CommandEvent::MergeImpl, - ::google::protobuf::Message::GetNewImpl(), -#if defined(PROTOBUF_CUSTOM_VTABLE) - &CommandEvent::SharedDtor, - ::google::protobuf::Message::GetClearImpl(), &CommandEvent::ByteSizeLong, - &CommandEvent::_InternalSerialize, -#endif // PROTOBUF_CUSTOM_VTABLE - PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_._cached_size_), - false, - }, - &CommandEvent::kDescriptorMethods, - &descriptor_table_player_5fevents_2eproto, - nullptr, // tracker - }; -} - -PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const - ::google::protobuf::internal::ClassDataFull CommandEvent_class_data_ = - CommandEvent::InternalGenerateClassData_(); - -PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL -CommandEvent::GetClassData() const { - ::google::protobuf::internal::PrefetchToLocalCache(&CommandEvent_class_data_); - ::google::protobuf::internal::PrefetchToLocalCache(CommandEvent_class_data_.tc_table); - return CommandEvent_class_data_.base(); -} -PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 -const ::_pbi::TcParseTable<3, 5, 0, 60, 2> -CommandEvent::_table_ = { - { - PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_._has_bits_), - 0, // no _extensions_ - 5, 56, // max_field_number, fast_idx_mask - offsetof(decltype(_table_), field_lookup_table), - 4294967264, // skipmap - offsetof(decltype(_table_), field_entries), - 5, // num_field_entries - 0, // num_aux_entries - offsetof(decltype(_table_), field_names), // no aux_entries - CommandEvent_class_data_.base(), - nullptr, // post_loop_handler - ::_pbi::TcParser::GenericFallback, // fallback - #ifdef PROTOBUF_PREFETCH_PARSE_TABLE - ::_pbi::TcParser::GetTable<::df::plugin::CommandEvent>(), // to_prefetch - #endif // PROTOBUF_PREFETCH_PARSE_TABLE - }, {{ - {::_pbi::TcParser::MiniParse, {}}, - // string player_uuid = 1 [json_name = "playerUuid"]; - {::_pbi::TcParser::FastUS1, - {10, 1, 0, - PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.player_uuid_)}}, - // string name = 2 [json_name = "name"]; - {::_pbi::TcParser::FastUS1, - {18, 2, 0, - PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.name_)}}, - // string raw = 3 [json_name = "raw"]; - {::_pbi::TcParser::FastUS1, - {26, 3, 0, - PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.raw_)}}, - // string command = 4 [json_name = "command"]; - {::_pbi::TcParser::FastUS1, - {34, 4, 0, - PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.command_)}}, - // repeated string args = 5 [json_name = "args"]; - {::_pbi::TcParser::FastUR1, - {42, 0, 0, - PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.args_)}}, - {::_pbi::TcParser::MiniParse, {}}, - {::_pbi::TcParser::MiniParse, {}}, - }}, {{ - 65535, 65535 - }}, {{ - // string player_uuid = 1 [json_name = "playerUuid"]; - {PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.player_uuid_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, - // string name = 2 [json_name = "name"]; - {PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.name_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, - // string raw = 3 [json_name = "raw"]; - {PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.raw_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, - // string command = 4 [json_name = "command"]; - {PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.command_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, - // repeated string args = 5 [json_name = "args"]; - {PROTOBUF_FIELD_OFFSET(CommandEvent, _impl_.args_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUtf8String | ::_fl::kRepSString)}, - }}, - // no aux_entries - {{ - "\26\13\4\3\7\4\0\0" - "df.plugin.CommandEvent" - "player_uuid" - "name" - "raw" - "command" - "args" - }}, -}; -PROTOBUF_NOINLINE void CommandEvent::Clear() { -// @@protoc_insertion_point(message_clear_start:df.plugin.CommandEvent) - ::google::protobuf::internal::TSanWrite(&_impl_); - ::uint32_t cached_has_bits = 0; - // Prevent compiler warnings about cached_has_bits being unused - (void) cached_has_bits; - - cached_has_bits = _impl_._has_bits_[0]; - if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) { - if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { - _impl_.args_.Clear(); - } - if (CheckHasBit(cached_has_bits, 0x00000002U)) { - _impl_.player_uuid_.ClearNonDefaultToEmpty(); - } - if (CheckHasBit(cached_has_bits, 0x00000004U)) { - _impl_.name_.ClearNonDefaultToEmpty(); - } - if (CheckHasBit(cached_has_bits, 0x00000008U)) { - _impl_.raw_.ClearNonDefaultToEmpty(); - } - if (CheckHasBit(cached_has_bits, 0x00000010U)) { - _impl_.command_.ClearNonDefaultToEmpty(); - } - } - _impl_._has_bits_.Clear(); - _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); -} - -#if defined(PROTOBUF_CUSTOM_VTABLE) -::uint8_t* PROTOBUF_NONNULL CommandEvent::_InternalSerialize( - const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target, - ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) { - const CommandEvent& this_ = static_cast(base); -#else // PROTOBUF_CUSTOM_VTABLE -::uint8_t* PROTOBUF_NONNULL CommandEvent::_InternalSerialize( - ::uint8_t* PROTOBUF_NONNULL target, - ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const { - const CommandEvent& this_ = *this; -#endif // PROTOBUF_CUSTOM_VTABLE - if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { - this_.CheckHasBitConsistency(); - } - // @@protoc_insertion_point(serialize_to_array_start:df.plugin.CommandEvent) - ::uint32_t cached_has_bits = 0; - (void)cached_has_bits; - - cached_has_bits = this_._impl_._has_bits_[0]; - // string player_uuid = 1 [json_name = "playerUuid"]; - if (CheckHasBit(cached_has_bits, 0x00000002U)) { - if (!this_._internal_player_uuid().empty()) { - const ::std::string& _s = this_._internal_player_uuid(); - ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandEvent.player_uuid"); - target = stream->WriteStringMaybeAliased(1, _s, target); - } - } - - // string name = 2 [json_name = "name"]; - if (CheckHasBit(cached_has_bits, 0x00000004U)) { - if (!this_._internal_name().empty()) { - const ::std::string& _s = this_._internal_name(); - ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandEvent.name"); - target = stream->WriteStringMaybeAliased(2, _s, target); - } - } - - // string raw = 3 [json_name = "raw"]; - if (CheckHasBit(cached_has_bits, 0x00000008U)) { - if (!this_._internal_raw().empty()) { - const ::std::string& _s = this_._internal_raw(); - ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandEvent.raw"); - target = stream->WriteStringMaybeAliased(3, _s, target); - } - } - - // string command = 4 [json_name = "command"]; - if (CheckHasBit(cached_has_bits, 0x00000010U)) { - if (!this_._internal_command().empty()) { - const ::std::string& _s = this_._internal_command(); - ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandEvent.command"); - target = stream->WriteStringMaybeAliased(4, _s, target); - } - } - - // repeated string args = 5 [json_name = "args"]; - if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { - for (int i = 0, n = this_._internal_args_size(); i < n; ++i) { - const auto& s = this_._internal_args().Get(i); - ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandEvent.args"); - target = stream->WriteString(5, s, target); - } - } - - if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) { - target = - ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( - this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); - } - // @@protoc_insertion_point(serialize_to_array_end:df.plugin.CommandEvent) - return target; -} - -#if defined(PROTOBUF_CUSTOM_VTABLE) -::size_t CommandEvent::ByteSizeLong(const MessageLite& base) { - const CommandEvent& this_ = static_cast(base); -#else // PROTOBUF_CUSTOM_VTABLE -::size_t CommandEvent::ByteSizeLong() const { - const CommandEvent& this_ = *this; -#endif // PROTOBUF_CUSTOM_VTABLE - // @@protoc_insertion_point(message_byte_size_start:df.plugin.CommandEvent) - ::size_t total_size = 0; - - ::uint32_t cached_has_bits = 0; - // Prevent compiler warnings about cached_has_bits being unused - (void)cached_has_bits; - - ::_pbi::Prefetch5LinesFrom7Lines(&this_); - cached_has_bits = this_._impl_._has_bits_[0]; - if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) { - // repeated string args = 5 [json_name = "args"]; - if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { - total_size += - 1 * ::google::protobuf::internal::FromIntSize(this_._internal_args().size()); - for (int i = 0, n = this_._internal_args().size(); i < n; ++i) { - total_size += ::google::protobuf::internal::WireFormatLite::StringSize( - this_._internal_args().Get(i)); - } - } - // string player_uuid = 1 [json_name = "playerUuid"]; - if (CheckHasBit(cached_has_bits, 0x00000002U)) { - if (!this_._internal_player_uuid().empty()) { - total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( - this_._internal_player_uuid()); - } - } - // string name = 2 [json_name = "name"]; - if (CheckHasBit(cached_has_bits, 0x00000004U)) { - if (!this_._internal_name().empty()) { - total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( - this_._internal_name()); - } - } - // string raw = 3 [json_name = "raw"]; - if (CheckHasBit(cached_has_bits, 0x00000008U)) { - if (!this_._internal_raw().empty()) { - total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( - this_._internal_raw()); - } - } - // string command = 4 [json_name = "command"]; - if (CheckHasBit(cached_has_bits, 0x00000010U)) { - if (!this_._internal_command().empty()) { - total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( - this_._internal_command()); - } - } - } - return this_.MaybeComputeUnknownFieldsSize(total_size, - &this_._impl_._cached_size_); -} - -void CommandEvent::MergeImpl(::google::protobuf::MessageLite& to_msg, - const ::google::protobuf::MessageLite& from_msg) { - auto* const _this = - static_cast(&to_msg); - auto& from = static_cast(from_msg); - if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { - from.CheckHasBitConsistency(); - } - ::google::protobuf::Arena* arena = _this->GetArena(); - // @@protoc_insertion_point(class_specific_merge_from_start:df.plugin.CommandEvent) - ABSL_DCHECK_NE(&from, _this); - ::uint32_t cached_has_bits = 0; - (void)cached_has_bits; - - cached_has_bits = from._impl_._has_bits_[0]; - if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) { - if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { - _this->_internal_mutable_args()->InternalMergeFromWithArena( - ::google::protobuf::MessageLite::internal_visibility(), arena, - from._internal_args()); - } - if (CheckHasBit(cached_has_bits, 0x00000002U)) { - if (!from._internal_player_uuid().empty()) { - _this->_internal_set_player_uuid(from._internal_player_uuid()); - } else { - if (_this->_impl_.player_uuid_.IsDefault()) { - _this->_internal_set_player_uuid(""); - } - } - } - if (CheckHasBit(cached_has_bits, 0x00000004U)) { - if (!from._internal_name().empty()) { - _this->_internal_set_name(from._internal_name()); - } else { - if (_this->_impl_.name_.IsDefault()) { - _this->_internal_set_name(""); - } - } - } - if (CheckHasBit(cached_has_bits, 0x00000008U)) { - if (!from._internal_raw().empty()) { - _this->_internal_set_raw(from._internal_raw()); - } else { - if (_this->_impl_.raw_.IsDefault()) { - _this->_internal_set_raw(""); - } - } - } - if (CheckHasBit(cached_has_bits, 0x00000010U)) { - if (!from._internal_command().empty()) { - _this->_internal_set_command(from._internal_command()); - } else { - if (_this->_impl_.command_.IsDefault()) { - _this->_internal_set_command(""); - } - } - } - } - _this->_impl_._has_bits_[0] |= cached_has_bits; - _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( - from._internal_metadata_); -} - -void CommandEvent::CopyFrom(const CommandEvent& from) { - // @@protoc_insertion_point(class_specific_copy_from_start:df.plugin.CommandEvent) - if (&from == this) return; - Clear(); - MergeFrom(from); -} - - -void CommandEvent::InternalSwap(CommandEvent* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) { - using ::std::swap; - auto* arena = GetArena(); - ABSL_DCHECK_EQ(arena, other->GetArena()); - _internal_metadata_.InternalSwap(&other->_internal_metadata_); - swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); - _impl_.args_.InternalSwap(&other->_impl_.args_); - ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.player_uuid_, &other->_impl_.player_uuid_, arena); - ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); - ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.raw_, &other->_impl_.raw_, arena); - ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.command_, &other->_impl_.command_, arena); -} - -::google::protobuf::Metadata CommandEvent::GetMetadata() const { - return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full()); -} -// =================================================================== - class PlayerDiagnosticsEvent::_Internal { public: using HasBits = diff --git a/proto/generated/cpp/player_events.pb.h b/proto/generated/cpp/player_events.pb.h index 0d2509b..46cce51 100644 --- a/proto/generated/cpp/player_events.pb.h +++ b/proto/generated/cpp/player_events.pb.h @@ -63,10 +63,6 @@ class ChatEvent; struct ChatEventDefaultTypeInternal; extern ChatEventDefaultTypeInternal _ChatEvent_default_instance_; extern const ::google::protobuf::internal::ClassDataFull ChatEvent_class_data_; -class CommandEvent; -struct CommandEventDefaultTypeInternal; -extern CommandEventDefaultTypeInternal _CommandEvent_default_instance_; -extern const ::google::protobuf::internal::ClassDataFull CommandEvent_class_data_; class PlayerAttackEntityEvent; struct PlayerAttackEntityEventDefaultTypeInternal; extern PlayerAttackEntityEventDefaultTypeInternal _PlayerAttackEntityEvent_default_instance_; @@ -2364,7 +2360,7 @@ class PlayerDiagnosticsEvent final : public ::google::protobuf::Message return *reinterpret_cast( &_PlayerDiagnosticsEvent_default_instance_); } - static constexpr int kIndexInFileMessages = 36; + static constexpr int kIndexInFileMessages = 35; friend void swap(PlayerDiagnosticsEvent& a, PlayerDiagnosticsEvent& b) { a.Swap(&b); } inline void Swap(PlayerDiagnosticsEvent* PROTOBUF_NONNULL other) { if (other == this) return; @@ -2629,276 +2625,6 @@ class PlayerDiagnosticsEvent final : public ::google::protobuf::Message extern const ::google::protobuf::internal::ClassDataFull PlayerDiagnosticsEvent_class_data_; // ------------------------------------------------------------------- -class CommandEvent final : public ::google::protobuf::Message -/* @@protoc_insertion_point(class_definition:df.plugin.CommandEvent) */ { - public: - inline CommandEvent() : CommandEvent(nullptr) {} - ~CommandEvent() PROTOBUF_FINAL; - -#if defined(PROTOBUF_CUSTOM_VTABLE) - void operator delete(CommandEvent* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) { - SharedDtor(*msg); - ::google::protobuf::internal::SizedDelete(msg, sizeof(CommandEvent)); - } -#endif - - template - explicit PROTOBUF_CONSTEXPR CommandEvent(::google::protobuf::internal::ConstantInitialized); - - inline CommandEvent(const CommandEvent& from) : CommandEvent(nullptr, from) {} - inline CommandEvent(CommandEvent&& from) noexcept - : CommandEvent(nullptr, ::std::move(from)) {} - inline CommandEvent& operator=(const CommandEvent& from) { - CopyFrom(from); - return *this; - } - inline CommandEvent& operator=(CommandEvent&& from) noexcept { - if (this == &from) return *this; - if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) { - InternalSwap(&from); - } else { - CopyFrom(from); - } - return *this; - } - - inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const - ABSL_ATTRIBUTE_LIFETIME_BOUND { - return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); - } - inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields() - ABSL_ATTRIBUTE_LIFETIME_BOUND { - return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); - } - - static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() { - return GetDescriptor(); - } - static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() { - return default_instance().GetMetadata().descriptor; - } - static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() { - return default_instance().GetMetadata().reflection; - } - static const CommandEvent& default_instance() { - return *reinterpret_cast( - &_CommandEvent_default_instance_); - } - static constexpr int kIndexInFileMessages = 35; - friend void swap(CommandEvent& a, CommandEvent& b) { a.Swap(&b); } - inline void Swap(CommandEvent* PROTOBUF_NONNULL other) { - if (other == this) return; - if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) { - InternalSwap(other); - } else { - ::google::protobuf::internal::GenericSwap(this, other); - } - } - void UnsafeArenaSwap(CommandEvent* PROTOBUF_NONNULL other) { - if (other == this) return; - ABSL_DCHECK(GetArena() == other->GetArena()); - InternalSwap(other); - } - - // implements Message ---------------------------------------------- - - CommandEvent* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const { - return ::google::protobuf::Message::DefaultConstruct(arena); - } - using ::google::protobuf::Message::CopyFrom; - void CopyFrom(const CommandEvent& from); - using ::google::protobuf::Message::MergeFrom; - void MergeFrom(const CommandEvent& from) { CommandEvent::MergeImpl(*this, from); } - - private: - static void MergeImpl(::google::protobuf::MessageLite& to_msg, - const ::google::protobuf::MessageLite& from_msg); - - public: - bool IsInitialized() const { - return true; - } - ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL; - #if defined(PROTOBUF_CUSTOM_VTABLE) - private: - static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg); - static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( - const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target, - ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream); - - public: - ::size_t ByteSizeLong() const { return ByteSizeLong(*this); } - ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( - ::uint8_t* PROTOBUF_NONNULL target, - ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const { - return _InternalSerialize(*this, target, stream); - } - #else // PROTOBUF_CUSTOM_VTABLE - ::size_t ByteSizeLong() const final; - ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( - ::uint8_t* PROTOBUF_NONNULL target, - ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final; - #endif // PROTOBUF_CUSTOM_VTABLE - int GetCachedSize() const { return _impl_._cached_size_.Get(); } - - private: - void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena); - static void SharedDtor(MessageLite& self); - void InternalSwap(CommandEvent* PROTOBUF_NONNULL other); - private: - template - friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)(); - static ::absl::string_view FullMessageName() { return "df.plugin.CommandEvent"; } - - explicit CommandEvent(::google::protobuf::Arena* PROTOBUF_NULLABLE arena); - CommandEvent(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CommandEvent& from); - CommandEvent( - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CommandEvent&& from) noexcept - : CommandEvent(arena) { - *this = ::std::move(from); - } - const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL; - static void* PROTOBUF_NONNULL PlacementNew_( - const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem, - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena); - static constexpr auto InternalNewImpl_(); - - public: - static constexpr auto InternalGenerateClassData_(); - - ::google::protobuf::Metadata GetMetadata() const; - // nested types ---------------------------------------------------- - - // accessors ------------------------------------------------------- - enum : int { - kArgsFieldNumber = 5, - kPlayerUuidFieldNumber = 1, - kNameFieldNumber = 2, - kRawFieldNumber = 3, - kCommandFieldNumber = 4, - }; - // repeated string args = 5 [json_name = "args"]; - int args_size() const; - private: - int _internal_args_size() const; - - public: - void clear_args() ; - const ::std::string& args(int index) const; - ::std::string* PROTOBUF_NONNULL mutable_args(int index); - template - void set_args(int index, Arg_&& value, Args_... args); - ::std::string* PROTOBUF_NONNULL add_args(); - template - void add_args(Arg_&& value, Args_... args); - const ::google::protobuf::RepeatedPtrField<::std::string>& args() const; - ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_args(); - - private: - const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_args() const; - ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_args(); - - public: - // string player_uuid = 1 [json_name = "playerUuid"]; - void clear_player_uuid() ; - const ::std::string& player_uuid() const; - template - void set_player_uuid(Arg_&& arg, Args_... args); - ::std::string* PROTOBUF_NONNULL mutable_player_uuid(); - [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_player_uuid(); - void set_allocated_player_uuid(::std::string* PROTOBUF_NULLABLE value); - - private: - const ::std::string& _internal_player_uuid() const; - PROTOBUF_ALWAYS_INLINE void _internal_set_player_uuid(const ::std::string& value); - ::std::string* PROTOBUF_NONNULL _internal_mutable_player_uuid(); - - public: - // string name = 2 [json_name = "name"]; - void clear_name() ; - const ::std::string& name() const; - template - void set_name(Arg_&& arg, Args_... args); - ::std::string* PROTOBUF_NONNULL mutable_name(); - [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name(); - void set_allocated_name(::std::string* PROTOBUF_NULLABLE value); - - private: - const ::std::string& _internal_name() const; - PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value); - ::std::string* PROTOBUF_NONNULL _internal_mutable_name(); - - public: - // string raw = 3 [json_name = "raw"]; - void clear_raw() ; - const ::std::string& raw() const; - template - void set_raw(Arg_&& arg, Args_... args); - ::std::string* PROTOBUF_NONNULL mutable_raw(); - [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_raw(); - void set_allocated_raw(::std::string* PROTOBUF_NULLABLE value); - - private: - const ::std::string& _internal_raw() const; - PROTOBUF_ALWAYS_INLINE void _internal_set_raw(const ::std::string& value); - ::std::string* PROTOBUF_NONNULL _internal_mutable_raw(); - - public: - // string command = 4 [json_name = "command"]; - void clear_command() ; - const ::std::string& command() const; - template - void set_command(Arg_&& arg, Args_... args); - ::std::string* PROTOBUF_NONNULL mutable_command(); - [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_command(); - void set_allocated_command(::std::string* PROTOBUF_NULLABLE value); - - private: - const ::std::string& _internal_command() const; - PROTOBUF_ALWAYS_INLINE void _internal_set_command(const ::std::string& value); - ::std::string* PROTOBUF_NONNULL _internal_mutable_command(); - - public: - // @@protoc_insertion_point(class_scope:df.plugin.CommandEvent) - private: - class _Internal; - friend class ::google::protobuf::internal::TcParser; - static const ::google::protobuf::internal::TcParseTable<3, 5, - 0, 60, - 2> - _table_; - - friend class ::google::protobuf::MessageLite; - friend class ::google::protobuf::Arena; - template - friend class ::google::protobuf::Arena::InternalHelper; - using InternalArenaConstructable_ = void; - using DestructorSkippable_ = void; - struct Impl_ { - inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept; - inline explicit Impl_( - ::google::protobuf::internal::InternalVisibility visibility, - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena); - inline explicit Impl_( - ::google::protobuf::internal::InternalVisibility visibility, - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from, - const CommandEvent& from_msg); - ::google::protobuf::internal::HasBits<1> _has_bits_; - ::google::protobuf::internal::CachedSize _cached_size_; - ::google::protobuf::RepeatedPtrField<::std::string> args_; - ::google::protobuf::internal::ArenaStringPtr player_uuid_; - ::google::protobuf::internal::ArenaStringPtr name_; - ::google::protobuf::internal::ArenaStringPtr raw_; - ::google::protobuf::internal::ArenaStringPtr command_; - PROTOBUF_TSAN_DECLARE_MEMBER - }; - union { Impl_ _impl_; }; - friend struct ::TableStruct_player_5fevents_2eproto; -}; - -extern const ::google::protobuf::internal::ClassDataFull CommandEvent_class_data_; -// ------------------------------------------------------------------- - class ChatEvent final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:df.plugin.ChatEvent) */ { public: @@ -19864,342 +19590,6 @@ inline void PlayerTransferEvent::set_allocated_address(::df::plugin::Address* PR // ------------------------------------------------------------------- -// CommandEvent - -// string player_uuid = 1 [json_name = "playerUuid"]; -inline void CommandEvent::clear_player_uuid() { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.player_uuid_.ClearToEmpty(); - ClearHasBit(_impl_._has_bits_[0], - 0x00000002U); -} -inline const ::std::string& CommandEvent::player_uuid() const - ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_get:df.plugin.CommandEvent.player_uuid) - return _internal_player_uuid(); -} -template -PROTOBUF_ALWAYS_INLINE void CommandEvent::set_player_uuid(Arg_&& arg, Args_... args) { - ::google::protobuf::internal::TSanWrite(&_impl_); - SetHasBit(_impl_._has_bits_[0], 0x00000002U); - _impl_.player_uuid_.Set(static_cast(arg), args..., GetArena()); - // @@protoc_insertion_point(field_set:df.plugin.CommandEvent.player_uuid) -} -inline ::std::string* PROTOBUF_NONNULL CommandEvent::mutable_player_uuid() - ABSL_ATTRIBUTE_LIFETIME_BOUND { - SetHasBit(_impl_._has_bits_[0], 0x00000002U); - ::std::string* _s = _internal_mutable_player_uuid(); - // @@protoc_insertion_point(field_mutable:df.plugin.CommandEvent.player_uuid) - return _s; -} -inline const ::std::string& CommandEvent::_internal_player_uuid() const { - ::google::protobuf::internal::TSanRead(&_impl_); - return _impl_.player_uuid_.Get(); -} -inline void CommandEvent::_internal_set_player_uuid(const ::std::string& value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.player_uuid_.Set(value, GetArena()); -} -inline ::std::string* PROTOBUF_NONNULL CommandEvent::_internal_mutable_player_uuid() { - ::google::protobuf::internal::TSanWrite(&_impl_); - return _impl_.player_uuid_.Mutable( GetArena()); -} -inline ::std::string* PROTOBUF_NULLABLE CommandEvent::release_player_uuid() { - ::google::protobuf::internal::TSanWrite(&_impl_); - // @@protoc_insertion_point(field_release:df.plugin.CommandEvent.player_uuid) - if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) { - return nullptr; - } - ClearHasBit(_impl_._has_bits_[0], 0x00000002U); - auto* released = _impl_.player_uuid_.Release(); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { - _impl_.player_uuid_.Set("", GetArena()); - } - return released; -} -inline void CommandEvent::set_allocated_player_uuid(::std::string* PROTOBUF_NULLABLE value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - if (value != nullptr) { - SetHasBit(_impl_._has_bits_[0], 0x00000002U); - } else { - ClearHasBit(_impl_._has_bits_[0], 0x00000002U); - } - _impl_.player_uuid_.SetAllocated(value, GetArena()); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.player_uuid_.IsDefault()) { - _impl_.player_uuid_.Set("", GetArena()); - } - // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandEvent.player_uuid) -} - -// string name = 2 [json_name = "name"]; -inline void CommandEvent::clear_name() { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.name_.ClearToEmpty(); - ClearHasBit(_impl_._has_bits_[0], - 0x00000004U); -} -inline const ::std::string& CommandEvent::name() const - ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_get:df.plugin.CommandEvent.name) - return _internal_name(); -} -template -PROTOBUF_ALWAYS_INLINE void CommandEvent::set_name(Arg_&& arg, Args_... args) { - ::google::protobuf::internal::TSanWrite(&_impl_); - SetHasBit(_impl_._has_bits_[0], 0x00000004U); - _impl_.name_.Set(static_cast(arg), args..., GetArena()); - // @@protoc_insertion_point(field_set:df.plugin.CommandEvent.name) -} -inline ::std::string* PROTOBUF_NONNULL CommandEvent::mutable_name() - ABSL_ATTRIBUTE_LIFETIME_BOUND { - SetHasBit(_impl_._has_bits_[0], 0x00000004U); - ::std::string* _s = _internal_mutable_name(); - // @@protoc_insertion_point(field_mutable:df.plugin.CommandEvent.name) - return _s; -} -inline const ::std::string& CommandEvent::_internal_name() const { - ::google::protobuf::internal::TSanRead(&_impl_); - return _impl_.name_.Get(); -} -inline void CommandEvent::_internal_set_name(const ::std::string& value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.name_.Set(value, GetArena()); -} -inline ::std::string* PROTOBUF_NONNULL CommandEvent::_internal_mutable_name() { - ::google::protobuf::internal::TSanWrite(&_impl_); - return _impl_.name_.Mutable( GetArena()); -} -inline ::std::string* PROTOBUF_NULLABLE CommandEvent::release_name() { - ::google::protobuf::internal::TSanWrite(&_impl_); - // @@protoc_insertion_point(field_release:df.plugin.CommandEvent.name) - if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) { - return nullptr; - } - ClearHasBit(_impl_._has_bits_[0], 0x00000004U); - auto* released = _impl_.name_.Release(); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { - _impl_.name_.Set("", GetArena()); - } - return released; -} -inline void CommandEvent::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - if (value != nullptr) { - SetHasBit(_impl_._has_bits_[0], 0x00000004U); - } else { - ClearHasBit(_impl_._has_bits_[0], 0x00000004U); - } - _impl_.name_.SetAllocated(value, GetArena()); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) { - _impl_.name_.Set("", GetArena()); - } - // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandEvent.name) -} - -// string raw = 3 [json_name = "raw"]; -inline void CommandEvent::clear_raw() { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.raw_.ClearToEmpty(); - ClearHasBit(_impl_._has_bits_[0], - 0x00000008U); -} -inline const ::std::string& CommandEvent::raw() const - ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_get:df.plugin.CommandEvent.raw) - return _internal_raw(); -} -template -PROTOBUF_ALWAYS_INLINE void CommandEvent::set_raw(Arg_&& arg, Args_... args) { - ::google::protobuf::internal::TSanWrite(&_impl_); - SetHasBit(_impl_._has_bits_[0], 0x00000008U); - _impl_.raw_.Set(static_cast(arg), args..., GetArena()); - // @@protoc_insertion_point(field_set:df.plugin.CommandEvent.raw) -} -inline ::std::string* PROTOBUF_NONNULL CommandEvent::mutable_raw() - ABSL_ATTRIBUTE_LIFETIME_BOUND { - SetHasBit(_impl_._has_bits_[0], 0x00000008U); - ::std::string* _s = _internal_mutable_raw(); - // @@protoc_insertion_point(field_mutable:df.plugin.CommandEvent.raw) - return _s; -} -inline const ::std::string& CommandEvent::_internal_raw() const { - ::google::protobuf::internal::TSanRead(&_impl_); - return _impl_.raw_.Get(); -} -inline void CommandEvent::_internal_set_raw(const ::std::string& value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.raw_.Set(value, GetArena()); -} -inline ::std::string* PROTOBUF_NONNULL CommandEvent::_internal_mutable_raw() { - ::google::protobuf::internal::TSanWrite(&_impl_); - return _impl_.raw_.Mutable( GetArena()); -} -inline ::std::string* PROTOBUF_NULLABLE CommandEvent::release_raw() { - ::google::protobuf::internal::TSanWrite(&_impl_); - // @@protoc_insertion_point(field_release:df.plugin.CommandEvent.raw) - if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) { - return nullptr; - } - ClearHasBit(_impl_._has_bits_[0], 0x00000008U); - auto* released = _impl_.raw_.Release(); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { - _impl_.raw_.Set("", GetArena()); - } - return released; -} -inline void CommandEvent::set_allocated_raw(::std::string* PROTOBUF_NULLABLE value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - if (value != nullptr) { - SetHasBit(_impl_._has_bits_[0], 0x00000008U); - } else { - ClearHasBit(_impl_._has_bits_[0], 0x00000008U); - } - _impl_.raw_.SetAllocated(value, GetArena()); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.raw_.IsDefault()) { - _impl_.raw_.Set("", GetArena()); - } - // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandEvent.raw) -} - -// string command = 4 [json_name = "command"]; -inline void CommandEvent::clear_command() { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.command_.ClearToEmpty(); - ClearHasBit(_impl_._has_bits_[0], - 0x00000010U); -} -inline const ::std::string& CommandEvent::command() const - ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_get:df.plugin.CommandEvent.command) - return _internal_command(); -} -template -PROTOBUF_ALWAYS_INLINE void CommandEvent::set_command(Arg_&& arg, Args_... args) { - ::google::protobuf::internal::TSanWrite(&_impl_); - SetHasBit(_impl_._has_bits_[0], 0x00000010U); - _impl_.command_.Set(static_cast(arg), args..., GetArena()); - // @@protoc_insertion_point(field_set:df.plugin.CommandEvent.command) -} -inline ::std::string* PROTOBUF_NONNULL CommandEvent::mutable_command() - ABSL_ATTRIBUTE_LIFETIME_BOUND { - SetHasBit(_impl_._has_bits_[0], 0x00000010U); - ::std::string* _s = _internal_mutable_command(); - // @@protoc_insertion_point(field_mutable:df.plugin.CommandEvent.command) - return _s; -} -inline const ::std::string& CommandEvent::_internal_command() const { - ::google::protobuf::internal::TSanRead(&_impl_); - return _impl_.command_.Get(); -} -inline void CommandEvent::_internal_set_command(const ::std::string& value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.command_.Set(value, GetArena()); -} -inline ::std::string* PROTOBUF_NONNULL CommandEvent::_internal_mutable_command() { - ::google::protobuf::internal::TSanWrite(&_impl_); - return _impl_.command_.Mutable( GetArena()); -} -inline ::std::string* PROTOBUF_NULLABLE CommandEvent::release_command() { - ::google::protobuf::internal::TSanWrite(&_impl_); - // @@protoc_insertion_point(field_release:df.plugin.CommandEvent.command) - if (!CheckHasBit(_impl_._has_bits_[0], 0x00000010U)) { - return nullptr; - } - ClearHasBit(_impl_._has_bits_[0], 0x00000010U); - auto* released = _impl_.command_.Release(); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { - _impl_.command_.Set("", GetArena()); - } - return released; -} -inline void CommandEvent::set_allocated_command(::std::string* PROTOBUF_NULLABLE value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - if (value != nullptr) { - SetHasBit(_impl_._has_bits_[0], 0x00000010U); - } else { - ClearHasBit(_impl_._has_bits_[0], 0x00000010U); - } - _impl_.command_.SetAllocated(value, GetArena()); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.command_.IsDefault()) { - _impl_.command_.Set("", GetArena()); - } - // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandEvent.command) -} - -// repeated string args = 5 [json_name = "args"]; -inline int CommandEvent::_internal_args_size() const { - return _internal_args().size(); -} -inline int CommandEvent::args_size() const { - return _internal_args_size(); -} -inline void CommandEvent::clear_args() { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.args_.Clear(); - ClearHasBitForRepeated(_impl_._has_bits_[0], - 0x00000001U); -} -inline ::std::string* PROTOBUF_NONNULL CommandEvent::add_args() - ABSL_ATTRIBUTE_LIFETIME_BOUND { - ::google::protobuf::internal::TSanWrite(&_impl_); - ::std::string* _s = - _internal_mutable_args()->InternalAddWithArena( - ::google::protobuf::MessageLite::internal_visibility(), GetArena()); - SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); - // @@protoc_insertion_point(field_add_mutable:df.plugin.CommandEvent.args) - return _s; -} -inline const ::std::string& CommandEvent::args(int index) const - ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_get:df.plugin.CommandEvent.args) - return _internal_args().Get(index); -} -inline ::std::string* PROTOBUF_NONNULL CommandEvent::mutable_args(int index) - ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_mutable:df.plugin.CommandEvent.args) - return _internal_mutable_args()->Mutable(index); -} -template -inline void CommandEvent::set_args(int index, Arg_&& value, Args_... args) { - ::google::protobuf::internal::AssignToString(*_internal_mutable_args()->Mutable(index), ::std::forward(value), - args... ); - // @@protoc_insertion_point(field_set:df.plugin.CommandEvent.args) -} -template -inline void CommandEvent::add_args(Arg_&& value, Args_... args) { - ::google::protobuf::internal::TSanWrite(&_impl_); - ::google::protobuf::internal::AddToRepeatedPtrField( - ::google::protobuf::MessageLite::internal_visibility(), GetArena(), - *_internal_mutable_args(), ::std::forward(value), - args... ); - SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); - // @@protoc_insertion_point(field_add:df.plugin.CommandEvent.args) -} -inline const ::google::protobuf::RepeatedPtrField<::std::string>& CommandEvent::args() - const ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_list:df.plugin.CommandEvent.args) - return _internal_args(); -} -inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL -CommandEvent::mutable_args() ABSL_ATTRIBUTE_LIFETIME_BOUND { - SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); - // @@protoc_insertion_point(field_mutable_list:df.plugin.CommandEvent.args) - ::google::protobuf::internal::TSanWrite(&_impl_); - return _internal_mutable_args(); -} -inline const ::google::protobuf::RepeatedPtrField<::std::string>& -CommandEvent::_internal_args() const { - ::google::protobuf::internal::TSanRead(&_impl_); - return _impl_.args_; -} -inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL -CommandEvent::_internal_mutable_args() { - ::google::protobuf::internal::TSanRead(&_impl_); - return &_impl_.args_; -} - -// ------------------------------------------------------------------- - // PlayerDiagnosticsEvent // string player_uuid = 1 [json_name = "playerUuid"]; diff --git a/proto/generated/cpp/plugin.pb.cc b/proto/generated/cpp/plugin.pb.cc index 97de24d..0db3a8c 100644 --- a/proto/generated/cpp/plugin.pb.cc +++ b/proto/generated/cpp/plugin.pb.cc @@ -137,37 +137,6 @@ struct EventSubscribeDefaultTypeInternal { PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 EventSubscribeDefaultTypeInternal _EventSubscribe_default_instance_; -inline constexpr CommandSpec::Impl_::Impl_( - ::_pbi::ConstantInitialized) noexcept - : _cached_size_{0}, - aliases_{}, - name_( - &::google::protobuf::internal::fixed_address_empty_string, - ::_pbi::ConstantInitialized()), - description_( - &::google::protobuf::internal::fixed_address_empty_string, - ::_pbi::ConstantInitialized()) {} - -template -PROTOBUF_CONSTEXPR CommandSpec::CommandSpec(::_pbi::ConstantInitialized) -#if defined(PROTOBUF_CUSTOM_VTABLE) - : ::google::protobuf::Message(CommandSpec_class_data_.base()), -#else // PROTOBUF_CUSTOM_VTABLE - : ::google::protobuf::Message(), -#endif // PROTOBUF_CUSTOM_VTABLE - _impl_(::_pbi::ConstantInitialized()) { -} -struct CommandSpecDefaultTypeInternal { - PROTOBUF_CONSTEXPR CommandSpecDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {} - ~CommandSpecDefaultTypeInternal() {} - union { - CommandSpec _instance; - }; -}; - -PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT - PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CommandSpecDefaultTypeInternal _CommandSpec_default_instance_; - inline constexpr PluginHello::Impl_::Impl_( ::_pbi::ConstantInitialized) noexcept : _cached_size_{0}, @@ -463,15 +432,6 @@ const ::uint32_t 0, 1, 0x081, // bitmap - PROTOBUF_FIELD_OFFSET(::df::plugin::CommandSpec, _impl_._has_bits_), - 6, // hasbit index offset - PROTOBUF_FIELD_OFFSET(::df::plugin::CommandSpec, _impl_.name_), - PROTOBUF_FIELD_OFFSET(::df::plugin::CommandSpec, _impl_.description_), - PROTOBUF_FIELD_OFFSET(::df::plugin::CommandSpec, _impl_.aliases_), - 1, - 2, - 0, - 0x081, // bitmap PROTOBUF_FIELD_OFFSET(::df::plugin::LogMessage, _impl_._has_bits_), 5, // hasbit index offset PROTOBUF_FIELD_OFFSET(::df::plugin::LogMessage, _impl_.level_), @@ -493,9 +453,8 @@ static const ::_pbi::MigrationSchema {23, sizeof(::df::plugin::EventEnvelope)}, {132, sizeof(::df::plugin::PluginToHost)}, {149, sizeof(::df::plugin::PluginHello)}, - {162, sizeof(::df::plugin::CommandSpec)}, - {171, sizeof(::df::plugin::LogMessage)}, - {178, sizeof(::df::plugin::EventSubscribe)}, + {162, sizeof(::df::plugin::LogMessage)}, + {169, sizeof(::df::plugin::EventSubscribe)}, }; static const ::_pb::Message* PROTOBUF_NONNULL const file_default_instances[] = { &::df::plugin::_HostToPlugin_default_instance_._instance, @@ -504,137 +463,134 @@ static const ::_pb::Message* PROTOBUF_NONNULL const file_default_instances[] = { &::df::plugin::_EventEnvelope_default_instance_._instance, &::df::plugin::_PluginToHost_default_instance_._instance, &::df::plugin::_PluginHello_default_instance_._instance, - &::df::plugin::_CommandSpec_default_instance_._instance, &::df::plugin::_LogMessage_default_instance_._instance, &::df::plugin::_EventSubscribe_default_instance_._instance, }; const char descriptor_table_protodef_plugin_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE( protodesc_cold) = { "\n\014plugin.proto\022\tdf.plugin\032\023player_events" - ".proto\032\022world_events.proto\032\ractions.prot" - "o\032\017mutations.proto\032\014common.proto\"\315\001\n\014Hos" - "tToPlugin\022\033\n\tplugin_id\030\001 \001(\tR\010pluginId\022," - "\n\005hello\030\n \001(\0132\024.df.plugin.HostHelloH\000R\005h" - "ello\0225\n\010shutdown\030\013 \001(\0132\027.df.plugin.HostS" - "hutdownH\000R\010shutdown\0220\n\005event\030\024 \001(\0132\030.df." - "plugin.EventEnvelopeH\000R\005eventB\t\n\007payload" - "\",\n\tHostHello\022\037\n\013api_version\030\001 \001(\tR\napiV" - "ersion\"&\n\014HostShutdown\022\026\n\006reason\030\001 \001(\tR\006" - "reason\"\346\036\n\rEventEnvelope\022\031\n\010event_id\030\001 \001" - "(\tR\007eventId\022(\n\004type\030\002 \001(\0162\024.df.plugin.Ev" - "entTypeR\004type\022)\n\020expects_response\030\003 \001(\010R" - "\017expectsResponse\022=\n\013player_join\030\n \001(\0132\032." - "df.plugin.PlayerJoinEventH\000R\nplayerJoin\022" - "=\n\013player_quit\030\013 \001(\0132\032.df.plugin.PlayerQ" - "uitEventH\000R\nplayerQuit\022=\n\013player_move\030\014 " - "\001(\0132\032.df.plugin.PlayerMoveEventH\000R\nplaye" - "rMove\022=\n\013player_jump\030\r \001(\0132\032.df.plugin.P" - "layerJumpEventH\000R\nplayerJump\022I\n\017player_t" - "eleport\030\016 \001(\0132\036.df.plugin.PlayerTeleport" - "EventH\000R\016playerTeleport\022S\n\023player_change" - "_world\030\017 \001(\0132!.df.plugin.PlayerChangeWor" - "ldEventH\000R\021playerChangeWorld\022V\n\024player_t" - "oggle_sprint\030\020 \001(\0132\".df.plugin.PlayerTog" - "gleSprintEventH\000R\022playerToggleSprint\022S\n\023" - "player_toggle_sneak\030\021 \001(\0132!.df.plugin.Pl" - "ayerToggleSneakEventH\000R\021playerToggleSnea" - "k\022*\n\004chat\030\022 \001(\0132\024.df.plugin.ChatEventH\000R" - "\004chat\022J\n\020player_food_loss\030\023 \001(\0132\036.df.plu" - "gin.PlayerFoodLossEventH\000R\016playerFoodLos" - "s\022=\n\013player_heal\030\024 \001(\0132\032.df.plugin.Playe" - "rHealEventH\000R\nplayerHeal\022=\n\013player_hurt\030" - "\025 \001(\0132\032.df.plugin.PlayerHurtEventH\000R\npla" - "yerHurt\022@\n\014player_death\030\026 \001(\0132\033.df.plugi" - "n.PlayerDeathEventH\000R\013playerDeath\022F\n\016pla" - "yer_respawn\030\027 \001(\0132\035.df.plugin.PlayerResp" - "awnEventH\000R\rplayerRespawn\022P\n\022player_skin" - "_change\030\030 \001(\0132 .df.plugin.PlayerSkinChan" - "geEventH\000R\020playerSkinChange\022\\\n\026player_fi" - "re_extinguish\030\031 \001(\0132$.df.plugin.PlayerFi" - "reExtinguishEventH\000R\024playerFireExtinguis" - "h\022P\n\022player_start_break\030\032 \001(\0132 .df.plugi" - "n.PlayerStartBreakEventH\000R\020playerStartBr" - "eak\022=\n\013block_break\030\033 \001(\0132\032.df.plugin.Blo" - "ckBreakEventH\000R\nblockBreak\022P\n\022player_blo" - "ck_place\030\034 \001(\0132 .df.plugin.PlayerBlockPl" - "aceEventH\000R\020playerBlockPlace\022M\n\021player_b" - "lock_pick\030\035 \001(\0132\037.df.plugin.PlayerBlockP" - "ickEventH\000R\017playerBlockPick\022G\n\017player_it" - "em_use\030\036 \001(\0132\035.df.plugin.PlayerItemUseEv" - "entH\000R\rplayerItemUse\022^\n\030player_item_use_" - "on_block\030\037 \001(\0132$.df.plugin.PlayerItemUse" - "OnBlockEventH\000R\024playerItemUseOnBlock\022a\n\031" - "player_item_use_on_entity\030 \001(\0132%.df.plu" - "gin.PlayerItemUseOnEntityEventH\000R\025player" - "ItemUseOnEntity\022S\n\023player_item_release\030!" - " \001(\0132!.df.plugin.PlayerItemReleaseEventH" - "\000R\021playerItemRelease\022S\n\023player_item_cons" - "ume\030\" \001(\0132!.df.plugin.PlayerItemConsumeE" - "ventH\000R\021playerItemConsume\022V\n\024player_atta" - "ck_entity\030# \001(\0132\".df.plugin.PlayerAttack" - "EntityEventH\000R\022playerAttackEntity\022\\\n\026pla" - "yer_experience_gain\030$ \001(\0132$.df.plugin.Pl" - "ayerExperienceGainEventH\000R\024playerExperie" - "nceGain\022J\n\020player_punch_air\030% \001(\0132\036.df.p" - "lugin.PlayerPunchAirEventH\000R\016playerPunch" - "Air\022J\n\020player_sign_edit\030& \001(\0132\036.df.plugi" - "n.PlayerSignEditEventH\000R\016playerSignEdit\022" - "`\n\030player_lectern_page_turn\030\' \001(\0132%.df.p" - "lugin.PlayerLecternPageTurnEventH\000R\025play" - "erLecternPageTurn\022P\n\022player_item_damage\030" - "( \001(\0132 .df.plugin.PlayerItemDamageEventH" - "\000R\020playerItemDamage\022P\n\022player_item_picku" - "p\030) \001(\0132 .df.plugin.PlayerItemPickupEven" - "tH\000R\020playerItemPickup\022]\n\027player_held_slo" - "t_change\030* \001(\0132$.df.plugin.PlayerHeldSlo" - "tChangeEventH\000R\024playerHeldSlotChange\022J\n\020" - "player_item_drop\030+ \001(\0132\036.df.plugin.Playe" - "rItemDropEventH\000R\016playerItemDrop\022I\n\017play" - "er_transfer\030, \001(\0132\036.df.plugin.PlayerTran" - "sferEventH\000R\016playerTransfer\0223\n\007command\030-" - " \001(\0132\027.df.plugin.CommandEventH\000R\007command" - "\022R\n\022player_diagnostics\030. \001(\0132!.df.plugin" - ".PlayerDiagnosticsEventH\000R\021playerDiagnos" - "tics\022M\n\021world_liquid_flow\030F \001(\0132\037.df.plu" - "gin.WorldLiquidFlowEventH\000R\017worldLiquidF" - "low\022P\n\022world_liquid_decay\030G \001(\0132 .df.plu" - "gin.WorldLiquidDecayEventH\000R\020worldLiquid" - "Decay\022S\n\023world_liquid_harden\030H \001(\0132!.df." - "plugin.WorldLiquidHardenEventH\000R\021worldLi" - "quidHarden\022=\n\013world_sound\030I \001(\0132\032.df.plu" - "gin.WorldSoundEventH\000R\nworldSound\022M\n\021wor" - "ld_fire_spread\030J \001(\0132\037.df.plugin.WorldFi" - "reSpreadEventH\000R\017worldFireSpread\022J\n\020worl" - "d_block_burn\030K \001(\0132\036.df.plugin.WorldBloc" - "kBurnEventH\000R\016worldBlockBurn\022P\n\022world_cr" - "op_trample\030L \001(\0132 .df.plugin.WorldCropTr" - "ampleEventH\000R\020worldCropTrample\022P\n\022world_" - "leaves_decay\030M \001(\0132 .df.plugin.WorldLeav" - "esDecayEventH\000R\020worldLeavesDecay\022P\n\022worl" - "d_entity_spawn\030N \001(\0132 .df.plugin.WorldEn" - "titySpawnEventH\000R\020worldEntitySpawn\022V\n\024wo" - "rld_entity_despawn\030O \001(\0132\".df.plugin.Wor" - "ldEntityDespawnEventH\000R\022worldEntityDespa" - "wn\022I\n\017world_explosion\030P \001(\0132\036.df.plugin." - "WorldExplosionEventH\000R\016worldExplosion\022=\n" - "\013world_close\030Q \001(\0132\032.df.plugin.WorldClos" - "eEventH\000R\nworldCloseB\t\n\007payload\"\275\002\n\014Plug" - "inToHost\022\033\n\tplugin_id\030\001 \001(\tR\010pluginId\022.\n" - "\005hello\030\n \001(\0132\026.df.plugin.PluginHelloH\000R\005" - "hello\0229\n\tsubscribe\030\013 \001(\0132\031.df.plugin.Eve" - "ntSubscribeH\000R\tsubscribe\0222\n\007actions\030\024 \001(" - "\0132\026.df.plugin.ActionBatchH\000R\007actions\022)\n\003" - "log\030\036 \001(\0132\025.df.plugin.LogMessageH\000R\003log\022" - ";\n\014event_result\030( \001(\0132\026.df.plugin.EventR" - "esultH\000R\013eventResultB\t\n\007payload\"\324\001\n\013Plug" - "inHello\022\022\n\004name\030\001 \001(\tR\004name\022\030\n\007version\030\002" - " \001(\tR\007version\022\037\n\013api_version\030\003 \001(\tR\napiV" - "ersion\0222\n\010commands\030\004 \003(\0132\026.df.plugin.Com" - "mandSpecR\010commands\022B\n\014custom_items\030\005 \003(\013" - "2\037.df.plugin.CustomItemDefinitionR\013custo" - "mItems\"]\n\013CommandSpec\022\022\n\004name\030\001 \001(\tR\004nam" - "e\022 \n\013description\030\002 \001(\tR\013description\022\030\n\007a" - "liases\030\003 \003(\tR\007aliases\"<\n\nLogMessage\022\024\n\005l" + ".proto\032\022world_events.proto\032\rcommand.prot" + "o\032\ractions.proto\032\017mutations.proto\032\014commo" + "n.proto\"\315\001\n\014HostToPlugin\022\033\n\tplugin_id\030\001 " + "\001(\tR\010pluginId\022,\n\005hello\030\n \001(\0132\024.df.plugin" + ".HostHelloH\000R\005hello\0225\n\010shutdown\030\013 \001(\0132\027." + "df.plugin.HostShutdownH\000R\010shutdown\0220\n\005ev" + "ent\030\024 \001(\0132\030.df.plugin.EventEnvelopeH\000R\005e" + "ventB\t\n\007payload\",\n\tHostHello\022\037\n\013api_vers" + "ion\030\001 \001(\tR\napiVersion\"&\n\014HostShutdown\022\026\n" + "\006reason\030\001 \001(\tR\006reason\"\346\036\n\rEventEnvelope\022" + "\031\n\010event_id\030\001 \001(\tR\007eventId\022(\n\004type\030\002 \001(\016" + "2\024.df.plugin.EventTypeR\004type\022)\n\020expects_" + "response\030\003 \001(\010R\017expectsResponse\022=\n\013playe" + "r_join\030\n \001(\0132\032.df.plugin.PlayerJoinEvent" + "H\000R\nplayerJoin\022=\n\013player_quit\030\013 \001(\0132\032.df" + ".plugin.PlayerQuitEventH\000R\nplayerQuit\022=\n" + "\013player_move\030\014 \001(\0132\032.df.plugin.PlayerMov" + "eEventH\000R\nplayerMove\022=\n\013player_jump\030\r \001(" + "\0132\032.df.plugin.PlayerJumpEventH\000R\nplayerJ" + "ump\022I\n\017player_teleport\030\016 \001(\0132\036.df.plugin" + ".PlayerTeleportEventH\000R\016playerTeleport\022S" + "\n\023player_change_world\030\017 \001(\0132!.df.plugin." + "PlayerChangeWorldEventH\000R\021playerChangeWo" + "rld\022V\n\024player_toggle_sprint\030\020 \001(\0132\".df.p" + "lugin.PlayerToggleSprintEventH\000R\022playerT" + "oggleSprint\022S\n\023player_toggle_sneak\030\021 \001(\013" + "2!.df.plugin.PlayerToggleSneakEventH\000R\021p" + "layerToggleSneak\022*\n\004chat\030\022 \001(\0132\024.df.plug" + "in.ChatEventH\000R\004chat\022J\n\020player_food_loss" + "\030\023 \001(\0132\036.df.plugin.PlayerFoodLossEventH\000" + "R\016playerFoodLoss\022=\n\013player_heal\030\024 \001(\0132\032." + "df.plugin.PlayerHealEventH\000R\nplayerHeal\022" + "=\n\013player_hurt\030\025 \001(\0132\032.df.plugin.PlayerH" + "urtEventH\000R\nplayerHurt\022@\n\014player_death\030\026" + " \001(\0132\033.df.plugin.PlayerDeathEventH\000R\013pla" + "yerDeath\022F\n\016player_respawn\030\027 \001(\0132\035.df.pl" + "ugin.PlayerRespawnEventH\000R\rplayerRespawn" + "\022P\n\022player_skin_change\030\030 \001(\0132 .df.plugin" + ".PlayerSkinChangeEventH\000R\020playerSkinChan" + "ge\022\\\n\026player_fire_extinguish\030\031 \001(\0132$.df." + "plugin.PlayerFireExtinguishEventH\000R\024play" + "erFireExtinguish\022P\n\022player_start_break\030\032" + " \001(\0132 .df.plugin.PlayerStartBreakEventH\000" + "R\020playerStartBreak\022=\n\013block_break\030\033 \001(\0132" + "\032.df.plugin.BlockBreakEventH\000R\nblockBrea" + "k\022P\n\022player_block_place\030\034 \001(\0132 .df.plugi" + "n.PlayerBlockPlaceEventH\000R\020playerBlockPl" + "ace\022M\n\021player_block_pick\030\035 \001(\0132\037.df.plug" + "in.PlayerBlockPickEventH\000R\017playerBlockPi" + "ck\022G\n\017player_item_use\030\036 \001(\0132\035.df.plugin." + "PlayerItemUseEventH\000R\rplayerItemUse\022^\n\030p" + "layer_item_use_on_block\030\037 \001(\0132$.df.plugi" + "n.PlayerItemUseOnBlockEventH\000R\024playerIte" + "mUseOnBlock\022a\n\031player_item_use_on_entity" + "\030 \001(\0132%.df.plugin.PlayerItemUseOnEntity" + "EventH\000R\025playerItemUseOnEntity\022S\n\023player" + "_item_release\030! \001(\0132!.df.plugin.PlayerIt" + "emReleaseEventH\000R\021playerItemRelease\022S\n\023p" + "layer_item_consume\030\" \001(\0132!.df.plugin.Pla" + "yerItemConsumeEventH\000R\021playerItemConsume" + "\022V\n\024player_attack_entity\030# \001(\0132\".df.plug" + "in.PlayerAttackEntityEventH\000R\022playerAtta" + "ckEntity\022\\\n\026player_experience_gain\030$ \001(\013" + "2$.df.plugin.PlayerExperienceGainEventH\000" + "R\024playerExperienceGain\022J\n\020player_punch_a" + "ir\030% \001(\0132\036.df.plugin.PlayerPunchAirEvent" + "H\000R\016playerPunchAir\022J\n\020player_sign_edit\030&" + " \001(\0132\036.df.plugin.PlayerSignEditEventH\000R\016" + "playerSignEdit\022`\n\030player_lectern_page_tu" + "rn\030\' \001(\0132%.df.plugin.PlayerLecternPageTu" + "rnEventH\000R\025playerLecternPageTurn\022P\n\022play" + "er_item_damage\030( \001(\0132 .df.plugin.PlayerI" + "temDamageEventH\000R\020playerItemDamage\022P\n\022pl" + "ayer_item_pickup\030) \001(\0132 .df.plugin.Playe" + "rItemPickupEventH\000R\020playerItemPickup\022]\n\027" + "player_held_slot_change\030* \001(\0132$.df.plugi" + "n.PlayerHeldSlotChangeEventH\000R\024playerHel" + "dSlotChange\022J\n\020player_item_drop\030+ \001(\0132\036." + "df.plugin.PlayerItemDropEventH\000R\016playerI" + "temDrop\022I\n\017player_transfer\030, \001(\0132\036.df.pl" + "ugin.PlayerTransferEventH\000R\016playerTransf" + "er\0223\n\007command\030- \001(\0132\027.df.plugin.CommandE" + "ventH\000R\007command\022R\n\022player_diagnostics\030. " + "\001(\0132!.df.plugin.PlayerDiagnosticsEventH\000" + "R\021playerDiagnostics\022M\n\021world_liquid_flow" + "\030F \001(\0132\037.df.plugin.WorldLiquidFlowEventH" + "\000R\017worldLiquidFlow\022P\n\022world_liquid_decay" + "\030G \001(\0132 .df.plugin.WorldLiquidDecayEvent" + "H\000R\020worldLiquidDecay\022S\n\023world_liquid_har" + "den\030H \001(\0132!.df.plugin.WorldLiquidHardenE" + "ventH\000R\021worldLiquidHarden\022=\n\013world_sound" + "\030I \001(\0132\032.df.plugin.WorldSoundEventH\000R\nwo" + "rldSound\022M\n\021world_fire_spread\030J \001(\0132\037.df" + ".plugin.WorldFireSpreadEventH\000R\017worldFir" + "eSpread\022J\n\020world_block_burn\030K \001(\0132\036.df.p" + "lugin.WorldBlockBurnEventH\000R\016worldBlockB" + "urn\022P\n\022world_crop_trample\030L \001(\0132 .df.plu" + "gin.WorldCropTrampleEventH\000R\020worldCropTr" + "ample\022P\n\022world_leaves_decay\030M \001(\0132 .df.p" + "lugin.WorldLeavesDecayEventH\000R\020worldLeav" + "esDecay\022P\n\022world_entity_spawn\030N \001(\0132 .df" + ".plugin.WorldEntitySpawnEventH\000R\020worldEn" + "titySpawn\022V\n\024world_entity_despawn\030O \001(\0132" + "\".df.plugin.WorldEntityDespawnEventH\000R\022w" + "orldEntityDespawn\022I\n\017world_explosion\030P \001" + "(\0132\036.df.plugin.WorldExplosionEventH\000R\016wo" + "rldExplosion\022=\n\013world_close\030Q \001(\0132\032.df.p" + "lugin.WorldCloseEventH\000R\nworldCloseB\t\n\007p" + "ayload\"\275\002\n\014PluginToHost\022\033\n\tplugin_id\030\001 \001" + "(\tR\010pluginId\022.\n\005hello\030\n \001(\0132\026.df.plugin." + "PluginHelloH\000R\005hello\0229\n\tsubscribe\030\013 \001(\0132" + "\031.df.plugin.EventSubscribeH\000R\tsubscribe\022" + "2\n\007actions\030\024 \001(\0132\026.df.plugin.ActionBatch" + "H\000R\007actions\022)\n\003log\030\036 \001(\0132\025.df.plugin.Log" + "MessageH\000R\003log\022;\n\014event_result\030( \001(\0132\026.d" + "f.plugin.EventResultH\000R\013eventResultB\t\n\007p" + "ayload\"\324\001\n\013PluginHello\022\022\n\004name\030\001 \001(\tR\004na" + "me\022\030\n\007version\030\002 \001(\tR\007version\022\037\n\013api_vers" + "ion\030\003 \001(\tR\napiVersion\0222\n\010commands\030\004 \003(\0132" + "\026.df.plugin.CommandSpecR\010commands\022B\n\014cus" + "tom_items\030\005 \003(\0132\037.df.plugin.CustomItemDe" + "finitionR\013customItems\"<\n\nLogMessage\022\024\n\005l" "evel\030\001 \001(\tR\005level\022\030\n\007message\030\002 \001(\tR\007mess" "age\">\n\016EventSubscribe\022,\n\006events\030\001 \003(\0162\024." "df.plugin.EventTypeR\006events*\212\t\n\tEventTyp" @@ -675,8 +631,9 @@ const char descriptor_table_protodef_plugin_2eproto[] ABSL_ATTRIBUTE_SECTION_VAR "\002\nDf::Pluginb\006proto3" }; static const ::_pbi::DescriptorTable* PROTOBUF_NONNULL const - descriptor_table_plugin_2eproto_deps[5] = { + descriptor_table_plugin_2eproto_deps[6] = { &::descriptor_table_actions_2eproto, + &::descriptor_table_command_2eproto, &::descriptor_table_common_2eproto, &::descriptor_table_mutations_2eproto, &::descriptor_table_player_5fevents_2eproto, @@ -686,13 +643,13 @@ static ::absl::once_flag descriptor_table_plugin_2eproto_once; PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_plugin_2eproto = { false, false, - 6500, + 6420, descriptor_table_protodef_plugin_2eproto, "plugin.proto", &descriptor_table_plugin_2eproto_once, descriptor_table_plugin_2eproto_deps, - 5, - 9, + 6, + 8, schemas, file_default_instances, TableStruct_plugin_2eproto::offsets, @@ -5585,6 +5542,12 @@ class PluginHello::_Internal { 8 * PROTOBUF_FIELD_OFFSET(PluginHello, _impl_._has_bits_); }; +void PluginHello::clear_commands() { + ::google::protobuf::internal::TSanWrite(&_impl_); + _impl_.commands_.Clear(); + ClearHasBitForRepeated(_impl_._has_bits_[0], + 0x00000001U); +} void PluginHello::clear_custom_items() { ::google::protobuf::internal::TSanWrite(&_impl_); _impl_.custom_items_.Clear(); @@ -6040,377 +6003,6 @@ ::google::protobuf::Metadata PluginHello::GetMetadata() const { } // =================================================================== -class CommandSpec::_Internal { - public: - using HasBits = - decltype(::std::declval()._impl_._has_bits_); - static constexpr ::int32_t kHasBitsOffset = - 8 * PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_._has_bits_); -}; - -CommandSpec::CommandSpec(::google::protobuf::Arena* PROTOBUF_NULLABLE arena) -#if defined(PROTOBUF_CUSTOM_VTABLE) - : ::google::protobuf::Message(arena, CommandSpec_class_data_.base()) { -#else // PROTOBUF_CUSTOM_VTABLE - : ::google::protobuf::Message(arena) { -#endif // PROTOBUF_CUSTOM_VTABLE - SharedCtor(arena); - // @@protoc_insertion_point(arena_constructor:df.plugin.CommandSpec) -} -PROTOBUF_NDEBUG_INLINE CommandSpec::Impl_::Impl_( - [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility, - [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from, - [[maybe_unused]] const ::df::plugin::CommandSpec& from_msg) - : _has_bits_{from._has_bits_}, - _cached_size_{0}, - aliases_{visibility, arena, from.aliases_}, - name_(arena, from.name_), - description_(arena, from.description_) {} - -CommandSpec::CommandSpec( - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, - const CommandSpec& from) -#if defined(PROTOBUF_CUSTOM_VTABLE) - : ::google::protobuf::Message(arena, CommandSpec_class_data_.base()) { -#else // PROTOBUF_CUSTOM_VTABLE - : ::google::protobuf::Message(arena) { -#endif // PROTOBUF_CUSTOM_VTABLE - CommandSpec* const _this = this; - (void)_this; - _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( - from._internal_metadata_); - new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from); - - // @@protoc_insertion_point(copy_constructor:df.plugin.CommandSpec) -} -PROTOBUF_NDEBUG_INLINE CommandSpec::Impl_::Impl_( - [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility, - [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) - : _cached_size_{0}, - aliases_{visibility, arena}, - name_(arena), - description_(arena) {} - -inline void CommandSpec::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) { - new (&_impl_) Impl_(internal_visibility(), arena); -} -CommandSpec::~CommandSpec() { - // @@protoc_insertion_point(destructor:df.plugin.CommandSpec) - SharedDtor(*this); -} -inline void CommandSpec::SharedDtor(MessageLite& self) { - CommandSpec& this_ = static_cast(self); - if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { - this_.CheckHasBitConsistency(); - } - this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>(); - ABSL_DCHECK(this_.GetArena() == nullptr); - this_._impl_.name_.Destroy(); - this_._impl_.description_.Destroy(); - this_._impl_.~Impl_(); -} - -inline void* PROTOBUF_NONNULL CommandSpec::PlacementNew_( - const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem, - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) { - return ::new (mem) CommandSpec(arena); -} -constexpr auto CommandSpec::InternalNewImpl_() { - constexpr auto arena_bits = ::google::protobuf::internal::EncodePlacementArenaOffsets({ - PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.aliases_) + - decltype(CommandSpec::_impl_.aliases_):: - InternalGetArenaOffset( - ::google::protobuf::Message::internal_visibility()), - }); - if (arena_bits.has_value()) { - return ::google::protobuf::internal::MessageCreator::CopyInit( - sizeof(CommandSpec), alignof(CommandSpec), *arena_bits); - } else { - return ::google::protobuf::internal::MessageCreator(&CommandSpec::PlacementNew_, - sizeof(CommandSpec), - alignof(CommandSpec)); - } -} -constexpr auto CommandSpec::InternalGenerateClassData_() { - return ::google::protobuf::internal::ClassDataFull{ - ::google::protobuf::internal::ClassData{ - &_CommandSpec_default_instance_._instance, - &_table_.header, - nullptr, // OnDemandRegisterArenaDtor - nullptr, // IsInitialized - &CommandSpec::MergeImpl, - ::google::protobuf::Message::GetNewImpl(), -#if defined(PROTOBUF_CUSTOM_VTABLE) - &CommandSpec::SharedDtor, - ::google::protobuf::Message::GetClearImpl(), &CommandSpec::ByteSizeLong, - &CommandSpec::_InternalSerialize, -#endif // PROTOBUF_CUSTOM_VTABLE - PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_._cached_size_), - false, - }, - &CommandSpec::kDescriptorMethods, - &descriptor_table_plugin_2eproto, - nullptr, // tracker - }; -} - -PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const - ::google::protobuf::internal::ClassDataFull CommandSpec_class_data_ = - CommandSpec::InternalGenerateClassData_(); - -PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL -CommandSpec::GetClassData() const { - ::google::protobuf::internal::PrefetchToLocalCache(&CommandSpec_class_data_); - ::google::protobuf::internal::PrefetchToLocalCache(CommandSpec_class_data_.tc_table); - return CommandSpec_class_data_.base(); -} -PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 -const ::_pbi::TcParseTable<2, 3, 0, 52, 2> -CommandSpec::_table_ = { - { - PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_._has_bits_), - 0, // no _extensions_ - 3, 24, // max_field_number, fast_idx_mask - offsetof(decltype(_table_), field_lookup_table), - 4294967288, // skipmap - offsetof(decltype(_table_), field_entries), - 3, // num_field_entries - 0, // num_aux_entries - offsetof(decltype(_table_), field_names), // no aux_entries - CommandSpec_class_data_.base(), - nullptr, // post_loop_handler - ::_pbi::TcParser::GenericFallback, // fallback - #ifdef PROTOBUF_PREFETCH_PARSE_TABLE - ::_pbi::TcParser::GetTable<::df::plugin::CommandSpec>(), // to_prefetch - #endif // PROTOBUF_PREFETCH_PARSE_TABLE - }, {{ - {::_pbi::TcParser::MiniParse, {}}, - // string name = 1 [json_name = "name"]; - {::_pbi::TcParser::FastUS1, - {10, 1, 0, - PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.name_)}}, - // string description = 2 [json_name = "description"]; - {::_pbi::TcParser::FastUS1, - {18, 2, 0, - PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.description_)}}, - // repeated string aliases = 3 [json_name = "aliases"]; - {::_pbi::TcParser::FastUR1, - {26, 0, 0, - PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.aliases_)}}, - }}, {{ - 65535, 65535 - }}, {{ - // string name = 1 [json_name = "name"]; - {PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.name_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, - // string description = 2 [json_name = "description"]; - {PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.description_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)}, - // repeated string aliases = 3 [json_name = "aliases"]; - {PROTOBUF_FIELD_OFFSET(CommandSpec, _impl_.aliases_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUtf8String | ::_fl::kRepSString)}, - }}, - // no aux_entries - {{ - "\25\4\13\7\0\0\0\0" - "df.plugin.CommandSpec" - "name" - "description" - "aliases" - }}, -}; -PROTOBUF_NOINLINE void CommandSpec::Clear() { -// @@protoc_insertion_point(message_clear_start:df.plugin.CommandSpec) - ::google::protobuf::internal::TSanWrite(&_impl_); - ::uint32_t cached_has_bits = 0; - // Prevent compiler warnings about cached_has_bits being unused - (void) cached_has_bits; - - cached_has_bits = _impl_._has_bits_[0]; - if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) { - if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { - _impl_.aliases_.Clear(); - } - if (CheckHasBit(cached_has_bits, 0x00000002U)) { - _impl_.name_.ClearNonDefaultToEmpty(); - } - if (CheckHasBit(cached_has_bits, 0x00000004U)) { - _impl_.description_.ClearNonDefaultToEmpty(); - } - } - _impl_._has_bits_.Clear(); - _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); -} - -#if defined(PROTOBUF_CUSTOM_VTABLE) -::uint8_t* PROTOBUF_NONNULL CommandSpec::_InternalSerialize( - const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target, - ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) { - const CommandSpec& this_ = static_cast(base); -#else // PROTOBUF_CUSTOM_VTABLE -::uint8_t* PROTOBUF_NONNULL CommandSpec::_InternalSerialize( - ::uint8_t* PROTOBUF_NONNULL target, - ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const { - const CommandSpec& this_ = *this; -#endif // PROTOBUF_CUSTOM_VTABLE - if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { - this_.CheckHasBitConsistency(); - } - // @@protoc_insertion_point(serialize_to_array_start:df.plugin.CommandSpec) - ::uint32_t cached_has_bits = 0; - (void)cached_has_bits; - - cached_has_bits = this_._impl_._has_bits_[0]; - // string name = 1 [json_name = "name"]; - if (CheckHasBit(cached_has_bits, 0x00000002U)) { - if (!this_._internal_name().empty()) { - const ::std::string& _s = this_._internal_name(); - ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandSpec.name"); - target = stream->WriteStringMaybeAliased(1, _s, target); - } - } - - // string description = 2 [json_name = "description"]; - if (CheckHasBit(cached_has_bits, 0x00000004U)) { - if (!this_._internal_description().empty()) { - const ::std::string& _s = this_._internal_description(); - ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandSpec.description"); - target = stream->WriteStringMaybeAliased(2, _s, target); - } - } - - // repeated string aliases = 3 [json_name = "aliases"]; - if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { - for (int i = 0, n = this_._internal_aliases_size(); i < n; ++i) { - const auto& s = this_._internal_aliases().Get(i); - ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "df.plugin.CommandSpec.aliases"); - target = stream->WriteString(3, s, target); - } - } - - if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) { - target = - ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( - this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream); - } - // @@protoc_insertion_point(serialize_to_array_end:df.plugin.CommandSpec) - return target; -} - -#if defined(PROTOBUF_CUSTOM_VTABLE) -::size_t CommandSpec::ByteSizeLong(const MessageLite& base) { - const CommandSpec& this_ = static_cast(base); -#else // PROTOBUF_CUSTOM_VTABLE -::size_t CommandSpec::ByteSizeLong() const { - const CommandSpec& this_ = *this; -#endif // PROTOBUF_CUSTOM_VTABLE - // @@protoc_insertion_point(message_byte_size_start:df.plugin.CommandSpec) - ::size_t total_size = 0; - - ::uint32_t cached_has_bits = 0; - // Prevent compiler warnings about cached_has_bits being unused - (void)cached_has_bits; - - ::_pbi::Prefetch5LinesFrom7Lines(&this_); - cached_has_bits = this_._impl_._has_bits_[0]; - if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) { - // repeated string aliases = 3 [json_name = "aliases"]; - if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { - total_size += - 1 * ::google::protobuf::internal::FromIntSize(this_._internal_aliases().size()); - for (int i = 0, n = this_._internal_aliases().size(); i < n; ++i) { - total_size += ::google::protobuf::internal::WireFormatLite::StringSize( - this_._internal_aliases().Get(i)); - } - } - // string name = 1 [json_name = "name"]; - if (CheckHasBit(cached_has_bits, 0x00000002U)) { - if (!this_._internal_name().empty()) { - total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( - this_._internal_name()); - } - } - // string description = 2 [json_name = "description"]; - if (CheckHasBit(cached_has_bits, 0x00000004U)) { - if (!this_._internal_description().empty()) { - total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( - this_._internal_description()); - } - } - } - return this_.MaybeComputeUnknownFieldsSize(total_size, - &this_._impl_._cached_size_); -} - -void CommandSpec::MergeImpl(::google::protobuf::MessageLite& to_msg, - const ::google::protobuf::MessageLite& from_msg) { - auto* const _this = - static_cast(&to_msg); - auto& from = static_cast(from_msg); - if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) { - from.CheckHasBitConsistency(); - } - ::google::protobuf::Arena* arena = _this->GetArena(); - // @@protoc_insertion_point(class_specific_merge_from_start:df.plugin.CommandSpec) - ABSL_DCHECK_NE(&from, _this); - ::uint32_t cached_has_bits = 0; - (void)cached_has_bits; - - cached_has_bits = from._impl_._has_bits_[0]; - if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) { - if (CheckHasBitForRepeated(cached_has_bits, 0x00000001U)) { - _this->_internal_mutable_aliases()->InternalMergeFromWithArena( - ::google::protobuf::MessageLite::internal_visibility(), arena, - from._internal_aliases()); - } - if (CheckHasBit(cached_has_bits, 0x00000002U)) { - if (!from._internal_name().empty()) { - _this->_internal_set_name(from._internal_name()); - } else { - if (_this->_impl_.name_.IsDefault()) { - _this->_internal_set_name(""); - } - } - } - if (CheckHasBit(cached_has_bits, 0x00000004U)) { - if (!from._internal_description().empty()) { - _this->_internal_set_description(from._internal_description()); - } else { - if (_this->_impl_.description_.IsDefault()) { - _this->_internal_set_description(""); - } - } - } - } - _this->_impl_._has_bits_[0] |= cached_has_bits; - _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>( - from._internal_metadata_); -} - -void CommandSpec::CopyFrom(const CommandSpec& from) { - // @@protoc_insertion_point(class_specific_copy_from_start:df.plugin.CommandSpec) - if (&from == this) return; - Clear(); - MergeFrom(from); -} - - -void CommandSpec::InternalSwap(CommandSpec* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) { - using ::std::swap; - auto* arena = GetArena(); - ABSL_DCHECK_EQ(arena, other->GetArena()); - _internal_metadata_.InternalSwap(&other->_internal_metadata_); - swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]); - _impl_.aliases_.InternalSwap(&other->_impl_.aliases_); - ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena); - ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.description_, &other->_impl_.description_, arena); -} - -::google::protobuf::Metadata CommandSpec::GetMetadata() const { - return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full()); -} -// =================================================================== - class LogMessage::_Internal { public: using HasBits = diff --git a/proto/generated/cpp/plugin.pb.h b/proto/generated/cpp/plugin.pb.h index 9096c7d..38d316b 100644 --- a/proto/generated/cpp/plugin.pb.h +++ b/proto/generated/cpp/plugin.pb.h @@ -32,6 +32,7 @@ #include "google/protobuf/unknown_field_set.h" #include "player_events.pb.h" #include "world_events.pb.h" +#include "command.pb.h" #include "actions.pb.h" #include "mutations.pb.h" #include "common.pb.h" @@ -62,10 +63,6 @@ namespace df { namespace plugin { enum EventType : int; extern const uint32_t EventType_internal_data_[]; -class CommandSpec; -struct CommandSpecDefaultTypeInternal; -extern CommandSpecDefaultTypeInternal _CommandSpec_default_instance_; -extern const ::google::protobuf::internal::ClassDataFull CommandSpec_class_data_; class EventEnvelope; struct EventEnvelopeDefaultTypeInternal; extern EventEnvelopeDefaultTypeInternal _EventEnvelope_default_instance_; @@ -256,7 +253,7 @@ class LogMessage final : public ::google::protobuf::Message return *reinterpret_cast( &_LogMessage_default_instance_); } - static constexpr int kIndexInFileMessages = 7; + static constexpr int kIndexInFileMessages = 6; friend void swap(LogMessage& a, LogMessage& b) { a.Swap(&b); } inline void Swap(LogMessage* PROTOBUF_NONNULL other) { if (other == this) return; @@ -858,7 +855,7 @@ class EventSubscribe final : public ::google::protobuf::Message return *reinterpret_cast( &_EventSubscribe_default_instance_); } - static constexpr int kIndexInFileMessages = 8; + static constexpr int kIndexInFileMessages = 7; friend void swap(EventSubscribe& a, EventSubscribe& b) { a.Swap(&b); } inline void Swap(EventSubscribe* PROTOBUF_NONNULL other) { if (other == this) return; @@ -1003,242 +1000,6 @@ class EventSubscribe final : public ::google::protobuf::Message extern const ::google::protobuf::internal::ClassDataFull EventSubscribe_class_data_; // ------------------------------------------------------------------- -class CommandSpec final : public ::google::protobuf::Message -/* @@protoc_insertion_point(class_definition:df.plugin.CommandSpec) */ { - public: - inline CommandSpec() : CommandSpec(nullptr) {} - ~CommandSpec() PROTOBUF_FINAL; - -#if defined(PROTOBUF_CUSTOM_VTABLE) - void operator delete(CommandSpec* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) { - SharedDtor(*msg); - ::google::protobuf::internal::SizedDelete(msg, sizeof(CommandSpec)); - } -#endif - - template - explicit PROTOBUF_CONSTEXPR CommandSpec(::google::protobuf::internal::ConstantInitialized); - - inline CommandSpec(const CommandSpec& from) : CommandSpec(nullptr, from) {} - inline CommandSpec(CommandSpec&& from) noexcept - : CommandSpec(nullptr, ::std::move(from)) {} - inline CommandSpec& operator=(const CommandSpec& from) { - CopyFrom(from); - return *this; - } - inline CommandSpec& operator=(CommandSpec&& from) noexcept { - if (this == &from) return *this; - if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) { - InternalSwap(&from); - } else { - CopyFrom(from); - } - return *this; - } - - inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const - ABSL_ATTRIBUTE_LIFETIME_BOUND { - return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance); - } - inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields() - ABSL_ATTRIBUTE_LIFETIME_BOUND { - return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(); - } - - static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() { - return GetDescriptor(); - } - static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() { - return default_instance().GetMetadata().descriptor; - } - static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() { - return default_instance().GetMetadata().reflection; - } - static const CommandSpec& default_instance() { - return *reinterpret_cast( - &_CommandSpec_default_instance_); - } - static constexpr int kIndexInFileMessages = 6; - friend void swap(CommandSpec& a, CommandSpec& b) { a.Swap(&b); } - inline void Swap(CommandSpec* PROTOBUF_NONNULL other) { - if (other == this) return; - if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) { - InternalSwap(other); - } else { - ::google::protobuf::internal::GenericSwap(this, other); - } - } - void UnsafeArenaSwap(CommandSpec* PROTOBUF_NONNULL other) { - if (other == this) return; - ABSL_DCHECK(GetArena() == other->GetArena()); - InternalSwap(other); - } - - // implements Message ---------------------------------------------- - - CommandSpec* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const { - return ::google::protobuf::Message::DefaultConstruct(arena); - } - using ::google::protobuf::Message::CopyFrom; - void CopyFrom(const CommandSpec& from); - using ::google::protobuf::Message::MergeFrom; - void MergeFrom(const CommandSpec& from) { CommandSpec::MergeImpl(*this, from); } - - private: - static void MergeImpl(::google::protobuf::MessageLite& to_msg, - const ::google::protobuf::MessageLite& from_msg); - - public: - bool IsInitialized() const { - return true; - } - ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL; - #if defined(PROTOBUF_CUSTOM_VTABLE) - private: - static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg); - static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( - const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target, - ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream); - - public: - ::size_t ByteSizeLong() const { return ByteSizeLong(*this); } - ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( - ::uint8_t* PROTOBUF_NONNULL target, - ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const { - return _InternalSerialize(*this, target, stream); - } - #else // PROTOBUF_CUSTOM_VTABLE - ::size_t ByteSizeLong() const final; - ::uint8_t* PROTOBUF_NONNULL _InternalSerialize( - ::uint8_t* PROTOBUF_NONNULL target, - ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final; - #endif // PROTOBUF_CUSTOM_VTABLE - int GetCachedSize() const { return _impl_._cached_size_.Get(); } - - private: - void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena); - static void SharedDtor(MessageLite& self); - void InternalSwap(CommandSpec* PROTOBUF_NONNULL other); - private: - template - friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)(); - static ::absl::string_view FullMessageName() { return "df.plugin.CommandSpec"; } - - explicit CommandSpec(::google::protobuf::Arena* PROTOBUF_NULLABLE arena); - CommandSpec(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CommandSpec& from); - CommandSpec( - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CommandSpec&& from) noexcept - : CommandSpec(arena) { - *this = ::std::move(from); - } - const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL; - static void* PROTOBUF_NONNULL PlacementNew_( - const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem, - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena); - static constexpr auto InternalNewImpl_(); - - public: - static constexpr auto InternalGenerateClassData_(); - - ::google::protobuf::Metadata GetMetadata() const; - // nested types ---------------------------------------------------- - - // accessors ------------------------------------------------------- - enum : int { - kAliasesFieldNumber = 3, - kNameFieldNumber = 1, - kDescriptionFieldNumber = 2, - }; - // repeated string aliases = 3 [json_name = "aliases"]; - int aliases_size() const; - private: - int _internal_aliases_size() const; - - public: - void clear_aliases() ; - const ::std::string& aliases(int index) const; - ::std::string* PROTOBUF_NONNULL mutable_aliases(int index); - template - void set_aliases(int index, Arg_&& value, Args_... args); - ::std::string* PROTOBUF_NONNULL add_aliases(); - template - void add_aliases(Arg_&& value, Args_... args); - const ::google::protobuf::RepeatedPtrField<::std::string>& aliases() const; - ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_aliases(); - - private: - const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_aliases() const; - ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_aliases(); - - public: - // string name = 1 [json_name = "name"]; - void clear_name() ; - const ::std::string& name() const; - template - void set_name(Arg_&& arg, Args_... args); - ::std::string* PROTOBUF_NONNULL mutable_name(); - [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name(); - void set_allocated_name(::std::string* PROTOBUF_NULLABLE value); - - private: - const ::std::string& _internal_name() const; - PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value); - ::std::string* PROTOBUF_NONNULL _internal_mutable_name(); - - public: - // string description = 2 [json_name = "description"]; - void clear_description() ; - const ::std::string& description() const; - template - void set_description(Arg_&& arg, Args_... args); - ::std::string* PROTOBUF_NONNULL mutable_description(); - [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_description(); - void set_allocated_description(::std::string* PROTOBUF_NULLABLE value); - - private: - const ::std::string& _internal_description() const; - PROTOBUF_ALWAYS_INLINE void _internal_set_description(const ::std::string& value); - ::std::string* PROTOBUF_NONNULL _internal_mutable_description(); - - public: - // @@protoc_insertion_point(class_scope:df.plugin.CommandSpec) - private: - class _Internal; - friend class ::google::protobuf::internal::TcParser; - static const ::google::protobuf::internal::TcParseTable<2, 3, - 0, 52, - 2> - _table_; - - friend class ::google::protobuf::MessageLite; - friend class ::google::protobuf::Arena; - template - friend class ::google::protobuf::Arena::InternalHelper; - using InternalArenaConstructable_ = void; - using DestructorSkippable_ = void; - struct Impl_ { - inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept; - inline explicit Impl_( - ::google::protobuf::internal::InternalVisibility visibility, - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena); - inline explicit Impl_( - ::google::protobuf::internal::InternalVisibility visibility, - ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from, - const CommandSpec& from_msg); - ::google::protobuf::internal::HasBits<1> _has_bits_; - ::google::protobuf::internal::CachedSize _cached_size_; - ::google::protobuf::RepeatedPtrField<::std::string> aliases_; - ::google::protobuf::internal::ArenaStringPtr name_; - ::google::protobuf::internal::ArenaStringPtr description_; - PROTOBUF_TSAN_DECLARE_MEMBER - }; - union { Impl_ _impl_; }; - friend struct ::TableStruct_plugin_2eproto; -}; - -extern const ::google::protobuf::internal::ClassDataFull CommandSpec_class_data_; -// ------------------------------------------------------------------- - class PluginHello final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:df.plugin.PluginHello) */ { public: @@ -8214,12 +7975,6 @@ inline int PluginHello::_internal_commands_size() const { inline int PluginHello::commands_size() const { return _internal_commands_size(); } -inline void PluginHello::clear_commands() { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.commands_.Clear(); - ClearHasBitForRepeated(_impl_._has_bits_[0], - 0x00000001U); -} inline ::df::plugin::CommandSpec* PROTOBUF_NONNULL PluginHello::mutable_commands(int index) ABSL_ATTRIBUTE_LIFETIME_BOUND { // @@protoc_insertion_point(field_mutable:df.plugin.PluginHello.commands) @@ -8315,212 +8070,6 @@ PluginHello::_internal_mutable_custom_items() { // ------------------------------------------------------------------- -// CommandSpec - -// string name = 1 [json_name = "name"]; -inline void CommandSpec::clear_name() { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.name_.ClearToEmpty(); - ClearHasBit(_impl_._has_bits_[0], - 0x00000002U); -} -inline const ::std::string& CommandSpec::name() const - ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_get:df.plugin.CommandSpec.name) - return _internal_name(); -} -template -PROTOBUF_ALWAYS_INLINE void CommandSpec::set_name(Arg_&& arg, Args_... args) { - ::google::protobuf::internal::TSanWrite(&_impl_); - SetHasBit(_impl_._has_bits_[0], 0x00000002U); - _impl_.name_.Set(static_cast(arg), args..., GetArena()); - // @@protoc_insertion_point(field_set:df.plugin.CommandSpec.name) -} -inline ::std::string* PROTOBUF_NONNULL CommandSpec::mutable_name() - ABSL_ATTRIBUTE_LIFETIME_BOUND { - SetHasBit(_impl_._has_bits_[0], 0x00000002U); - ::std::string* _s = _internal_mutable_name(); - // @@protoc_insertion_point(field_mutable:df.plugin.CommandSpec.name) - return _s; -} -inline const ::std::string& CommandSpec::_internal_name() const { - ::google::protobuf::internal::TSanRead(&_impl_); - return _impl_.name_.Get(); -} -inline void CommandSpec::_internal_set_name(const ::std::string& value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.name_.Set(value, GetArena()); -} -inline ::std::string* PROTOBUF_NONNULL CommandSpec::_internal_mutable_name() { - ::google::protobuf::internal::TSanWrite(&_impl_); - return _impl_.name_.Mutable( GetArena()); -} -inline ::std::string* PROTOBUF_NULLABLE CommandSpec::release_name() { - ::google::protobuf::internal::TSanWrite(&_impl_); - // @@protoc_insertion_point(field_release:df.plugin.CommandSpec.name) - if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) { - return nullptr; - } - ClearHasBit(_impl_._has_bits_[0], 0x00000002U); - auto* released = _impl_.name_.Release(); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { - _impl_.name_.Set("", GetArena()); - } - return released; -} -inline void CommandSpec::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - if (value != nullptr) { - SetHasBit(_impl_._has_bits_[0], 0x00000002U); - } else { - ClearHasBit(_impl_._has_bits_[0], 0x00000002U); - } - _impl_.name_.SetAllocated(value, GetArena()); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) { - _impl_.name_.Set("", GetArena()); - } - // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandSpec.name) -} - -// string description = 2 [json_name = "description"]; -inline void CommandSpec::clear_description() { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.description_.ClearToEmpty(); - ClearHasBit(_impl_._has_bits_[0], - 0x00000004U); -} -inline const ::std::string& CommandSpec::description() const - ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_get:df.plugin.CommandSpec.description) - return _internal_description(); -} -template -PROTOBUF_ALWAYS_INLINE void CommandSpec::set_description(Arg_&& arg, Args_... args) { - ::google::protobuf::internal::TSanWrite(&_impl_); - SetHasBit(_impl_._has_bits_[0], 0x00000004U); - _impl_.description_.Set(static_cast(arg), args..., GetArena()); - // @@protoc_insertion_point(field_set:df.plugin.CommandSpec.description) -} -inline ::std::string* PROTOBUF_NONNULL CommandSpec::mutable_description() - ABSL_ATTRIBUTE_LIFETIME_BOUND { - SetHasBit(_impl_._has_bits_[0], 0x00000004U); - ::std::string* _s = _internal_mutable_description(); - // @@protoc_insertion_point(field_mutable:df.plugin.CommandSpec.description) - return _s; -} -inline const ::std::string& CommandSpec::_internal_description() const { - ::google::protobuf::internal::TSanRead(&_impl_); - return _impl_.description_.Get(); -} -inline void CommandSpec::_internal_set_description(const ::std::string& value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.description_.Set(value, GetArena()); -} -inline ::std::string* PROTOBUF_NONNULL CommandSpec::_internal_mutable_description() { - ::google::protobuf::internal::TSanWrite(&_impl_); - return _impl_.description_.Mutable( GetArena()); -} -inline ::std::string* PROTOBUF_NULLABLE CommandSpec::release_description() { - ::google::protobuf::internal::TSanWrite(&_impl_); - // @@protoc_insertion_point(field_release:df.plugin.CommandSpec.description) - if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) { - return nullptr; - } - ClearHasBit(_impl_._has_bits_[0], 0x00000004U); - auto* released = _impl_.description_.Release(); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) { - _impl_.description_.Set("", GetArena()); - } - return released; -} -inline void CommandSpec::set_allocated_description(::std::string* PROTOBUF_NULLABLE value) { - ::google::protobuf::internal::TSanWrite(&_impl_); - if (value != nullptr) { - SetHasBit(_impl_._has_bits_[0], 0x00000004U); - } else { - ClearHasBit(_impl_._has_bits_[0], 0x00000004U); - } - _impl_.description_.SetAllocated(value, GetArena()); - if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.description_.IsDefault()) { - _impl_.description_.Set("", GetArena()); - } - // @@protoc_insertion_point(field_set_allocated:df.plugin.CommandSpec.description) -} - -// repeated string aliases = 3 [json_name = "aliases"]; -inline int CommandSpec::_internal_aliases_size() const { - return _internal_aliases().size(); -} -inline int CommandSpec::aliases_size() const { - return _internal_aliases_size(); -} -inline void CommandSpec::clear_aliases() { - ::google::protobuf::internal::TSanWrite(&_impl_); - _impl_.aliases_.Clear(); - ClearHasBitForRepeated(_impl_._has_bits_[0], - 0x00000001U); -} -inline ::std::string* PROTOBUF_NONNULL CommandSpec::add_aliases() - ABSL_ATTRIBUTE_LIFETIME_BOUND { - ::google::protobuf::internal::TSanWrite(&_impl_); - ::std::string* _s = - _internal_mutable_aliases()->InternalAddWithArena( - ::google::protobuf::MessageLite::internal_visibility(), GetArena()); - SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); - // @@protoc_insertion_point(field_add_mutable:df.plugin.CommandSpec.aliases) - return _s; -} -inline const ::std::string& CommandSpec::aliases(int index) const - ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_get:df.plugin.CommandSpec.aliases) - return _internal_aliases().Get(index); -} -inline ::std::string* PROTOBUF_NONNULL CommandSpec::mutable_aliases(int index) - ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_mutable:df.plugin.CommandSpec.aliases) - return _internal_mutable_aliases()->Mutable(index); -} -template -inline void CommandSpec::set_aliases(int index, Arg_&& value, Args_... args) { - ::google::protobuf::internal::AssignToString(*_internal_mutable_aliases()->Mutable(index), ::std::forward(value), - args... ); - // @@protoc_insertion_point(field_set:df.plugin.CommandSpec.aliases) -} -template -inline void CommandSpec::add_aliases(Arg_&& value, Args_... args) { - ::google::protobuf::internal::TSanWrite(&_impl_); - ::google::protobuf::internal::AddToRepeatedPtrField( - ::google::protobuf::MessageLite::internal_visibility(), GetArena(), - *_internal_mutable_aliases(), ::std::forward(value), - args... ); - SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); - // @@protoc_insertion_point(field_add:df.plugin.CommandSpec.aliases) -} -inline const ::google::protobuf::RepeatedPtrField<::std::string>& CommandSpec::aliases() - const ABSL_ATTRIBUTE_LIFETIME_BOUND { - // @@protoc_insertion_point(field_list:df.plugin.CommandSpec.aliases) - return _internal_aliases(); -} -inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL -CommandSpec::mutable_aliases() ABSL_ATTRIBUTE_LIFETIME_BOUND { - SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U); - // @@protoc_insertion_point(field_mutable_list:df.plugin.CommandSpec.aliases) - ::google::protobuf::internal::TSanWrite(&_impl_); - return _internal_mutable_aliases(); -} -inline const ::google::protobuf::RepeatedPtrField<::std::string>& -CommandSpec::_internal_aliases() const { - ::google::protobuf::internal::TSanRead(&_impl_); - return _impl_.aliases_; -} -inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL -CommandSpec::_internal_mutable_aliases() { - ::google::protobuf::internal::TSanRead(&_impl_); - return &_impl_.aliases_; -} - -// ------------------------------------------------------------------- - // LogMessage // string level = 1 [json_name = "level"]; diff --git a/proto/generated/php/Df/Plugin/CommandEvent.php b/proto/generated/php/Df/Plugin/CommandEvent.php index 2609021..accc945 100644 --- a/proto/generated/php/Df/Plugin/CommandEvent.php +++ b/proto/generated/php/Df/Plugin/CommandEvent.php @@ -1,7 +1,7 @@ df.plugin.CommandEvent */ class CommandEvent extends \Google\Protobuf\Internal\Message @@ -58,7 +60,7 @@ class CommandEvent extends \Google\Protobuf\Internal\Message * } */ public function __construct($data = NULL) { - \Df\Plugin\GPBMetadata\PlayerEvents::initOnce(); + \Df\Plugin\GPBMetadata\Command::initOnce(); parent::__construct($data); } diff --git a/proto/generated/php/Df/Plugin/CommandSpec.php b/proto/generated/php/Df/Plugin/CommandSpec.php index ee2a2d6..50e7215 100644 --- a/proto/generated/php/Df/Plugin/CommandSpec.php +++ b/proto/generated/php/Df/Plugin/CommandSpec.php @@ -1,7 +1,7 @@ df.plugin.CommandSpec */ class CommandSpec extends \Google\Protobuf\Internal\Message @@ -26,6 +28,10 @@ class CommandSpec extends \Google\Protobuf\Internal\Message * Generated from protobuf field repeated string aliases = 3 [json_name = "aliases"]; */ private $aliases; + /** + * Generated from protobuf field repeated .df.plugin.ParamSpec params = 4 [json_name = "params"]; + */ + private $params; /** * Constructor. @@ -36,10 +42,11 @@ class CommandSpec extends \Google\Protobuf\Internal\Message * @type string $name * @type string $description * @type string[] $aliases + * @type \Df\Plugin\ParamSpec[] $params * } */ public function __construct($data = NULL) { - \Df\Plugin\GPBMetadata\Plugin::initOnce(); + \Df\Plugin\GPBMetadata\Command::initOnce(); parent::__construct($data); } @@ -109,5 +116,27 @@ public function setAliases($var) return $this; } + /** + * Generated from protobuf field repeated .df.plugin.ParamSpec params = 4 [json_name = "params"]; + * @return RepeatedField<\Df\Plugin\ParamSpec> + */ + public function getParams() + { + return $this->params; + } + + /** + * Generated from protobuf field repeated .df.plugin.ParamSpec params = 4 [json_name = "params"]; + * @param \Df\Plugin\ParamSpec[] $var + * @return $this + */ + public function setParams($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Df\Plugin\ParamSpec::class); + $this->params = $arr; + + return $this; + } + } diff --git a/proto/generated/php/Df/Plugin/GPBMetadata/Command.php b/proto/generated/php/Df/Plugin/GPBMetadata/Command.php new file mode 100644 index 0000000..df958f2 --- /dev/null +++ b/proto/generated/php/Df/Plugin/GPBMetadata/Command.php @@ -0,0 +1,25 @@ +internalAddGeneratedFile( + "\x0A\xD7\x05\x0A\x0Dcommand.proto\x12\x09df.plugin\"\x9E\x01\x0A\x09ParamSpec\x12\x12\x0A\x04name\x18\x01 \x01(\x09R\x04name\x12(\x0A\x04type\x18\x02 \x01(\x0E2\x14.df.plugin.ParamTypeR\x04type\x12\x1A\x0A\x08optional\x18\x03 \x01(\x08R\x08optional\x12\x16\x0A\x06suffix\x18\x04 \x01(\x09R\x06suffix\x12\x1F\x0A\x0Benum_values\x18\x05 \x03(\x09R\x0AenumValues\"\x8B\x01\x0A\x0BCommandSpec\x12\x12\x0A\x04name\x18\x01 \x01(\x09R\x04name\x12 \x0A\x0Bdescription\x18\x02 \x01(\x09R\x0Bdescription\x12\x18\x0A\x07aliases\x18\x03 \x03(\x09R\x07aliases\x12,\x0A\x06params\x18\x04 \x03(\x0B2\x14.df.plugin.ParamSpecR\x06params\"\x83\x01\x0A\x0CCommandEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x10\x0A\x03raw\x18\x03 \x01(\x09R\x03raw\x12\x18\x0A\x07command\x18\x04 \x01(\x09R\x07command\x12\x12\x0A\x04args\x18\x05 \x03(\x09R\x04args*p\x0A\x09ParamType\x12\x10\x0A\x0CPARAM_STRING\x10\x00\x12\x0D\x0A\x09PARAM_INT\x10\x01\x12\x0F\x0A\x0BPARAM_FLOAT\x10\x02\x12\x0E\x0A\x0APARAM_BOOL\x10\x03\x12\x11\x0A\x0DPARAM_VARARGS\x10\x04\x12\x0E\x0A\x0APARAM_ENUM\x10\x05B\x8B\x01\x0A\x0Dcom.df.pluginB\x0CCommandProtoP\x01Z'github.com/secmc/plugin/proto/generated\xA2\x02\x03DPX\xAA\x02\x09Df.Plugin\xCA\x02\x09Df\\Plugin\xE2\x02\x15Df\\Plugin\\GPBMetadata\xEA\x02\x0ADf::Pluginb\x06proto3" + , true); + + static::$is_initialized = true; + } +} + diff --git a/proto/generated/php/Df/Plugin/GPBMetadata/PlayerEvents.php b/proto/generated/php/Df/Plugin/GPBMetadata/PlayerEvents.php index 06f1a15..22016c7 100644 --- a/proto/generated/php/Df/Plugin/GPBMetadata/PlayerEvents.php +++ b/proto/generated/php/Df/Plugin/GPBMetadata/PlayerEvents.php @@ -17,7 +17,7 @@ public static function initOnce() { } \Df\Plugin\GPBMetadata\Common::initOnce(); $pool->internalAddGeneratedFile( - "\x0A\xD94\x0A\x13player_events.proto\x12\x09df.plugin\"F\x0A\x0FPlayerJoinEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\"F\x0A\x0FPlayerQuitEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\"\xBA\x01\x0A\x0FPlayerMoveEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12+\x0A\x08position\x18\x04 \x01(\x0B2\x0F.df.plugin.Vec3R\x08position\x12/\x0A\x08rotation\x18\x05 \x01(\x0B2\x13.df.plugin.RotationR\x08rotation\"\x89\x01\x0A\x0FPlayerJumpEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12+\x0A\x08position\x18\x04 \x01(\x0B2\x0F.df.plugin.Vec3R\x08position\"\x8D\x01\x0A\x13PlayerTeleportEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12+\x0A\x08position\x18\x04 \x01(\x0B2\x0F.df.plugin.Vec3R\x08position\"\xC4\x01\x0A\x16PlayerChangeWorldEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x120\x0A\x06before\x18\x03 \x01(\x0B2\x13.df.plugin.WorldRefH\x00R\x06before\x88\x01\x01\x12.\x0A\x05after\x18\x04 \x01(\x0B2\x13.df.plugin.WorldRefH\x01R\x05after\x88\x01\x01B\x09\x0A\x07_beforeB\x08\x0A\x06_after\"d\x0A\x17PlayerToggleSprintEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05after\x18\x03 \x01(\x08R\x05after\"c\x0A\x16PlayerToggleSneakEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05after\x18\x03 \x01(\x08R\x05after\"Z\x0A\x09ChatEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x18\x0A\x07message\x18\x03 \x01(\x09R\x07message\"n\x0A\x13PlayerFoodLossEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x12\x0A\x04from\x18\x03 \x01(\x05R\x04from\x12\x0E\x0A\x02to\x18\x04 \x01(\x05R\x02to\"\xA0\x01\x0A\x0FPlayerHealEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x16\x0A\x06amount\x18\x03 \x01(\x01R\x06amount\x125\x0A\x06source\x18\x04 \x01(\x0B2\x18.df.plugin.HealingSourceH\x00R\x06source\x88\x01\x01B\x09\x0A\x07_source\"\xE5\x01\x0A\x0FPlayerHurtEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x16\x0A\x06damage\x18\x03 \x01(\x01R\x06damage\x12\x16\x0A\x06immune\x18\x04 \x01(\x08R\x06immune\x12,\x0A\x12attack_immunity_ms\x18\x05 \x01(\x03R\x10attackImmunityMs\x124\x0A\x06source\x18\x06 \x01(\x0B2\x17.df.plugin.DamageSourceH\x00R\x06source\x88\x01\x01B\x09\x0A\x07_source\"\xAF\x01\x0A\x10PlayerDeathEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x124\x0A\x06source\x18\x03 \x01(\x0B2\x17.df.plugin.DamageSourceH\x00R\x06source\x88\x01\x01\x12%\x0A\x0Ekeep_inventory\x18\x04 \x01(\x08R\x0DkeepInventoryB\x09\x0A\x07_source\"\xC2\x01\x0A\x12PlayerRespawnEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x120\x0A\x08position\x18\x03 \x01(\x0B2\x0F.df.plugin.Vec3H\x00R\x08position\x88\x01\x01\x12.\x0A\x05world\x18\x04 \x01(\x0B2\x13.df.plugin.WorldRefH\x01R\x05world\x88\x01\x01B\x0B\x0A\x09_positionB\x08\x0A\x06_world\"\xC5\x01\x0A\x15PlayerSkinChangeEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x1C\x0A\x07full_id\x18\x03 \x01(\x09H\x00R\x06fullId\x88\x01\x01\x12#\x0A\x0Bplay_fab_id\x18\x04 \x01(\x09H\x01R\x09playFabId\x88\x01\x01\x12\x18\x0A\x07persona\x18\x05 \x01(\x08R\x07personaB\x0A\x0A\x08_full_idB\x0E\x0A\x0C_play_fab_id\"\x97\x01\x0A\x19PlayerFireExtinguishEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\"\x93\x01\x0A\x15PlayerStartBreakEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\"\x8D\x01\x0A\x0FBlockBreakEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\"\xC0\x01\x0A\x15PlayerBlockPlaceEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\x12+\x0A\x05block\x18\x05 \x01(\x0B2\x15.df.plugin.BlockStateR\x05block\"\xBF\x01\x0A\x14PlayerBlockPickEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\x12+\x0A\x05block\x18\x05 \x01(\x0B2\x15.df.plugin.BlockStateR\x05block\"\x97\x01\x0A\x12PlayerItemUseEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\xC8\x02\x0A\x19PlayerItemUseOnBlockEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\x12\x12\x0A\x04face\x18\x05 \x01(\x09R\x04face\x126\x0A\x0Eclick_position\x18\x06 \x01(\x0B2\x0F.df.plugin.Vec3R\x0DclickPosition\x12+\x0A\x05block\x18\x07 \x01(\x0B2\x15.df.plugin.BlockStateR\x05block\x12-\x0A\x04item\x18\x08 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\xCD\x01\x0A\x1APlayerItemUseOnEntityEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12,\x0A\x06entity\x18\x04 \x01(\x0B2\x14.df.plugin.EntityRefR\x06entity\x12-\x0A\x04item\x18\x05 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\xBC\x01\x0A\x16PlayerItemReleaseEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x12\x1F\x0A\x0Bduration_ms\x18\x05 \x01(\x03R\x0AdurationMsB\x07\x0A\x05_item\"\x9B\x01\x0A\x16PlayerItemConsumeEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\x94\x02\x0A\x17PlayerAttackEntityEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12,\x0A\x06entity\x18\x04 \x01(\x0B2\x14.df.plugin.EntityRefR\x06entity\x12\x14\x0A\x05force\x18\x05 \x01(\x01R\x05force\x12\x16\x0A\x06height\x18\x06 \x01(\x01R\x06height\x12\x1A\x0A\x08critical\x18\x07 \x01(\x08R\x08critical\x12-\x0A\x04item\x18\x08 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"~\x0A\x19PlayerExperienceGainEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12\x16\x0A\x06amount\x18\x04 \x01(\x05R\x06amount\"`\x0A\x13PlayerPunchAirEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\"\xE6\x01\x0A\x13PlayerSignEditEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\x12\x1D\x0A\x0Afront_side\x18\x05 \x01(\x08R\x09frontSide\x12\x19\x0A\x08old_text\x18\x06 \x01(\x09R\x07oldText\x12\x19\x0A\x08new_text\x18\x07 \x01(\x09R\x07newText\"\xCE\x01\x0A\x1APlayerLecternPageTurnEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\x12\x19\x0A\x08old_page\x18\x05 \x01(\x05R\x07oldPage\x12\x19\x0A\x08new_page\x18\x06 \x01(\x05R\x07newPage\"\xB2\x01\x0A\x15PlayerItemDamageEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x12\x16\x0A\x06damage\x18\x05 \x01(\x05R\x06damageB\x07\x0A\x05_item\"\x9A\x01\x0A\x15PlayerItemPickupEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\x9C\x01\x0A\x19PlayerHeldSlotChangeEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12\x1B\x0A\x09from_slot\x18\x04 \x01(\x05R\x08fromSlot\x12\x17\x0A\x07to_slot\x18\x05 \x01(\x05R\x06toSlot\"\x98\x01\x0A\x13PlayerItemDropEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\x89\x01\x0A\x13PlayerTransferEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x121\x0A\x07address\x18\x03 \x01(\x0B2\x12.df.plugin.AddressH\x00R\x07address\x88\x01\x01B\x0A\x0A\x08_address\"\x83\x01\x0A\x0CCommandEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x10\x0A\x03raw\x18\x03 \x01(\x09R\x03raw\x12\x18\x0A\x07command\x18\x04 \x01(\x09R\x07command\x12\x12\x0A\x04args\x18\x05 \x03(\x09R\x04args\"\xE2\x04\x0A\x16PlayerDiagnosticsEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x129\x0A\x19average_frames_per_second\x18\x03 \x01(\x01R\x16averageFramesPerSecond\x12>\x0A\x1Caverage_server_sim_tick_time\x18\x04 \x01(\x01R\x18averageServerSimTickTime\x12>\x0A\x1Caverage_client_sim_tick_time\x18\x05 \x01(\x01R\x18averageClientSimTickTime\x127\x0A\x18average_begin_frame_time\x18\x06 \x01(\x01R\x15averageBeginFrameTime\x12,\x0A\x12average_input_time\x18\x07 \x01(\x01R\x10averageInputTime\x12.\x0A\x13average_render_time\x18\x08 \x01(\x01R\x11averageRenderTime\x123\x0A\x16average_end_frame_time\x18\x09 \x01(\x01R\x13averageEndFrameTime\x12C\x0A\x1Eaverage_remainder_time_percent\x18\x0A \x01(\x01R\x1BaverageRemainderTimePercent\x12G\x0A average_unaccounted_time_percent\x18\x0B \x01(\x01R\x1DaverageUnaccountedTimePercentB\x90\x01\x0A\x0Dcom.df.pluginB\x11PlayerEventsProtoP\x01Z'github.com/secmc/plugin/proto/generated\xA2\x02\x03DPX\xAA\x02\x09Df.Plugin\xCA\x02\x09Df\\Plugin\xE2\x02\x15Df\\Plugin\\GPBMetadata\xEA\x02\x0ADf::Pluginb\x06proto3" + "\x0A\xD33\x0A\x13player_events.proto\x12\x09df.plugin\"F\x0A\x0FPlayerJoinEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\"F\x0A\x0FPlayerQuitEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\"\xBA\x01\x0A\x0FPlayerMoveEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12+\x0A\x08position\x18\x04 \x01(\x0B2\x0F.df.plugin.Vec3R\x08position\x12/\x0A\x08rotation\x18\x05 \x01(\x0B2\x13.df.plugin.RotationR\x08rotation\"\x89\x01\x0A\x0FPlayerJumpEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12+\x0A\x08position\x18\x04 \x01(\x0B2\x0F.df.plugin.Vec3R\x08position\"\x8D\x01\x0A\x13PlayerTeleportEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12+\x0A\x08position\x18\x04 \x01(\x0B2\x0F.df.plugin.Vec3R\x08position\"\xC4\x01\x0A\x16PlayerChangeWorldEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x120\x0A\x06before\x18\x03 \x01(\x0B2\x13.df.plugin.WorldRefH\x00R\x06before\x88\x01\x01\x12.\x0A\x05after\x18\x04 \x01(\x0B2\x13.df.plugin.WorldRefH\x01R\x05after\x88\x01\x01B\x09\x0A\x07_beforeB\x08\x0A\x06_after\"d\x0A\x17PlayerToggleSprintEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05after\x18\x03 \x01(\x08R\x05after\"c\x0A\x16PlayerToggleSneakEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05after\x18\x03 \x01(\x08R\x05after\"Z\x0A\x09ChatEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x18\x0A\x07message\x18\x03 \x01(\x09R\x07message\"n\x0A\x13PlayerFoodLossEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x12\x0A\x04from\x18\x03 \x01(\x05R\x04from\x12\x0E\x0A\x02to\x18\x04 \x01(\x05R\x02to\"\xA0\x01\x0A\x0FPlayerHealEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x16\x0A\x06amount\x18\x03 \x01(\x01R\x06amount\x125\x0A\x06source\x18\x04 \x01(\x0B2\x18.df.plugin.HealingSourceH\x00R\x06source\x88\x01\x01B\x09\x0A\x07_source\"\xE5\x01\x0A\x0FPlayerHurtEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x16\x0A\x06damage\x18\x03 \x01(\x01R\x06damage\x12\x16\x0A\x06immune\x18\x04 \x01(\x08R\x06immune\x12,\x0A\x12attack_immunity_ms\x18\x05 \x01(\x03R\x10attackImmunityMs\x124\x0A\x06source\x18\x06 \x01(\x0B2\x17.df.plugin.DamageSourceH\x00R\x06source\x88\x01\x01B\x09\x0A\x07_source\"\xAF\x01\x0A\x10PlayerDeathEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x124\x0A\x06source\x18\x03 \x01(\x0B2\x17.df.plugin.DamageSourceH\x00R\x06source\x88\x01\x01\x12%\x0A\x0Ekeep_inventory\x18\x04 \x01(\x08R\x0DkeepInventoryB\x09\x0A\x07_source\"\xC2\x01\x0A\x12PlayerRespawnEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x120\x0A\x08position\x18\x03 \x01(\x0B2\x0F.df.plugin.Vec3H\x00R\x08position\x88\x01\x01\x12.\x0A\x05world\x18\x04 \x01(\x0B2\x13.df.plugin.WorldRefH\x01R\x05world\x88\x01\x01B\x0B\x0A\x09_positionB\x08\x0A\x06_world\"\xC5\x01\x0A\x15PlayerSkinChangeEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x1C\x0A\x07full_id\x18\x03 \x01(\x09H\x00R\x06fullId\x88\x01\x01\x12#\x0A\x0Bplay_fab_id\x18\x04 \x01(\x09H\x01R\x09playFabId\x88\x01\x01\x12\x18\x0A\x07persona\x18\x05 \x01(\x08R\x07personaB\x0A\x0A\x08_full_idB\x0E\x0A\x0C_play_fab_id\"\x97\x01\x0A\x19PlayerFireExtinguishEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\"\x93\x01\x0A\x15PlayerStartBreakEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\"\x8D\x01\x0A\x0FBlockBreakEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\"\xC0\x01\x0A\x15PlayerBlockPlaceEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\x12+\x0A\x05block\x18\x05 \x01(\x0B2\x15.df.plugin.BlockStateR\x05block\"\xBF\x01\x0A\x14PlayerBlockPickEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\x12+\x0A\x05block\x18\x05 \x01(\x0B2\x15.df.plugin.BlockStateR\x05block\"\x97\x01\x0A\x12PlayerItemUseEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\xC8\x02\x0A\x19PlayerItemUseOnBlockEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\x12\x12\x0A\x04face\x18\x05 \x01(\x09R\x04face\x126\x0A\x0Eclick_position\x18\x06 \x01(\x0B2\x0F.df.plugin.Vec3R\x0DclickPosition\x12+\x0A\x05block\x18\x07 \x01(\x0B2\x15.df.plugin.BlockStateR\x05block\x12-\x0A\x04item\x18\x08 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\xCD\x01\x0A\x1APlayerItemUseOnEntityEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12,\x0A\x06entity\x18\x04 \x01(\x0B2\x14.df.plugin.EntityRefR\x06entity\x12-\x0A\x04item\x18\x05 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\xBC\x01\x0A\x16PlayerItemReleaseEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x12\x1F\x0A\x0Bduration_ms\x18\x05 \x01(\x03R\x0AdurationMsB\x07\x0A\x05_item\"\x9B\x01\x0A\x16PlayerItemConsumeEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\x94\x02\x0A\x17PlayerAttackEntityEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12,\x0A\x06entity\x18\x04 \x01(\x0B2\x14.df.plugin.EntityRefR\x06entity\x12\x14\x0A\x05force\x18\x05 \x01(\x01R\x05force\x12\x16\x0A\x06height\x18\x06 \x01(\x01R\x06height\x12\x1A\x0A\x08critical\x18\x07 \x01(\x08R\x08critical\x12-\x0A\x04item\x18\x08 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"~\x0A\x19PlayerExperienceGainEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12\x16\x0A\x06amount\x18\x04 \x01(\x05R\x06amount\"`\x0A\x13PlayerPunchAirEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\"\xE6\x01\x0A\x13PlayerSignEditEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\x12\x1D\x0A\x0Afront_side\x18\x05 \x01(\x08R\x09frontSide\x12\x19\x0A\x08old_text\x18\x06 \x01(\x09R\x07oldText\x12\x19\x0A\x08new_text\x18\x07 \x01(\x09R\x07newText\"\xCE\x01\x0A\x1APlayerLecternPageTurnEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12/\x0A\x08position\x18\x04 \x01(\x0B2\x13.df.plugin.BlockPosR\x08position\x12\x19\x0A\x08old_page\x18\x05 \x01(\x05R\x07oldPage\x12\x19\x0A\x08new_page\x18\x06 \x01(\x05R\x07newPage\"\xB2\x01\x0A\x15PlayerItemDamageEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x12\x16\x0A\x06damage\x18\x05 \x01(\x05R\x06damageB\x07\x0A\x05_item\"\x9A\x01\x0A\x15PlayerItemPickupEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\x9C\x01\x0A\x19PlayerHeldSlotChangeEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12\x1B\x0A\x09from_slot\x18\x04 \x01(\x05R\x08fromSlot\x12\x17\x0A\x07to_slot\x18\x05 \x01(\x05R\x06toSlot\"\x98\x01\x0A\x13PlayerItemDropEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x12\x14\x0A\x05world\x18\x03 \x01(\x09R\x05world\x12-\x0A\x04item\x18\x04 \x01(\x0B2\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01B\x07\x0A\x05_item\"\x89\x01\x0A\x13PlayerTransferEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x121\x0A\x07address\x18\x03 \x01(\x0B2\x12.df.plugin.AddressH\x00R\x07address\x88\x01\x01B\x0A\x0A\x08_address\"\xE2\x04\x0A\x16PlayerDiagnosticsEvent\x12\x1F\x0A\x0Bplayer_uuid\x18\x01 \x01(\x09R\x0AplayerUuid\x12\x12\x0A\x04name\x18\x02 \x01(\x09R\x04name\x129\x0A\x19average_frames_per_second\x18\x03 \x01(\x01R\x16averageFramesPerSecond\x12>\x0A\x1Caverage_server_sim_tick_time\x18\x04 \x01(\x01R\x18averageServerSimTickTime\x12>\x0A\x1Caverage_client_sim_tick_time\x18\x05 \x01(\x01R\x18averageClientSimTickTime\x127\x0A\x18average_begin_frame_time\x18\x06 \x01(\x01R\x15averageBeginFrameTime\x12,\x0A\x12average_input_time\x18\x07 \x01(\x01R\x10averageInputTime\x12.\x0A\x13average_render_time\x18\x08 \x01(\x01R\x11averageRenderTime\x123\x0A\x16average_end_frame_time\x18\x09 \x01(\x01R\x13averageEndFrameTime\x12C\x0A\x1Eaverage_remainder_time_percent\x18\x0A \x01(\x01R\x1BaverageRemainderTimePercent\x12G\x0A average_unaccounted_time_percent\x18\x0B \x01(\x01R\x1DaverageUnaccountedTimePercentB\x90\x01\x0A\x0Dcom.df.pluginB\x11PlayerEventsProtoP\x01Z'github.com/secmc/plugin/proto/generated\xA2\x02\x03DPX\xAA\x02\x09Df.Plugin\xCA\x02\x09Df\\Plugin\xE2\x02\x15Df\\Plugin\\GPBMetadata\xEA\x02\x0ADf::Pluginb\x06proto3" , true); static::$is_initialized = true; diff --git a/proto/generated/php/Df/Plugin/GPBMetadata/Plugin.php b/proto/generated/php/Df/Plugin/GPBMetadata/Plugin.php index b14237e..22b358d 100644 --- a/proto/generated/php/Df/Plugin/GPBMetadata/Plugin.php +++ b/proto/generated/php/Df/Plugin/GPBMetadata/Plugin.php @@ -17,11 +17,12 @@ public static function initOnce() { } \Df\Plugin\GPBMetadata\PlayerEvents::initOnce(); \Df\Plugin\GPBMetadata\WorldEvents::initOnce(); + \Df\Plugin\GPBMetadata\Command::initOnce(); \Df\Plugin\GPBMetadata\Actions::initOnce(); \Df\Plugin\GPBMetadata\Mutations::initOnce(); \Df\Plugin\GPBMetadata\Common::initOnce(); $pool->internalAddGeneratedFile( - "\x0A\xCF2\x0A\x0Cplugin.proto\x12\x09df.plugin\x1A\x12world_events.proto\x1A\x0Dactions.proto\x1A\x0Fmutations.proto\x1A\x0Ccommon.proto\"\xCD\x01\x0A\x0CHostToPlugin\x12\x1B\x0A\x09plugin_id\x18\x01 \x01(\x09R\x08pluginId\x12,\x0A\x05hello\x18\x0A \x01(\x0B2\x14.df.plugin.HostHelloH\x00R\x05hello\x125\x0A\x08shutdown\x18\x0B \x01(\x0B2\x17.df.plugin.HostShutdownH\x00R\x08shutdown\x120\x0A\x05event\x18\x14 \x01(\x0B2\x18.df.plugin.EventEnvelopeH\x00R\x05eventB\x09\x0A\x07payload\",\x0A\x09HostHello\x12\x1F\x0A\x0Bapi_version\x18\x01 \x01(\x09R\x0AapiVersion\"&\x0A\x0CHostShutdown\x12\x16\x0A\x06reason\x18\x01 \x01(\x09R\x06reason\"\xE6\x1E\x0A\x0DEventEnvelope\x12\x19\x0A\x08event_id\x18\x01 \x01(\x09R\x07eventId\x12(\x0A\x04type\x18\x02 \x01(\x0E2\x14.df.plugin.EventTypeR\x04type\x12)\x0A\x10expects_response\x18\x03 \x01(\x08R\x0FexpectsResponse\x12=\x0A\x0Bplayer_join\x18\x0A \x01(\x0B2\x1A.df.plugin.PlayerJoinEventH\x00R\x0AplayerJoin\x12=\x0A\x0Bplayer_quit\x18\x0B \x01(\x0B2\x1A.df.plugin.PlayerQuitEventH\x00R\x0AplayerQuit\x12=\x0A\x0Bplayer_move\x18\x0C \x01(\x0B2\x1A.df.plugin.PlayerMoveEventH\x00R\x0AplayerMove\x12=\x0A\x0Bplayer_jump\x18\x0D \x01(\x0B2\x1A.df.plugin.PlayerJumpEventH\x00R\x0AplayerJump\x12I\x0A\x0Fplayer_teleport\x18\x0E \x01(\x0B2\x1E.df.plugin.PlayerTeleportEventH\x00R\x0EplayerTeleport\x12S\x0A\x13player_change_world\x18\x0F \x01(\x0B2!.df.plugin.PlayerChangeWorldEventH\x00R\x11playerChangeWorld\x12V\x0A\x14player_toggle_sprint\x18\x10 \x01(\x0B2\".df.plugin.PlayerToggleSprintEventH\x00R\x12playerToggleSprint\x12S\x0A\x13player_toggle_sneak\x18\x11 \x01(\x0B2!.df.plugin.PlayerToggleSneakEventH\x00R\x11playerToggleSneak\x12*\x0A\x04chat\x18\x12 \x01(\x0B2\x14.df.plugin.ChatEventH\x00R\x04chat\x12J\x0A\x10player_food_loss\x18\x13 \x01(\x0B2\x1E.df.plugin.PlayerFoodLossEventH\x00R\x0EplayerFoodLoss\x12=\x0A\x0Bplayer_heal\x18\x14 \x01(\x0B2\x1A.df.plugin.PlayerHealEventH\x00R\x0AplayerHeal\x12=\x0A\x0Bplayer_hurt\x18\x15 \x01(\x0B2\x1A.df.plugin.PlayerHurtEventH\x00R\x0AplayerHurt\x12@\x0A\x0Cplayer_death\x18\x16 \x01(\x0B2\x1B.df.plugin.PlayerDeathEventH\x00R\x0BplayerDeath\x12F\x0A\x0Eplayer_respawn\x18\x17 \x01(\x0B2\x1D.df.plugin.PlayerRespawnEventH\x00R\x0DplayerRespawn\x12P\x0A\x12player_skin_change\x18\x18 \x01(\x0B2 .df.plugin.PlayerSkinChangeEventH\x00R\x10playerSkinChange\x12\\\x0A\x16player_fire_extinguish\x18\x19 \x01(\x0B2\$.df.plugin.PlayerFireExtinguishEventH\x00R\x14playerFireExtinguish\x12P\x0A\x12player_start_break\x18\x1A \x01(\x0B2 .df.plugin.PlayerStartBreakEventH\x00R\x10playerStartBreak\x12=\x0A\x0Bblock_break\x18\x1B \x01(\x0B2\x1A.df.plugin.BlockBreakEventH\x00R\x0AblockBreak\x12P\x0A\x12player_block_place\x18\x1C \x01(\x0B2 .df.plugin.PlayerBlockPlaceEventH\x00R\x10playerBlockPlace\x12M\x0A\x11player_block_pick\x18\x1D \x01(\x0B2\x1F.df.plugin.PlayerBlockPickEventH\x00R\x0FplayerBlockPick\x12G\x0A\x0Fplayer_item_use\x18\x1E \x01(\x0B2\x1D.df.plugin.PlayerItemUseEventH\x00R\x0DplayerItemUse\x12^\x0A\x18player_item_use_on_block\x18\x1F \x01(\x0B2\$.df.plugin.PlayerItemUseOnBlockEventH\x00R\x14playerItemUseOnBlock\x12a\x0A\x19player_item_use_on_entity\x18 \x01(\x0B2%.df.plugin.PlayerItemUseOnEntityEventH\x00R\x15playerItemUseOnEntity\x12S\x0A\x13player_item_release\x18! \x01(\x0B2!.df.plugin.PlayerItemReleaseEventH\x00R\x11playerItemRelease\x12S\x0A\x13player_item_consume\x18\" \x01(\x0B2!.df.plugin.PlayerItemConsumeEventH\x00R\x11playerItemConsume\x12V\x0A\x14player_attack_entity\x18# \x01(\x0B2\".df.plugin.PlayerAttackEntityEventH\x00R\x12playerAttackEntity\x12\\\x0A\x16player_experience_gain\x18\$ \x01(\x0B2\$.df.plugin.PlayerExperienceGainEventH\x00R\x14playerExperienceGain\x12J\x0A\x10player_punch_air\x18% \x01(\x0B2\x1E.df.plugin.PlayerPunchAirEventH\x00R\x0EplayerPunchAir\x12J\x0A\x10player_sign_edit\x18& \x01(\x0B2\x1E.df.plugin.PlayerSignEditEventH\x00R\x0EplayerSignEdit\x12`\x0A\x18player_lectern_page_turn\x18' \x01(\x0B2%.df.plugin.PlayerLecternPageTurnEventH\x00R\x15playerLecternPageTurn\x12P\x0A\x12player_item_damage\x18( \x01(\x0B2 .df.plugin.PlayerItemDamageEventH\x00R\x10playerItemDamage\x12P\x0A\x12player_item_pickup\x18) \x01(\x0B2 .df.plugin.PlayerItemPickupEventH\x00R\x10playerItemPickup\x12]\x0A\x17player_held_slot_change\x18* \x01(\x0B2\$.df.plugin.PlayerHeldSlotChangeEventH\x00R\x14playerHeldSlotChange\x12J\x0A\x10player_item_drop\x18+ \x01(\x0B2\x1E.df.plugin.PlayerItemDropEventH\x00R\x0EplayerItemDrop\x12I\x0A\x0Fplayer_transfer\x18, \x01(\x0B2\x1E.df.plugin.PlayerTransferEventH\x00R\x0EplayerTransfer\x123\x0A\x07command\x18- \x01(\x0B2\x17.df.plugin.CommandEventH\x00R\x07command\x12R\x0A\x12player_diagnostics\x18. \x01(\x0B2!.df.plugin.PlayerDiagnosticsEventH\x00R\x11playerDiagnostics\x12M\x0A\x11world_liquid_flow\x18F \x01(\x0B2\x1F.df.plugin.WorldLiquidFlowEventH\x00R\x0FworldLiquidFlow\x12P\x0A\x12world_liquid_decay\x18G \x01(\x0B2 .df.plugin.WorldLiquidDecayEventH\x00R\x10worldLiquidDecay\x12S\x0A\x13world_liquid_harden\x18H \x01(\x0B2!.df.plugin.WorldLiquidHardenEventH\x00R\x11worldLiquidHarden\x12=\x0A\x0Bworld_sound\x18I \x01(\x0B2\x1A.df.plugin.WorldSoundEventH\x00R\x0AworldSound\x12M\x0A\x11world_fire_spread\x18J \x01(\x0B2\x1F.df.plugin.WorldFireSpreadEventH\x00R\x0FworldFireSpread\x12J\x0A\x10world_block_burn\x18K \x01(\x0B2\x1E.df.plugin.WorldBlockBurnEventH\x00R\x0EworldBlockBurn\x12P\x0A\x12world_crop_trample\x18L \x01(\x0B2 .df.plugin.WorldCropTrampleEventH\x00R\x10worldCropTrample\x12P\x0A\x12world_leaves_decay\x18M \x01(\x0B2 .df.plugin.WorldLeavesDecayEventH\x00R\x10worldLeavesDecay\x12P\x0A\x12world_entity_spawn\x18N \x01(\x0B2 .df.plugin.WorldEntitySpawnEventH\x00R\x10worldEntitySpawn\x12V\x0A\x14world_entity_despawn\x18O \x01(\x0B2\".df.plugin.WorldEntityDespawnEventH\x00R\x12worldEntityDespawn\x12I\x0A\x0Fworld_explosion\x18P \x01(\x0B2\x1E.df.plugin.WorldExplosionEventH\x00R\x0EworldExplosion\x12=\x0A\x0Bworld_close\x18Q \x01(\x0B2\x1A.df.plugin.WorldCloseEventH\x00R\x0AworldCloseB\x09\x0A\x07payload\"\xBD\x02\x0A\x0CPluginToHost\x12\x1B\x0A\x09plugin_id\x18\x01 \x01(\x09R\x08pluginId\x12.\x0A\x05hello\x18\x0A \x01(\x0B2\x16.df.plugin.PluginHelloH\x00R\x05hello\x129\x0A\x09subscribe\x18\x0B \x01(\x0B2\x19.df.plugin.EventSubscribeH\x00R\x09subscribe\x122\x0A\x07actions\x18\x14 \x01(\x0B2\x16.df.plugin.ActionBatchH\x00R\x07actions\x12)\x0A\x03log\x18\x1E \x01(\x0B2\x15.df.plugin.LogMessageH\x00R\x03log\x12;\x0A\x0Cevent_result\x18( \x01(\x0B2\x16.df.plugin.EventResultH\x00R\x0BeventResultB\x09\x0A\x07payload\"\xD4\x01\x0A\x0BPluginHello\x12\x12\x0A\x04name\x18\x01 \x01(\x09R\x04name\x12\x18\x0A\x07version\x18\x02 \x01(\x09R\x07version\x12\x1F\x0A\x0Bapi_version\x18\x03 \x01(\x09R\x0AapiVersion\x122\x0A\x08commands\x18\x04 \x03(\x0B2\x16.df.plugin.CommandSpecR\x08commands\x12B\x0A\x0Ccustom_items\x18\x05 \x03(\x0B2\x1F.df.plugin.CustomItemDefinitionR\x0BcustomItems\"]\x0A\x0BCommandSpec\x12\x12\x0A\x04name\x18\x01 \x01(\x09R\x04name\x12 \x0A\x0Bdescription\x18\x02 \x01(\x09R\x0Bdescription\x12\x18\x0A\x07aliases\x18\x03 \x03(\x09R\x07aliases\"<\x0A\x0ALogMessage\x12\x14\x0A\x05level\x18\x01 \x01(\x09R\x05level\x12\x18\x0A\x07message\x18\x02 \x01(\x09R\x07message\">\x0A\x0EEventSubscribe\x12,\x0A\x06events\x18\x01 \x03(\x0E2\x14.df.plugin.EventTypeR\x06events*\x8A\x09\x0A\x09EventType\x12\x1A\x0A\x16EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x12\x0A\x0EEVENT_TYPE_ALL\x10\x01\x12\x0F\x0A\x0BPLAYER_JOIN\x10\x0A\x12\x0F\x0A\x0BPLAYER_QUIT\x10\x0B\x12\x0F\x0A\x0BPLAYER_MOVE\x10\x0C\x12\x0F\x0A\x0BPLAYER_JUMP\x10\x0D\x12\x13\x0A\x0FPLAYER_TELEPORT\x10\x0E\x12\x17\x0A\x13PLAYER_CHANGE_WORLD\x10\x0F\x12\x18\x0A\x14PLAYER_TOGGLE_SPRINT\x10\x10\x12\x17\x0A\x13PLAYER_TOGGLE_SNEAK\x10\x11\x12\x08\x0A\x04CHAT\x10\x12\x12\x14\x0A\x10PLAYER_FOOD_LOSS\x10\x13\x12\x0F\x0A\x0BPLAYER_HEAL\x10\x14\x12\x0F\x0A\x0BPLAYER_HURT\x10\x15\x12\x10\x0A\x0CPLAYER_DEATH\x10\x16\x12\x12\x0A\x0EPLAYER_RESPAWN\x10\x17\x12\x16\x0A\x12PLAYER_SKIN_CHANGE\x10\x18\x12\x1A\x0A\x16PLAYER_FIRE_EXTINGUISH\x10\x19\x12\x16\x0A\x12PLAYER_START_BREAK\x10\x1A\x12\x16\x0A\x12PLAYER_BLOCK_BREAK\x10\x1B\x12\x16\x0A\x12PLAYER_BLOCK_PLACE\x10\x1C\x12\x15\x0A\x11PLAYER_BLOCK_PICK\x10\x1D\x12\x13\x0A\x0FPLAYER_ITEM_USE\x10\x1E\x12\x1C\x0A\x18PLAYER_ITEM_USE_ON_BLOCK\x10\x1F\x12\x1D\x0A\x19PLAYER_ITEM_USE_ON_ENTITY\x10 \x12\x17\x0A\x13PLAYER_ITEM_RELEASE\x10!\x12\x17\x0A\x13PLAYER_ITEM_CONSUME\x10\"\x12\x18\x0A\x14PLAYER_ATTACK_ENTITY\x10#\x12\x1A\x0A\x16PLAYER_EXPERIENCE_GAIN\x10\$\x12\x14\x0A\x10PLAYER_PUNCH_AIR\x10%\x12\x14\x0A\x10PLAYER_SIGN_EDIT\x10&\x12\x1C\x0A\x18PLAYER_LECTERN_PAGE_TURN\x10'\x12\x16\x0A\x12PLAYER_ITEM_DAMAGE\x10(\x12\x16\x0A\x12PLAYER_ITEM_PICKUP\x10)\x12\x1B\x0A\x17PLAYER_HELD_SLOT_CHANGE\x10*\x12\x14\x0A\x10PLAYER_ITEM_DROP\x10+\x12\x13\x0A\x0FPLAYER_TRANSFER\x10,\x12\x0B\x0A\x07COMMAND\x10-\x12\x16\x0A\x12PLAYER_DIAGNOSTICS\x10.\x12\x15\x0A\x11WORLD_LIQUID_FLOW\x10F\x12\x16\x0A\x12WORLD_LIQUID_DECAY\x10G\x12\x17\x0A\x13WORLD_LIQUID_HARDEN\x10H\x12\x0F\x0A\x0BWORLD_SOUND\x10I\x12\x15\x0A\x11WORLD_FIRE_SPREAD\x10J\x12\x14\x0A\x10WORLD_BLOCK_BURN\x10K\x12\x16\x0A\x12WORLD_CROP_TRAMPLE\x10L\x12\x16\x0A\x12WORLD_LEAVES_DECAY\x10M\x12\x16\x0A\x12WORLD_ENTITY_SPAWN\x10N\x12\x18\x0A\x14WORLD_ENTITY_DESPAWN\x10O\x12\x13\x0A\x0FWORLD_EXPLOSION\x10P\x12\x0F\x0A\x0BWORLD_CLOSE\x10Q2M\x0A\x06Plugin\x12C\x0A\x0BEventStream\x12\x17.df.plugin.PluginToHost\x1A\x17.df.plugin.HostToPlugin(\x010\x01B\x8A\x01\x0A\x0Dcom.df.pluginB\x0BPluginProtoP\x01Z'github.com/secmc/plugin/proto/generated\xA2\x02\x03DPX\xAA\x02\x09Df.Plugin\xCA\x02\x09Df\\Plugin\xE2\x02\x15Df\\Plugin\\GPBMetadata\xEA\x02\x0ADf::Pluginb\x06proto3" + "\x0A\xFF1\x0A\x0Cplugin.proto\x12\x09df.plugin\x1A\x12world_events.proto\x1A\x0Dcommand.proto\x1A\x0Dactions.proto\x1A\x0Fmutations.proto\x1A\x0Ccommon.proto\"\xCD\x01\x0A\x0CHostToPlugin\x12\x1B\x0A\x09plugin_id\x18\x01 \x01(\x09R\x08pluginId\x12,\x0A\x05hello\x18\x0A \x01(\x0B2\x14.df.plugin.HostHelloH\x00R\x05hello\x125\x0A\x08shutdown\x18\x0B \x01(\x0B2\x17.df.plugin.HostShutdownH\x00R\x08shutdown\x120\x0A\x05event\x18\x14 \x01(\x0B2\x18.df.plugin.EventEnvelopeH\x00R\x05eventB\x09\x0A\x07payload\",\x0A\x09HostHello\x12\x1F\x0A\x0Bapi_version\x18\x01 \x01(\x09R\x0AapiVersion\"&\x0A\x0CHostShutdown\x12\x16\x0A\x06reason\x18\x01 \x01(\x09R\x06reason\"\xE6\x1E\x0A\x0DEventEnvelope\x12\x19\x0A\x08event_id\x18\x01 \x01(\x09R\x07eventId\x12(\x0A\x04type\x18\x02 \x01(\x0E2\x14.df.plugin.EventTypeR\x04type\x12)\x0A\x10expects_response\x18\x03 \x01(\x08R\x0FexpectsResponse\x12=\x0A\x0Bplayer_join\x18\x0A \x01(\x0B2\x1A.df.plugin.PlayerJoinEventH\x00R\x0AplayerJoin\x12=\x0A\x0Bplayer_quit\x18\x0B \x01(\x0B2\x1A.df.plugin.PlayerQuitEventH\x00R\x0AplayerQuit\x12=\x0A\x0Bplayer_move\x18\x0C \x01(\x0B2\x1A.df.plugin.PlayerMoveEventH\x00R\x0AplayerMove\x12=\x0A\x0Bplayer_jump\x18\x0D \x01(\x0B2\x1A.df.plugin.PlayerJumpEventH\x00R\x0AplayerJump\x12I\x0A\x0Fplayer_teleport\x18\x0E \x01(\x0B2\x1E.df.plugin.PlayerTeleportEventH\x00R\x0EplayerTeleport\x12S\x0A\x13player_change_world\x18\x0F \x01(\x0B2!.df.plugin.PlayerChangeWorldEventH\x00R\x11playerChangeWorld\x12V\x0A\x14player_toggle_sprint\x18\x10 \x01(\x0B2\".df.plugin.PlayerToggleSprintEventH\x00R\x12playerToggleSprint\x12S\x0A\x13player_toggle_sneak\x18\x11 \x01(\x0B2!.df.plugin.PlayerToggleSneakEventH\x00R\x11playerToggleSneak\x12*\x0A\x04chat\x18\x12 \x01(\x0B2\x14.df.plugin.ChatEventH\x00R\x04chat\x12J\x0A\x10player_food_loss\x18\x13 \x01(\x0B2\x1E.df.plugin.PlayerFoodLossEventH\x00R\x0EplayerFoodLoss\x12=\x0A\x0Bplayer_heal\x18\x14 \x01(\x0B2\x1A.df.plugin.PlayerHealEventH\x00R\x0AplayerHeal\x12=\x0A\x0Bplayer_hurt\x18\x15 \x01(\x0B2\x1A.df.plugin.PlayerHurtEventH\x00R\x0AplayerHurt\x12@\x0A\x0Cplayer_death\x18\x16 \x01(\x0B2\x1B.df.plugin.PlayerDeathEventH\x00R\x0BplayerDeath\x12F\x0A\x0Eplayer_respawn\x18\x17 \x01(\x0B2\x1D.df.plugin.PlayerRespawnEventH\x00R\x0DplayerRespawn\x12P\x0A\x12player_skin_change\x18\x18 \x01(\x0B2 .df.plugin.PlayerSkinChangeEventH\x00R\x10playerSkinChange\x12\\\x0A\x16player_fire_extinguish\x18\x19 \x01(\x0B2\$.df.plugin.PlayerFireExtinguishEventH\x00R\x14playerFireExtinguish\x12P\x0A\x12player_start_break\x18\x1A \x01(\x0B2 .df.plugin.PlayerStartBreakEventH\x00R\x10playerStartBreak\x12=\x0A\x0Bblock_break\x18\x1B \x01(\x0B2\x1A.df.plugin.BlockBreakEventH\x00R\x0AblockBreak\x12P\x0A\x12player_block_place\x18\x1C \x01(\x0B2 .df.plugin.PlayerBlockPlaceEventH\x00R\x10playerBlockPlace\x12M\x0A\x11player_block_pick\x18\x1D \x01(\x0B2\x1F.df.plugin.PlayerBlockPickEventH\x00R\x0FplayerBlockPick\x12G\x0A\x0Fplayer_item_use\x18\x1E \x01(\x0B2\x1D.df.plugin.PlayerItemUseEventH\x00R\x0DplayerItemUse\x12^\x0A\x18player_item_use_on_block\x18\x1F \x01(\x0B2\$.df.plugin.PlayerItemUseOnBlockEventH\x00R\x14playerItemUseOnBlock\x12a\x0A\x19player_item_use_on_entity\x18 \x01(\x0B2%.df.plugin.PlayerItemUseOnEntityEventH\x00R\x15playerItemUseOnEntity\x12S\x0A\x13player_item_release\x18! \x01(\x0B2!.df.plugin.PlayerItemReleaseEventH\x00R\x11playerItemRelease\x12S\x0A\x13player_item_consume\x18\" \x01(\x0B2!.df.plugin.PlayerItemConsumeEventH\x00R\x11playerItemConsume\x12V\x0A\x14player_attack_entity\x18# \x01(\x0B2\".df.plugin.PlayerAttackEntityEventH\x00R\x12playerAttackEntity\x12\\\x0A\x16player_experience_gain\x18\$ \x01(\x0B2\$.df.plugin.PlayerExperienceGainEventH\x00R\x14playerExperienceGain\x12J\x0A\x10player_punch_air\x18% \x01(\x0B2\x1E.df.plugin.PlayerPunchAirEventH\x00R\x0EplayerPunchAir\x12J\x0A\x10player_sign_edit\x18& \x01(\x0B2\x1E.df.plugin.PlayerSignEditEventH\x00R\x0EplayerSignEdit\x12`\x0A\x18player_lectern_page_turn\x18' \x01(\x0B2%.df.plugin.PlayerLecternPageTurnEventH\x00R\x15playerLecternPageTurn\x12P\x0A\x12player_item_damage\x18( \x01(\x0B2 .df.plugin.PlayerItemDamageEventH\x00R\x10playerItemDamage\x12P\x0A\x12player_item_pickup\x18) \x01(\x0B2 .df.plugin.PlayerItemPickupEventH\x00R\x10playerItemPickup\x12]\x0A\x17player_held_slot_change\x18* \x01(\x0B2\$.df.plugin.PlayerHeldSlotChangeEventH\x00R\x14playerHeldSlotChange\x12J\x0A\x10player_item_drop\x18+ \x01(\x0B2\x1E.df.plugin.PlayerItemDropEventH\x00R\x0EplayerItemDrop\x12I\x0A\x0Fplayer_transfer\x18, \x01(\x0B2\x1E.df.plugin.PlayerTransferEventH\x00R\x0EplayerTransfer\x123\x0A\x07command\x18- \x01(\x0B2\x17.df.plugin.CommandEventH\x00R\x07command\x12R\x0A\x12player_diagnostics\x18. \x01(\x0B2!.df.plugin.PlayerDiagnosticsEventH\x00R\x11playerDiagnostics\x12M\x0A\x11world_liquid_flow\x18F \x01(\x0B2\x1F.df.plugin.WorldLiquidFlowEventH\x00R\x0FworldLiquidFlow\x12P\x0A\x12world_liquid_decay\x18G \x01(\x0B2 .df.plugin.WorldLiquidDecayEventH\x00R\x10worldLiquidDecay\x12S\x0A\x13world_liquid_harden\x18H \x01(\x0B2!.df.plugin.WorldLiquidHardenEventH\x00R\x11worldLiquidHarden\x12=\x0A\x0Bworld_sound\x18I \x01(\x0B2\x1A.df.plugin.WorldSoundEventH\x00R\x0AworldSound\x12M\x0A\x11world_fire_spread\x18J \x01(\x0B2\x1F.df.plugin.WorldFireSpreadEventH\x00R\x0FworldFireSpread\x12J\x0A\x10world_block_burn\x18K \x01(\x0B2\x1E.df.plugin.WorldBlockBurnEventH\x00R\x0EworldBlockBurn\x12P\x0A\x12world_crop_trample\x18L \x01(\x0B2 .df.plugin.WorldCropTrampleEventH\x00R\x10worldCropTrample\x12P\x0A\x12world_leaves_decay\x18M \x01(\x0B2 .df.plugin.WorldLeavesDecayEventH\x00R\x10worldLeavesDecay\x12P\x0A\x12world_entity_spawn\x18N \x01(\x0B2 .df.plugin.WorldEntitySpawnEventH\x00R\x10worldEntitySpawn\x12V\x0A\x14world_entity_despawn\x18O \x01(\x0B2\".df.plugin.WorldEntityDespawnEventH\x00R\x12worldEntityDespawn\x12I\x0A\x0Fworld_explosion\x18P \x01(\x0B2\x1E.df.plugin.WorldExplosionEventH\x00R\x0EworldExplosion\x12=\x0A\x0Bworld_close\x18Q \x01(\x0B2\x1A.df.plugin.WorldCloseEventH\x00R\x0AworldCloseB\x09\x0A\x07payload\"\xBD\x02\x0A\x0CPluginToHost\x12\x1B\x0A\x09plugin_id\x18\x01 \x01(\x09R\x08pluginId\x12.\x0A\x05hello\x18\x0A \x01(\x0B2\x16.df.plugin.PluginHelloH\x00R\x05hello\x129\x0A\x09subscribe\x18\x0B \x01(\x0B2\x19.df.plugin.EventSubscribeH\x00R\x09subscribe\x122\x0A\x07actions\x18\x14 \x01(\x0B2\x16.df.plugin.ActionBatchH\x00R\x07actions\x12)\x0A\x03log\x18\x1E \x01(\x0B2\x15.df.plugin.LogMessageH\x00R\x03log\x12;\x0A\x0Cevent_result\x18( \x01(\x0B2\x16.df.plugin.EventResultH\x00R\x0BeventResultB\x09\x0A\x07payload\"\xD4\x01\x0A\x0BPluginHello\x12\x12\x0A\x04name\x18\x01 \x01(\x09R\x04name\x12\x18\x0A\x07version\x18\x02 \x01(\x09R\x07version\x12\x1F\x0A\x0Bapi_version\x18\x03 \x01(\x09R\x0AapiVersion\x122\x0A\x08commands\x18\x04 \x03(\x0B2\x16.df.plugin.CommandSpecR\x08commands\x12B\x0A\x0Ccustom_items\x18\x05 \x03(\x0B2\x1F.df.plugin.CustomItemDefinitionR\x0BcustomItems\"<\x0A\x0ALogMessage\x12\x14\x0A\x05level\x18\x01 \x01(\x09R\x05level\x12\x18\x0A\x07message\x18\x02 \x01(\x09R\x07message\">\x0A\x0EEventSubscribe\x12,\x0A\x06events\x18\x01 \x03(\x0E2\x14.df.plugin.EventTypeR\x06events*\x8A\x09\x0A\x09EventType\x12\x1A\x0A\x16EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x12\x0A\x0EEVENT_TYPE_ALL\x10\x01\x12\x0F\x0A\x0BPLAYER_JOIN\x10\x0A\x12\x0F\x0A\x0BPLAYER_QUIT\x10\x0B\x12\x0F\x0A\x0BPLAYER_MOVE\x10\x0C\x12\x0F\x0A\x0BPLAYER_JUMP\x10\x0D\x12\x13\x0A\x0FPLAYER_TELEPORT\x10\x0E\x12\x17\x0A\x13PLAYER_CHANGE_WORLD\x10\x0F\x12\x18\x0A\x14PLAYER_TOGGLE_SPRINT\x10\x10\x12\x17\x0A\x13PLAYER_TOGGLE_SNEAK\x10\x11\x12\x08\x0A\x04CHAT\x10\x12\x12\x14\x0A\x10PLAYER_FOOD_LOSS\x10\x13\x12\x0F\x0A\x0BPLAYER_HEAL\x10\x14\x12\x0F\x0A\x0BPLAYER_HURT\x10\x15\x12\x10\x0A\x0CPLAYER_DEATH\x10\x16\x12\x12\x0A\x0EPLAYER_RESPAWN\x10\x17\x12\x16\x0A\x12PLAYER_SKIN_CHANGE\x10\x18\x12\x1A\x0A\x16PLAYER_FIRE_EXTINGUISH\x10\x19\x12\x16\x0A\x12PLAYER_START_BREAK\x10\x1A\x12\x16\x0A\x12PLAYER_BLOCK_BREAK\x10\x1B\x12\x16\x0A\x12PLAYER_BLOCK_PLACE\x10\x1C\x12\x15\x0A\x11PLAYER_BLOCK_PICK\x10\x1D\x12\x13\x0A\x0FPLAYER_ITEM_USE\x10\x1E\x12\x1C\x0A\x18PLAYER_ITEM_USE_ON_BLOCK\x10\x1F\x12\x1D\x0A\x19PLAYER_ITEM_USE_ON_ENTITY\x10 \x12\x17\x0A\x13PLAYER_ITEM_RELEASE\x10!\x12\x17\x0A\x13PLAYER_ITEM_CONSUME\x10\"\x12\x18\x0A\x14PLAYER_ATTACK_ENTITY\x10#\x12\x1A\x0A\x16PLAYER_EXPERIENCE_GAIN\x10\$\x12\x14\x0A\x10PLAYER_PUNCH_AIR\x10%\x12\x14\x0A\x10PLAYER_SIGN_EDIT\x10&\x12\x1C\x0A\x18PLAYER_LECTERN_PAGE_TURN\x10'\x12\x16\x0A\x12PLAYER_ITEM_DAMAGE\x10(\x12\x16\x0A\x12PLAYER_ITEM_PICKUP\x10)\x12\x1B\x0A\x17PLAYER_HELD_SLOT_CHANGE\x10*\x12\x14\x0A\x10PLAYER_ITEM_DROP\x10+\x12\x13\x0A\x0FPLAYER_TRANSFER\x10,\x12\x0B\x0A\x07COMMAND\x10-\x12\x16\x0A\x12PLAYER_DIAGNOSTICS\x10.\x12\x15\x0A\x11WORLD_LIQUID_FLOW\x10F\x12\x16\x0A\x12WORLD_LIQUID_DECAY\x10G\x12\x17\x0A\x13WORLD_LIQUID_HARDEN\x10H\x12\x0F\x0A\x0BWORLD_SOUND\x10I\x12\x15\x0A\x11WORLD_FIRE_SPREAD\x10J\x12\x14\x0A\x10WORLD_BLOCK_BURN\x10K\x12\x16\x0A\x12WORLD_CROP_TRAMPLE\x10L\x12\x16\x0A\x12WORLD_LEAVES_DECAY\x10M\x12\x16\x0A\x12WORLD_ENTITY_SPAWN\x10N\x12\x18\x0A\x14WORLD_ENTITY_DESPAWN\x10O\x12\x13\x0A\x0FWORLD_EXPLOSION\x10P\x12\x0F\x0A\x0BWORLD_CLOSE\x10Q2M\x0A\x06Plugin\x12C\x0A\x0BEventStream\x12\x17.df.plugin.PluginToHost\x1A\x17.df.plugin.HostToPlugin(\x010\x01B\x8A\x01\x0A\x0Dcom.df.pluginB\x0BPluginProtoP\x01Z'github.com/secmc/plugin/proto/generated\xA2\x02\x03DPX\xAA\x02\x09Df.Plugin\xCA\x02\x09Df\\Plugin\xE2\x02\x15Df\\Plugin\\GPBMetadata\xEA\x02\x0ADf::Pluginb\x06proto3" , true); static::$is_initialized = true; diff --git a/proto/generated/php/Df/Plugin/ParamSpec.php b/proto/generated/php/Df/Plugin/ParamSpec.php new file mode 100644 index 0000000..9552da4 --- /dev/null +++ b/proto/generated/php/Df/Plugin/ParamSpec.php @@ -0,0 +1,187 @@ +df.plugin.ParamSpec + */ +class ParamSpec extends \Google\Protobuf\Internal\Message +{ + /** + * Generated from protobuf field string name = 1 [json_name = "name"]; + */ + protected $name = ''; + /** + * Generated from protobuf field .df.plugin.ParamType type = 2 [json_name = "type"]; + */ + protected $type = 0; + /** + * Generated from protobuf field bool optional = 3 [json_name = "optional"]; + */ + protected $optional = false; + /** + * Optional suffix as supported by Go cmd tags (e.g., units) + * + * Generated from protobuf field string suffix = 4 [json_name = "suffix"]; + */ + protected $suffix = ''; + /** + * Optional list of enum values to present in the client UI. + * When set, the parameter is shown as an enum selector regardless of ParamType. + * + * Generated from protobuf field repeated string enum_values = 5 [json_name = "enumValues"]; + */ + private $enum_values; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $name + * @type int $type + * @type bool $optional + * @type string $suffix + * Optional suffix as supported by Go cmd tags (e.g., units) + * @type string[] $enum_values + * Optional list of enum values to present in the client UI. + * When set, the parameter is shown as an enum selector regardless of ParamType. + * } + */ + public function __construct($data = NULL) { + \Df\Plugin\GPBMetadata\Command::initOnce(); + parent::__construct($data); + } + + /** + * Generated from protobuf field string name = 1 [json_name = "name"]; + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Generated from protobuf field string name = 1 [json_name = "name"]; + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + + /** + * Generated from protobuf field .df.plugin.ParamType type = 2 [json_name = "type"]; + * @return int + */ + public function getType() + { + return $this->type; + } + + /** + * Generated from protobuf field .df.plugin.ParamType type = 2 [json_name = "type"]; + * @param int $var + * @return $this + */ + public function setType($var) + { + GPBUtil::checkEnum($var, \Df\Plugin\ParamType::class); + $this->type = $var; + + return $this; + } + + /** + * Generated from protobuf field bool optional = 3 [json_name = "optional"]; + * @return bool + */ + public function getOptional() + { + return $this->optional; + } + + /** + * Generated from protobuf field bool optional = 3 [json_name = "optional"]; + * @param bool $var + * @return $this + */ + public function setOptional($var) + { + GPBUtil::checkBool($var); + $this->optional = $var; + + return $this; + } + + /** + * Optional suffix as supported by Go cmd tags (e.g., units) + * + * Generated from protobuf field string suffix = 4 [json_name = "suffix"]; + * @return string + */ + public function getSuffix() + { + return $this->suffix; + } + + /** + * Optional suffix as supported by Go cmd tags (e.g., units) + * + * Generated from protobuf field string suffix = 4 [json_name = "suffix"]; + * @param string $var + * @return $this + */ + public function setSuffix($var) + { + GPBUtil::checkString($var, True); + $this->suffix = $var; + + return $this; + } + + /** + * Optional list of enum values to present in the client UI. + * When set, the parameter is shown as an enum selector regardless of ParamType. + * + * Generated from protobuf field repeated string enum_values = 5 [json_name = "enumValues"]; + * @return RepeatedField + */ + public function getEnumValues() + { + return $this->enum_values; + } + + /** + * Optional list of enum values to present in the client UI. + * When set, the parameter is shown as an enum selector regardless of ParamType. + * + * Generated from protobuf field repeated string enum_values = 5 [json_name = "enumValues"]; + * @param string[] $var + * @return $this + */ + public function setEnumValues($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->enum_values = $arr; + + return $this; + } + +} + diff --git a/proto/generated/php/Df/Plugin/ParamType.php b/proto/generated/php/Df/Plugin/ParamType.php new file mode 100644 index 0000000..ed95dad --- /dev/null +++ b/proto/generated/php/Df/Plugin/ParamType.php @@ -0,0 +1,71 @@ +df.plugin.ParamType + */ +class ParamType +{ + /** + * Generated from protobuf enum PARAM_STRING = 0; + */ + const PARAM_STRING = 0; + /** + * Generated from protobuf enum PARAM_INT = 1; + */ + const PARAM_INT = 1; + /** + * Generated from protobuf enum PARAM_FLOAT = 2; + */ + const PARAM_FLOAT = 2; + /** + * Generated from protobuf enum PARAM_BOOL = 3; + */ + const PARAM_BOOL = 3; + /** + * Generated from protobuf enum PARAM_VARARGS = 4; + */ + const PARAM_VARARGS = 4; + /** + * Generated from protobuf enum PARAM_ENUM = 5; + */ + const PARAM_ENUM = 5; + + private static $valueToName = [ + self::PARAM_STRING => 'PARAM_STRING', + self::PARAM_INT => 'PARAM_INT', + self::PARAM_FLOAT => 'PARAM_FLOAT', + self::PARAM_BOOL => 'PARAM_BOOL', + self::PARAM_VARARGS => 'PARAM_VARARGS', + self::PARAM_ENUM => 'PARAM_ENUM', + ]; + + public static function name($value) + { + if (!isset(self::$valueToName[$value])) { + throw new UnexpectedValueException(sprintf( + 'Enum %s has no name defined for value %s', __CLASS__, $value)); + } + return self::$valueToName[$value]; + } + + + public static function value($name) + { + $const = __CLASS__ . '::' . strtoupper($name); + if (!defined($const)) { + throw new UnexpectedValueException(sprintf( + 'Enum %s has no value defined for name %s', __CLASS__, $name)); + } + return constant($const); + } +} + diff --git a/proto/generated/player_events.pb.go b/proto/generated/player_events.pb.go index d99ae63..4b374eb 100644 --- a/proto/generated/player_events.pb.go +++ b/proto/generated/player_events.pb.go @@ -2617,85 +2617,6 @@ func (x *PlayerTransferEvent) GetAddress() *Address { return nil } -type CommandEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PlayerUuid string `protobuf:"bytes,1,opt,name=player_uuid,json=playerUuid,proto3" json:"player_uuid,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Raw string `protobuf:"bytes,3,opt,name=raw,proto3" json:"raw,omitempty"` // Full command string like "/tp 100 64 200" - Command string `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"` // Just the command name like "tp" - Args []string `protobuf:"bytes,5,rep,name=args,proto3" json:"args,omitempty"` // Parsed arguments like ["100", "64", "200"] -} - -func (x *CommandEvent) Reset() { - *x = CommandEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_player_events_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CommandEvent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommandEvent) ProtoMessage() {} - -func (x *CommandEvent) ProtoReflect() protoreflect.Message { - mi := &file_player_events_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CommandEvent.ProtoReflect.Descriptor instead. -func (*CommandEvent) Descriptor() ([]byte, []int) { - return file_player_events_proto_rawDescGZIP(), []int{35} -} - -func (x *CommandEvent) GetPlayerUuid() string { - if x != nil { - return x.PlayerUuid - } - return "" -} - -func (x *CommandEvent) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CommandEvent) GetRaw() string { - if x != nil { - return x.Raw - } - return "" -} - -func (x *CommandEvent) GetCommand() string { - if x != nil { - return x.Command - } - return "" -} - -func (x *CommandEvent) GetArgs() []string { - if x != nil { - return x.Args - } - return nil -} - type PlayerDiagnosticsEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2717,7 +2638,7 @@ type PlayerDiagnosticsEvent struct { func (x *PlayerDiagnosticsEvent) Reset() { *x = PlayerDiagnosticsEvent{} if protoimpl.UnsafeEnabled { - mi := &file_player_events_proto_msgTypes[36] + mi := &file_player_events_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2730,7 +2651,7 @@ func (x *PlayerDiagnosticsEvent) String() string { func (*PlayerDiagnosticsEvent) ProtoMessage() {} func (x *PlayerDiagnosticsEvent) ProtoReflect() protoreflect.Message { - mi := &file_player_events_proto_msgTypes[36] + mi := &file_player_events_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2743,7 +2664,7 @@ func (x *PlayerDiagnosticsEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerDiagnosticsEvent.ProtoReflect.Descriptor instead. func (*PlayerDiagnosticsEvent) Descriptor() ([]byte, []int) { - return file_player_events_proto_rawDescGZIP(), []int{36} + return file_player_events_proto_rawDescGZIP(), []int{35} } func (x *PlayerDiagnosticsEvent) GetPlayerUuid() string { @@ -3192,63 +3113,55 @@ var file_player_events_proto_rawDesc = []byte{ 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x75, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, - 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0xe2, 0x04, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x75, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, - 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x19, 0x61, 0x76, 0x65, 0x72, 0x61, - 0x67, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x61, 0x76, 0x65, 0x72, - 0x61, 0x67, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x12, 0x3e, 0x0a, 0x1c, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x6d, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x18, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x1c, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x6d, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x18, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x65, - 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x42, 0x65, 0x67, - 0x69, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x61, - 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x76, 0x65, - 0x72, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x61, 0x76, 0x65, - 0x72, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x61, 0x76, 0x65, 0x72, 0x61, - 0x67, 0x65, 0x45, 0x6e, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x43, - 0x0a, 0x1e, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, - 0x64, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1b, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x20, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x75, - 0x6e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1d, 0x61, - 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x55, 0x6e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x90, 0x01, 0x0a, - 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x42, 0x11, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x65, 0x63, 0x6d, 0x63, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0xa2, 0x02, 0x03, 0x44, - 0x50, 0x58, 0xaa, 0x02, 0x09, 0x44, 0x66, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0xca, 0x02, - 0x09, 0x44, 0x66, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0xe2, 0x02, 0x15, 0x44, 0x66, 0x5c, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x0a, 0x44, 0x66, 0x3a, 0x3a, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x22, 0xe2, 0x04, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x61, 0x67, + 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x39, 0x0a, 0x19, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x3e, 0x0a, 0x1c, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, + 0x69, 0x6d, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x18, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x53, 0x69, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x1c, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, + 0x69, 0x6d, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x18, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x53, 0x69, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, + 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x72, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x65, + 0x6e, 0x64, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x13, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x64, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x1e, 0x61, 0x76, 0x65, 0x72, + 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x1b, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, + 0x20, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x6e, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1d, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, + 0x55, 0x6e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x50, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x90, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x64, + 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x42, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x65, 0x63, 0x6d, 0x63, 0x2f, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0xa2, 0x02, 0x03, 0x44, 0x50, 0x58, 0xaa, 0x02, 0x09, 0x44, + 0x66, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0xca, 0x02, 0x09, 0x44, 0x66, 0x5c, 0x50, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0xe2, 0x02, 0x15, 0x44, 0x66, 0x5c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x44, + 0x66, 0x3a, 0x3a, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -3263,7 +3176,7 @@ func file_player_events_proto_rawDescGZIP() []byte { return file_player_events_proto_rawDescData } -var file_player_events_proto_msgTypes = make([]protoimpl.MessageInfo, 37) +var file_player_events_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_player_events_proto_goTypes = []interface{}{ (*PlayerJoinEvent)(nil), // 0: df.plugin.PlayerJoinEvent (*PlayerQuitEvent)(nil), // 1: df.plugin.PlayerQuitEvent @@ -3300,55 +3213,54 @@ var file_player_events_proto_goTypes = []interface{}{ (*PlayerHeldSlotChangeEvent)(nil), // 32: df.plugin.PlayerHeldSlotChangeEvent (*PlayerItemDropEvent)(nil), // 33: df.plugin.PlayerItemDropEvent (*PlayerTransferEvent)(nil), // 34: df.plugin.PlayerTransferEvent - (*CommandEvent)(nil), // 35: df.plugin.CommandEvent - (*PlayerDiagnosticsEvent)(nil), // 36: df.plugin.PlayerDiagnosticsEvent - (*Vec3)(nil), // 37: df.plugin.Vec3 - (*Rotation)(nil), // 38: df.plugin.Rotation - (*WorldRef)(nil), // 39: df.plugin.WorldRef - (*HealingSource)(nil), // 40: df.plugin.HealingSource - (*DamageSource)(nil), // 41: df.plugin.DamageSource - (*BlockPos)(nil), // 42: df.plugin.BlockPos - (*BlockState)(nil), // 43: df.plugin.BlockState - (*ItemStack)(nil), // 44: df.plugin.ItemStack - (*EntityRef)(nil), // 45: df.plugin.EntityRef - (*Address)(nil), // 46: df.plugin.Address + (*PlayerDiagnosticsEvent)(nil), // 35: df.plugin.PlayerDiagnosticsEvent + (*Vec3)(nil), // 36: df.plugin.Vec3 + (*Rotation)(nil), // 37: df.plugin.Rotation + (*WorldRef)(nil), // 38: df.plugin.WorldRef + (*HealingSource)(nil), // 39: df.plugin.HealingSource + (*DamageSource)(nil), // 40: df.plugin.DamageSource + (*BlockPos)(nil), // 41: df.plugin.BlockPos + (*BlockState)(nil), // 42: df.plugin.BlockState + (*ItemStack)(nil), // 43: df.plugin.ItemStack + (*EntityRef)(nil), // 44: df.plugin.EntityRef + (*Address)(nil), // 45: df.plugin.Address } var file_player_events_proto_depIdxs = []int32{ - 37, // 0: df.plugin.PlayerMoveEvent.position:type_name -> df.plugin.Vec3 - 38, // 1: df.plugin.PlayerMoveEvent.rotation:type_name -> df.plugin.Rotation - 37, // 2: df.plugin.PlayerJumpEvent.position:type_name -> df.plugin.Vec3 - 37, // 3: df.plugin.PlayerTeleportEvent.position:type_name -> df.plugin.Vec3 - 39, // 4: df.plugin.PlayerChangeWorldEvent.before:type_name -> df.plugin.WorldRef - 39, // 5: df.plugin.PlayerChangeWorldEvent.after:type_name -> df.plugin.WorldRef - 40, // 6: df.plugin.PlayerHealEvent.source:type_name -> df.plugin.HealingSource - 41, // 7: df.plugin.PlayerHurtEvent.source:type_name -> df.plugin.DamageSource - 41, // 8: df.plugin.PlayerDeathEvent.source:type_name -> df.plugin.DamageSource - 37, // 9: df.plugin.PlayerRespawnEvent.position:type_name -> df.plugin.Vec3 - 39, // 10: df.plugin.PlayerRespawnEvent.world:type_name -> df.plugin.WorldRef - 42, // 11: df.plugin.PlayerFireExtinguishEvent.position:type_name -> df.plugin.BlockPos - 42, // 12: df.plugin.PlayerStartBreakEvent.position:type_name -> df.plugin.BlockPos - 42, // 13: df.plugin.BlockBreakEvent.position:type_name -> df.plugin.BlockPos - 42, // 14: df.plugin.PlayerBlockPlaceEvent.position:type_name -> df.plugin.BlockPos - 43, // 15: df.plugin.PlayerBlockPlaceEvent.block:type_name -> df.plugin.BlockState - 42, // 16: df.plugin.PlayerBlockPickEvent.position:type_name -> df.plugin.BlockPos - 43, // 17: df.plugin.PlayerBlockPickEvent.block:type_name -> df.plugin.BlockState - 44, // 18: df.plugin.PlayerItemUseEvent.item:type_name -> df.plugin.ItemStack - 42, // 19: df.plugin.PlayerItemUseOnBlockEvent.position:type_name -> df.plugin.BlockPos - 37, // 20: df.plugin.PlayerItemUseOnBlockEvent.click_position:type_name -> df.plugin.Vec3 - 43, // 21: df.plugin.PlayerItemUseOnBlockEvent.block:type_name -> df.plugin.BlockState - 44, // 22: df.plugin.PlayerItemUseOnBlockEvent.item:type_name -> df.plugin.ItemStack - 45, // 23: df.plugin.PlayerItemUseOnEntityEvent.entity:type_name -> df.plugin.EntityRef - 44, // 24: df.plugin.PlayerItemUseOnEntityEvent.item:type_name -> df.plugin.ItemStack - 44, // 25: df.plugin.PlayerItemReleaseEvent.item:type_name -> df.plugin.ItemStack - 44, // 26: df.plugin.PlayerItemConsumeEvent.item:type_name -> df.plugin.ItemStack - 45, // 27: df.plugin.PlayerAttackEntityEvent.entity:type_name -> df.plugin.EntityRef - 44, // 28: df.plugin.PlayerAttackEntityEvent.item:type_name -> df.plugin.ItemStack - 42, // 29: df.plugin.PlayerSignEditEvent.position:type_name -> df.plugin.BlockPos - 42, // 30: df.plugin.PlayerLecternPageTurnEvent.position:type_name -> df.plugin.BlockPos - 44, // 31: df.plugin.PlayerItemDamageEvent.item:type_name -> df.plugin.ItemStack - 44, // 32: df.plugin.PlayerItemPickupEvent.item:type_name -> df.plugin.ItemStack - 44, // 33: df.plugin.PlayerItemDropEvent.item:type_name -> df.plugin.ItemStack - 46, // 34: df.plugin.PlayerTransferEvent.address:type_name -> df.plugin.Address + 36, // 0: df.plugin.PlayerMoveEvent.position:type_name -> df.plugin.Vec3 + 37, // 1: df.plugin.PlayerMoveEvent.rotation:type_name -> df.plugin.Rotation + 36, // 2: df.plugin.PlayerJumpEvent.position:type_name -> df.plugin.Vec3 + 36, // 3: df.plugin.PlayerTeleportEvent.position:type_name -> df.plugin.Vec3 + 38, // 4: df.plugin.PlayerChangeWorldEvent.before:type_name -> df.plugin.WorldRef + 38, // 5: df.plugin.PlayerChangeWorldEvent.after:type_name -> df.plugin.WorldRef + 39, // 6: df.plugin.PlayerHealEvent.source:type_name -> df.plugin.HealingSource + 40, // 7: df.plugin.PlayerHurtEvent.source:type_name -> df.plugin.DamageSource + 40, // 8: df.plugin.PlayerDeathEvent.source:type_name -> df.plugin.DamageSource + 36, // 9: df.plugin.PlayerRespawnEvent.position:type_name -> df.plugin.Vec3 + 38, // 10: df.plugin.PlayerRespawnEvent.world:type_name -> df.plugin.WorldRef + 41, // 11: df.plugin.PlayerFireExtinguishEvent.position:type_name -> df.plugin.BlockPos + 41, // 12: df.plugin.PlayerStartBreakEvent.position:type_name -> df.plugin.BlockPos + 41, // 13: df.plugin.BlockBreakEvent.position:type_name -> df.plugin.BlockPos + 41, // 14: df.plugin.PlayerBlockPlaceEvent.position:type_name -> df.plugin.BlockPos + 42, // 15: df.plugin.PlayerBlockPlaceEvent.block:type_name -> df.plugin.BlockState + 41, // 16: df.plugin.PlayerBlockPickEvent.position:type_name -> df.plugin.BlockPos + 42, // 17: df.plugin.PlayerBlockPickEvent.block:type_name -> df.plugin.BlockState + 43, // 18: df.plugin.PlayerItemUseEvent.item:type_name -> df.plugin.ItemStack + 41, // 19: df.plugin.PlayerItemUseOnBlockEvent.position:type_name -> df.plugin.BlockPos + 36, // 20: df.plugin.PlayerItemUseOnBlockEvent.click_position:type_name -> df.plugin.Vec3 + 42, // 21: df.plugin.PlayerItemUseOnBlockEvent.block:type_name -> df.plugin.BlockState + 43, // 22: df.plugin.PlayerItemUseOnBlockEvent.item:type_name -> df.plugin.ItemStack + 44, // 23: df.plugin.PlayerItemUseOnEntityEvent.entity:type_name -> df.plugin.EntityRef + 43, // 24: df.plugin.PlayerItemUseOnEntityEvent.item:type_name -> df.plugin.ItemStack + 43, // 25: df.plugin.PlayerItemReleaseEvent.item:type_name -> df.plugin.ItemStack + 43, // 26: df.plugin.PlayerItemConsumeEvent.item:type_name -> df.plugin.ItemStack + 44, // 27: df.plugin.PlayerAttackEntityEvent.entity:type_name -> df.plugin.EntityRef + 43, // 28: df.plugin.PlayerAttackEntityEvent.item:type_name -> df.plugin.ItemStack + 41, // 29: df.plugin.PlayerSignEditEvent.position:type_name -> df.plugin.BlockPos + 41, // 30: df.plugin.PlayerLecternPageTurnEvent.position:type_name -> df.plugin.BlockPos + 43, // 31: df.plugin.PlayerItemDamageEvent.item:type_name -> df.plugin.ItemStack + 43, // 32: df.plugin.PlayerItemPickupEvent.item:type_name -> df.plugin.ItemStack + 43, // 33: df.plugin.PlayerItemDropEvent.item:type_name -> df.plugin.ItemStack + 45, // 34: df.plugin.PlayerTransferEvent.address:type_name -> df.plugin.Address 35, // [35:35] is the sub-list for method output_type 35, // [35:35] is the sub-list for method input_type 35, // [35:35] is the sub-list for extension type_name @@ -3784,18 +3696,6 @@ func file_player_events_proto_init() { } } file_player_events_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommandEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_player_events_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PlayerDiagnosticsEvent); i { case 0: return &v.state @@ -3830,7 +3730,7 @@ func file_player_events_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_player_events_proto_rawDesc, NumEnums: 0, - NumMessages: 37, + NumMessages: 36, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/generated/plugin.pb.go b/proto/generated/plugin.pb.go index 35f5924..f657624 100644 --- a/proto/generated/plugin.pb.go +++ b/proto/generated/plugin.pb.go @@ -1383,69 +1383,6 @@ func (x *PluginHello) GetCustomItems() []*CustomItemDefinition { return nil } -type CommandSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Aliases []string `protobuf:"bytes,3,rep,name=aliases,proto3" json:"aliases,omitempty"` -} - -func (x *CommandSpec) Reset() { - *x = CommandSpec{} - if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CommandSpec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CommandSpec) ProtoMessage() {} - -func (x *CommandSpec) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CommandSpec.ProtoReflect.Descriptor instead. -func (*CommandSpec) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{6} -} - -func (x *CommandSpec) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CommandSpec) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *CommandSpec) GetAliases() []string { - if x != nil { - return x.Aliases - } - return nil -} - type LogMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1458,7 +1395,7 @@ type LogMessage struct { func (x *LogMessage) Reset() { *x = LogMessage{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[7] + mi := &file_plugin_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1471,7 +1408,7 @@ func (x *LogMessage) String() string { func (*LogMessage) ProtoMessage() {} func (x *LogMessage) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[7] + mi := &file_plugin_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1484,7 +1421,7 @@ func (x *LogMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use LogMessage.ProtoReflect.Descriptor instead. func (*LogMessage) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{7} + return file_plugin_proto_rawDescGZIP(), []int{6} } func (x *LogMessage) GetLevel() string { @@ -1512,7 +1449,7 @@ type EventSubscribe struct { func (x *EventSubscribe) Reset() { *x = EventSubscribe{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[8] + mi := &file_plugin_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1525,7 +1462,7 @@ func (x *EventSubscribe) String() string { func (*EventSubscribe) ProtoMessage() {} func (x *EventSubscribe) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[8] + mi := &file_plugin_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1538,7 +1475,7 @@ func (x *EventSubscribe) ProtoReflect() protoreflect.Message { // Deprecated: Use EventSubscribe.ProtoReflect.Descriptor instead. func (*EventSubscribe) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{8} + return file_plugin_proto_rawDescGZIP(), []int{7} } func (x *EventSubscribe) GetEvents() []EventType { @@ -1555,314 +1492,309 @@ var file_plugin_proto_rawDesc = []byte{ 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x1a, 0x13, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x0f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x48, 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x50, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x2c, - 0x0a, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x48, 0x65, - 0x6c, 0x6c, 0x6f, 0x48, 0x00, 0x52, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x35, 0x0a, 0x08, - 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x53, - 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x75, 0x74, 0x64, - 0x6f, 0x77, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x48, 0x00, 0x52, 0x05, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x22, 0x2c, 0x0a, 0x09, 0x48, 0x6f, 0x73, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x1f, 0x0a, - 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x26, - 0x0a, 0x0c, 0x48, 0x6f, 0x73, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xe6, 0x1e, 0x0a, 0x0d, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, - 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x74, 0x6f, 0x1a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x0f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xcd, 0x01, 0x0a, 0x0c, 0x48, 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, + 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x64, + 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x48, 0x65, 0x6c, + 0x6c, 0x6f, 0x48, 0x00, 0x52, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x35, 0x0a, 0x08, 0x73, + 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x53, 0x68, + 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, + 0x77, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x48, 0x00, 0x52, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, + 0x2c, 0x0a, 0x09, 0x48, 0x6f, 0x73, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x1f, 0x0a, 0x0b, + 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x26, 0x0a, + 0x0c, 0x48, 0x6f, 0x73, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xe6, 0x1e, 0x0a, 0x0d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x45, + 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x14, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, + 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, + 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4a, + 0x6f, 0x69, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x5f, 0x71, 0x75, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x51, 0x75, + 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x51, 0x75, 0x69, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, + 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, 0x2e, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x6f, 0x76, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x4d, 0x6f, 0x76, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x6a, + 0x75, 0x6d, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4a, 0x75, 0x6d, 0x70, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4a, + 0x75, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x74, 0x65, + 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, + 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, + 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x53, + 0x0a, 0x13, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x66, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x57, 0x6f, + 0x72, 0x6c, 0x64, 0x12, 0x56, 0x0a, 0x14, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x74, 0x6f, + 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, + 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x13, 0x70, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x73, 0x6e, 0x65, + 0x61, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x6f, 0x67, 0x67, 0x6c, + 0x65, 0x53, 0x6e, 0x65, 0x61, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x70, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x6e, 0x65, 0x61, 0x6b, + 0x12, 0x2a, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x4a, 0x0a, 0x10, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x64, 0x5f, 0x6c, 0x6f, 0x73, 0x73, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6f, 0x6f, 0x64, 0x4c, 0x6f, 0x73, + 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x46, 0x6f, 0x6f, 0x64, 0x4c, 0x6f, 0x73, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x5f, 0x71, 0x75, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, - 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x51, - 0x75, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x51, 0x75, 0x69, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, - 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x6f, - 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, - 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4a, 0x75, 0x6d, - 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x48, 0x65, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x5f, 0x68, 0x75, 0x72, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, + 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, + 0x75, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x48, 0x75, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x5f, 0x64, 0x65, 0x61, 0x74, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, + 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, + 0x65, 0x61, 0x74, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x44, 0x65, 0x61, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, + 0x12, 0x50, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x6b, 0x69, 0x6e, 0x5f, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, + 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, + 0x6b, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x5c, 0x0a, 0x16, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x72, + 0x65, 0x5f, 0x65, 0x78, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x18, 0x19, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, 0x45, 0x78, 0x74, 0x69, 0x6e, 0x67, 0x75, + 0x69, 0x73, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, 0x45, 0x78, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, + 0x12, 0x50, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, + 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x65, + 0x61, 0x6b, 0x12, 0x3d, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x62, 0x72, 0x65, 0x61, + 0x6b, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x72, 0x65, 0x61, + 0x6b, 0x12, 0x50, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, - 0x53, 0x0a, 0x13, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, - 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x57, - 0x6f, 0x72, 0x6c, 0x64, 0x12, 0x56, 0x0a, 0x14, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x74, - 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x70, 0x72, 0x69, 0x6e, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x13, - 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x73, 0x6e, - 0x65, 0x61, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x66, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x6f, 0x67, 0x67, - 0x6c, 0x65, 0x53, 0x6e, 0x65, 0x61, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, - 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x53, 0x6e, 0x65, 0x61, - 0x6b, 0x12, 0x2a, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x4a, 0x0a, - 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x66, 0x6f, 0x6f, 0x64, 0x5f, 0x6c, 0x6f, 0x73, - 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6f, 0x6f, 0x64, 0x4c, 0x6f, - 0x73, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x46, 0x6f, 0x6f, 0x64, 0x4c, 0x6f, 0x73, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x6c, + 0x61, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x48, 0x65, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x5f, 0x68, 0x75, 0x72, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x69, + 0x63, 0x6b, 0x12, 0x47, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, + 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x66, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, + 0x65, 0x6d, 0x55, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x18, 0x70, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x6f, + 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x48, 0x75, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x48, 0x75, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x5f, 0x64, 0x65, 0x61, 0x74, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x44, 0x65, 0x61, 0x74, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x61, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x0e, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x61, 0x77, - 0x6e, 0x12, 0x50, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x6b, 0x69, 0x6e, - 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x5c, 0x0a, 0x16, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x66, 0x69, - 0x72, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x18, 0x19, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, 0x45, 0x78, 0x74, 0x69, 0x6e, 0x67, - 0x75, 0x69, 0x73, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, 0x45, 0x78, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, - 0x68, 0x12, 0x50, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, - 0x65, 0x61, 0x6b, 0x12, 0x3d, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x62, 0x72, 0x65, - 0x61, 0x6b, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x72, 0x65, - 0x61, 0x6b, 0x12, 0x50, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, - 0x6c, 0x61, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x69, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, - 0x69, 0x63, 0x6b, 0x12, 0x47, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, - 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, - 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, - 0x74, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x70, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x18, - 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x5f, - 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x49, 0x74, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x4f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, - 0x65, 0x6d, 0x55, 0x73, 0x65, 0x4f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x61, 0x0a, 0x19, - 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x5f, - 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x4f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x15, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x49, 0x74, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x4f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, - 0x53, 0x0a, 0x13, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x72, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, - 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x13, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, - 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, - 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x14, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x70, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x5c, 0x0a, 0x16, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x61, 0x69, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x47, 0x61, - 0x69, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x47, 0x61, 0x69, 0x6e, 0x12, - 0x4a, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x6e, 0x63, 0x68, 0x5f, - 0x61, 0x69, 0x72, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x75, 0x6e, 0x63, - 0x68, 0x41, 0x69, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x50, 0x75, 0x6e, 0x63, 0x68, 0x41, 0x69, 0x72, 0x12, 0x4a, 0x0a, 0x10, 0x70, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x18, - 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x45, 0x64, 0x69, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, - 0x69, 0x67, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x12, 0x60, 0x0a, 0x18, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x5f, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x75, 0x72, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x66, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x63, 0x74, - 0x65, 0x72, 0x6e, 0x50, 0x61, 0x67, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x15, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x63, 0x74, 0x65, 0x72, - 0x6e, 0x50, 0x61, 0x67, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x50, 0x0a, 0x12, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, - 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x44, 0x61, 0x6d, 0x61, - 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x49, 0x74, 0x65, 0x6d, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x50, 0x0a, 0x12, 0x70, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, - 0x70, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x69, - 0x63, 0x6b, 0x75, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x5d, 0x0a, - 0x17, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x6c, 0x6f, - 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x49, 0x74, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x4f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, + 0x6d, 0x55, 0x73, 0x65, 0x4f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x61, 0x0a, 0x19, 0x70, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x6f, + 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x48, 0x65, 0x6c, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x65, - 0x6c, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x4a, 0x0a, 0x10, - 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x72, 0x6f, 0x70, - 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x44, 0x72, 0x6f, - 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x49, 0x74, 0x65, 0x6d, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x2c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x2d, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x5f, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x2e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, - 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, - 0x63, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x4d, 0x0a, 0x11, - 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, 0x66, 0x6c, 0x6f, - 0x77, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x46, - 0x6c, 0x6f, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6c, - 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x50, 0x0a, 0x12, 0x77, - 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x63, 0x61, - 0x79, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x44, - 0x65, 0x63, 0x61, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x77, 0x6f, 0x72, - 0x6c, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x44, 0x65, 0x63, 0x61, 0x79, 0x12, 0x53, 0x0a, - 0x13, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, 0x68, 0x61, - 0x72, 0x64, 0x65, 0x6e, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x66, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x71, 0x75, - 0x69, 0x64, 0x48, 0x61, 0x72, 0x64, 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x11, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x48, 0x61, 0x72, 0x64, - 0x65, 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x6e, - 0x64, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x6f, 0x75, 0x6e, - 0x64, 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x5f, - 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, - 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x69, - 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x0f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x69, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, - 0x12, 0x4a, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x62, 0x75, 0x72, 0x6e, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x42, 0x75, 0x72, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x6f, - 0x72, 0x6c, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x72, 0x6e, 0x12, 0x50, 0x0a, 0x12, - 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x43, 0x72, 0x6f, 0x70, 0x54, 0x72, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x77, 0x6f, - 0x72, 0x6c, 0x64, 0x43, 0x72, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x50, - 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x5f, 0x64, - 0x65, 0x63, 0x61, 0x79, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x65, 0x61, 0x76, - 0x65, 0x73, 0x44, 0x65, 0x63, 0x61, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, - 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x63, 0x61, 0x79, - 0x12, 0x50, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x5f, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, - 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x53, 0x70, 0x61, 0x77, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x70, 0x61, - 0x77, 0x6e, 0x12, 0x56, 0x0a, 0x14, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, - 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x12, 0x49, 0x0a, 0x0f, 0x77, 0x6f, - 0x72, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x50, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, - 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6c, - 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x63, - 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, 0x2e, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x43, 0x6c, 0x6f, 0x73, - 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x43, - 0x6c, 0x6f, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, - 0xbd, 0x02, 0x0a, 0x0c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x48, 0x6f, 0x73, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, - 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x64, - 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x48, - 0x65, 0x6c, 0x6c, 0x6f, 0x48, 0x00, 0x52, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x39, 0x0a, - 0x09, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x64, 0x66, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x48, 0x00, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x03, - 0x6c, 0x6f, 0x67, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x66, 0x2e, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x48, 0x00, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x3b, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, - 0xd4, 0x01, 0x0a, 0x0b, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, - 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, - 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x74, 0x65, - 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x44, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x5d, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, - 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, - 0x69, 0x61, 0x73, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, + 0x72, 0x49, 0x74, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x4f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x15, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, + 0x74, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x4f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x53, + 0x0a, 0x13, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x66, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x13, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, + 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, + 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x14, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x70, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 0x5c, 0x0a, 0x16, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, + 0x69, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x61, 0x69, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x47, 0x61, 0x69, + 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x4a, + 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x61, + 0x69, 0x72, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x75, 0x6e, 0x63, 0x68, + 0x41, 0x69, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x50, 0x75, 0x6e, 0x63, 0x68, 0x41, 0x69, 0x72, 0x12, 0x4a, 0x0a, 0x10, 0x70, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x18, 0x26, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, + 0x67, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x12, 0x60, 0x0a, 0x18, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x5f, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x75, + 0x72, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x63, 0x74, 0x65, + 0x72, 0x6e, 0x50, 0x61, 0x67, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x15, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x63, 0x74, 0x65, 0x72, 0x6e, + 0x50, 0x61, 0x67, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x50, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x28, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x44, 0x61, 0x6d, 0x61, 0x67, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x49, 0x74, 0x65, 0x6d, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x50, 0x0a, 0x12, 0x70, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x75, 0x70, + 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x69, 0x63, + 0x6b, 0x75, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x69, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x5d, 0x0a, 0x17, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x48, 0x65, 0x6c, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x65, 0x6c, + 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x4a, 0x0a, 0x10, 0x70, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x18, + 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x44, 0x72, 0x6f, 0x70, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, + 0x74, 0x65, 0x6d, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x2d, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x5f, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x2e, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, + 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x4d, 0x0a, 0x11, 0x77, + 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, + 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x46, 0x6c, + 0x6f, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6c, 0x64, + 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x50, 0x0a, 0x12, 0x77, 0x6f, + 0x72, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x79, + 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x44, 0x65, + 0x63, 0x61, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6c, + 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x44, 0x65, 0x63, 0x61, 0x79, 0x12, 0x53, 0x0a, 0x13, + 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x5f, 0x68, 0x61, 0x72, + 0x64, 0x65, 0x6e, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x66, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x48, 0x61, 0x72, 0x64, 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, + 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x48, 0x61, 0x72, 0x64, 0x65, + 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x6e, 0x64, + 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x6f, 0x75, 0x6e, 0x64, + 0x12, 0x4d, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x5f, 0x73, + 0x70, 0x72, 0x65, 0x61, 0x64, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x66, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x69, 0x72, + 0x65, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0f, + 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x69, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x12, + 0x4a, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x62, + 0x75, 0x72, 0x6e, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x42, 0x75, 0x72, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x6f, 0x72, + 0x6c, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x75, 0x72, 0x6e, 0x12, 0x50, 0x0a, 0x12, 0x77, + 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x63, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x43, 0x72, 0x6f, 0x70, 0x54, 0x72, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x77, 0x6f, 0x72, + 0x6c, 0x64, 0x43, 0x72, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x50, 0x0a, + 0x12, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x5f, 0x64, 0x65, + 0x63, 0x61, 0x79, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x73, 0x44, 0x65, 0x63, 0x61, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x77, + 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x44, 0x65, 0x63, 0x61, 0x79, 0x12, + 0x50, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, + 0x73, 0x70, 0x61, 0x77, 0x6e, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x66, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x53, 0x70, 0x61, 0x77, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x10, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x70, 0x61, 0x77, + 0x6e, 0x12, 0x56, 0x0a, 0x14, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x5f, 0x64, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, + 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x44, 0x65, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x12, 0x49, 0x0a, 0x0f, 0x77, 0x6f, 0x72, + 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x50, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, + 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6c, 0x6f, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x63, 0x6c, + 0x6f, 0x73, 0x65, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x66, 0x2e, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x43, 0x6c, + 0x6f, 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xbd, + 0x02, 0x0a, 0x0c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, + 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x64, 0x66, + 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x48, 0x65, + 0x6c, 0x6c, 0x6f, 0x48, 0x00, 0x52, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x39, 0x0a, 0x09, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x48, 0x00, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x03, 0x6c, + 0x6f, 0x67, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, + 0x00, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x3b, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x64, + 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xd4, + 0x01, 0x0a, 0x0b, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, + 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, + 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x44, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x3c, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, @@ -1973,7 +1905,7 @@ func file_plugin_proto_rawDescGZIP() []byte { } var file_plugin_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_plugin_proto_goTypes = []interface{}{ (EventType)(0), // 0: df.plugin.EventType (*HostToPlugin)(nil), // 1: df.plugin.HostToPlugin @@ -1982,60 +1914,60 @@ var file_plugin_proto_goTypes = []interface{}{ (*EventEnvelope)(nil), // 4: df.plugin.EventEnvelope (*PluginToHost)(nil), // 5: df.plugin.PluginToHost (*PluginHello)(nil), // 6: df.plugin.PluginHello - (*CommandSpec)(nil), // 7: df.plugin.CommandSpec - (*LogMessage)(nil), // 8: df.plugin.LogMessage - (*EventSubscribe)(nil), // 9: df.plugin.EventSubscribe - (*PlayerJoinEvent)(nil), // 10: df.plugin.PlayerJoinEvent - (*PlayerQuitEvent)(nil), // 11: df.plugin.PlayerQuitEvent - (*PlayerMoveEvent)(nil), // 12: df.plugin.PlayerMoveEvent - (*PlayerJumpEvent)(nil), // 13: df.plugin.PlayerJumpEvent - (*PlayerTeleportEvent)(nil), // 14: df.plugin.PlayerTeleportEvent - (*PlayerChangeWorldEvent)(nil), // 15: df.plugin.PlayerChangeWorldEvent - (*PlayerToggleSprintEvent)(nil), // 16: df.plugin.PlayerToggleSprintEvent - (*PlayerToggleSneakEvent)(nil), // 17: df.plugin.PlayerToggleSneakEvent - (*ChatEvent)(nil), // 18: df.plugin.ChatEvent - (*PlayerFoodLossEvent)(nil), // 19: df.plugin.PlayerFoodLossEvent - (*PlayerHealEvent)(nil), // 20: df.plugin.PlayerHealEvent - (*PlayerHurtEvent)(nil), // 21: df.plugin.PlayerHurtEvent - (*PlayerDeathEvent)(nil), // 22: df.plugin.PlayerDeathEvent - (*PlayerRespawnEvent)(nil), // 23: df.plugin.PlayerRespawnEvent - (*PlayerSkinChangeEvent)(nil), // 24: df.plugin.PlayerSkinChangeEvent - (*PlayerFireExtinguishEvent)(nil), // 25: df.plugin.PlayerFireExtinguishEvent - (*PlayerStartBreakEvent)(nil), // 26: df.plugin.PlayerStartBreakEvent - (*BlockBreakEvent)(nil), // 27: df.plugin.BlockBreakEvent - (*PlayerBlockPlaceEvent)(nil), // 28: df.plugin.PlayerBlockPlaceEvent - (*PlayerBlockPickEvent)(nil), // 29: df.plugin.PlayerBlockPickEvent - (*PlayerItemUseEvent)(nil), // 30: df.plugin.PlayerItemUseEvent - (*PlayerItemUseOnBlockEvent)(nil), // 31: df.plugin.PlayerItemUseOnBlockEvent - (*PlayerItemUseOnEntityEvent)(nil), // 32: df.plugin.PlayerItemUseOnEntityEvent - (*PlayerItemReleaseEvent)(nil), // 33: df.plugin.PlayerItemReleaseEvent - (*PlayerItemConsumeEvent)(nil), // 34: df.plugin.PlayerItemConsumeEvent - (*PlayerAttackEntityEvent)(nil), // 35: df.plugin.PlayerAttackEntityEvent - (*PlayerExperienceGainEvent)(nil), // 36: df.plugin.PlayerExperienceGainEvent - (*PlayerPunchAirEvent)(nil), // 37: df.plugin.PlayerPunchAirEvent - (*PlayerSignEditEvent)(nil), // 38: df.plugin.PlayerSignEditEvent - (*PlayerLecternPageTurnEvent)(nil), // 39: df.plugin.PlayerLecternPageTurnEvent - (*PlayerItemDamageEvent)(nil), // 40: df.plugin.PlayerItemDamageEvent - (*PlayerItemPickupEvent)(nil), // 41: df.plugin.PlayerItemPickupEvent - (*PlayerHeldSlotChangeEvent)(nil), // 42: df.plugin.PlayerHeldSlotChangeEvent - (*PlayerItemDropEvent)(nil), // 43: df.plugin.PlayerItemDropEvent - (*PlayerTransferEvent)(nil), // 44: df.plugin.PlayerTransferEvent - (*CommandEvent)(nil), // 45: df.plugin.CommandEvent - (*PlayerDiagnosticsEvent)(nil), // 46: df.plugin.PlayerDiagnosticsEvent - (*WorldLiquidFlowEvent)(nil), // 47: df.plugin.WorldLiquidFlowEvent - (*WorldLiquidDecayEvent)(nil), // 48: df.plugin.WorldLiquidDecayEvent - (*WorldLiquidHardenEvent)(nil), // 49: df.plugin.WorldLiquidHardenEvent - (*WorldSoundEvent)(nil), // 50: df.plugin.WorldSoundEvent - (*WorldFireSpreadEvent)(nil), // 51: df.plugin.WorldFireSpreadEvent - (*WorldBlockBurnEvent)(nil), // 52: df.plugin.WorldBlockBurnEvent - (*WorldCropTrampleEvent)(nil), // 53: df.plugin.WorldCropTrampleEvent - (*WorldLeavesDecayEvent)(nil), // 54: df.plugin.WorldLeavesDecayEvent - (*WorldEntitySpawnEvent)(nil), // 55: df.plugin.WorldEntitySpawnEvent - (*WorldEntityDespawnEvent)(nil), // 56: df.plugin.WorldEntityDespawnEvent - (*WorldExplosionEvent)(nil), // 57: df.plugin.WorldExplosionEvent - (*WorldCloseEvent)(nil), // 58: df.plugin.WorldCloseEvent - (*ActionBatch)(nil), // 59: df.plugin.ActionBatch - (*EventResult)(nil), // 60: df.plugin.EventResult + (*LogMessage)(nil), // 7: df.plugin.LogMessage + (*EventSubscribe)(nil), // 8: df.plugin.EventSubscribe + (*PlayerJoinEvent)(nil), // 9: df.plugin.PlayerJoinEvent + (*PlayerQuitEvent)(nil), // 10: df.plugin.PlayerQuitEvent + (*PlayerMoveEvent)(nil), // 11: df.plugin.PlayerMoveEvent + (*PlayerJumpEvent)(nil), // 12: df.plugin.PlayerJumpEvent + (*PlayerTeleportEvent)(nil), // 13: df.plugin.PlayerTeleportEvent + (*PlayerChangeWorldEvent)(nil), // 14: df.plugin.PlayerChangeWorldEvent + (*PlayerToggleSprintEvent)(nil), // 15: df.plugin.PlayerToggleSprintEvent + (*PlayerToggleSneakEvent)(nil), // 16: df.plugin.PlayerToggleSneakEvent + (*ChatEvent)(nil), // 17: df.plugin.ChatEvent + (*PlayerFoodLossEvent)(nil), // 18: df.plugin.PlayerFoodLossEvent + (*PlayerHealEvent)(nil), // 19: df.plugin.PlayerHealEvent + (*PlayerHurtEvent)(nil), // 20: df.plugin.PlayerHurtEvent + (*PlayerDeathEvent)(nil), // 21: df.plugin.PlayerDeathEvent + (*PlayerRespawnEvent)(nil), // 22: df.plugin.PlayerRespawnEvent + (*PlayerSkinChangeEvent)(nil), // 23: df.plugin.PlayerSkinChangeEvent + (*PlayerFireExtinguishEvent)(nil), // 24: df.plugin.PlayerFireExtinguishEvent + (*PlayerStartBreakEvent)(nil), // 25: df.plugin.PlayerStartBreakEvent + (*BlockBreakEvent)(nil), // 26: df.plugin.BlockBreakEvent + (*PlayerBlockPlaceEvent)(nil), // 27: df.plugin.PlayerBlockPlaceEvent + (*PlayerBlockPickEvent)(nil), // 28: df.plugin.PlayerBlockPickEvent + (*PlayerItemUseEvent)(nil), // 29: df.plugin.PlayerItemUseEvent + (*PlayerItemUseOnBlockEvent)(nil), // 30: df.plugin.PlayerItemUseOnBlockEvent + (*PlayerItemUseOnEntityEvent)(nil), // 31: df.plugin.PlayerItemUseOnEntityEvent + (*PlayerItemReleaseEvent)(nil), // 32: df.plugin.PlayerItemReleaseEvent + (*PlayerItemConsumeEvent)(nil), // 33: df.plugin.PlayerItemConsumeEvent + (*PlayerAttackEntityEvent)(nil), // 34: df.plugin.PlayerAttackEntityEvent + (*PlayerExperienceGainEvent)(nil), // 35: df.plugin.PlayerExperienceGainEvent + (*PlayerPunchAirEvent)(nil), // 36: df.plugin.PlayerPunchAirEvent + (*PlayerSignEditEvent)(nil), // 37: df.plugin.PlayerSignEditEvent + (*PlayerLecternPageTurnEvent)(nil), // 38: df.plugin.PlayerLecternPageTurnEvent + (*PlayerItemDamageEvent)(nil), // 39: df.plugin.PlayerItemDamageEvent + (*PlayerItemPickupEvent)(nil), // 40: df.plugin.PlayerItemPickupEvent + (*PlayerHeldSlotChangeEvent)(nil), // 41: df.plugin.PlayerHeldSlotChangeEvent + (*PlayerItemDropEvent)(nil), // 42: df.plugin.PlayerItemDropEvent + (*PlayerTransferEvent)(nil), // 43: df.plugin.PlayerTransferEvent + (*CommandEvent)(nil), // 44: df.plugin.CommandEvent + (*PlayerDiagnosticsEvent)(nil), // 45: df.plugin.PlayerDiagnosticsEvent + (*WorldLiquidFlowEvent)(nil), // 46: df.plugin.WorldLiquidFlowEvent + (*WorldLiquidDecayEvent)(nil), // 47: df.plugin.WorldLiquidDecayEvent + (*WorldLiquidHardenEvent)(nil), // 48: df.plugin.WorldLiquidHardenEvent + (*WorldSoundEvent)(nil), // 49: df.plugin.WorldSoundEvent + (*WorldFireSpreadEvent)(nil), // 50: df.plugin.WorldFireSpreadEvent + (*WorldBlockBurnEvent)(nil), // 51: df.plugin.WorldBlockBurnEvent + (*WorldCropTrampleEvent)(nil), // 52: df.plugin.WorldCropTrampleEvent + (*WorldLeavesDecayEvent)(nil), // 53: df.plugin.WorldLeavesDecayEvent + (*WorldEntitySpawnEvent)(nil), // 54: df.plugin.WorldEntitySpawnEvent + (*WorldEntityDespawnEvent)(nil), // 55: df.plugin.WorldEntityDespawnEvent + (*WorldExplosionEvent)(nil), // 56: df.plugin.WorldExplosionEvent + (*WorldCloseEvent)(nil), // 57: df.plugin.WorldCloseEvent + (*ActionBatch)(nil), // 58: df.plugin.ActionBatch + (*EventResult)(nil), // 59: df.plugin.EventResult + (*CommandSpec)(nil), // 60: df.plugin.CommandSpec (*CustomItemDefinition)(nil), // 61: df.plugin.CustomItemDefinition } var file_plugin_proto_depIdxs = []int32{ @@ -2043,61 +1975,61 @@ var file_plugin_proto_depIdxs = []int32{ 3, // 1: df.plugin.HostToPlugin.shutdown:type_name -> df.plugin.HostShutdown 4, // 2: df.plugin.HostToPlugin.event:type_name -> df.plugin.EventEnvelope 0, // 3: df.plugin.EventEnvelope.type:type_name -> df.plugin.EventType - 10, // 4: df.plugin.EventEnvelope.player_join:type_name -> df.plugin.PlayerJoinEvent - 11, // 5: df.plugin.EventEnvelope.player_quit:type_name -> df.plugin.PlayerQuitEvent - 12, // 6: df.plugin.EventEnvelope.player_move:type_name -> df.plugin.PlayerMoveEvent - 13, // 7: df.plugin.EventEnvelope.player_jump:type_name -> df.plugin.PlayerJumpEvent - 14, // 8: df.plugin.EventEnvelope.player_teleport:type_name -> df.plugin.PlayerTeleportEvent - 15, // 9: df.plugin.EventEnvelope.player_change_world:type_name -> df.plugin.PlayerChangeWorldEvent - 16, // 10: df.plugin.EventEnvelope.player_toggle_sprint:type_name -> df.plugin.PlayerToggleSprintEvent - 17, // 11: df.plugin.EventEnvelope.player_toggle_sneak:type_name -> df.plugin.PlayerToggleSneakEvent - 18, // 12: df.plugin.EventEnvelope.chat:type_name -> df.plugin.ChatEvent - 19, // 13: df.plugin.EventEnvelope.player_food_loss:type_name -> df.plugin.PlayerFoodLossEvent - 20, // 14: df.plugin.EventEnvelope.player_heal:type_name -> df.plugin.PlayerHealEvent - 21, // 15: df.plugin.EventEnvelope.player_hurt:type_name -> df.plugin.PlayerHurtEvent - 22, // 16: df.plugin.EventEnvelope.player_death:type_name -> df.plugin.PlayerDeathEvent - 23, // 17: df.plugin.EventEnvelope.player_respawn:type_name -> df.plugin.PlayerRespawnEvent - 24, // 18: df.plugin.EventEnvelope.player_skin_change:type_name -> df.plugin.PlayerSkinChangeEvent - 25, // 19: df.plugin.EventEnvelope.player_fire_extinguish:type_name -> df.plugin.PlayerFireExtinguishEvent - 26, // 20: df.plugin.EventEnvelope.player_start_break:type_name -> df.plugin.PlayerStartBreakEvent - 27, // 21: df.plugin.EventEnvelope.block_break:type_name -> df.plugin.BlockBreakEvent - 28, // 22: df.plugin.EventEnvelope.player_block_place:type_name -> df.plugin.PlayerBlockPlaceEvent - 29, // 23: df.plugin.EventEnvelope.player_block_pick:type_name -> df.plugin.PlayerBlockPickEvent - 30, // 24: df.plugin.EventEnvelope.player_item_use:type_name -> df.plugin.PlayerItemUseEvent - 31, // 25: df.plugin.EventEnvelope.player_item_use_on_block:type_name -> df.plugin.PlayerItemUseOnBlockEvent - 32, // 26: df.plugin.EventEnvelope.player_item_use_on_entity:type_name -> df.plugin.PlayerItemUseOnEntityEvent - 33, // 27: df.plugin.EventEnvelope.player_item_release:type_name -> df.plugin.PlayerItemReleaseEvent - 34, // 28: df.plugin.EventEnvelope.player_item_consume:type_name -> df.plugin.PlayerItemConsumeEvent - 35, // 29: df.plugin.EventEnvelope.player_attack_entity:type_name -> df.plugin.PlayerAttackEntityEvent - 36, // 30: df.plugin.EventEnvelope.player_experience_gain:type_name -> df.plugin.PlayerExperienceGainEvent - 37, // 31: df.plugin.EventEnvelope.player_punch_air:type_name -> df.plugin.PlayerPunchAirEvent - 38, // 32: df.plugin.EventEnvelope.player_sign_edit:type_name -> df.plugin.PlayerSignEditEvent - 39, // 33: df.plugin.EventEnvelope.player_lectern_page_turn:type_name -> df.plugin.PlayerLecternPageTurnEvent - 40, // 34: df.plugin.EventEnvelope.player_item_damage:type_name -> df.plugin.PlayerItemDamageEvent - 41, // 35: df.plugin.EventEnvelope.player_item_pickup:type_name -> df.plugin.PlayerItemPickupEvent - 42, // 36: df.plugin.EventEnvelope.player_held_slot_change:type_name -> df.plugin.PlayerHeldSlotChangeEvent - 43, // 37: df.plugin.EventEnvelope.player_item_drop:type_name -> df.plugin.PlayerItemDropEvent - 44, // 38: df.plugin.EventEnvelope.player_transfer:type_name -> df.plugin.PlayerTransferEvent - 45, // 39: df.plugin.EventEnvelope.command:type_name -> df.plugin.CommandEvent - 46, // 40: df.plugin.EventEnvelope.player_diagnostics:type_name -> df.plugin.PlayerDiagnosticsEvent - 47, // 41: df.plugin.EventEnvelope.world_liquid_flow:type_name -> df.plugin.WorldLiquidFlowEvent - 48, // 42: df.plugin.EventEnvelope.world_liquid_decay:type_name -> df.plugin.WorldLiquidDecayEvent - 49, // 43: df.plugin.EventEnvelope.world_liquid_harden:type_name -> df.plugin.WorldLiquidHardenEvent - 50, // 44: df.plugin.EventEnvelope.world_sound:type_name -> df.plugin.WorldSoundEvent - 51, // 45: df.plugin.EventEnvelope.world_fire_spread:type_name -> df.plugin.WorldFireSpreadEvent - 52, // 46: df.plugin.EventEnvelope.world_block_burn:type_name -> df.plugin.WorldBlockBurnEvent - 53, // 47: df.plugin.EventEnvelope.world_crop_trample:type_name -> df.plugin.WorldCropTrampleEvent - 54, // 48: df.plugin.EventEnvelope.world_leaves_decay:type_name -> df.plugin.WorldLeavesDecayEvent - 55, // 49: df.plugin.EventEnvelope.world_entity_spawn:type_name -> df.plugin.WorldEntitySpawnEvent - 56, // 50: df.plugin.EventEnvelope.world_entity_despawn:type_name -> df.plugin.WorldEntityDespawnEvent - 57, // 51: df.plugin.EventEnvelope.world_explosion:type_name -> df.plugin.WorldExplosionEvent - 58, // 52: df.plugin.EventEnvelope.world_close:type_name -> df.plugin.WorldCloseEvent + 9, // 4: df.plugin.EventEnvelope.player_join:type_name -> df.plugin.PlayerJoinEvent + 10, // 5: df.plugin.EventEnvelope.player_quit:type_name -> df.plugin.PlayerQuitEvent + 11, // 6: df.plugin.EventEnvelope.player_move:type_name -> df.plugin.PlayerMoveEvent + 12, // 7: df.plugin.EventEnvelope.player_jump:type_name -> df.plugin.PlayerJumpEvent + 13, // 8: df.plugin.EventEnvelope.player_teleport:type_name -> df.plugin.PlayerTeleportEvent + 14, // 9: df.plugin.EventEnvelope.player_change_world:type_name -> df.plugin.PlayerChangeWorldEvent + 15, // 10: df.plugin.EventEnvelope.player_toggle_sprint:type_name -> df.plugin.PlayerToggleSprintEvent + 16, // 11: df.plugin.EventEnvelope.player_toggle_sneak:type_name -> df.plugin.PlayerToggleSneakEvent + 17, // 12: df.plugin.EventEnvelope.chat:type_name -> df.plugin.ChatEvent + 18, // 13: df.plugin.EventEnvelope.player_food_loss:type_name -> df.plugin.PlayerFoodLossEvent + 19, // 14: df.plugin.EventEnvelope.player_heal:type_name -> df.plugin.PlayerHealEvent + 20, // 15: df.plugin.EventEnvelope.player_hurt:type_name -> df.plugin.PlayerHurtEvent + 21, // 16: df.plugin.EventEnvelope.player_death:type_name -> df.plugin.PlayerDeathEvent + 22, // 17: df.plugin.EventEnvelope.player_respawn:type_name -> df.plugin.PlayerRespawnEvent + 23, // 18: df.plugin.EventEnvelope.player_skin_change:type_name -> df.plugin.PlayerSkinChangeEvent + 24, // 19: df.plugin.EventEnvelope.player_fire_extinguish:type_name -> df.plugin.PlayerFireExtinguishEvent + 25, // 20: df.plugin.EventEnvelope.player_start_break:type_name -> df.plugin.PlayerStartBreakEvent + 26, // 21: df.plugin.EventEnvelope.block_break:type_name -> df.plugin.BlockBreakEvent + 27, // 22: df.plugin.EventEnvelope.player_block_place:type_name -> df.plugin.PlayerBlockPlaceEvent + 28, // 23: df.plugin.EventEnvelope.player_block_pick:type_name -> df.plugin.PlayerBlockPickEvent + 29, // 24: df.plugin.EventEnvelope.player_item_use:type_name -> df.plugin.PlayerItemUseEvent + 30, // 25: df.plugin.EventEnvelope.player_item_use_on_block:type_name -> df.plugin.PlayerItemUseOnBlockEvent + 31, // 26: df.plugin.EventEnvelope.player_item_use_on_entity:type_name -> df.plugin.PlayerItemUseOnEntityEvent + 32, // 27: df.plugin.EventEnvelope.player_item_release:type_name -> df.plugin.PlayerItemReleaseEvent + 33, // 28: df.plugin.EventEnvelope.player_item_consume:type_name -> df.plugin.PlayerItemConsumeEvent + 34, // 29: df.plugin.EventEnvelope.player_attack_entity:type_name -> df.plugin.PlayerAttackEntityEvent + 35, // 30: df.plugin.EventEnvelope.player_experience_gain:type_name -> df.plugin.PlayerExperienceGainEvent + 36, // 31: df.plugin.EventEnvelope.player_punch_air:type_name -> df.plugin.PlayerPunchAirEvent + 37, // 32: df.plugin.EventEnvelope.player_sign_edit:type_name -> df.plugin.PlayerSignEditEvent + 38, // 33: df.plugin.EventEnvelope.player_lectern_page_turn:type_name -> df.plugin.PlayerLecternPageTurnEvent + 39, // 34: df.plugin.EventEnvelope.player_item_damage:type_name -> df.plugin.PlayerItemDamageEvent + 40, // 35: df.plugin.EventEnvelope.player_item_pickup:type_name -> df.plugin.PlayerItemPickupEvent + 41, // 36: df.plugin.EventEnvelope.player_held_slot_change:type_name -> df.plugin.PlayerHeldSlotChangeEvent + 42, // 37: df.plugin.EventEnvelope.player_item_drop:type_name -> df.plugin.PlayerItemDropEvent + 43, // 38: df.plugin.EventEnvelope.player_transfer:type_name -> df.plugin.PlayerTransferEvent + 44, // 39: df.plugin.EventEnvelope.command:type_name -> df.plugin.CommandEvent + 45, // 40: df.plugin.EventEnvelope.player_diagnostics:type_name -> df.plugin.PlayerDiagnosticsEvent + 46, // 41: df.plugin.EventEnvelope.world_liquid_flow:type_name -> df.plugin.WorldLiquidFlowEvent + 47, // 42: df.plugin.EventEnvelope.world_liquid_decay:type_name -> df.plugin.WorldLiquidDecayEvent + 48, // 43: df.plugin.EventEnvelope.world_liquid_harden:type_name -> df.plugin.WorldLiquidHardenEvent + 49, // 44: df.plugin.EventEnvelope.world_sound:type_name -> df.plugin.WorldSoundEvent + 50, // 45: df.plugin.EventEnvelope.world_fire_spread:type_name -> df.plugin.WorldFireSpreadEvent + 51, // 46: df.plugin.EventEnvelope.world_block_burn:type_name -> df.plugin.WorldBlockBurnEvent + 52, // 47: df.plugin.EventEnvelope.world_crop_trample:type_name -> df.plugin.WorldCropTrampleEvent + 53, // 48: df.plugin.EventEnvelope.world_leaves_decay:type_name -> df.plugin.WorldLeavesDecayEvent + 54, // 49: df.plugin.EventEnvelope.world_entity_spawn:type_name -> df.plugin.WorldEntitySpawnEvent + 55, // 50: df.plugin.EventEnvelope.world_entity_despawn:type_name -> df.plugin.WorldEntityDespawnEvent + 56, // 51: df.plugin.EventEnvelope.world_explosion:type_name -> df.plugin.WorldExplosionEvent + 57, // 52: df.plugin.EventEnvelope.world_close:type_name -> df.plugin.WorldCloseEvent 6, // 53: df.plugin.PluginToHost.hello:type_name -> df.plugin.PluginHello - 9, // 54: df.plugin.PluginToHost.subscribe:type_name -> df.plugin.EventSubscribe - 59, // 55: df.plugin.PluginToHost.actions:type_name -> df.plugin.ActionBatch - 8, // 56: df.plugin.PluginToHost.log:type_name -> df.plugin.LogMessage - 60, // 57: df.plugin.PluginToHost.event_result:type_name -> df.plugin.EventResult - 7, // 58: df.plugin.PluginHello.commands:type_name -> df.plugin.CommandSpec + 8, // 54: df.plugin.PluginToHost.subscribe:type_name -> df.plugin.EventSubscribe + 58, // 55: df.plugin.PluginToHost.actions:type_name -> df.plugin.ActionBatch + 7, // 56: df.plugin.PluginToHost.log:type_name -> df.plugin.LogMessage + 59, // 57: df.plugin.PluginToHost.event_result:type_name -> df.plugin.EventResult + 60, // 58: df.plugin.PluginHello.commands:type_name -> df.plugin.CommandSpec 61, // 59: df.plugin.PluginHello.custom_items:type_name -> df.plugin.CustomItemDefinition 0, // 60: df.plugin.EventSubscribe.events:type_name -> df.plugin.EventType 5, // 61: df.plugin.Plugin.EventStream:input_type -> df.plugin.PluginToHost @@ -2116,6 +2048,7 @@ func file_plugin_proto_init() { } file_player_events_proto_init() file_world_events_proto_init() + file_command_proto_init() file_actions_proto_init() file_mutations_proto_init() file_common_proto_init() @@ -2193,18 +2126,6 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CommandSpec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_plugin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LogMessage); i { case 0: return &v.state @@ -2216,7 +2137,7 @@ func file_plugin_proto_init() { return nil } } - file_plugin_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_plugin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EventSubscribe); i { case 0: return &v.state @@ -2298,7 +2219,7 @@ func file_plugin_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_plugin_proto_rawDesc, NumEnums: 1, - NumMessages: 9, + NumMessages: 8, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/generated/python/command_pb2.py b/proto/generated/python/command_pb2.py new file mode 100644 index 0000000..5929b54 --- /dev/null +++ b/proto/generated/python/command_pb2.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: command.proto +# Protobuf Python Version: 6.33.0 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 33, + 0, + '', + 'command.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rcommand.proto\x12\tdf.plugin\"\x9e\x01\n\tParamSpec\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12(\n\x04type\x18\x02 \x01(\x0e\x32\x14.df.plugin.ParamTypeR\x04type\x12\x1a\n\x08optional\x18\x03 \x01(\x08R\x08optional\x12\x16\n\x06suffix\x18\x04 \x01(\tR\x06suffix\x12\x1f\n\x0b\x65num_values\x18\x05 \x03(\tR\nenumValues\"\x8b\x01\n\x0b\x43ommandSpec\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x18\n\x07\x61liases\x18\x03 \x03(\tR\x07\x61liases\x12,\n\x06params\x18\x04 \x03(\x0b\x32\x14.df.plugin.ParamSpecR\x06params\"\x83\x01\n\x0c\x43ommandEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03raw\x18\x03 \x01(\tR\x03raw\x12\x18\n\x07\x63ommand\x18\x04 \x01(\tR\x07\x63ommand\x12\x12\n\x04\x61rgs\x18\x05 \x03(\tR\x04\x61rgs*p\n\tParamType\x12\x10\n\x0cPARAM_STRING\x10\x00\x12\r\n\tPARAM_INT\x10\x01\x12\x0f\n\x0bPARAM_FLOAT\x10\x02\x12\x0e\n\nPARAM_BOOL\x10\x03\x12\x11\n\rPARAM_VARARGS\x10\x04\x12\x0e\n\nPARAM_ENUM\x10\x05\x42\x8b\x01\n\rcom.df.pluginB\x0c\x43ommandProtoP\x01Z\'github.com/secmc/plugin/proto/generated\xa2\x02\x03\x44PX\xaa\x02\tDf.Plugin\xca\x02\tDf\\Plugin\xe2\x02\x15\x44\x66\\Plugin\\GPBMetadata\xea\x02\nDf::Pluginb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'command_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\rcom.df.pluginB\014CommandProtoP\001Z\'github.com/secmc/plugin/proto/generated\242\002\003DPX\252\002\tDf.Plugin\312\002\tDf\\Plugin\342\002\025Df\\Plugin\\GPBMetadata\352\002\nDf::Plugin' + _globals['_PARAMTYPE']._serialized_start=465 + _globals['_PARAMTYPE']._serialized_end=577 + _globals['_PARAMSPEC']._serialized_start=29 + _globals['_PARAMSPEC']._serialized_end=187 + _globals['_COMMANDSPEC']._serialized_start=190 + _globals['_COMMANDSPEC']._serialized_end=329 + _globals['_COMMANDEVENT']._serialized_start=332 + _globals['_COMMANDEVENT']._serialized_end=463 +# @@protoc_insertion_point(module_scope) diff --git a/proto/generated/python/command_pb2_grpc.py b/proto/generated/python/command_pb2_grpc.py new file mode 100644 index 0000000..2daafff --- /dev/null +++ b/proto/generated/python/command_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/proto/generated/python/player_events_pb2.py b/proto/generated/python/player_events_pb2.py index a9cc69e..1e3b3c3 100644 --- a/proto/generated/python/player_events_pb2.py +++ b/proto/generated/python/player_events_pb2.py @@ -25,7 +25,7 @@ import common_pb2 as common__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13player_events.proto\x12\tdf.plugin\x1a\x0c\x63ommon.proto\"F\n\x0fPlayerJoinEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"F\n\x0fPlayerQuitEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"\xba\x01\n\x0fPlayerMoveEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12+\n\x08position\x18\x04 \x01(\x0b\x32\x0f.df.plugin.Vec3R\x08position\x12/\n\x08rotation\x18\x05 \x01(\x0b\x32\x13.df.plugin.RotationR\x08rotation\"\x89\x01\n\x0fPlayerJumpEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12+\n\x08position\x18\x04 \x01(\x0b\x32\x0f.df.plugin.Vec3R\x08position\"\x8d\x01\n\x13PlayerTeleportEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12+\n\x08position\x18\x04 \x01(\x0b\x32\x0f.df.plugin.Vec3R\x08position\"\xc4\x01\n\x16PlayerChangeWorldEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x30\n\x06\x62\x65\x66ore\x18\x03 \x01(\x0b\x32\x13.df.plugin.WorldRefH\x00R\x06\x62\x65\x66ore\x88\x01\x01\x12.\n\x05\x61\x66ter\x18\x04 \x01(\x0b\x32\x13.df.plugin.WorldRefH\x01R\x05\x61\x66ter\x88\x01\x01\x42\t\n\x07_beforeB\x08\n\x06_after\"d\n\x17PlayerToggleSprintEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05\x61\x66ter\x18\x03 \x01(\x08R\x05\x61\x66ter\"c\n\x16PlayerToggleSneakEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05\x61\x66ter\x18\x03 \x01(\x08R\x05\x61\x66ter\"Z\n\tChatEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\"n\n\x13PlayerFoodLossEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n\x04\x66rom\x18\x03 \x01(\x05R\x04\x66rom\x12\x0e\n\x02to\x18\x04 \x01(\x05R\x02to\"\xa0\x01\n\x0fPlayerHealEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n\x06\x61mount\x18\x03 \x01(\x01R\x06\x61mount\x12\x35\n\x06source\x18\x04 \x01(\x0b\x32\x18.df.plugin.HealingSourceH\x00R\x06source\x88\x01\x01\x42\t\n\x07_source\"\xe5\x01\n\x0fPlayerHurtEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n\x06\x64\x61mage\x18\x03 \x01(\x01R\x06\x64\x61mage\x12\x16\n\x06immune\x18\x04 \x01(\x08R\x06immune\x12,\n\x12\x61ttack_immunity_ms\x18\x05 \x01(\x03R\x10\x61ttackImmunityMs\x12\x34\n\x06source\x18\x06 \x01(\x0b\x32\x17.df.plugin.DamageSourceH\x00R\x06source\x88\x01\x01\x42\t\n\x07_source\"\xaf\x01\n\x10PlayerDeathEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x34\n\x06source\x18\x03 \x01(\x0b\x32\x17.df.plugin.DamageSourceH\x00R\x06source\x88\x01\x01\x12%\n\x0ekeep_inventory\x18\x04 \x01(\x08R\rkeepInventoryB\t\n\x07_source\"\xc2\x01\n\x12PlayerRespawnEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x30\n\x08position\x18\x03 \x01(\x0b\x32\x0f.df.plugin.Vec3H\x00R\x08position\x88\x01\x01\x12.\n\x05world\x18\x04 \x01(\x0b\x32\x13.df.plugin.WorldRefH\x01R\x05world\x88\x01\x01\x42\x0b\n\t_positionB\x08\n\x06_world\"\xc5\x01\n\x15PlayerSkinChangeEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n\x07\x66ull_id\x18\x03 \x01(\tH\x00R\x06\x66ullId\x88\x01\x01\x12#\n\x0bplay_fab_id\x18\x04 \x01(\tH\x01R\tplayFabId\x88\x01\x01\x12\x18\n\x07persona\x18\x05 \x01(\x08R\x07personaB\n\n\x08_full_idB\x0e\n\x0c_play_fab_id\"\x97\x01\n\x19PlayerFireExtinguishEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\"\x93\x01\n\x15PlayerStartBreakEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\"\x8d\x01\n\x0f\x42lockBreakEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\"\xc0\x01\n\x15PlayerBlockPlaceEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\x12+\n\x05\x62lock\x18\x05 \x01(\x0b\x32\x15.df.plugin.BlockStateR\x05\x62lock\"\xbf\x01\n\x14PlayerBlockPickEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\x12+\n\x05\x62lock\x18\x05 \x01(\x0b\x32\x15.df.plugin.BlockStateR\x05\x62lock\"\x97\x01\n\x12PlayerItemUseEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\xc8\x02\n\x19PlayerItemUseOnBlockEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\x12\x12\n\x04\x66\x61\x63\x65\x18\x05 \x01(\tR\x04\x66\x61\x63\x65\x12\x36\n\x0e\x63lick_position\x18\x06 \x01(\x0b\x32\x0f.df.plugin.Vec3R\rclickPosition\x12+\n\x05\x62lock\x18\x07 \x01(\x0b\x32\x15.df.plugin.BlockStateR\x05\x62lock\x12-\n\x04item\x18\x08 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\xcd\x01\n\x1aPlayerItemUseOnEntityEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12,\n\x06\x65ntity\x18\x04 \x01(\x0b\x32\x14.df.plugin.EntityRefR\x06\x65ntity\x12-\n\x04item\x18\x05 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\xbc\x01\n\x16PlayerItemReleaseEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x12\x1f\n\x0b\x64uration_ms\x18\x05 \x01(\x03R\ndurationMsB\x07\n\x05_item\"\x9b\x01\n\x16PlayerItemConsumeEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\x94\x02\n\x17PlayerAttackEntityEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12,\n\x06\x65ntity\x18\x04 \x01(\x0b\x32\x14.df.plugin.EntityRefR\x06\x65ntity\x12\x14\n\x05\x66orce\x18\x05 \x01(\x01R\x05\x66orce\x12\x16\n\x06height\x18\x06 \x01(\x01R\x06height\x12\x1a\n\x08\x63ritical\x18\x07 \x01(\x08R\x08\x63ritical\x12-\n\x04item\x18\x08 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"~\n\x19PlayerExperienceGainEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12\x16\n\x06\x61mount\x18\x04 \x01(\x05R\x06\x61mount\"`\n\x13PlayerPunchAirEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\"\xe6\x01\n\x13PlayerSignEditEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\x12\x1d\n\nfront_side\x18\x05 \x01(\x08R\tfrontSide\x12\x19\n\x08old_text\x18\x06 \x01(\tR\x07oldText\x12\x19\n\x08new_text\x18\x07 \x01(\tR\x07newText\"\xce\x01\n\x1aPlayerLecternPageTurnEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\x12\x19\n\x08old_page\x18\x05 \x01(\x05R\x07oldPage\x12\x19\n\x08new_page\x18\x06 \x01(\x05R\x07newPage\"\xb2\x01\n\x15PlayerItemDamageEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x12\x16\n\x06\x64\x61mage\x18\x05 \x01(\x05R\x06\x64\x61mageB\x07\n\x05_item\"\x9a\x01\n\x15PlayerItemPickupEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\x9c\x01\n\x19PlayerHeldSlotChangeEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12\x1b\n\tfrom_slot\x18\x04 \x01(\x05R\x08\x66romSlot\x12\x17\n\x07to_slot\x18\x05 \x01(\x05R\x06toSlot\"\x98\x01\n\x13PlayerItemDropEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\x89\x01\n\x13PlayerTransferEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x31\n\x07\x61\x64\x64ress\x18\x03 \x01(\x0b\x32\x12.df.plugin.AddressH\x00R\x07\x61\x64\x64ress\x88\x01\x01\x42\n\n\x08_address\"\x83\x01\n\x0c\x43ommandEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03raw\x18\x03 \x01(\tR\x03raw\x12\x18\n\x07\x63ommand\x18\x04 \x01(\tR\x07\x63ommand\x12\x12\n\x04\x61rgs\x18\x05 \x03(\tR\x04\x61rgs\"\xe2\x04\n\x16PlayerDiagnosticsEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x39\n\x19\x61verage_frames_per_second\x18\x03 \x01(\x01R\x16\x61verageFramesPerSecond\x12>\n\x1c\x61verage_server_sim_tick_time\x18\x04 \x01(\x01R\x18\x61verageServerSimTickTime\x12>\n\x1c\x61verage_client_sim_tick_time\x18\x05 \x01(\x01R\x18\x61verageClientSimTickTime\x12\x37\n\x18\x61verage_begin_frame_time\x18\x06 \x01(\x01R\x15\x61verageBeginFrameTime\x12,\n\x12\x61verage_input_time\x18\x07 \x01(\x01R\x10\x61verageInputTime\x12.\n\x13\x61verage_render_time\x18\x08 \x01(\x01R\x11\x61verageRenderTime\x12\x33\n\x16\x61verage_end_frame_time\x18\t \x01(\x01R\x13\x61verageEndFrameTime\x12\x43\n\x1e\x61verage_remainder_time_percent\x18\n \x01(\x01R\x1b\x61verageRemainderTimePercent\x12G\n average_unaccounted_time_percent\x18\x0b \x01(\x01R\x1d\x61verageUnaccountedTimePercentB\x90\x01\n\rcom.df.pluginB\x11PlayerEventsProtoP\x01Z\'github.com/secmc/plugin/proto/generated\xa2\x02\x03\x44PX\xaa\x02\tDf.Plugin\xca\x02\tDf\\Plugin\xe2\x02\x15\x44\x66\\Plugin\\GPBMetadata\xea\x02\nDf::Pluginb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13player_events.proto\x12\tdf.plugin\x1a\x0c\x63ommon.proto\"F\n\x0fPlayerJoinEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"F\n\x0fPlayerQuitEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"\xba\x01\n\x0fPlayerMoveEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12+\n\x08position\x18\x04 \x01(\x0b\x32\x0f.df.plugin.Vec3R\x08position\x12/\n\x08rotation\x18\x05 \x01(\x0b\x32\x13.df.plugin.RotationR\x08rotation\"\x89\x01\n\x0fPlayerJumpEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12+\n\x08position\x18\x04 \x01(\x0b\x32\x0f.df.plugin.Vec3R\x08position\"\x8d\x01\n\x13PlayerTeleportEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12+\n\x08position\x18\x04 \x01(\x0b\x32\x0f.df.plugin.Vec3R\x08position\"\xc4\x01\n\x16PlayerChangeWorldEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x30\n\x06\x62\x65\x66ore\x18\x03 \x01(\x0b\x32\x13.df.plugin.WorldRefH\x00R\x06\x62\x65\x66ore\x88\x01\x01\x12.\n\x05\x61\x66ter\x18\x04 \x01(\x0b\x32\x13.df.plugin.WorldRefH\x01R\x05\x61\x66ter\x88\x01\x01\x42\t\n\x07_beforeB\x08\n\x06_after\"d\n\x17PlayerToggleSprintEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05\x61\x66ter\x18\x03 \x01(\x08R\x05\x61\x66ter\"c\n\x16PlayerToggleSneakEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05\x61\x66ter\x18\x03 \x01(\x08R\x05\x61\x66ter\"Z\n\tChatEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\"n\n\x13PlayerFoodLossEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n\x04\x66rom\x18\x03 \x01(\x05R\x04\x66rom\x12\x0e\n\x02to\x18\x04 \x01(\x05R\x02to\"\xa0\x01\n\x0fPlayerHealEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n\x06\x61mount\x18\x03 \x01(\x01R\x06\x61mount\x12\x35\n\x06source\x18\x04 \x01(\x0b\x32\x18.df.plugin.HealingSourceH\x00R\x06source\x88\x01\x01\x42\t\n\x07_source\"\xe5\x01\n\x0fPlayerHurtEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n\x06\x64\x61mage\x18\x03 \x01(\x01R\x06\x64\x61mage\x12\x16\n\x06immune\x18\x04 \x01(\x08R\x06immune\x12,\n\x12\x61ttack_immunity_ms\x18\x05 \x01(\x03R\x10\x61ttackImmunityMs\x12\x34\n\x06source\x18\x06 \x01(\x0b\x32\x17.df.plugin.DamageSourceH\x00R\x06source\x88\x01\x01\x42\t\n\x07_source\"\xaf\x01\n\x10PlayerDeathEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x34\n\x06source\x18\x03 \x01(\x0b\x32\x17.df.plugin.DamageSourceH\x00R\x06source\x88\x01\x01\x12%\n\x0ekeep_inventory\x18\x04 \x01(\x08R\rkeepInventoryB\t\n\x07_source\"\xc2\x01\n\x12PlayerRespawnEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x30\n\x08position\x18\x03 \x01(\x0b\x32\x0f.df.plugin.Vec3H\x00R\x08position\x88\x01\x01\x12.\n\x05world\x18\x04 \x01(\x0b\x32\x13.df.plugin.WorldRefH\x01R\x05world\x88\x01\x01\x42\x0b\n\t_positionB\x08\n\x06_world\"\xc5\x01\n\x15PlayerSkinChangeEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n\x07\x66ull_id\x18\x03 \x01(\tH\x00R\x06\x66ullId\x88\x01\x01\x12#\n\x0bplay_fab_id\x18\x04 \x01(\tH\x01R\tplayFabId\x88\x01\x01\x12\x18\n\x07persona\x18\x05 \x01(\x08R\x07personaB\n\n\x08_full_idB\x0e\n\x0c_play_fab_id\"\x97\x01\n\x19PlayerFireExtinguishEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\"\x93\x01\n\x15PlayerStartBreakEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\"\x8d\x01\n\x0f\x42lockBreakEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\"\xc0\x01\n\x15PlayerBlockPlaceEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\x12+\n\x05\x62lock\x18\x05 \x01(\x0b\x32\x15.df.plugin.BlockStateR\x05\x62lock\"\xbf\x01\n\x14PlayerBlockPickEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\x12+\n\x05\x62lock\x18\x05 \x01(\x0b\x32\x15.df.plugin.BlockStateR\x05\x62lock\"\x97\x01\n\x12PlayerItemUseEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\xc8\x02\n\x19PlayerItemUseOnBlockEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\x12\x12\n\x04\x66\x61\x63\x65\x18\x05 \x01(\tR\x04\x66\x61\x63\x65\x12\x36\n\x0e\x63lick_position\x18\x06 \x01(\x0b\x32\x0f.df.plugin.Vec3R\rclickPosition\x12+\n\x05\x62lock\x18\x07 \x01(\x0b\x32\x15.df.plugin.BlockStateR\x05\x62lock\x12-\n\x04item\x18\x08 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\xcd\x01\n\x1aPlayerItemUseOnEntityEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12,\n\x06\x65ntity\x18\x04 \x01(\x0b\x32\x14.df.plugin.EntityRefR\x06\x65ntity\x12-\n\x04item\x18\x05 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\xbc\x01\n\x16PlayerItemReleaseEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x12\x1f\n\x0b\x64uration_ms\x18\x05 \x01(\x03R\ndurationMsB\x07\n\x05_item\"\x9b\x01\n\x16PlayerItemConsumeEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\x94\x02\n\x17PlayerAttackEntityEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12,\n\x06\x65ntity\x18\x04 \x01(\x0b\x32\x14.df.plugin.EntityRefR\x06\x65ntity\x12\x14\n\x05\x66orce\x18\x05 \x01(\x01R\x05\x66orce\x12\x16\n\x06height\x18\x06 \x01(\x01R\x06height\x12\x1a\n\x08\x63ritical\x18\x07 \x01(\x08R\x08\x63ritical\x12-\n\x04item\x18\x08 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"~\n\x19PlayerExperienceGainEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12\x16\n\x06\x61mount\x18\x04 \x01(\x05R\x06\x61mount\"`\n\x13PlayerPunchAirEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\"\xe6\x01\n\x13PlayerSignEditEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\x12\x1d\n\nfront_side\x18\x05 \x01(\x08R\tfrontSide\x12\x19\n\x08old_text\x18\x06 \x01(\tR\x07oldText\x12\x19\n\x08new_text\x18\x07 \x01(\tR\x07newText\"\xce\x01\n\x1aPlayerLecternPageTurnEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12/\n\x08position\x18\x04 \x01(\x0b\x32\x13.df.plugin.BlockPosR\x08position\x12\x19\n\x08old_page\x18\x05 \x01(\x05R\x07oldPage\x12\x19\n\x08new_page\x18\x06 \x01(\x05R\x07newPage\"\xb2\x01\n\x15PlayerItemDamageEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x12\x16\n\x06\x64\x61mage\x18\x05 \x01(\x05R\x06\x64\x61mageB\x07\n\x05_item\"\x9a\x01\n\x15PlayerItemPickupEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\x9c\x01\n\x19PlayerHeldSlotChangeEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12\x1b\n\tfrom_slot\x18\x04 \x01(\x05R\x08\x66romSlot\x12\x17\n\x07to_slot\x18\x05 \x01(\x05R\x06toSlot\"\x98\x01\n\x13PlayerItemDropEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n\x05world\x18\x03 \x01(\tR\x05world\x12-\n\x04item\x18\x04 \x01(\x0b\x32\x14.df.plugin.ItemStackH\x00R\x04item\x88\x01\x01\x42\x07\n\x05_item\"\x89\x01\n\x13PlayerTransferEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x31\n\x07\x61\x64\x64ress\x18\x03 \x01(\x0b\x32\x12.df.plugin.AddressH\x00R\x07\x61\x64\x64ress\x88\x01\x01\x42\n\n\x08_address\"\xe2\x04\n\x16PlayerDiagnosticsEvent\x12\x1f\n\x0bplayer_uuid\x18\x01 \x01(\tR\nplayerUuid\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x39\n\x19\x61verage_frames_per_second\x18\x03 \x01(\x01R\x16\x61verageFramesPerSecond\x12>\n\x1c\x61verage_server_sim_tick_time\x18\x04 \x01(\x01R\x18\x61verageServerSimTickTime\x12>\n\x1c\x61verage_client_sim_tick_time\x18\x05 \x01(\x01R\x18\x61verageClientSimTickTime\x12\x37\n\x18\x61verage_begin_frame_time\x18\x06 \x01(\x01R\x15\x61verageBeginFrameTime\x12,\n\x12\x61verage_input_time\x18\x07 \x01(\x01R\x10\x61verageInputTime\x12.\n\x13\x61verage_render_time\x18\x08 \x01(\x01R\x11\x61verageRenderTime\x12\x33\n\x16\x61verage_end_frame_time\x18\t \x01(\x01R\x13\x61verageEndFrameTime\x12\x43\n\x1e\x61verage_remainder_time_percent\x18\n \x01(\x01R\x1b\x61verageRemainderTimePercent\x12G\n average_unaccounted_time_percent\x18\x0b \x01(\x01R\x1d\x61verageUnaccountedTimePercentB\x90\x01\n\rcom.df.pluginB\x11PlayerEventsProtoP\x01Z\'github.com/secmc/plugin/proto/generated\xa2\x02\x03\x44PX\xaa\x02\tDf.Plugin\xca\x02\tDf\\Plugin\xe2\x02\x15\x44\x66\\Plugin\\GPBMetadata\xea\x02\nDf::Pluginb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -103,8 +103,6 @@ _globals['_PLAYERITEMDROPEVENT']._serialized_end=5717 _globals['_PLAYERTRANSFEREVENT']._serialized_start=5720 _globals['_PLAYERTRANSFEREVENT']._serialized_end=5857 - _globals['_COMMANDEVENT']._serialized_start=5860 - _globals['_COMMANDEVENT']._serialized_end=5991 - _globals['_PLAYERDIAGNOSTICSEVENT']._serialized_start=5994 - _globals['_PLAYERDIAGNOSTICSEVENT']._serialized_end=6604 + _globals['_PLAYERDIAGNOSTICSEVENT']._serialized_start=5860 + _globals['_PLAYERDIAGNOSTICSEVENT']._serialized_end=6470 # @@protoc_insertion_point(module_scope) diff --git a/proto/generated/python/plugin_pb2.py b/proto/generated/python/plugin_pb2.py index e35cd8f..b56bf5a 100644 --- a/proto/generated/python/plugin_pb2.py +++ b/proto/generated/python/plugin_pb2.py @@ -24,12 +24,13 @@ import player_events_pb2 as player__events__pb2 import world_events_pb2 as world__events__pb2 +import command_pb2 as command__pb2 import actions_pb2 as actions__pb2 import mutations_pb2 as mutations__pb2 import common_pb2 as common__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cplugin.proto\x12\tdf.plugin\x1a\x13player_events.proto\x1a\x12world_events.proto\x1a\ractions.proto\x1a\x0fmutations.proto\x1a\x0c\x63ommon.proto\"\xcd\x01\n\x0cHostToPlugin\x12\x1b\n\tplugin_id\x18\x01 \x01(\tR\x08pluginId\x12,\n\x05hello\x18\n \x01(\x0b\x32\x14.df.plugin.HostHelloH\x00R\x05hello\x12\x35\n\x08shutdown\x18\x0b \x01(\x0b\x32\x17.df.plugin.HostShutdownH\x00R\x08shutdown\x12\x30\n\x05\x65vent\x18\x14 \x01(\x0b\x32\x18.df.plugin.EventEnvelopeH\x00R\x05\x65ventB\t\n\x07payload\",\n\tHostHello\x12\x1f\n\x0b\x61pi_version\x18\x01 \x01(\tR\napiVersion\"&\n\x0cHostShutdown\x12\x16\n\x06reason\x18\x01 \x01(\tR\x06reason\"\xe6\x1e\n\rEventEnvelope\x12\x19\n\x08\x65vent_id\x18\x01 \x01(\tR\x07\x65ventId\x12(\n\x04type\x18\x02 \x01(\x0e\x32\x14.df.plugin.EventTypeR\x04type\x12)\n\x10\x65xpects_response\x18\x03 \x01(\x08R\x0f\x65xpectsResponse\x12=\n\x0bplayer_join\x18\n \x01(\x0b\x32\x1a.df.plugin.PlayerJoinEventH\x00R\nplayerJoin\x12=\n\x0bplayer_quit\x18\x0b \x01(\x0b\x32\x1a.df.plugin.PlayerQuitEventH\x00R\nplayerQuit\x12=\n\x0bplayer_move\x18\x0c \x01(\x0b\x32\x1a.df.plugin.PlayerMoveEventH\x00R\nplayerMove\x12=\n\x0bplayer_jump\x18\r \x01(\x0b\x32\x1a.df.plugin.PlayerJumpEventH\x00R\nplayerJump\x12I\n\x0fplayer_teleport\x18\x0e \x01(\x0b\x32\x1e.df.plugin.PlayerTeleportEventH\x00R\x0eplayerTeleport\x12S\n\x13player_change_world\x18\x0f \x01(\x0b\x32!.df.plugin.PlayerChangeWorldEventH\x00R\x11playerChangeWorld\x12V\n\x14player_toggle_sprint\x18\x10 \x01(\x0b\x32\".df.plugin.PlayerToggleSprintEventH\x00R\x12playerToggleSprint\x12S\n\x13player_toggle_sneak\x18\x11 \x01(\x0b\x32!.df.plugin.PlayerToggleSneakEventH\x00R\x11playerToggleSneak\x12*\n\x04\x63hat\x18\x12 \x01(\x0b\x32\x14.df.plugin.ChatEventH\x00R\x04\x63hat\x12J\n\x10player_food_loss\x18\x13 \x01(\x0b\x32\x1e.df.plugin.PlayerFoodLossEventH\x00R\x0eplayerFoodLoss\x12=\n\x0bplayer_heal\x18\x14 \x01(\x0b\x32\x1a.df.plugin.PlayerHealEventH\x00R\nplayerHeal\x12=\n\x0bplayer_hurt\x18\x15 \x01(\x0b\x32\x1a.df.plugin.PlayerHurtEventH\x00R\nplayerHurt\x12@\n\x0cplayer_death\x18\x16 \x01(\x0b\x32\x1b.df.plugin.PlayerDeathEventH\x00R\x0bplayerDeath\x12\x46\n\x0eplayer_respawn\x18\x17 \x01(\x0b\x32\x1d.df.plugin.PlayerRespawnEventH\x00R\rplayerRespawn\x12P\n\x12player_skin_change\x18\x18 \x01(\x0b\x32 .df.plugin.PlayerSkinChangeEventH\x00R\x10playerSkinChange\x12\\\n\x16player_fire_extinguish\x18\x19 \x01(\x0b\x32$.df.plugin.PlayerFireExtinguishEventH\x00R\x14playerFireExtinguish\x12P\n\x12player_start_break\x18\x1a \x01(\x0b\x32 .df.plugin.PlayerStartBreakEventH\x00R\x10playerStartBreak\x12=\n\x0b\x62lock_break\x18\x1b \x01(\x0b\x32\x1a.df.plugin.BlockBreakEventH\x00R\nblockBreak\x12P\n\x12player_block_place\x18\x1c \x01(\x0b\x32 .df.plugin.PlayerBlockPlaceEventH\x00R\x10playerBlockPlace\x12M\n\x11player_block_pick\x18\x1d \x01(\x0b\x32\x1f.df.plugin.PlayerBlockPickEventH\x00R\x0fplayerBlockPick\x12G\n\x0fplayer_item_use\x18\x1e \x01(\x0b\x32\x1d.df.plugin.PlayerItemUseEventH\x00R\rplayerItemUse\x12^\n\x18player_item_use_on_block\x18\x1f \x01(\x0b\x32$.df.plugin.PlayerItemUseOnBlockEventH\x00R\x14playerItemUseOnBlock\x12\x61\n\x19player_item_use_on_entity\x18 \x01(\x0b\x32%.df.plugin.PlayerItemUseOnEntityEventH\x00R\x15playerItemUseOnEntity\x12S\n\x13player_item_release\x18! \x01(\x0b\x32!.df.plugin.PlayerItemReleaseEventH\x00R\x11playerItemRelease\x12S\n\x13player_item_consume\x18\" \x01(\x0b\x32!.df.plugin.PlayerItemConsumeEventH\x00R\x11playerItemConsume\x12V\n\x14player_attack_entity\x18# \x01(\x0b\x32\".df.plugin.PlayerAttackEntityEventH\x00R\x12playerAttackEntity\x12\\\n\x16player_experience_gain\x18$ \x01(\x0b\x32$.df.plugin.PlayerExperienceGainEventH\x00R\x14playerExperienceGain\x12J\n\x10player_punch_air\x18% \x01(\x0b\x32\x1e.df.plugin.PlayerPunchAirEventH\x00R\x0eplayerPunchAir\x12J\n\x10player_sign_edit\x18& \x01(\x0b\x32\x1e.df.plugin.PlayerSignEditEventH\x00R\x0eplayerSignEdit\x12`\n\x18player_lectern_page_turn\x18\' \x01(\x0b\x32%.df.plugin.PlayerLecternPageTurnEventH\x00R\x15playerLecternPageTurn\x12P\n\x12player_item_damage\x18( \x01(\x0b\x32 .df.plugin.PlayerItemDamageEventH\x00R\x10playerItemDamage\x12P\n\x12player_item_pickup\x18) \x01(\x0b\x32 .df.plugin.PlayerItemPickupEventH\x00R\x10playerItemPickup\x12]\n\x17player_held_slot_change\x18* \x01(\x0b\x32$.df.plugin.PlayerHeldSlotChangeEventH\x00R\x14playerHeldSlotChange\x12J\n\x10player_item_drop\x18+ \x01(\x0b\x32\x1e.df.plugin.PlayerItemDropEventH\x00R\x0eplayerItemDrop\x12I\n\x0fplayer_transfer\x18, \x01(\x0b\x32\x1e.df.plugin.PlayerTransferEventH\x00R\x0eplayerTransfer\x12\x33\n\x07\x63ommand\x18- \x01(\x0b\x32\x17.df.plugin.CommandEventH\x00R\x07\x63ommand\x12R\n\x12player_diagnostics\x18. \x01(\x0b\x32!.df.plugin.PlayerDiagnosticsEventH\x00R\x11playerDiagnostics\x12M\n\x11world_liquid_flow\x18\x46 \x01(\x0b\x32\x1f.df.plugin.WorldLiquidFlowEventH\x00R\x0fworldLiquidFlow\x12P\n\x12world_liquid_decay\x18G \x01(\x0b\x32 .df.plugin.WorldLiquidDecayEventH\x00R\x10worldLiquidDecay\x12S\n\x13world_liquid_harden\x18H \x01(\x0b\x32!.df.plugin.WorldLiquidHardenEventH\x00R\x11worldLiquidHarden\x12=\n\x0bworld_sound\x18I \x01(\x0b\x32\x1a.df.plugin.WorldSoundEventH\x00R\nworldSound\x12M\n\x11world_fire_spread\x18J \x01(\x0b\x32\x1f.df.plugin.WorldFireSpreadEventH\x00R\x0fworldFireSpread\x12J\n\x10world_block_burn\x18K \x01(\x0b\x32\x1e.df.plugin.WorldBlockBurnEventH\x00R\x0eworldBlockBurn\x12P\n\x12world_crop_trample\x18L \x01(\x0b\x32 .df.plugin.WorldCropTrampleEventH\x00R\x10worldCropTrample\x12P\n\x12world_leaves_decay\x18M \x01(\x0b\x32 .df.plugin.WorldLeavesDecayEventH\x00R\x10worldLeavesDecay\x12P\n\x12world_entity_spawn\x18N \x01(\x0b\x32 .df.plugin.WorldEntitySpawnEventH\x00R\x10worldEntitySpawn\x12V\n\x14world_entity_despawn\x18O \x01(\x0b\x32\".df.plugin.WorldEntityDespawnEventH\x00R\x12worldEntityDespawn\x12I\n\x0fworld_explosion\x18P \x01(\x0b\x32\x1e.df.plugin.WorldExplosionEventH\x00R\x0eworldExplosion\x12=\n\x0bworld_close\x18Q \x01(\x0b\x32\x1a.df.plugin.WorldCloseEventH\x00R\nworldCloseB\t\n\x07payload\"\xbd\x02\n\x0cPluginToHost\x12\x1b\n\tplugin_id\x18\x01 \x01(\tR\x08pluginId\x12.\n\x05hello\x18\n \x01(\x0b\x32\x16.df.plugin.PluginHelloH\x00R\x05hello\x12\x39\n\tsubscribe\x18\x0b \x01(\x0b\x32\x19.df.plugin.EventSubscribeH\x00R\tsubscribe\x12\x32\n\x07\x61\x63tions\x18\x14 \x01(\x0b\x32\x16.df.plugin.ActionBatchH\x00R\x07\x61\x63tions\x12)\n\x03log\x18\x1e \x01(\x0b\x32\x15.df.plugin.LogMessageH\x00R\x03log\x12;\n\x0c\x65vent_result\x18( \x01(\x0b\x32\x16.df.plugin.EventResultH\x00R\x0b\x65ventResultB\t\n\x07payload\"\xd4\x01\n\x0bPluginHello\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12\x1f\n\x0b\x61pi_version\x18\x03 \x01(\tR\napiVersion\x12\x32\n\x08\x63ommands\x18\x04 \x03(\x0b\x32\x16.df.plugin.CommandSpecR\x08\x63ommands\x12\x42\n\x0c\x63ustom_items\x18\x05 \x03(\x0b\x32\x1f.df.plugin.CustomItemDefinitionR\x0b\x63ustomItems\"]\n\x0b\x43ommandSpec\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x18\n\x07\x61liases\x18\x03 \x03(\tR\x07\x61liases\"<\n\nLogMessage\x12\x14\n\x05level\x18\x01 \x01(\tR\x05level\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\">\n\x0e\x45ventSubscribe\x12,\n\x06\x65vents\x18\x01 \x03(\x0e\x32\x14.df.plugin.EventTypeR\x06\x65vents*\x8a\t\n\tEventType\x12\x1a\n\x16\x45VENT_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x45VENT_TYPE_ALL\x10\x01\x12\x0f\n\x0bPLAYER_JOIN\x10\n\x12\x0f\n\x0bPLAYER_QUIT\x10\x0b\x12\x0f\n\x0bPLAYER_MOVE\x10\x0c\x12\x0f\n\x0bPLAYER_JUMP\x10\r\x12\x13\n\x0fPLAYER_TELEPORT\x10\x0e\x12\x17\n\x13PLAYER_CHANGE_WORLD\x10\x0f\x12\x18\n\x14PLAYER_TOGGLE_SPRINT\x10\x10\x12\x17\n\x13PLAYER_TOGGLE_SNEAK\x10\x11\x12\x08\n\x04\x43HAT\x10\x12\x12\x14\n\x10PLAYER_FOOD_LOSS\x10\x13\x12\x0f\n\x0bPLAYER_HEAL\x10\x14\x12\x0f\n\x0bPLAYER_HURT\x10\x15\x12\x10\n\x0cPLAYER_DEATH\x10\x16\x12\x12\n\x0ePLAYER_RESPAWN\x10\x17\x12\x16\n\x12PLAYER_SKIN_CHANGE\x10\x18\x12\x1a\n\x16PLAYER_FIRE_EXTINGUISH\x10\x19\x12\x16\n\x12PLAYER_START_BREAK\x10\x1a\x12\x16\n\x12PLAYER_BLOCK_BREAK\x10\x1b\x12\x16\n\x12PLAYER_BLOCK_PLACE\x10\x1c\x12\x15\n\x11PLAYER_BLOCK_PICK\x10\x1d\x12\x13\n\x0fPLAYER_ITEM_USE\x10\x1e\x12\x1c\n\x18PLAYER_ITEM_USE_ON_BLOCK\x10\x1f\x12\x1d\n\x19PLAYER_ITEM_USE_ON_ENTITY\x10 \x12\x17\n\x13PLAYER_ITEM_RELEASE\x10!\x12\x17\n\x13PLAYER_ITEM_CONSUME\x10\"\x12\x18\n\x14PLAYER_ATTACK_ENTITY\x10#\x12\x1a\n\x16PLAYER_EXPERIENCE_GAIN\x10$\x12\x14\n\x10PLAYER_PUNCH_AIR\x10%\x12\x14\n\x10PLAYER_SIGN_EDIT\x10&\x12\x1c\n\x18PLAYER_LECTERN_PAGE_TURN\x10\'\x12\x16\n\x12PLAYER_ITEM_DAMAGE\x10(\x12\x16\n\x12PLAYER_ITEM_PICKUP\x10)\x12\x1b\n\x17PLAYER_HELD_SLOT_CHANGE\x10*\x12\x14\n\x10PLAYER_ITEM_DROP\x10+\x12\x13\n\x0fPLAYER_TRANSFER\x10,\x12\x0b\n\x07\x43OMMAND\x10-\x12\x16\n\x12PLAYER_DIAGNOSTICS\x10.\x12\x15\n\x11WORLD_LIQUID_FLOW\x10\x46\x12\x16\n\x12WORLD_LIQUID_DECAY\x10G\x12\x17\n\x13WORLD_LIQUID_HARDEN\x10H\x12\x0f\n\x0bWORLD_SOUND\x10I\x12\x15\n\x11WORLD_FIRE_SPREAD\x10J\x12\x14\n\x10WORLD_BLOCK_BURN\x10K\x12\x16\n\x12WORLD_CROP_TRAMPLE\x10L\x12\x16\n\x12WORLD_LEAVES_DECAY\x10M\x12\x16\n\x12WORLD_ENTITY_SPAWN\x10N\x12\x18\n\x14WORLD_ENTITY_DESPAWN\x10O\x12\x13\n\x0fWORLD_EXPLOSION\x10P\x12\x0f\n\x0bWORLD_CLOSE\x10Q2M\n\x06Plugin\x12\x43\n\x0b\x45ventStream\x12\x17.df.plugin.PluginToHost\x1a\x17.df.plugin.HostToPlugin(\x01\x30\x01\x42\x8a\x01\n\rcom.df.pluginB\x0bPluginProtoP\x01Z\'github.com/secmc/plugin/proto/generated\xa2\x02\x03\x44PX\xaa\x02\tDf.Plugin\xca\x02\tDf\\Plugin\xe2\x02\x15\x44\x66\\Plugin\\GPBMetadata\xea\x02\nDf::Pluginb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cplugin.proto\x12\tdf.plugin\x1a\x13player_events.proto\x1a\x12world_events.proto\x1a\rcommand.proto\x1a\ractions.proto\x1a\x0fmutations.proto\x1a\x0c\x63ommon.proto\"\xcd\x01\n\x0cHostToPlugin\x12\x1b\n\tplugin_id\x18\x01 \x01(\tR\x08pluginId\x12,\n\x05hello\x18\n \x01(\x0b\x32\x14.df.plugin.HostHelloH\x00R\x05hello\x12\x35\n\x08shutdown\x18\x0b \x01(\x0b\x32\x17.df.plugin.HostShutdownH\x00R\x08shutdown\x12\x30\n\x05\x65vent\x18\x14 \x01(\x0b\x32\x18.df.plugin.EventEnvelopeH\x00R\x05\x65ventB\t\n\x07payload\",\n\tHostHello\x12\x1f\n\x0b\x61pi_version\x18\x01 \x01(\tR\napiVersion\"&\n\x0cHostShutdown\x12\x16\n\x06reason\x18\x01 \x01(\tR\x06reason\"\xe6\x1e\n\rEventEnvelope\x12\x19\n\x08\x65vent_id\x18\x01 \x01(\tR\x07\x65ventId\x12(\n\x04type\x18\x02 \x01(\x0e\x32\x14.df.plugin.EventTypeR\x04type\x12)\n\x10\x65xpects_response\x18\x03 \x01(\x08R\x0f\x65xpectsResponse\x12=\n\x0bplayer_join\x18\n \x01(\x0b\x32\x1a.df.plugin.PlayerJoinEventH\x00R\nplayerJoin\x12=\n\x0bplayer_quit\x18\x0b \x01(\x0b\x32\x1a.df.plugin.PlayerQuitEventH\x00R\nplayerQuit\x12=\n\x0bplayer_move\x18\x0c \x01(\x0b\x32\x1a.df.plugin.PlayerMoveEventH\x00R\nplayerMove\x12=\n\x0bplayer_jump\x18\r \x01(\x0b\x32\x1a.df.plugin.PlayerJumpEventH\x00R\nplayerJump\x12I\n\x0fplayer_teleport\x18\x0e \x01(\x0b\x32\x1e.df.plugin.PlayerTeleportEventH\x00R\x0eplayerTeleport\x12S\n\x13player_change_world\x18\x0f \x01(\x0b\x32!.df.plugin.PlayerChangeWorldEventH\x00R\x11playerChangeWorld\x12V\n\x14player_toggle_sprint\x18\x10 \x01(\x0b\x32\".df.plugin.PlayerToggleSprintEventH\x00R\x12playerToggleSprint\x12S\n\x13player_toggle_sneak\x18\x11 \x01(\x0b\x32!.df.plugin.PlayerToggleSneakEventH\x00R\x11playerToggleSneak\x12*\n\x04\x63hat\x18\x12 \x01(\x0b\x32\x14.df.plugin.ChatEventH\x00R\x04\x63hat\x12J\n\x10player_food_loss\x18\x13 \x01(\x0b\x32\x1e.df.plugin.PlayerFoodLossEventH\x00R\x0eplayerFoodLoss\x12=\n\x0bplayer_heal\x18\x14 \x01(\x0b\x32\x1a.df.plugin.PlayerHealEventH\x00R\nplayerHeal\x12=\n\x0bplayer_hurt\x18\x15 \x01(\x0b\x32\x1a.df.plugin.PlayerHurtEventH\x00R\nplayerHurt\x12@\n\x0cplayer_death\x18\x16 \x01(\x0b\x32\x1b.df.plugin.PlayerDeathEventH\x00R\x0bplayerDeath\x12\x46\n\x0eplayer_respawn\x18\x17 \x01(\x0b\x32\x1d.df.plugin.PlayerRespawnEventH\x00R\rplayerRespawn\x12P\n\x12player_skin_change\x18\x18 \x01(\x0b\x32 .df.plugin.PlayerSkinChangeEventH\x00R\x10playerSkinChange\x12\\\n\x16player_fire_extinguish\x18\x19 \x01(\x0b\x32$.df.plugin.PlayerFireExtinguishEventH\x00R\x14playerFireExtinguish\x12P\n\x12player_start_break\x18\x1a \x01(\x0b\x32 .df.plugin.PlayerStartBreakEventH\x00R\x10playerStartBreak\x12=\n\x0b\x62lock_break\x18\x1b \x01(\x0b\x32\x1a.df.plugin.BlockBreakEventH\x00R\nblockBreak\x12P\n\x12player_block_place\x18\x1c \x01(\x0b\x32 .df.plugin.PlayerBlockPlaceEventH\x00R\x10playerBlockPlace\x12M\n\x11player_block_pick\x18\x1d \x01(\x0b\x32\x1f.df.plugin.PlayerBlockPickEventH\x00R\x0fplayerBlockPick\x12G\n\x0fplayer_item_use\x18\x1e \x01(\x0b\x32\x1d.df.plugin.PlayerItemUseEventH\x00R\rplayerItemUse\x12^\n\x18player_item_use_on_block\x18\x1f \x01(\x0b\x32$.df.plugin.PlayerItemUseOnBlockEventH\x00R\x14playerItemUseOnBlock\x12\x61\n\x19player_item_use_on_entity\x18 \x01(\x0b\x32%.df.plugin.PlayerItemUseOnEntityEventH\x00R\x15playerItemUseOnEntity\x12S\n\x13player_item_release\x18! \x01(\x0b\x32!.df.plugin.PlayerItemReleaseEventH\x00R\x11playerItemRelease\x12S\n\x13player_item_consume\x18\" \x01(\x0b\x32!.df.plugin.PlayerItemConsumeEventH\x00R\x11playerItemConsume\x12V\n\x14player_attack_entity\x18# \x01(\x0b\x32\".df.plugin.PlayerAttackEntityEventH\x00R\x12playerAttackEntity\x12\\\n\x16player_experience_gain\x18$ \x01(\x0b\x32$.df.plugin.PlayerExperienceGainEventH\x00R\x14playerExperienceGain\x12J\n\x10player_punch_air\x18% \x01(\x0b\x32\x1e.df.plugin.PlayerPunchAirEventH\x00R\x0eplayerPunchAir\x12J\n\x10player_sign_edit\x18& \x01(\x0b\x32\x1e.df.plugin.PlayerSignEditEventH\x00R\x0eplayerSignEdit\x12`\n\x18player_lectern_page_turn\x18\' \x01(\x0b\x32%.df.plugin.PlayerLecternPageTurnEventH\x00R\x15playerLecternPageTurn\x12P\n\x12player_item_damage\x18( \x01(\x0b\x32 .df.plugin.PlayerItemDamageEventH\x00R\x10playerItemDamage\x12P\n\x12player_item_pickup\x18) \x01(\x0b\x32 .df.plugin.PlayerItemPickupEventH\x00R\x10playerItemPickup\x12]\n\x17player_held_slot_change\x18* \x01(\x0b\x32$.df.plugin.PlayerHeldSlotChangeEventH\x00R\x14playerHeldSlotChange\x12J\n\x10player_item_drop\x18+ \x01(\x0b\x32\x1e.df.plugin.PlayerItemDropEventH\x00R\x0eplayerItemDrop\x12I\n\x0fplayer_transfer\x18, \x01(\x0b\x32\x1e.df.plugin.PlayerTransferEventH\x00R\x0eplayerTransfer\x12\x33\n\x07\x63ommand\x18- \x01(\x0b\x32\x17.df.plugin.CommandEventH\x00R\x07\x63ommand\x12R\n\x12player_diagnostics\x18. \x01(\x0b\x32!.df.plugin.PlayerDiagnosticsEventH\x00R\x11playerDiagnostics\x12M\n\x11world_liquid_flow\x18\x46 \x01(\x0b\x32\x1f.df.plugin.WorldLiquidFlowEventH\x00R\x0fworldLiquidFlow\x12P\n\x12world_liquid_decay\x18G \x01(\x0b\x32 .df.plugin.WorldLiquidDecayEventH\x00R\x10worldLiquidDecay\x12S\n\x13world_liquid_harden\x18H \x01(\x0b\x32!.df.plugin.WorldLiquidHardenEventH\x00R\x11worldLiquidHarden\x12=\n\x0bworld_sound\x18I \x01(\x0b\x32\x1a.df.plugin.WorldSoundEventH\x00R\nworldSound\x12M\n\x11world_fire_spread\x18J \x01(\x0b\x32\x1f.df.plugin.WorldFireSpreadEventH\x00R\x0fworldFireSpread\x12J\n\x10world_block_burn\x18K \x01(\x0b\x32\x1e.df.plugin.WorldBlockBurnEventH\x00R\x0eworldBlockBurn\x12P\n\x12world_crop_trample\x18L \x01(\x0b\x32 .df.plugin.WorldCropTrampleEventH\x00R\x10worldCropTrample\x12P\n\x12world_leaves_decay\x18M \x01(\x0b\x32 .df.plugin.WorldLeavesDecayEventH\x00R\x10worldLeavesDecay\x12P\n\x12world_entity_spawn\x18N \x01(\x0b\x32 .df.plugin.WorldEntitySpawnEventH\x00R\x10worldEntitySpawn\x12V\n\x14world_entity_despawn\x18O \x01(\x0b\x32\".df.plugin.WorldEntityDespawnEventH\x00R\x12worldEntityDespawn\x12I\n\x0fworld_explosion\x18P \x01(\x0b\x32\x1e.df.plugin.WorldExplosionEventH\x00R\x0eworldExplosion\x12=\n\x0bworld_close\x18Q \x01(\x0b\x32\x1a.df.plugin.WorldCloseEventH\x00R\nworldCloseB\t\n\x07payload\"\xbd\x02\n\x0cPluginToHost\x12\x1b\n\tplugin_id\x18\x01 \x01(\tR\x08pluginId\x12.\n\x05hello\x18\n \x01(\x0b\x32\x16.df.plugin.PluginHelloH\x00R\x05hello\x12\x39\n\tsubscribe\x18\x0b \x01(\x0b\x32\x19.df.plugin.EventSubscribeH\x00R\tsubscribe\x12\x32\n\x07\x61\x63tions\x18\x14 \x01(\x0b\x32\x16.df.plugin.ActionBatchH\x00R\x07\x61\x63tions\x12)\n\x03log\x18\x1e \x01(\x0b\x32\x15.df.plugin.LogMessageH\x00R\x03log\x12;\n\x0c\x65vent_result\x18( \x01(\x0b\x32\x16.df.plugin.EventResultH\x00R\x0b\x65ventResultB\t\n\x07payload\"\xd4\x01\n\x0bPluginHello\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12\x1f\n\x0b\x61pi_version\x18\x03 \x01(\tR\napiVersion\x12\x32\n\x08\x63ommands\x18\x04 \x03(\x0b\x32\x16.df.plugin.CommandSpecR\x08\x63ommands\x12\x42\n\x0c\x63ustom_items\x18\x05 \x03(\x0b\x32\x1f.df.plugin.CustomItemDefinitionR\x0b\x63ustomItems\"<\n\nLogMessage\x12\x14\n\x05level\x18\x01 \x01(\tR\x05level\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\">\n\x0e\x45ventSubscribe\x12,\n\x06\x65vents\x18\x01 \x03(\x0e\x32\x14.df.plugin.EventTypeR\x06\x65vents*\x8a\t\n\tEventType\x12\x1a\n\x16\x45VENT_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x45VENT_TYPE_ALL\x10\x01\x12\x0f\n\x0bPLAYER_JOIN\x10\n\x12\x0f\n\x0bPLAYER_QUIT\x10\x0b\x12\x0f\n\x0bPLAYER_MOVE\x10\x0c\x12\x0f\n\x0bPLAYER_JUMP\x10\r\x12\x13\n\x0fPLAYER_TELEPORT\x10\x0e\x12\x17\n\x13PLAYER_CHANGE_WORLD\x10\x0f\x12\x18\n\x14PLAYER_TOGGLE_SPRINT\x10\x10\x12\x17\n\x13PLAYER_TOGGLE_SNEAK\x10\x11\x12\x08\n\x04\x43HAT\x10\x12\x12\x14\n\x10PLAYER_FOOD_LOSS\x10\x13\x12\x0f\n\x0bPLAYER_HEAL\x10\x14\x12\x0f\n\x0bPLAYER_HURT\x10\x15\x12\x10\n\x0cPLAYER_DEATH\x10\x16\x12\x12\n\x0ePLAYER_RESPAWN\x10\x17\x12\x16\n\x12PLAYER_SKIN_CHANGE\x10\x18\x12\x1a\n\x16PLAYER_FIRE_EXTINGUISH\x10\x19\x12\x16\n\x12PLAYER_START_BREAK\x10\x1a\x12\x16\n\x12PLAYER_BLOCK_BREAK\x10\x1b\x12\x16\n\x12PLAYER_BLOCK_PLACE\x10\x1c\x12\x15\n\x11PLAYER_BLOCK_PICK\x10\x1d\x12\x13\n\x0fPLAYER_ITEM_USE\x10\x1e\x12\x1c\n\x18PLAYER_ITEM_USE_ON_BLOCK\x10\x1f\x12\x1d\n\x19PLAYER_ITEM_USE_ON_ENTITY\x10 \x12\x17\n\x13PLAYER_ITEM_RELEASE\x10!\x12\x17\n\x13PLAYER_ITEM_CONSUME\x10\"\x12\x18\n\x14PLAYER_ATTACK_ENTITY\x10#\x12\x1a\n\x16PLAYER_EXPERIENCE_GAIN\x10$\x12\x14\n\x10PLAYER_PUNCH_AIR\x10%\x12\x14\n\x10PLAYER_SIGN_EDIT\x10&\x12\x1c\n\x18PLAYER_LECTERN_PAGE_TURN\x10\'\x12\x16\n\x12PLAYER_ITEM_DAMAGE\x10(\x12\x16\n\x12PLAYER_ITEM_PICKUP\x10)\x12\x1b\n\x17PLAYER_HELD_SLOT_CHANGE\x10*\x12\x14\n\x10PLAYER_ITEM_DROP\x10+\x12\x13\n\x0fPLAYER_TRANSFER\x10,\x12\x0b\n\x07\x43OMMAND\x10-\x12\x16\n\x12PLAYER_DIAGNOSTICS\x10.\x12\x15\n\x11WORLD_LIQUID_FLOW\x10\x46\x12\x16\n\x12WORLD_LIQUID_DECAY\x10G\x12\x17\n\x13WORLD_LIQUID_HARDEN\x10H\x12\x0f\n\x0bWORLD_SOUND\x10I\x12\x15\n\x11WORLD_FIRE_SPREAD\x10J\x12\x14\n\x10WORLD_BLOCK_BURN\x10K\x12\x16\n\x12WORLD_CROP_TRAMPLE\x10L\x12\x16\n\x12WORLD_LEAVES_DECAY\x10M\x12\x16\n\x12WORLD_ENTITY_SPAWN\x10N\x12\x18\n\x14WORLD_ENTITY_DESPAWN\x10O\x12\x13\n\x0fWORLD_EXPLOSION\x10P\x12\x0f\n\x0bWORLD_CLOSE\x10Q2M\n\x06Plugin\x12\x43\n\x0b\x45ventStream\x12\x17.df.plugin.PluginToHost\x1a\x17.df.plugin.HostToPlugin(\x01\x30\x01\x42\x8a\x01\n\rcom.df.pluginB\x0bPluginProtoP\x01Z\'github.com/secmc/plugin/proto/generated\xa2\x02\x03\x44PX\xaa\x02\tDf.Plugin\xca\x02\tDf\\Plugin\xe2\x02\x15\x44\x66\\Plugin\\GPBMetadata\xea\x02\nDf::Pluginb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -37,26 +38,24 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\rcom.df.pluginB\013PluginProtoP\001Z\'github.com/secmc/plugin/proto/generated\242\002\003DPX\252\002\tDf.Plugin\312\002\tDf\\Plugin\342\002\025Df\\Plugin\\GPBMetadata\352\002\nDf::Plugin' - _globals['_EVENTTYPE']._serialized_start=5110 - _globals['_EVENTTYPE']._serialized_end=6272 - _globals['_HOSTTOPLUGIN']._serialized_start=115 - _globals['_HOSTTOPLUGIN']._serialized_end=320 - _globals['_HOSTHELLO']._serialized_start=322 - _globals['_HOSTHELLO']._serialized_end=366 - _globals['_HOSTSHUTDOWN']._serialized_start=368 - _globals['_HOSTSHUTDOWN']._serialized_end=406 - _globals['_EVENTENVELOPE']._serialized_start=409 - _globals['_EVENTENVELOPE']._serialized_end=4351 - _globals['_PLUGINTOHOST']._serialized_start=4354 - _globals['_PLUGINTOHOST']._serialized_end=4671 - _globals['_PLUGINHELLO']._serialized_start=4674 - _globals['_PLUGINHELLO']._serialized_end=4886 - _globals['_COMMANDSPEC']._serialized_start=4888 - _globals['_COMMANDSPEC']._serialized_end=4981 - _globals['_LOGMESSAGE']._serialized_start=4983 - _globals['_LOGMESSAGE']._serialized_end=5043 - _globals['_EVENTSUBSCRIBE']._serialized_start=5045 - _globals['_EVENTSUBSCRIBE']._serialized_end=5107 - _globals['_PLUGIN']._serialized_start=6274 - _globals['_PLUGIN']._serialized_end=6351 + _globals['_EVENTTYPE']._serialized_start=5030 + _globals['_EVENTTYPE']._serialized_end=6192 + _globals['_HOSTTOPLUGIN']._serialized_start=130 + _globals['_HOSTTOPLUGIN']._serialized_end=335 + _globals['_HOSTHELLO']._serialized_start=337 + _globals['_HOSTHELLO']._serialized_end=381 + _globals['_HOSTSHUTDOWN']._serialized_start=383 + _globals['_HOSTSHUTDOWN']._serialized_end=421 + _globals['_EVENTENVELOPE']._serialized_start=424 + _globals['_EVENTENVELOPE']._serialized_end=4366 + _globals['_PLUGINTOHOST']._serialized_start=4369 + _globals['_PLUGINTOHOST']._serialized_end=4686 + _globals['_PLUGINHELLO']._serialized_start=4689 + _globals['_PLUGINHELLO']._serialized_end=4901 + _globals['_LOGMESSAGE']._serialized_start=4903 + _globals['_LOGMESSAGE']._serialized_end=4963 + _globals['_EVENTSUBSCRIBE']._serialized_start=4965 + _globals['_EVENTSUBSCRIBE']._serialized_end=5027 + _globals['_PLUGIN']._serialized_start=6194 + _globals['_PLUGIN']._serialized_end=6271 # @@protoc_insertion_point(module_scope) diff --git a/proto/generated/rust/df.plugin.rs b/proto/generated/rust/df.plugin.rs index 424d723..7c9300e 100644 --- a/proto/generated/rust/df.plugin.rs +++ b/proto/generated/rust/df.plugin.rs @@ -643,6 +643,94 @@ pub struct ExecuteCommandAction { #[prost(string, tag="2")] pub command: ::prost::alloc::string::String, } +/// Parameter specification for a command. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ParamSpec { + #[prost(string, tag="1")] + pub name: ::prost::alloc::string::String, + #[prost(enumeration="ParamType", tag="2")] + pub r#type: i32, + #[prost(bool, tag="3")] + pub optional: bool, + /// Optional suffix as supported by Go cmd tags (e.g., units) + #[prost(string, tag="4")] + pub suffix: ::prost::alloc::string::String, + /// Optional list of enum values to present in the client UI. + /// When set, the parameter is shown as an enum selector regardless of ParamType. + #[prost(string, repeated, tag="5")] + pub enum_values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +/// Command specification announced by a plugin during handshake. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CommandSpec { + #[prost(string, tag="1")] + pub name: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub description: ::prost::alloc::string::String, + #[prost(string, repeated, tag="3")] + pub aliases: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(message, repeated, tag="4")] + pub params: ::prost::alloc::vec::Vec, +} +/// Player command execution event. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CommandEvent { + #[prost(string, tag="1")] + pub player_uuid: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub name: ::prost::alloc::string::String, + /// Full command string like "/tp 100 64 200" + #[prost(string, tag="3")] + pub raw: ::prost::alloc::string::String, + /// Just the command name like "tp" + #[prost(string, tag="4")] + pub command: ::prost::alloc::string::String, + /// Parsed arguments like \["100", "64", "200"\] + #[prost(string, repeated, tag="5")] + pub args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +/// Supported parameter types for commands. +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum ParamType { + ParamString = 0, + ParamInt = 1, + ParamFloat = 2, + ParamBool = 3, + ParamVarargs = 4, + ParamEnum = 5, +} +impl ParamType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + ParamType::ParamString => "PARAM_STRING", + ParamType::ParamInt => "PARAM_INT", + ParamType::ParamFloat => "PARAM_FLOAT", + ParamType::ParamBool => "PARAM_BOOL", + ParamType::ParamVarargs => "PARAM_VARARGS", + ParamType::ParamEnum => "PARAM_ENUM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PARAM_STRING" => Some(Self::ParamString), + "PARAM_INT" => Some(Self::ParamInt), + "PARAM_FLOAT" => Some(Self::ParamFloat), + "PARAM_BOOL" => Some(Self::ParamBool), + "PARAM_VARARGS" => Some(Self::ParamVarargs), + "PARAM_ENUM" => Some(Self::ParamEnum), + _ => None, + } + } +} #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct EventResult { @@ -1249,23 +1337,6 @@ pub struct PlayerTransferEvent { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct CommandEvent { - #[prost(string, tag="1")] - pub player_uuid: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub name: ::prost::alloc::string::String, - /// Full command string like "/tp 100 64 200" - #[prost(string, tag="3")] - pub raw: ::prost::alloc::string::String, - /// Just the command name like "tp" - #[prost(string, tag="4")] - pub command: ::prost::alloc::string::String, - /// Parsed arguments like \["100", "64", "200"\] - #[prost(string, repeated, tag="5")] - pub args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] pub struct PlayerDiagnosticsEvent { #[prost(string, tag="1")] pub player_uuid: ::prost::alloc::string::String, @@ -1604,16 +1675,6 @@ pub struct PluginHello { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct CommandSpec { - #[prost(string, tag="1")] - pub name: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub description: ::prost::alloc::string::String, - #[prost(string, repeated, tag="3")] - pub aliases: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] pub struct LogMessage { #[prost(string, tag="1")] pub level: ::prost::alloc::string::String, diff --git a/proto/generated/ts/command.js b/proto/generated/ts/command.js new file mode 100644 index 0000000..6fa6203 --- /dev/null +++ b/proto/generated/ts/command.js @@ -0,0 +1,393 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.6.1 +// protoc unknown +// source: command.proto +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; +export const protobufPackage = "df.plugin"; +/** Supported parameter types for commands. */ +export var ParamType; +(function (ParamType) { + ParamType[ParamType["PARAM_STRING"] = 0] = "PARAM_STRING"; + ParamType[ParamType["PARAM_INT"] = 1] = "PARAM_INT"; + ParamType[ParamType["PARAM_FLOAT"] = 2] = "PARAM_FLOAT"; + ParamType[ParamType["PARAM_BOOL"] = 3] = "PARAM_BOOL"; + ParamType[ParamType["PARAM_VARARGS"] = 4] = "PARAM_VARARGS"; + ParamType[ParamType["PARAM_ENUM"] = 5] = "PARAM_ENUM"; + ParamType[ParamType["UNRECOGNIZED"] = -1] = "UNRECOGNIZED"; +})(ParamType || (ParamType = {})); +export function paramTypeFromJSON(object) { + switch (object) { + case 0: + case "PARAM_STRING": + return ParamType.PARAM_STRING; + case 1: + case "PARAM_INT": + return ParamType.PARAM_INT; + case 2: + case "PARAM_FLOAT": + return ParamType.PARAM_FLOAT; + case 3: + case "PARAM_BOOL": + return ParamType.PARAM_BOOL; + case 4: + case "PARAM_VARARGS": + return ParamType.PARAM_VARARGS; + case 5: + case "PARAM_ENUM": + return ParamType.PARAM_ENUM; + case -1: + case "UNRECOGNIZED": + default: + return ParamType.UNRECOGNIZED; + } +} +export function paramTypeToJSON(object) { + switch (object) { + case ParamType.PARAM_STRING: + return "PARAM_STRING"; + case ParamType.PARAM_INT: + return "PARAM_INT"; + case ParamType.PARAM_FLOAT: + return "PARAM_FLOAT"; + case ParamType.PARAM_BOOL: + return "PARAM_BOOL"; + case ParamType.PARAM_VARARGS: + return "PARAM_VARARGS"; + case ParamType.PARAM_ENUM: + return "PARAM_ENUM"; + case ParamType.UNRECOGNIZED: + default: + return "UNRECOGNIZED"; + } +} +function createBaseParamSpec() { + return { name: "", type: 0, optional: false, suffix: "", enumValues: [] }; +} +export const ParamSpec = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.type !== 0) { + writer.uint32(16).int32(message.type); + } + if (message.optional !== false) { + writer.uint32(24).bool(message.optional); + } + if (message.suffix !== "") { + writer.uint32(34).string(message.suffix); + } + for (const v of message.enumValues) { + writer.uint32(42).string(v); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseParamSpec(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.type = reader.int32(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.optional = reader.bool(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.suffix = reader.string(); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + message.enumValues.push(reader.string()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + fromJSON(object) { + return { + name: isSet(object.name) ? globalThis.String(object.name) : "", + type: isSet(object.type) ? paramTypeFromJSON(object.type) : 0, + optional: isSet(object.optional) ? globalThis.Boolean(object.optional) : false, + suffix: isSet(object.suffix) ? globalThis.String(object.suffix) : "", + enumValues: globalThis.Array.isArray(object?.enumValues) + ? object.enumValues.map((e) => globalThis.String(e)) + : [], + }; + }, + toJSON(message) { + const obj = {}; + if (message.name !== "") { + obj.name = message.name; + } + if (message.type !== 0) { + obj.type = paramTypeToJSON(message.type); + } + if (message.optional !== false) { + obj.optional = message.optional; + } + if (message.suffix !== "") { + obj.suffix = message.suffix; + } + if (message.enumValues?.length) { + obj.enumValues = message.enumValues; + } + return obj; + }, + create(base) { + return ParamSpec.fromPartial(base ?? {}); + }, + fromPartial(object) { + const message = createBaseParamSpec(); + message.name = object.name ?? ""; + message.type = object.type ?? 0; + message.optional = object.optional ?? false; + message.suffix = object.suffix ?? ""; + message.enumValues = object.enumValues?.map((e) => e) || []; + return message; + }, +}; +function createBaseCommandSpec() { + return { name: "", description: "", aliases: [], params: [] }; +} +export const CommandSpec = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + for (const v of message.aliases) { + writer.uint32(26).string(v); + } + for (const v of message.params) { + ParamSpec.encode(v, writer.uint32(34).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCommandSpec(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.description = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.aliases.push(reader.string()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.params.push(ParamSpec.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + fromJSON(object) { + return { + name: isSet(object.name) ? globalThis.String(object.name) : "", + description: isSet(object.description) ? globalThis.String(object.description) : "", + aliases: globalThis.Array.isArray(object?.aliases) ? object.aliases.map((e) => globalThis.String(e)) : [], + params: globalThis.Array.isArray(object?.params) ? object.params.map((e) => ParamSpec.fromJSON(e)) : [], + }; + }, + toJSON(message) { + const obj = {}; + if (message.name !== "") { + obj.name = message.name; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.aliases?.length) { + obj.aliases = message.aliases; + } + if (message.params?.length) { + obj.params = message.params.map((e) => ParamSpec.toJSON(e)); + } + return obj; + }, + create(base) { + return CommandSpec.fromPartial(base ?? {}); + }, + fromPartial(object) { + const message = createBaseCommandSpec(); + message.name = object.name ?? ""; + message.description = object.description ?? ""; + message.aliases = object.aliases?.map((e) => e) || []; + message.params = object.params?.map((e) => ParamSpec.fromPartial(e)) || []; + return message; + }, +}; +function createBaseCommandEvent() { + return { playerUuid: "", name: "", raw: "", command: "", args: [] }; +} +export const CommandEvent = { + encode(message, writer = new BinaryWriter()) { + if (message.playerUuid !== "") { + writer.uint32(10).string(message.playerUuid); + } + if (message.name !== "") { + writer.uint32(18).string(message.name); + } + if (message.raw !== "") { + writer.uint32(26).string(message.raw); + } + if (message.command !== "") { + writer.uint32(34).string(message.command); + } + for (const v of message.args) { + writer.uint32(42).string(v); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCommandEvent(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.playerUuid = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.name = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.raw = reader.string(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.command = reader.string(); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + message.args.push(reader.string()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + fromJSON(object) { + return { + playerUuid: isSet(object.playerUuid) ? globalThis.String(object.playerUuid) : "", + name: isSet(object.name) ? globalThis.String(object.name) : "", + raw: isSet(object.raw) ? globalThis.String(object.raw) : "", + command: isSet(object.command) ? globalThis.String(object.command) : "", + args: globalThis.Array.isArray(object?.args) ? object.args.map((e) => globalThis.String(e)) : [], + }; + }, + toJSON(message) { + const obj = {}; + if (message.playerUuid !== "") { + obj.playerUuid = message.playerUuid; + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.raw !== "") { + obj.raw = message.raw; + } + if (message.command !== "") { + obj.command = message.command; + } + if (message.args?.length) { + obj.args = message.args; + } + return obj; + }, + create(base) { + return CommandEvent.fromPartial(base ?? {}); + }, + fromPartial(object) { + const message = createBaseCommandEvent(); + message.playerUuid = object.playerUuid ?? ""; + message.name = object.name ?? ""; + message.raw = object.raw ?? ""; + message.command = object.command ?? ""; + message.args = object.args?.map((e) => e) || []; + return message; + }, +}; +function isSet(value) { + return value !== null && value !== undefined; +} diff --git a/proto/generated/ts/command.ts b/proto/generated/ts/command.ts new file mode 100644 index 0000000..44cd8b7 --- /dev/null +++ b/proto/generated/ts/command.ts @@ -0,0 +1,481 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v2.6.1 +// protoc unknown +// source: command.proto + +/* eslint-disable */ +import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; + +export const protobufPackage = "df.plugin"; + +/** Supported parameter types for commands. */ +export enum ParamType { + PARAM_STRING = 0, + PARAM_INT = 1, + PARAM_FLOAT = 2, + PARAM_BOOL = 3, + PARAM_VARARGS = 4, + PARAM_ENUM = 5, + UNRECOGNIZED = -1, +} + +export function paramTypeFromJSON(object: any): ParamType { + switch (object) { + case 0: + case "PARAM_STRING": + return ParamType.PARAM_STRING; + case 1: + case "PARAM_INT": + return ParamType.PARAM_INT; + case 2: + case "PARAM_FLOAT": + return ParamType.PARAM_FLOAT; + case 3: + case "PARAM_BOOL": + return ParamType.PARAM_BOOL; + case 4: + case "PARAM_VARARGS": + return ParamType.PARAM_VARARGS; + case 5: + case "PARAM_ENUM": + return ParamType.PARAM_ENUM; + case -1: + case "UNRECOGNIZED": + default: + return ParamType.UNRECOGNIZED; + } +} + +export function paramTypeToJSON(object: ParamType): string { + switch (object) { + case ParamType.PARAM_STRING: + return "PARAM_STRING"; + case ParamType.PARAM_INT: + return "PARAM_INT"; + case ParamType.PARAM_FLOAT: + return "PARAM_FLOAT"; + case ParamType.PARAM_BOOL: + return "PARAM_BOOL"; + case ParamType.PARAM_VARARGS: + return "PARAM_VARARGS"; + case ParamType.PARAM_ENUM: + return "PARAM_ENUM"; + case ParamType.UNRECOGNIZED: + default: + return "UNRECOGNIZED"; + } +} + +/** Parameter specification for a command. */ +export interface ParamSpec { + name: string; + type: ParamType; + optional: boolean; + /** Optional suffix as supported by Go cmd tags (e.g., units) */ + suffix: string; + /** + * Optional list of enum values to present in the client UI. + * When set, the parameter is shown as an enum selector regardless of ParamType. + */ + enumValues: string[]; +} + +/** Command specification announced by a plugin during handshake. */ +export interface CommandSpec { + name: string; + description: string; + aliases: string[]; + params: ParamSpec[]; +} + +/** Player command execution event. */ +export interface CommandEvent { + playerUuid: string; + name: string; + /** Full command string like "/tp 100 64 200" */ + raw: string; + /** Just the command name like "tp" */ + command: string; + /** Parsed arguments like ["100", "64", "200"] */ + args: string[]; +} + +function createBaseParamSpec(): ParamSpec { + return { name: "", type: 0, optional: false, suffix: "", enumValues: [] }; +} + +export const ParamSpec: MessageFns = { + encode(message: ParamSpec, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.type !== 0) { + writer.uint32(16).int32(message.type); + } + if (message.optional !== false) { + writer.uint32(24).bool(message.optional); + } + if (message.suffix !== "") { + writer.uint32(34).string(message.suffix); + } + for (const v of message.enumValues) { + writer.uint32(42).string(v!); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): ParamSpec { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseParamSpec(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + + message.type = reader.int32() as any; + continue; + } + case 3: { + if (tag !== 24) { + break; + } + + message.optional = reader.bool(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.suffix = reader.string(); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + + message.enumValues.push(reader.string()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): ParamSpec { + return { + name: isSet(object.name) ? globalThis.String(object.name) : "", + type: isSet(object.type) ? paramTypeFromJSON(object.type) : 0, + optional: isSet(object.optional) ? globalThis.Boolean(object.optional) : false, + suffix: isSet(object.suffix) ? globalThis.String(object.suffix) : "", + enumValues: globalThis.Array.isArray(object?.enumValues) + ? object.enumValues.map((e: any) => globalThis.String(e)) + : [], + }; + }, + + toJSON(message: ParamSpec): unknown { + const obj: any = {}; + if (message.name !== "") { + obj.name = message.name; + } + if (message.type !== 0) { + obj.type = paramTypeToJSON(message.type); + } + if (message.optional !== false) { + obj.optional = message.optional; + } + if (message.suffix !== "") { + obj.suffix = message.suffix; + } + if (message.enumValues?.length) { + obj.enumValues = message.enumValues; + } + return obj; + }, + + create(base?: DeepPartial): ParamSpec { + return ParamSpec.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ParamSpec { + const message = createBaseParamSpec(); + message.name = object.name ?? ""; + message.type = object.type ?? 0; + message.optional = object.optional ?? false; + message.suffix = object.suffix ?? ""; + message.enumValues = object.enumValues?.map((e) => e) || []; + return message; + }, +}; + +function createBaseCommandSpec(): CommandSpec { + return { name: "", description: "", aliases: [], params: [] }; +} + +export const CommandSpec: MessageFns = { + encode(message: CommandSpec, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + for (const v of message.aliases) { + writer.uint32(26).string(v!); + } + for (const v of message.params) { + ParamSpec.encode(v!, writer.uint32(34).fork()).join(); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): CommandSpec { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCommandSpec(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.description = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.aliases.push(reader.string()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.params.push(ParamSpec.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): CommandSpec { + return { + name: isSet(object.name) ? globalThis.String(object.name) : "", + description: isSet(object.description) ? globalThis.String(object.description) : "", + aliases: globalThis.Array.isArray(object?.aliases) ? object.aliases.map((e: any) => globalThis.String(e)) : [], + params: globalThis.Array.isArray(object?.params) ? object.params.map((e: any) => ParamSpec.fromJSON(e)) : [], + }; + }, + + toJSON(message: CommandSpec): unknown { + const obj: any = {}; + if (message.name !== "") { + obj.name = message.name; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.aliases?.length) { + obj.aliases = message.aliases; + } + if (message.params?.length) { + obj.params = message.params.map((e) => ParamSpec.toJSON(e)); + } + return obj; + }, + + create(base?: DeepPartial): CommandSpec { + return CommandSpec.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CommandSpec { + const message = createBaseCommandSpec(); + message.name = object.name ?? ""; + message.description = object.description ?? ""; + message.aliases = object.aliases?.map((e) => e) || []; + message.params = object.params?.map((e) => ParamSpec.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseCommandEvent(): CommandEvent { + return { playerUuid: "", name: "", raw: "", command: "", args: [] }; +} + +export const CommandEvent: MessageFns = { + encode(message: CommandEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { + if (message.playerUuid !== "") { + writer.uint32(10).string(message.playerUuid); + } + if (message.name !== "") { + writer.uint32(18).string(message.name); + } + if (message.raw !== "") { + writer.uint32(26).string(message.raw); + } + if (message.command !== "") { + writer.uint32(34).string(message.command); + } + for (const v of message.args) { + writer.uint32(42).string(v!); + } + return writer; + }, + + decode(input: BinaryReader | Uint8Array, length?: number): CommandEvent { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCommandEvent(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + + message.playerUuid = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + + message.name = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + + message.raw = reader.string(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + + message.command = reader.string(); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + + message.args.push(reader.string()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + + fromJSON(object: any): CommandEvent { + return { + playerUuid: isSet(object.playerUuid) ? globalThis.String(object.playerUuid) : "", + name: isSet(object.name) ? globalThis.String(object.name) : "", + raw: isSet(object.raw) ? globalThis.String(object.raw) : "", + command: isSet(object.command) ? globalThis.String(object.command) : "", + args: globalThis.Array.isArray(object?.args) ? object.args.map((e: any) => globalThis.String(e)) : [], + }; + }, + + toJSON(message: CommandEvent): unknown { + const obj: any = {}; + if (message.playerUuid !== "") { + obj.playerUuid = message.playerUuid; + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.raw !== "") { + obj.raw = message.raw; + } + if (message.command !== "") { + obj.command = message.command; + } + if (message.args?.length) { + obj.args = message.args; + } + return obj; + }, + + create(base?: DeepPartial): CommandEvent { + return CommandEvent.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CommandEvent { + const message = createBaseCommandEvent(); + message.playerUuid = object.playerUuid ?? ""; + message.name = object.name ?? ""; + message.raw = object.raw ?? ""; + message.command = object.command ?? ""; + message.args = object.args?.map((e) => e) || []; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} + +export interface MessageFns { + encode(message: T, writer?: BinaryWriter): BinaryWriter; + decode(input: BinaryReader | Uint8Array, length?: number): T; + fromJSON(object: any): T; + toJSON(message: T): unknown; + create(base?: DeepPartial): T; + fromPartial(object: DeepPartial): T; +} diff --git a/proto/generated/ts/player_events.js b/proto/generated/ts/player_events.js index 49c9b74..5a6024f 100644 --- a/proto/generated/ts/player_events.js +++ b/proto/generated/ts/player_events.js @@ -3717,119 +3717,6 @@ export const PlayerTransferEvent = { return message; }, }; -function createBaseCommandEvent() { - return { playerUuid: "", name: "", raw: "", command: "", args: [] }; -} -export const CommandEvent = { - encode(message, writer = new BinaryWriter()) { - if (message.playerUuid !== "") { - writer.uint32(10).string(message.playerUuid); - } - if (message.name !== "") { - writer.uint32(18).string(message.name); - } - if (message.raw !== "") { - writer.uint32(26).string(message.raw); - } - if (message.command !== "") { - writer.uint32(34).string(message.command); - } - for (const v of message.args) { - writer.uint32(42).string(v); - } - return writer; - }, - decode(input, length) { - const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseCommandEvent(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag !== 10) { - break; - } - message.playerUuid = reader.string(); - continue; - } - case 2: { - if (tag !== 18) { - break; - } - message.name = reader.string(); - continue; - } - case 3: { - if (tag !== 26) { - break; - } - message.raw = reader.string(); - continue; - } - case 4: { - if (tag !== 34) { - break; - } - message.command = reader.string(); - continue; - } - case 5: { - if (tag !== 42) { - break; - } - message.args.push(reader.string()); - continue; - } - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); - } - return message; - }, - fromJSON(object) { - return { - playerUuid: isSet(object.playerUuid) ? globalThis.String(object.playerUuid) : "", - name: isSet(object.name) ? globalThis.String(object.name) : "", - raw: isSet(object.raw) ? globalThis.String(object.raw) : "", - command: isSet(object.command) ? globalThis.String(object.command) : "", - args: globalThis.Array.isArray(object?.args) ? object.args.map((e) => globalThis.String(e)) : [], - }; - }, - toJSON(message) { - const obj = {}; - if (message.playerUuid !== "") { - obj.playerUuid = message.playerUuid; - } - if (message.name !== "") { - obj.name = message.name; - } - if (message.raw !== "") { - obj.raw = message.raw; - } - if (message.command !== "") { - obj.command = message.command; - } - if (message.args?.length) { - obj.args = message.args; - } - return obj; - }, - create(base) { - return CommandEvent.fromPartial(base ?? {}); - }, - fromPartial(object) { - const message = createBaseCommandEvent(); - message.playerUuid = object.playerUuid ?? ""; - message.name = object.name ?? ""; - message.raw = object.raw ?? ""; - message.command = object.command ?? ""; - message.args = object.args?.map((e) => e) || []; - return message; - }, -}; function createBasePlayerDiagnosticsEvent() { return { playerUuid: "", diff --git a/proto/generated/ts/player_events.ts b/proto/generated/ts/player_events.ts index b8a472c..1c4f698 100644 --- a/proto/generated/ts/player_events.ts +++ b/proto/generated/ts/player_events.ts @@ -280,17 +280,6 @@ export interface PlayerTransferEvent { address?: Address | undefined; } -export interface CommandEvent { - playerUuid: string; - name: string; - /** Full command string like "/tp 100 64 200" */ - raw: string; - /** Just the command name like "tp" */ - command: string; - /** Parsed arguments like ["100", "64", "200"] */ - args: string[]; -} - export interface PlayerDiagnosticsEvent { playerUuid: string; name: string; @@ -4379,130 +4368,6 @@ export const PlayerTransferEvent: MessageFns = { }, }; -function createBaseCommandEvent(): CommandEvent { - return { playerUuid: "", name: "", raw: "", command: "", args: [] }; -} - -export const CommandEvent: MessageFns = { - encode(message: CommandEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.playerUuid !== "") { - writer.uint32(10).string(message.playerUuid); - } - if (message.name !== "") { - writer.uint32(18).string(message.name); - } - if (message.raw !== "") { - writer.uint32(26).string(message.raw); - } - if (message.command !== "") { - writer.uint32(34).string(message.command); - } - for (const v of message.args) { - writer.uint32(42).string(v!); - } - return writer; - }, - - decode(input: BinaryReader | Uint8Array, length?: number): CommandEvent { - const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseCommandEvent(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag !== 10) { - break; - } - - message.playerUuid = reader.string(); - continue; - } - case 2: { - if (tag !== 18) { - break; - } - - message.name = reader.string(); - continue; - } - case 3: { - if (tag !== 26) { - break; - } - - message.raw = reader.string(); - continue; - } - case 4: { - if (tag !== 34) { - break; - } - - message.command = reader.string(); - continue; - } - case 5: { - if (tag !== 42) { - break; - } - - message.args.push(reader.string()); - continue; - } - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); - } - return message; - }, - - fromJSON(object: any): CommandEvent { - return { - playerUuid: isSet(object.playerUuid) ? globalThis.String(object.playerUuid) : "", - name: isSet(object.name) ? globalThis.String(object.name) : "", - raw: isSet(object.raw) ? globalThis.String(object.raw) : "", - command: isSet(object.command) ? globalThis.String(object.command) : "", - args: globalThis.Array.isArray(object?.args) ? object.args.map((e: any) => globalThis.String(e)) : [], - }; - }, - - toJSON(message: CommandEvent): unknown { - const obj: any = {}; - if (message.playerUuid !== "") { - obj.playerUuid = message.playerUuid; - } - if (message.name !== "") { - obj.name = message.name; - } - if (message.raw !== "") { - obj.raw = message.raw; - } - if (message.command !== "") { - obj.command = message.command; - } - if (message.args?.length) { - obj.args = message.args; - } - return obj; - }, - - create(base?: DeepPartial): CommandEvent { - return CommandEvent.fromPartial(base ?? {}); - }, - fromPartial(object: DeepPartial): CommandEvent { - const message = createBaseCommandEvent(); - message.playerUuid = object.playerUuid ?? ""; - message.name = object.name ?? ""; - message.raw = object.raw ?? ""; - message.command = object.command ?? ""; - message.args = object.args?.map((e) => e) || []; - return message; - }, -}; - function createBasePlayerDiagnosticsEvent(): PlayerDiagnosticsEvent { return { playerUuid: "", diff --git a/proto/generated/ts/plugin.js b/proto/generated/ts/plugin.js index 1caa977..9a6c209 100644 --- a/proto/generated/ts/plugin.js +++ b/proto/generated/ts/plugin.js @@ -6,9 +6,10 @@ /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import { ActionBatch } from "./actions.js"; +import { CommandEvent, CommandSpec } from "./command.js"; import { CustomItemDefinition } from "./common.js"; import { EventResult } from "./mutations.js"; -import { BlockBreakEvent, ChatEvent, CommandEvent, PlayerAttackEntityEvent, PlayerBlockPickEvent, PlayerBlockPlaceEvent, PlayerChangeWorldEvent, PlayerDeathEvent, PlayerDiagnosticsEvent, PlayerExperienceGainEvent, PlayerFireExtinguishEvent, PlayerFoodLossEvent, PlayerHealEvent, PlayerHeldSlotChangeEvent, PlayerHurtEvent, PlayerItemConsumeEvent, PlayerItemDamageEvent, PlayerItemDropEvent, PlayerItemPickupEvent, PlayerItemReleaseEvent, PlayerItemUseEvent, PlayerItemUseOnBlockEvent, PlayerItemUseOnEntityEvent, PlayerJoinEvent, PlayerJumpEvent, PlayerLecternPageTurnEvent, PlayerMoveEvent, PlayerPunchAirEvent, PlayerQuitEvent, PlayerRespawnEvent, PlayerSignEditEvent, PlayerSkinChangeEvent, PlayerStartBreakEvent, PlayerTeleportEvent, PlayerToggleSneakEvent, PlayerToggleSprintEvent, PlayerTransferEvent, } from "./player_events.js"; +import { BlockBreakEvent, ChatEvent, PlayerAttackEntityEvent, PlayerBlockPickEvent, PlayerBlockPlaceEvent, PlayerChangeWorldEvent, PlayerDeathEvent, PlayerDiagnosticsEvent, PlayerExperienceGainEvent, PlayerFireExtinguishEvent, PlayerFoodLossEvent, PlayerHealEvent, PlayerHeldSlotChangeEvent, PlayerHurtEvent, PlayerItemConsumeEvent, PlayerItemDamageEvent, PlayerItemDropEvent, PlayerItemPickupEvent, PlayerItemReleaseEvent, PlayerItemUseEvent, PlayerItemUseOnBlockEvent, PlayerItemUseOnEntityEvent, PlayerJoinEvent, PlayerJumpEvent, PlayerLecternPageTurnEvent, PlayerMoveEvent, PlayerPunchAirEvent, PlayerQuitEvent, PlayerRespawnEvent, PlayerSignEditEvent, PlayerSkinChangeEvent, PlayerStartBreakEvent, PlayerTeleportEvent, PlayerToggleSneakEvent, PlayerToggleSprintEvent, PlayerTransferEvent, } from "./player_events.js"; import { WorldBlockBurnEvent, WorldCloseEvent, WorldCropTrampleEvent, WorldEntityDespawnEvent, WorldEntitySpawnEvent, WorldExplosionEvent, WorldFireSpreadEvent, WorldLeavesDecayEvent, WorldLiquidDecayEvent, WorldLiquidFlowEvent, WorldLiquidHardenEvent, WorldSoundEvent, } from "./world_events.js"; export const protobufPackage = "df.plugin"; export var EventType; @@ -1825,89 +1826,6 @@ export const PluginHello = { return message; }, }; -function createBaseCommandSpec() { - return { name: "", description: "", aliases: [] }; -} -export const CommandSpec = { - encode(message, writer = new BinaryWriter()) { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.description !== "") { - writer.uint32(18).string(message.description); - } - for (const v of message.aliases) { - writer.uint32(26).string(v); - } - return writer; - }, - decode(input, length) { - const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseCommandSpec(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag !== 10) { - break; - } - message.name = reader.string(); - continue; - } - case 2: { - if (tag !== 18) { - break; - } - message.description = reader.string(); - continue; - } - case 3: { - if (tag !== 26) { - break; - } - message.aliases.push(reader.string()); - continue; - } - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); - } - return message; - }, - fromJSON(object) { - return { - name: isSet(object.name) ? globalThis.String(object.name) : "", - description: isSet(object.description) ? globalThis.String(object.description) : "", - aliases: globalThis.Array.isArray(object?.aliases) ? object.aliases.map((e) => globalThis.String(e)) : [], - }; - }, - toJSON(message) { - const obj = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.description !== "") { - obj.description = message.description; - } - if (message.aliases?.length) { - obj.aliases = message.aliases; - } - return obj; - }, - create(base) { - return CommandSpec.fromPartial(base ?? {}); - }, - fromPartial(object) { - const message = createBaseCommandSpec(); - message.name = object.name ?? ""; - message.description = object.description ?? ""; - message.aliases = object.aliases?.map((e) => e) || []; - return message; - }, -}; function createBaseLogMessage() { return { level: "", message: "" }; } diff --git a/proto/generated/ts/plugin.ts b/proto/generated/ts/plugin.ts index 839bfa9..69ec025 100644 --- a/proto/generated/ts/plugin.ts +++ b/proto/generated/ts/plugin.ts @@ -7,12 +7,12 @@ /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import { ActionBatch } from "./actions.js"; +import { CommandEvent, CommandSpec } from "./command.js"; import { CustomItemDefinition } from "./common.js"; import { EventResult } from "./mutations.js"; import { BlockBreakEvent, ChatEvent, - CommandEvent, PlayerAttackEntityEvent, PlayerBlockPickEvent, PlayerBlockPlaceEvent, @@ -480,12 +480,6 @@ export interface PluginHello { customItems: CustomItemDefinition[]; } -export interface CommandSpec { - name: string; - description: string; - aliases: string[]; -} - export interface LogMessage { level: string; message: string; @@ -2089,98 +2083,6 @@ export const PluginHello: MessageFns = { }, }; -function createBaseCommandSpec(): CommandSpec { - return { name: "", description: "", aliases: [] }; -} - -export const CommandSpec: MessageFns = { - encode(message: CommandSpec, writer: BinaryWriter = new BinaryWriter()): BinaryWriter { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.description !== "") { - writer.uint32(18).string(message.description); - } - for (const v of message.aliases) { - writer.uint32(26).string(v!); - } - return writer; - }, - - decode(input: BinaryReader | Uint8Array, length?: number): CommandSpec { - const reader = input instanceof BinaryReader ? input : new BinaryReader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseCommandSpec(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - } - case 2: { - if (tag !== 18) { - break; - } - - message.description = reader.string(); - continue; - } - case 3: { - if (tag !== 26) { - break; - } - - message.aliases.push(reader.string()); - continue; - } - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skip(tag & 7); - } - return message; - }, - - fromJSON(object: any): CommandSpec { - return { - name: isSet(object.name) ? globalThis.String(object.name) : "", - description: isSet(object.description) ? globalThis.String(object.description) : "", - aliases: globalThis.Array.isArray(object?.aliases) ? object.aliases.map((e: any) => globalThis.String(e)) : [], - }; - }, - - toJSON(message: CommandSpec): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.description !== "") { - obj.description = message.description; - } - if (message.aliases?.length) { - obj.aliases = message.aliases; - } - return obj; - }, - - create(base?: DeepPartial): CommandSpec { - return CommandSpec.fromPartial(base ?? {}); - }, - fromPartial(object: DeepPartial): CommandSpec { - const message = createBaseCommandSpec(); - message.name = object.name ?? ""; - message.description = object.description ?? ""; - message.aliases = object.aliases?.map((e) => e) || []; - return message; - }, -}; - function createBaseLogMessage(): LogMessage { return { level: "", message: "" }; } diff --git a/proto/types/command.proto b/proto/types/command.proto new file mode 100644 index 0000000..ce1b67c --- /dev/null +++ b/proto/types/command.proto @@ -0,0 +1,45 @@ +syntax = "proto3"; + +package df.plugin; + +option go_package = "github.com/secmc/plugin/proto/generated"; + +// Supported parameter types for commands. +enum ParamType { + PARAM_STRING = 0; + PARAM_INT = 1; + PARAM_FLOAT = 2; + PARAM_BOOL = 3; + PARAM_VARARGS = 4; + PARAM_ENUM = 5; +} + +// Parameter specification for a command. +message ParamSpec { + string name = 1; + ParamType type = 2; + bool optional = 3; + // Optional suffix as supported by Go cmd tags (e.g., units) + string suffix = 4; + // Optional list of enum values to present in the client UI. + // When set, the parameter is shown as an enum selector regardless of ParamType. + repeated string enum_values = 5; +} + +// Command specification announced by a plugin during handshake. +message CommandSpec { + string name = 1; + string description = 2; + repeated string aliases = 3; + repeated ParamSpec params = 4; +} + +// Player command execution event. +message CommandEvent { + string player_uuid = 1; + string name = 2; + string raw = 3; // Full command string like "/tp 100 64 200" + string command = 4; // Just the command name like "tp" + repeated string args = 5; // Parsed arguments like ["100", "64", "200"] +} + diff --git a/proto/types/player_events.proto b/proto/types/player_events.proto index 4b50574..c2d256e 100644 --- a/proto/types/player_events.proto +++ b/proto/types/player_events.proto @@ -265,14 +265,6 @@ message PlayerTransferEvent { optional Address address = 3; } -message CommandEvent { - string player_uuid = 1; - string name = 2; - string raw = 3; // Full command string like "/tp 100 64 200" - string command = 4; // Just the command name like "tp" - repeated string args = 5; // Parsed arguments like ["100", "64", "200"] -} - message PlayerDiagnosticsEvent { string player_uuid = 1; string name = 2; diff --git a/proto/types/plugin.proto b/proto/types/plugin.proto index c2ce9ac..354d793 100644 --- a/proto/types/plugin.proto +++ b/proto/types/plugin.proto @@ -6,6 +6,7 @@ option go_package = "github.com/secmc/plugin/proto/generated"; import "player_events.proto"; import "world_events.proto"; +import "command.proto"; import "actions.proto"; import "mutations.proto"; import "common.proto"; @@ -107,12 +108,6 @@ message PluginHello { repeated CustomItemDefinition custom_items = 5; } -message CommandSpec { - string name = 1; - string description = 2; - repeated string aliases = 3; -} - message LogMessage { string level = 1; string message = 2; From 6c474f2107fd18cbda856cfe2ea48d688351d781 Mon Sep 17 00:00:00 2001 From: HashimTheArab Date: Thu, 13 Nov 2025 20:14:33 +0300 Subject: [PATCH 2/2] refactor: add php bins to install script for: macos arm64 and x86_64, linux x86_64, windows x64 --- examples/plugins/php/setup.sh | 56 +++++++++++------------------------ 1 file changed, 18 insertions(+), 38 deletions(-) diff --git a/examples/plugins/php/setup.sh b/examples/plugins/php/setup.sh index b72e815..8992c04 100755 --- a/examples/plugins/php/setup.sh +++ b/examples/plugins/php/setup.sh @@ -15,40 +15,20 @@ if [[ "$OS" == MINGW* ]] || [[ "$OS" == MSYS* ]] || [[ "$OS" == CYGWIN* ]]; then OS="Windows" fi -# OVERRIDE: Force x86_64 builds on unsupported platforms (macOS, Linux ARM64) -# Set to false to restore original behavior -FORCE_X86_64_OVERRIDE=true - -if [ "$FORCE_X86_64_OVERRIDE" = true ]; then - if [ "$OS" = "Darwin" ]; then - echo "⚠️ Using x86_64 build on macOS (will use Rosetta 2 on ARM Macs)" - OS="Linux" - ARCH="x86_64" - elif [ "$OS" = "Linux" ] && ([ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]); then - echo "⚠️ Using x86_64 build on Linux ARM64 (requires emulation support)" - ARCH="x86_64" - fi -fi - -# PHP build URL (PocketMine PHP 8.4 with gRPC built-in) -# Note: Only Linux x86_64 and Windows x64 pre-built binaries are available +# PHP build URL (PocketMine PHP 8.3 with gRPC built-in) +# Source: secmc/PHP-Binaries if [ "$OS" = "Darwin" ]; then - echo "❌ Pre-built PHP binaries are not available for macOS" - echo "" - echo "Please use one of these alternatives:" - echo "" - echo " Option 1: Use system PHP with manual gRPC installation" - echo " - Install PHP 8.1+ via Homebrew: brew install php" - echo " - Install gRPC extension: pecl install grpc" - echo " - Install protobuf extension: pecl install protobuf" - echo "" - echo " Option 2: Use Docker" - echo " - See CUSTOM_PHP.md for Docker setup instructions" - echo "" - echo " Option 3: Run on Linux (VM or WSL)" - echo " - Transfer your plugin to a Linux x86_64 system" - echo "" - exit 1 + # macOS - both arm64 and x86_64 supported! + if [ "$ARCH" = "arm64" ]; then + PHP_BUILD_URL="https://github.com/secmc/PHP-Binaries/releases/download/pm5-php-8.3-latest/PHP-8.3-MacOS-arm64-PM5.tar.gz" + PHP_BIN="bin/php7/bin/php" + IS_WINDOWS=false + else + # x86_64 or other arch - use x86_64 build + PHP_BUILD_URL="https://github.com/secmc/PHP-Binaries/releases/download/pm5-php-8.3-latest/PHP-8.3-MacOS-x86_64-PM5.tar.gz" + PHP_BIN="bin/php7/bin/php" + IS_WINDOWS=false + fi elif [ "$OS" = "Linux" ]; then if [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then echo "❌ Pre-built PHP binaries are not available for Linux ARM64" @@ -67,18 +47,18 @@ elif [ "$OS" = "Linux" ]; then exit 1 else # Linux x86_64 - supported! - PHP_BUILD_URL="https://github.com/NetherGamesMC/php-build-scripts/releases/download/pm5-php-8.4-latest/PHP-8.4-Linux-x86_64-PM5.tar.gz" + PHP_BUILD_URL="https://github.com/secmc/PHP-Binaries/releases/download/pm5-php-8.3-latest/PHP-8.3-Linux-x86_64-PM5.tar.gz" PHP_BIN="bin/php7/bin/php" IS_WINDOWS=false fi elif [ "$OS" = "Windows" ]; then # Windows x64 - supported! - PHP_BUILD_URL="https://github.com/NetherGamesMC/php-build-scripts/releases/download/pm5-php-8.4-latest/PHP-8.4-Windows-x64-PM5.zip" + PHP_BUILD_URL="https://github.com/secmc/PHP-Binaries/releases/download/pm5-php-8.3-latest/PHP-8.3-Windows-x64-PM5.zip" PHP_BIN="bin/php/php.exe" IS_WINDOWS=true else echo "❌ Unsupported OS: $OS" - echo " Pre-built binaries available for: Linux x86_64, Windows x64" + echo " Pre-built binaries available for: macOS (arm64/x86_64), Linux x86_64, Windows x64" echo " See CUSTOM_PHP.md for manual installation on other platforms" exit 1 fi @@ -91,8 +71,8 @@ if [ -f "$PHP_BIN" ]; then PHP_VERSION=$($PHP_BIN -v | head -n 1) echo " $PHP_VERSION" else - echo "📥 Downloading pre-compiled PHP 8.4 with gRPC..." - echo " Source: NetherGamesMC/php-build-scripts" + echo "📥 Downloading pre-compiled PHP 8.3 with gRPC..." + echo " Source: secmc/PHP-Binaries" echo "" # Download PHP build