mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-03-07 01:07:22 +08:00
Update Grasscutter to v1.0.0
Merge development into stable (and all the support hell that comes with it).
This commit is contained in:
commit
fa6bc66ea5
@ -60,12 +60,19 @@ There is a dummy user named "Server" in every player's friends list that you can
|
|||||||
|
|
||||||
`!resetconst` - Resets the constellation level on your current active character, will need to relog after using the command to see any changes.
|
`!resetconst` - Resets the constellation level on your current active character, will need to relog after using the command to see any changes.
|
||||||
|
|
||||||
`!sethp [hp]`
|
`!setstats [stats] [amount]` - Changes the current character's specified stat.
|
||||||
|
|
||||||
`!clearartifacts` - Deletes all unequipped and unlocked level 0 artifacts, **including yellow rarity ones** from your inventory
|
`!clearartifacts` - Deletes all unequipped and unlocked level 0 artifacts, **including yellow rarity ones** from your inventory
|
||||||
|
|
||||||
|
`!pos` - Gets your current coordinate.
|
||||||
|
|
||||||
|
`!weather [weather id] [climate id]` - Changes the current weather.
|
||||||
|
|
||||||
*More commands will be updated in the [wiki](https://github.com/Melledy/Grasscutter/wiki/).*
|
*More commands will be updated in the [wiki](https://github.com/Melledy/Grasscutter/wiki/).*
|
||||||
|
|
||||||
|
### Bonus
|
||||||
|
When you want to teleport to somewhere, use the ingame marking function on Map, click Confirm. You will see your character falling from a very high destination, exact location that you marked.
|
||||||
|
|
||||||
# Quick Troubleshooting
|
# Quick Troubleshooting
|
||||||
* If compiling wasn't successful, please check your JDK installation (must be JDK 8 and validated JDK's bin PATH variable)
|
* If compiling wasn't successful, please check your JDK installation (must be JDK 8 and validated JDK's bin PATH variable)
|
||||||
* My client doesn't connect, doesn't login, 4206, etc... - Mostly your proxy daemon setup is *the issue*, if using Fiddler make sure it running on another port except 8888
|
* My client doesn't connect, doesn't login, 4206, etc... - Mostly your proxy daemon setup is *the issue*, if using Fiddler make sure it running on another port except 8888
|
||||||
|
24
build.gradle
24
build.gradle
@ -23,19 +23,21 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile fileTree(dir: 'lib', include: '*.jar')
|
implementation fileTree(dir: 'lib', include: ['*.jar'])
|
||||||
|
|
||||||
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.32'
|
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.32'
|
||||||
compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.6'
|
implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.6'
|
||||||
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.6'
|
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.6'
|
||||||
compile group: 'io.netty', name: 'netty-all', version: '4.1.69.Final'
|
implementation group: 'io.netty', name: 'netty-all', version: '4.1.69.Final'
|
||||||
|
|
||||||
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.8'
|
implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.8'
|
||||||
compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.18.1'
|
implementation group: 'com.google.protobuf', name: 'protobuf-java', version: '3.18.1'
|
||||||
|
|
||||||
compile group: 'org.reflections', name: 'reflections', version: '0.9.12'
|
implementation group: 'org.reflections', name: 'reflections', version: '0.9.12'
|
||||||
|
|
||||||
compile group: 'dev.morphia.morphia', name: 'core', version: '1.6.1'
|
implementation group: 'dev.morphia.morphia', name: 'core', version: '1.6.1'
|
||||||
|
|
||||||
|
implementation group: 'org.greenrobot', name: 'eventbus-java', version: '3.3.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
application {
|
application {
|
||||||
@ -51,9 +53,11 @@ jar {
|
|||||||
jar.baseName = 'grasscutter'
|
jar.baseName = 'grasscutter'
|
||||||
|
|
||||||
from {
|
from {
|
||||||
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
|
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
duplicatesStrategy = DuplicatesStrategy.INCLUDE
|
||||||
|
|
||||||
from('src/main/java') {
|
from('src/main/java') {
|
||||||
include '*.xml'
|
include '*.xml'
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
"bannerType": "EVENT",
|
"bannerType": "EVENT",
|
||||||
"prefabPath": "GachaShowPanel_A079",
|
"prefabPath": "GachaShowPanel_A079",
|
||||||
"previewPrefabPath": "UI_Tab_GachaShowPanel_A079",
|
"previewPrefabPath": "UI_Tab_GachaShowPanel_A079",
|
||||||
"titlePath": "UI_GACHA_SHOW_PANEL_A079_TITLE",
|
"titlePath": "UI_GACHA_SHOW_PANEL_A048_TITLE",
|
||||||
"costItem": 223,
|
"costItem": 223,
|
||||||
"beginTime": 0,
|
"beginTime": 0,
|
||||||
"endTime": 1924992000,
|
"endTime": 1924992000,
|
||||||
@ -34,7 +34,7 @@
|
|||||||
"bannerType": "WEAPON",
|
"bannerType": "WEAPON",
|
||||||
"prefabPath": "GachaShowPanel_A080",
|
"prefabPath": "GachaShowPanel_A080",
|
||||||
"previewPrefabPath": "UI_Tab_GachaShowPanel_A080",
|
"previewPrefabPath": "UI_Tab_GachaShowPanel_A080",
|
||||||
"titlePath": "UI_GACHA_SHOW_PANEL_A080_TITLE",
|
"titlePath": "UI_GACHA_SHOW_PANEL_A021_TITLE",
|
||||||
"costItem": 223,
|
"costItem": 223,
|
||||||
"beginTime": 0,
|
"beginTime": 0,
|
||||||
"endTime": 1924992000,
|
"endTime": 1924992000,
|
||||||
|
File diff suppressed because one or more lines are too long
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.3-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
9
proxy.py
9
proxy.py
@ -16,12 +16,14 @@
|
|||||||
# - mitmdump from mitmproxy
|
# - mitmdump from mitmproxy
|
||||||
#
|
#
|
||||||
# @author MlgmXyysd
|
# @author MlgmXyysd
|
||||||
# @version 1.0
|
# @version 1.1
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
|
|
||||||
from mitmproxy import http
|
from mitmproxy import http
|
||||||
|
from proxy_config import USE_SSL
|
||||||
from proxy_config import REMOTE_HOST
|
from proxy_config import REMOTE_HOST
|
||||||
|
from proxy_config import REMOTE_PORT
|
||||||
|
|
||||||
class MlgmXyysd_Genshin_Impact_Proxy:
|
class MlgmXyysd_Genshin_Impact_Proxy:
|
||||||
|
|
||||||
@ -60,7 +62,12 @@ class MlgmXyysd_Genshin_Impact_Proxy:
|
|||||||
|
|
||||||
def request(self, flow: http.HTTPFlow) -> None:
|
def request(self, flow: http.HTTPFlow) -> None:
|
||||||
if flow.request.host in self.LIST_DOMAINS:
|
if flow.request.host in self.LIST_DOMAINS:
|
||||||
|
if USE_SSL:
|
||||||
|
flow.request.scheme = "https"
|
||||||
|
else:
|
||||||
|
flow.request.scheme = "http"
|
||||||
flow.request.host = REMOTE_HOST
|
flow.request.host = REMOTE_HOST
|
||||||
|
flow.request.port = REMOTE_PORT
|
||||||
|
|
||||||
addons = [
|
addons = [
|
||||||
MlgmXyysd_Genshin_Impact_Proxy()
|
MlgmXyysd_Genshin_Impact_Proxy()
|
||||||
|
@ -1,2 +1,4 @@
|
|||||||
# This can also be replaced with another IP address.
|
# This can also be replaced with another IP address.
|
||||||
REMOTE_HOST = "localhost"
|
USE_SSL = True
|
||||||
|
REMOTE_HOST = "127.0.0.1"
|
||||||
|
REMOTE_PORT = 443
|
115
run.cmd
115
run.cmd
@ -1,115 +0,0 @@
|
|||||||
@rem
|
|
||||||
@rem Copyright (C) 2002-2022 MlgmXyysd All Rights Reserved.
|
|
||||||
@rem
|
|
||||||
|
|
||||||
@if "%DEBUG%" == "" echo off
|
|
||||||
pushd %~dp0
|
|
||||||
title Grasscutter
|
|
||||||
call :LOG [INFO] Grasscutter
|
|
||||||
call :LOG [INFO] Initializing...
|
|
||||||
|
|
||||||
@rem This will not work if your java or mitmproxy is in a different location, plugin as necessary
|
|
||||||
@rem this just saves you from changing your PATH
|
|
||||||
set JAVA_PATH=C:\Program Files\Java\jdk1.8.0_202\
|
|
||||||
set MITMPROXY_PATH=%~dp0
|
|
||||||
set PROXY_SCRIPT=proxy
|
|
||||||
@rem TODO: MongoDB integration
|
|
||||||
set SERVER_PATH=%~dp0
|
|
||||||
|
|
||||||
@rem mitmproxy not found, server only
|
|
||||||
if not exist "%MITMPROXY_PATH%mitmdump.exe" (
|
|
||||||
call :LOG [WARN] mitmproxy not found, server only mode.
|
|
||||||
goto :SERVER
|
|
||||||
)
|
|
||||||
@rem proxy script not found, server only
|
|
||||||
if not exist "%PROXY_SCRIPT%.py" (
|
|
||||||
if not exist "%PROXY_SCRIPT%.pyc" (
|
|
||||||
call :LOG [WARN] Missing proxy script or compiled proxy script, server only mode.
|
|
||||||
goto :SERVER
|
|
||||||
) else set PROXY_SCRIPT=%PROXY_SCRIPT%.pyc
|
|
||||||
) else set PROXY_SCRIPT=%PROXY_SCRIPT%.py
|
|
||||||
|
|
||||||
:PROXY
|
|
||||||
@rem UAC Administrator privileges
|
|
||||||
>nul 2>&1 reg query "HKU\S-1-5-19" || (
|
|
||||||
call :LOG [WARN] Currently running with non Administrator privileges, raising...
|
|
||||||
echo set UAC = CreateObject^("Shell.Application"^) > "%temp%\UAC.vbs"
|
|
||||||
echo UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%temp%\UAC.vbs"
|
|
||||||
"%temp%\UAC.vbs"
|
|
||||||
del /f /q "%temp%\UAC.vbs" >nul 2>nul
|
|
||||||
exit /b
|
|
||||||
)
|
|
||||||
|
|
||||||
set PROXY=true
|
|
||||||
@rem Store original proxy settings
|
|
||||||
for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable 2^>nul') do set "ORIG_PROXY_ENABLE=%%b"
|
|
||||||
for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer 2^>nul') do set "ORIG_PROXY_SERVER=%%b"
|
|
||||||
|
|
||||||
call :LOG [INFO] Starting proxy daemon...
|
|
||||||
@rem TODO: External proxy when ORIG_PROXY_ENABLE == 0x1
|
|
||||||
start /min "" "%MITMPROXY_PATH%mitmdump.exe" -s %PROXY_SCRIPT% --ssl-insecure
|
|
||||||
|
|
||||||
@rem CA certificate for possible HTTPS scheme
|
|
||||||
call :LOG [INFO] Waiting for CA certificate generation...
|
|
||||||
set CA_CERT_FILE="%USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer"
|
|
||||||
|
|
||||||
set /A TIMEOUT_COUNT=0
|
|
||||||
|
|
||||||
:CERT_CA_CHECK
|
|
||||||
if not exist %CA_CERT_FILE% (
|
|
||||||
timeout /T 1 >nul 2>nul
|
|
||||||
set /A TIMEOUT_COUNT+=1
|
|
||||||
goto CERT_CA_CHECK
|
|
||||||
)
|
|
||||||
:EXTRA_TIMEOUT
|
|
||||||
if %TIMEOUT_COUNT% LEQ 2 (
|
|
||||||
timeout /T 1 >nul 2>nul
|
|
||||||
set /A TIMEOUT_COUNT+=1
|
|
||||||
goto EXTRA_TIMEOUT
|
|
||||||
)
|
|
||||||
call :LOG [INFO] Adding CA certificate to store...
|
|
||||||
certutil -addstore root %CA_CERT_FILE% >nul 2>nul
|
|
||||||
|
|
||||||
call :LOG [INFO] Setting up network proxy...
|
|
||||||
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f >nul 2>nul
|
|
||||||
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "127.0.0.1:8080" /f >nul 2>nul
|
|
||||||
|
|
||||||
:SERVER
|
|
||||||
if not exist "%JAVA_PATH%bin\java.exe" (
|
|
||||||
call :LOG [ERROR] Java not found.
|
|
||||||
goto :EXIT
|
|
||||||
)
|
|
||||||
if not exist "%SERVER_PATH%grasscutter.jar" (
|
|
||||||
call :LOG [ERROR] Server jar not found.
|
|
||||||
goto :EXIT
|
|
||||||
)
|
|
||||||
call :LOG [INFO] Starting server...
|
|
||||||
"%JAVA_PATH%bin\java.exe" -jar "%SERVER_PATH%grasscutter.jar"
|
|
||||||
call :LOG [INFO] Server stopped
|
|
||||||
|
|
||||||
:EXIT
|
|
||||||
if "%PROXY%" == "" (
|
|
||||||
call :LOG [INFO] Proxy not started, no need to clean up.
|
|
||||||
) else (
|
|
||||||
call :LOG [INFO] Restoring network settings...
|
|
||||||
|
|
||||||
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d "%ORIG_PROXY_ENABLE%" /f >nul 2>nul
|
|
||||||
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "%ORIG_PROXY_SERVER%" /f >nul 2>nul
|
|
||||||
|
|
||||||
call :LOG [INFO] Shutting down proxy daemon...
|
|
||||||
taskkill /t /f /im mitmdump.exe >nul 2>nul
|
|
||||||
|
|
||||||
call :LOG [INFO] Removing CA certificate...
|
|
||||||
|
|
||||||
for /F "tokens=2" %%s in ('certutil -dump %CA_CERT_FILE% ^| findstr ^"^sha1^"') do (
|
|
||||||
set SERIAL=%%s
|
|
||||||
)
|
|
||||||
|
|
||||||
certutil -delstore root %SERIAL% >nul 2>nul
|
|
||||||
)
|
|
||||||
|
|
||||||
call :LOG [INFO] See you again :)
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:LOG
|
|
||||||
echo [%time:~0,8%] %*
|
|
@ -1,307 +0,0 @@
|
|||||||
package emu.grasscutter.commands;
|
|
||||||
|
|
||||||
import java.lang.reflect.Modifier;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import emu.grasscutter.data.GenshinData;
|
|
||||||
import emu.grasscutter.data.def.ItemData;
|
|
||||||
import emu.grasscutter.data.def.MonsterData;
|
|
||||||
import emu.grasscutter.game.GenshinPlayer;
|
|
||||||
import emu.grasscutter.game.avatar.GenshinAvatar;
|
|
||||||
import emu.grasscutter.game.entity.EntityAvatar;
|
|
||||||
import emu.grasscutter.game.entity.EntityItem;
|
|
||||||
import emu.grasscutter.game.entity.EntityMonster;
|
|
||||||
import emu.grasscutter.game.entity.GenshinEntity;
|
|
||||||
import emu.grasscutter.game.inventory.GenshinItem;
|
|
||||||
import emu.grasscutter.game.inventory.ItemType;
|
|
||||||
import emu.grasscutter.game.props.ActionReason;
|
|
||||||
import emu.grasscutter.game.props.FightProperty;
|
|
||||||
import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify;
|
|
||||||
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
|
||||||
import emu.grasscutter.utils.Position;
|
|
||||||
|
|
||||||
public class PlayerCommands {
|
|
||||||
private static HashMap<String, PlayerCommand> list = new HashMap<>();
|
|
||||||
|
|
||||||
static {
|
|
||||||
try {
|
|
||||||
// Look for classes
|
|
||||||
for (Class<?> cls : PlayerCommands.class.getDeclaredClasses()) {
|
|
||||||
// Get non abstract classes
|
|
||||||
if (!Modifier.isAbstract(cls.getModifiers())) {
|
|
||||||
Command commandAnnotation = cls.getAnnotation(Command.class);
|
|
||||||
PlayerCommand command = (PlayerCommand) cls.newInstance();
|
|
||||||
|
|
||||||
if (commandAnnotation != null) {
|
|
||||||
command.setLevel(commandAnnotation.gmLevel());
|
|
||||||
for (String alias : commandAnnotation.aliases()) {
|
|
||||||
if (alias.length() == 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
String commandName = "!" + alias;
|
|
||||||
list.put(commandName, command);
|
|
||||||
commandName = "/" + alias;
|
|
||||||
list.put(commandName, command);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String commandName = "!" + cls.getSimpleName().toLowerCase();
|
|
||||||
list.put(commandName, command);
|
|
||||||
commandName = "/" + cls.getSimpleName().toLowerCase();
|
|
||||||
list.put(commandName, command);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void handle(GenshinPlayer player, String msg) {
|
|
||||||
String[] split = msg.split(" ");
|
|
||||||
|
|
||||||
// End if invalid
|
|
||||||
if (split.length == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
String first = split[0].toLowerCase();
|
|
||||||
PlayerCommand c = PlayerCommands.list.get(first);
|
|
||||||
|
|
||||||
if (c != null) {
|
|
||||||
// Level check
|
|
||||||
if (player.getGmLevel() < c.getLevel()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Execute
|
|
||||||
int len = Math.min(first.length() + 1, msg.length());
|
|
||||||
c.execute(player, msg.substring(len));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static abstract class PlayerCommand {
|
|
||||||
// GM level required to use this command
|
|
||||||
private int level;
|
|
||||||
protected int getLevel() { return this.level; }
|
|
||||||
protected void setLevel(int minLevel) { this.level = minLevel; }
|
|
||||||
|
|
||||||
// Main
|
|
||||||
public abstract void execute(GenshinPlayer player, String raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ================ Commands ================
|
|
||||||
|
|
||||||
@Command(aliases = {"g", "item", "additem"}, helpText = "/give [item id] [count] - Gives {count} amount of {item id}")
|
|
||||||
public static class Give extends PlayerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, String raw) {
|
|
||||||
String[] split = raw.split(" ");
|
|
||||||
int itemId = 0, count = 1;
|
|
||||||
|
|
||||||
try {
|
|
||||||
itemId = Integer.parseInt(split[0]);
|
|
||||||
} catch (Exception e) {
|
|
||||||
itemId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
count = Math.max(Math.min(Integer.parseInt(split[1]), Integer.MAX_VALUE), 1);
|
|
||||||
} catch (Exception e) {
|
|
||||||
count = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Give
|
|
||||||
ItemData itemData = GenshinData.getItemDataMap().get(itemId);
|
|
||||||
GenshinItem item;
|
|
||||||
|
|
||||||
if (itemData == null) {
|
|
||||||
player.dropMessage("Error: Item data not found");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (itemData.isEquip()) {
|
|
||||||
List<GenshinItem> items = new LinkedList<>();
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
item = new GenshinItem(itemData);
|
|
||||||
items.add(item);
|
|
||||||
}
|
|
||||||
player.getInventory().addItems(items);
|
|
||||||
player.sendPacket(new PacketItemAddHintNotify(items, ActionReason.SubfieldDrop));
|
|
||||||
} else {
|
|
||||||
item = new GenshinItem(itemData, count);
|
|
||||||
player.getInventory().addItem(item);
|
|
||||||
player.sendPacket(new PacketItemAddHintNotify(item, ActionReason.SubfieldDrop));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(aliases = {"d"}, helpText = "/drop [item id] [count] - Drops {count} amount of {item id}")
|
|
||||||
public static class Drop extends PlayerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, String raw) {
|
|
||||||
String[] split = raw.split(" ");
|
|
||||||
int itemId = 0, count = 1;
|
|
||||||
|
|
||||||
try {
|
|
||||||
itemId = Integer.parseInt(split[0]);
|
|
||||||
} catch (Exception e) {
|
|
||||||
itemId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
count = Math.max(Math.min(Integer.parseInt(split[1]), Integer.MAX_VALUE), 1);
|
|
||||||
} catch (Exception e) {
|
|
||||||
count = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Give
|
|
||||||
ItemData itemData = GenshinData.getItemDataMap().get(itemId);
|
|
||||||
|
|
||||||
if (itemData == null) {
|
|
||||||
player.dropMessage("Error: Item data not found");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (itemData.isEquip()) {
|
|
||||||
float range = (5f + (.1f * count));
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
Position pos = player.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2));
|
|
||||||
EntityItem entity = new EntityItem(player.getWorld(), player, itemData, pos, 1);
|
|
||||||
player.getWorld().addEntity(entity);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
EntityItem entity = new EntityItem(player.getWorld(), player, itemData, player.getPos().clone().addY(3f), count);
|
|
||||||
player.getWorld().addEntity(entity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(helpText = "/spawn [monster id] [count] - Creates {count} amount of {item id}")
|
|
||||||
public static class Spawn extends PlayerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, String raw) {
|
|
||||||
String[] split = raw.split(" ");
|
|
||||||
int monsterId = 0, count = 1, level = 1;
|
|
||||||
|
|
||||||
try {
|
|
||||||
monsterId = Integer.parseInt(split[0]);
|
|
||||||
} catch (Exception e) {
|
|
||||||
monsterId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
level = Math.max(Math.min(Integer.parseInt(split[1]), 200), 1);
|
|
||||||
} catch (Exception e) {
|
|
||||||
level = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
count = Math.max(Math.min(Integer.parseInt(split[2]), 1000), 1);
|
|
||||||
} catch (Exception e) {
|
|
||||||
count = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Give
|
|
||||||
MonsterData monsterData = GenshinData.getMonsterDataMap().get(monsterId);
|
|
||||||
|
|
||||||
if (monsterData == null) {
|
|
||||||
player.dropMessage("Error: Monster data not found");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
float range = (5f + (.1f * count));
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
Position pos = player.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2));
|
|
||||||
EntityMonster entity = new EntityMonster(player.getWorld(), monsterData, pos, level);
|
|
||||||
player.getWorld().addEntity(entity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(helpText = "/killall")
|
|
||||||
public static class KillAll extends PlayerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, String raw) {
|
|
||||||
List<GenshinEntity> toRemove = new LinkedList<>();
|
|
||||||
for (GenshinEntity entity : player.getWorld().getEntities().values()) {
|
|
||||||
if (entity instanceof EntityMonster) {
|
|
||||||
toRemove.add(entity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
toRemove.forEach(e -> player.getWorld().killEntity(e, 0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(helpText = "/resetconst - Resets all constellations for the currently active character")
|
|
||||||
public static class ResetConst extends PlayerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, String raw) {
|
|
||||||
EntityAvatar entity = player.getTeamManager().getCurrentAvatarEntity();
|
|
||||||
|
|
||||||
if (entity == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
GenshinAvatar avatar = entity.getAvatar();
|
|
||||||
|
|
||||||
avatar.getTalentIdList().clear();
|
|
||||||
avatar.setCoreProudSkillLevel(0);
|
|
||||||
avatar.recalcStats();
|
|
||||||
avatar.save();
|
|
||||||
|
|
||||||
player.dropMessage("Constellations for " + entity.getAvatar().getAvatarData().getName() + " have been reset. Please relogin to see changes.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(helpText = "/godmode - Prevents you from taking damage")
|
|
||||||
public static class Godmode extends PlayerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, String raw) {
|
|
||||||
player.setGodmode(!player.hasGodmode());
|
|
||||||
player.dropMessage("Godmode is now " + (player.hasGodmode() ? "ON" : "OFF"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(helpText = "/sethp [hp]")
|
|
||||||
public static class Sethp extends PlayerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, String raw) {
|
|
||||||
String[] split = raw.split(" ");
|
|
||||||
int hp = 0;
|
|
||||||
|
|
||||||
try {
|
|
||||||
hp = Math.max(Integer.parseInt(split[0]), 1);
|
|
||||||
} catch (Exception e) {
|
|
||||||
hp = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
EntityAvatar entity = player.getTeamManager().getCurrentAvatarEntity();
|
|
||||||
|
|
||||||
if (entity == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, hp);
|
|
||||||
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(aliases = {"clearart"}, helpText = "/clearartifacts")
|
|
||||||
public static class ClearArtifacts extends PlayerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, String raw) {
|
|
||||||
List<GenshinItem> toRemove = new LinkedList<>();
|
|
||||||
for (GenshinItem item : player.getInventory().getItems().values()) {
|
|
||||||
if (item.getItemType() == ItemType.ITEM_RELIQUARY && item.getLevel() == 1 && item.getExp() == 0 && !item.isLocked() && !item.isEquipped()) {
|
|
||||||
toRemove.add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
player.getInventory().removeItems(toRemove);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,171 +0,0 @@
|
|||||||
package emu.grasscutter.commands;
|
|
||||||
|
|
||||||
import java.lang.reflect.Modifier;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import emu.grasscutter.Grasscutter;
|
|
||||||
import emu.grasscutter.data.GenshinData;
|
|
||||||
import emu.grasscutter.data.def.ItemData;
|
|
||||||
import emu.grasscutter.database.DatabaseHelper;
|
|
||||||
import emu.grasscutter.game.GenshinPlayer;
|
|
||||||
import emu.grasscutter.game.inventory.GenshinItem;
|
|
||||||
import emu.grasscutter.utils.Crypto;
|
|
||||||
import emu.grasscutter.utils.Utils;
|
|
||||||
|
|
||||||
public class ServerCommands {
|
|
||||||
private static HashMap<String, ServerCommand> list = new HashMap<>();
|
|
||||||
|
|
||||||
static {
|
|
||||||
try {
|
|
||||||
// Look for classes
|
|
||||||
for (Class<?> cls : ServerCommands.class.getDeclaredClasses()) {
|
|
||||||
// Get non abstract classes
|
|
||||||
if (!Modifier.isAbstract(cls.getModifiers())) {
|
|
||||||
String commandName = cls.getSimpleName().toLowerCase();
|
|
||||||
list.put(commandName, (ServerCommand) cls.newInstance());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void handle(String msg) {
|
|
||||||
String[] split = msg.split(" ");
|
|
||||||
|
|
||||||
// End if invalid
|
|
||||||
if (split.length == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
String first = split[0].toLowerCase();
|
|
||||||
ServerCommand c = ServerCommands.list.get(first);
|
|
||||||
|
|
||||||
if (c != null) {
|
|
||||||
// Execute
|
|
||||||
int len = Math.min(first.length() + 1, msg.length());
|
|
||||||
c.execute(msg.substring(len));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static abstract class ServerCommand {
|
|
||||||
public abstract void execute(String raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ================ Commands ================
|
|
||||||
|
|
||||||
public static class Reload extends ServerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(String raw) {
|
|
||||||
Grasscutter.getLogger().info("Reloading config.");
|
|
||||||
Grasscutter.loadConfig();
|
|
||||||
Grasscutter.getDispatchServer().loadQueries();
|
|
||||||
Grasscutter.getLogger().info("Reload complete.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class sendMsg extends ServerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(String raw) {
|
|
||||||
List<String> split = Arrays.asList(raw.split(" "));
|
|
||||||
|
|
||||||
if (split.size() < 2) {
|
|
||||||
Grasscutter.getLogger().error("Invalid amount of args");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String playerID = split.get(0);
|
|
||||||
String message = split.stream().skip(1).collect(Collectors.joining(" "));
|
|
||||||
|
|
||||||
|
|
||||||
emu.grasscutter.game.Account account = DatabaseHelper.getAccountByPlayerId(Integer.parseInt(playerID));
|
|
||||||
if (account != null) {
|
|
||||||
GenshinPlayer player = Grasscutter.getGameServer().getPlayerById(Integer.parseInt(playerID));
|
|
||||||
if(player != null) {
|
|
||||||
player.dropMessage(message);
|
|
||||||
Grasscutter.getLogger().info(String.format("Successfully sent message to %s: %s", playerID, message));
|
|
||||||
} else {
|
|
||||||
Grasscutter.getLogger().error("Player not online");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Grasscutter.getLogger().error(String.format("Player %s does not exist", playerID));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Account extends ServerCommand {
|
|
||||||
@Override
|
|
||||||
public void execute(String raw) {
|
|
||||||
String[] split = raw.split(" ");
|
|
||||||
|
|
||||||
if (split.length < 2) {
|
|
||||||
Grasscutter.getLogger().error("Invalid amount of args");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String command = split[0].toLowerCase();
|
|
||||||
String username = split[1];
|
|
||||||
|
|
||||||
switch (command) {
|
|
||||||
case "create":
|
|
||||||
if (split.length < 2) {
|
|
||||||
Grasscutter.getLogger().error("Invalid amount of args");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int reservedId = 0;
|
|
||||||
try {
|
|
||||||
reservedId = Integer.parseInt(split[2]);
|
|
||||||
} catch (Exception e) {
|
|
||||||
reservedId = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
emu.grasscutter.game.Account account = DatabaseHelper.createAccountWithId(username, reservedId);
|
|
||||||
if (account != null) {
|
|
||||||
Grasscutter.getLogger().info("Account created" + (reservedId > 0 ? " with an id of " + reservedId : ""));
|
|
||||||
} else {
|
|
||||||
Grasscutter.getLogger().error("Account already exists");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "delete":
|
|
||||||
boolean success = DatabaseHelper.deleteAccount(username);
|
|
||||||
|
|
||||||
if (success) {
|
|
||||||
Grasscutter.getLogger().info("Account deleted");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
/*
|
|
||||||
case "setpw":
|
|
||||||
case "setpass":
|
|
||||||
case "setpassword":
|
|
||||||
if (split.length < 3) {
|
|
||||||
Grasscutter.getLogger().error("Invalid amount of args");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
account = DatabaseHelper.getAccountByName(username);
|
|
||||||
|
|
||||||
if (account == null) {
|
|
||||||
Grasscutter.getLogger().error("No account found!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
token = split[2];
|
|
||||||
token = PasswordHelper.hashPassword(token);
|
|
||||||
|
|
||||||
account.setPassword(token);
|
|
||||||
DatabaseHelper.saveAccount(account);
|
|
||||||
|
|
||||||
Grasscutter.getLogger().info("Password set");
|
|
||||||
break;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,19 +1,8 @@
|
|||||||
package emu.grasscutter;
|
package emu.grasscutter;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public final class Config {
|
public final class Config {
|
||||||
public String DispatchServerIp = "127.0.0.1";
|
|
||||||
public String DispatchServerPublicIp = "";
|
|
||||||
public int DispatchServerPort = 443;
|
|
||||||
public String DispatchServerKeystorePath = "./keystore.p12";
|
|
||||||
public String DispatchServerKeystorePassword = "";
|
|
||||||
public Boolean UseSSL = true;
|
|
||||||
|
|
||||||
public String GameServerName = "Test";
|
|
||||||
public String GameServerIp = "127.0.0.1";
|
|
||||||
public String GameServerPublicIp = "";
|
|
||||||
public int GameServerPort = 22102;
|
|
||||||
|
|
||||||
public int UploadLogPort = 80;
|
|
||||||
|
|
||||||
public String DatabaseUrl = "mongodb://localhost:27017";
|
public String DatabaseUrl = "mongodb://localhost:27017";
|
||||||
public String DatabaseCollection = "grasscutter";
|
public String DatabaseCollection = "grasscutter";
|
||||||
@ -23,26 +12,52 @@ public final class Config {
|
|||||||
public String PACKETS_FOLDER = "./packets/";
|
public String PACKETS_FOLDER = "./packets/";
|
||||||
public String DUMPS_FOLDER = "./dumps/";
|
public String DUMPS_FOLDER = "./dumps/";
|
||||||
public String KEY_FOLDER = "./keys/";
|
public String KEY_FOLDER = "./keys/";
|
||||||
|
|
||||||
|
public String RunMode = "HYBRID"; // HYBRID, DISPATCH_ONLY, GAME_ONLY
|
||||||
|
public GameServerOptions GameServer = new GameServerOptions();
|
||||||
|
public DispatchServerOptions DispatchServer = new DispatchServerOptions();
|
||||||
|
|
||||||
|
public GameServerOptions getGameServerOptions() {
|
||||||
|
return GameServer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DispatchServerOptions getDispatchOptions() { return DispatchServer; }
|
||||||
|
|
||||||
|
public static class DispatchServerOptions {
|
||||||
|
public String Ip = "0.0.0.0";
|
||||||
|
public String PublicIp = "127.0.0.1";
|
||||||
|
public int Port = 443;
|
||||||
|
public String KeystorePath = "./keystore.p12";
|
||||||
|
public String KeystorePassword = "";
|
||||||
|
public Boolean UseSSL = true;
|
||||||
|
|
||||||
|
public boolean AutomaticallyCreateAccounts = false;
|
||||||
|
|
||||||
|
public RegionInfo[] GameServers = {};
|
||||||
|
|
||||||
|
public RegionInfo[] getGameServers() {
|
||||||
|
return GameServers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class RegionInfo {
|
||||||
|
public String Name = "os_usa";
|
||||||
|
public String Title = "Test";
|
||||||
|
public String Ip = "127.0.0.1";
|
||||||
|
public int Port = 22102;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class GameServerOptions {
|
||||||
|
public String Name = "Test";
|
||||||
|
public String Ip = "0.0.0.0";
|
||||||
|
public String PublicIp = "127.0.0.1";
|
||||||
|
public int Port = 22102;
|
||||||
|
|
||||||
|
public String DispatchServerDatabaseUrl = "mongodb://localhost:27017";
|
||||||
|
public String DispatchServerDatabaseCollection = "grasscutter";
|
||||||
|
|
||||||
public boolean LOG_PACKETS = false;
|
public boolean LOG_PACKETS = false;
|
||||||
|
|
||||||
public GameRates Game = new GameRates();
|
|
||||||
public ServerOptions ServerOptions = new ServerOptions();
|
|
||||||
|
|
||||||
public GameRates getGameRates() {
|
|
||||||
return Game;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ServerOptions getServerOptions() {
|
|
||||||
return ServerOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class GameRates {
|
|
||||||
public float ADVENTURE_EXP_RATE = 1.0f;
|
|
||||||
public float MORA_RATE = 1.0f;
|
|
||||||
public float DOMAIN_DROP_RATE = 1.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class ServerOptions {
|
|
||||||
public int InventoryLimitWeapon = 2000;
|
public int InventoryLimitWeapon = 2000;
|
||||||
public int InventoryLimitRelic = 2000;
|
public int InventoryLimitRelic = 2000;
|
||||||
public int InventoryLimitMaterial = 2000;
|
public int InventoryLimitMaterial = 2000;
|
||||||
@ -51,8 +66,18 @@ public final class Config {
|
|||||||
public int MaxAvatarsInTeam = 4;
|
public int MaxAvatarsInTeam = 4;
|
||||||
public int MaxAvatarsInTeamMultiplayer = 4;
|
public int MaxAvatarsInTeamMultiplayer = 4;
|
||||||
public int MaxEntityLimit = 1000; // Max entity limit per world. // TODO: Enforce later.
|
public int MaxEntityLimit = 1000; // Max entity limit per world. // TODO: Enforce later.
|
||||||
|
public boolean WatchGacha = false;
|
||||||
public int[] WelcomeEmotes = {2007, 1002, 4010};
|
public int[] WelcomeEmotes = {2007, 1002, 4010};
|
||||||
public String WelcomeMotd = "Welcome to Grasscutter emu";
|
public String WelcomeMotd = "Welcome to Grasscutter emu";
|
||||||
public boolean AutomaticallyCreateAccounts = false;
|
|
||||||
|
public GameRates Game = new GameRates();
|
||||||
|
|
||||||
|
public GameRates getGameRates() { return Game; }
|
||||||
|
|
||||||
|
public static class GameRates {
|
||||||
|
public float ADVENTURE_EXP_RATE = 1.0f;
|
||||||
|
public float MORA_RATE = 1.0f;
|
||||||
|
public float DOMAIN_DROP_RATE = 1.0f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import java.io.FileWriter;
|
|||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
|
||||||
import emu.grasscutter.commands.CommandMap;
|
import emu.grasscutter.command.CommandMap;
|
||||||
import emu.grasscutter.utils.Utils;
|
import emu.grasscutter.utils.Utils;
|
||||||
import org.reflections.Reflections;
|
import org.reflections.Reflections;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -73,11 +73,26 @@ public final class Grasscutter {
|
|||||||
DatabaseManager.initialize();
|
DatabaseManager.initialize();
|
||||||
|
|
||||||
// Start servers.
|
// Start servers.
|
||||||
|
if(getConfig().RunMode.equalsIgnoreCase("HYBRID")) {
|
||||||
dispatchServer = new DispatchServer();
|
dispatchServer = new DispatchServer();
|
||||||
dispatchServer.start();
|
dispatchServer.start();
|
||||||
|
|
||||||
gameServer = new GameServer(new InetSocketAddress(getConfig().GameServerIp, getConfig().GameServerPort));
|
gameServer = new GameServer(new InetSocketAddress(getConfig().getGameServerOptions().Ip, getConfig().getGameServerOptions().Port));
|
||||||
gameServer.start();
|
gameServer.start();
|
||||||
|
} else if(getConfig().RunMode.equalsIgnoreCase("DISPATCH_ONLY")) {
|
||||||
|
dispatchServer = new DispatchServer();
|
||||||
|
dispatchServer.start();
|
||||||
|
} else if(getConfig().RunMode.equalsIgnoreCase("GAME_ONLY")) {
|
||||||
|
gameServer = new GameServer(new InetSocketAddress(getConfig().getGameServerOptions().Ip, getConfig().getGameServerOptions().Port));
|
||||||
|
gameServer.start();
|
||||||
|
} else {
|
||||||
|
getLogger().error("Invalid server run mode. " + getConfig().RunMode);
|
||||||
|
getLogger().error("Server run mode must be 'HYBRID', 'DISPATCH_ONLY', or 'GAME_ONLY'. Unable to start Grasscutter...");
|
||||||
|
getLogger().error("Shutting down...");
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Open console.
|
// Open console.
|
||||||
startConsole();
|
startConsole();
|
||||||
@ -86,8 +101,10 @@ public final class Grasscutter {
|
|||||||
public static void loadConfig() {
|
public static void loadConfig() {
|
||||||
try (FileReader file = new FileReader(configFile)) {
|
try (FileReader file = new FileReader(configFile)) {
|
||||||
config = gson.fromJson(file, Config.class);
|
config = gson.fromJson(file, Config.class);
|
||||||
|
saveConfig();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Grasscutter.config = new Config(); saveConfig();
|
Grasscutter.config = new Config();
|
||||||
|
saveConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,9 +121,14 @@ public final class Grasscutter {
|
|||||||
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
|
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
|
||||||
while ((input = br.readLine()) != null) {
|
while ((input = br.readLine()) != null) {
|
||||||
try {
|
try {
|
||||||
|
if(getConfig().RunMode.equalsIgnoreCase("DISPATCH_ONLY")) {
|
||||||
|
getLogger().error("Commands are not supported in dispatch only mode");
|
||||||
|
return;
|
||||||
|
}
|
||||||
CommandMap.getInstance().invoke(null, input);
|
CommandMap.getInstance().invoke(null, input);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Grasscutter.getLogger().error("Command error: " + e.getMessage());
|
Grasscutter.getLogger().error("Command error: ");
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
17
src/main/java/emu/grasscutter/command/Command.java
Normal file
17
src/main/java/emu/grasscutter/command/Command.java
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
package emu.grasscutter.command;
|
||||||
|
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface Command {
|
||||||
|
String label() default "";
|
||||||
|
|
||||||
|
String usage() default "No usage specified";
|
||||||
|
|
||||||
|
String description() default "No description specified";
|
||||||
|
|
||||||
|
String[] aliases() default {};
|
||||||
|
|
||||||
|
String permission() default "";
|
||||||
|
}
|
30
src/main/java/emu/grasscutter/command/CommandHandler.java
Normal file
30
src/main/java/emu/grasscutter/command/CommandHandler.java
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package emu.grasscutter.command;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface CommandHandler {
|
||||||
|
/**
|
||||||
|
* Send a message to the target.
|
||||||
|
*
|
||||||
|
* @param player The player to send the message to, or null for the server console.
|
||||||
|
* @param message The message to send.
|
||||||
|
*/
|
||||||
|
static void sendMessage(GenshinPlayer player, String message) {
|
||||||
|
if (player == null) {
|
||||||
|
Grasscutter.getLogger().info(message);
|
||||||
|
} else {
|
||||||
|
player.dropMessage(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a player/console invokes a command.
|
||||||
|
* @param sender The player/console that invoked the command.
|
||||||
|
* @param args The arguments to the command.
|
||||||
|
*/
|
||||||
|
default void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package emu.grasscutter.commands;
|
package emu.grasscutter.command;
|
||||||
|
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.game.Account;
|
import emu.grasscutter.game.Account;
|
||||||
@ -7,17 +7,25 @@ import org.reflections.Reflections;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@SuppressWarnings("UnusedReturnValue")
|
@SuppressWarnings({"UnusedReturnValue", "unused"})
|
||||||
public final class CommandMap {
|
public final class CommandMap {
|
||||||
|
private final Map<String, CommandHandler> commands = new HashMap<>();
|
||||||
|
private final Map<String, Command> annotations = new HashMap<>();
|
||||||
|
public CommandMap() {
|
||||||
|
this(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CommandMap(boolean scan) {
|
||||||
|
if (scan) this.scan();
|
||||||
|
}
|
||||||
|
|
||||||
public static CommandMap getInstance() {
|
public static CommandMap getInstance() {
|
||||||
return Grasscutter.getGameServer().getCommandMap();
|
return Grasscutter.getGameServer().getCommandMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Map<String, CommandHandler> commands = new HashMap<>();
|
|
||||||
private final Map<String, Command> annotations = new HashMap<>();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a command handler.
|
* Register a command handler.
|
||||||
|
*
|
||||||
* @param label The command label.
|
* @param label The command label.
|
||||||
* @param command The command handler.
|
* @param command The command handler.
|
||||||
* @return Instance chaining.
|
* @return Instance chaining.
|
||||||
@ -31,30 +39,32 @@ public final class CommandMap {
|
|||||||
this.commands.put(label, command);
|
this.commands.put(label, command);
|
||||||
|
|
||||||
// Register aliases.
|
// Register aliases.
|
||||||
if(annotation.aliases().length > 0) {
|
if (annotation.aliases().length > 0) {
|
||||||
for (String alias : annotation.aliases()) {
|
for (String alias : annotation.aliases()) {
|
||||||
this.commands.put(alias, command);
|
this.commands.put(alias, command);
|
||||||
this.annotations.put(alias, annotation);
|
this.annotations.put(alias, annotation);
|
||||||
}
|
}
|
||||||
} return this;
|
}
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a registered command handler.
|
* Removes a registered command handler.
|
||||||
|
*
|
||||||
* @param label The command label.
|
* @param label The command label.
|
||||||
* @return Instance chaining.
|
* @return Instance chaining.
|
||||||
*/
|
*/
|
||||||
public CommandMap unregisterCommand(String label) {
|
public CommandMap unregisterCommand(String label) {
|
||||||
Grasscutter.getLogger().debug("Unregistered command: " + label);
|
Grasscutter.getLogger().debug("Unregistered command: " + label);
|
||||||
CommandHandler handler = this.commands.get(label);
|
CommandHandler handler = this.commands.get(label);
|
||||||
if(handler == null) return this;
|
if (handler == null) return this;
|
||||||
|
|
||||||
Command annotation = handler.getClass().getAnnotation(Command.class);
|
Command annotation = handler.getClass().getAnnotation(Command.class);
|
||||||
this.annotations.remove(label);
|
this.annotations.remove(label);
|
||||||
this.commands.remove(label);
|
this.commands.remove(label);
|
||||||
|
|
||||||
// Unregister aliases.
|
// Unregister aliases.
|
||||||
if(annotation.aliases().length > 0) {
|
if (annotation.aliases().length > 0) {
|
||||||
for (String alias : annotation.aliases()) {
|
for (String alias : annotation.aliases()) {
|
||||||
this.commands.remove(alias);
|
this.commands.remove(alias);
|
||||||
this.annotations.remove(alias);
|
this.annotations.remove(alias);
|
||||||
@ -66,16 +76,20 @@ public final class CommandMap {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a list of all registered commands.
|
* Returns a list of all registered commands.
|
||||||
|
*
|
||||||
* @return All command handlers as a list.
|
* @return All command handlers as a list.
|
||||||
*/
|
*/
|
||||||
public List<CommandHandler> getHandlersAsList() {
|
public List<CommandHandler> getHandlersAsList() {
|
||||||
return new LinkedList<>(this.commands.values());
|
return new LinkedList<>(this.commands.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<String, CommandHandler> getHandlers() { return new LinkedHashMap<>(this.commands); }
|
public HashMap<String, CommandHandler> getHandlers() {
|
||||||
|
return new LinkedHashMap<>(this.commands);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a handler by label/alias.
|
* Returns a handler by label/alias.
|
||||||
|
*
|
||||||
* @param label The command label.
|
* @param label The command label.
|
||||||
* @return The command handler.
|
* @return The command handler.
|
||||||
*/
|
*/
|
||||||
@ -85,6 +99,7 @@ public final class CommandMap {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Invoke a command handler with the given arguments.
|
* Invoke a command handler with the given arguments.
|
||||||
|
*
|
||||||
* @param player The player invoking the command or null for the server console.
|
* @param player The player invoking the command or null for the server console.
|
||||||
* @param rawMessage The messaged used to invoke the command.
|
* @param rawMessage The messaged used to invoke the command.
|
||||||
*/
|
*/
|
||||||
@ -95,7 +110,7 @@ public final class CommandMap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Remove prefix if present.
|
// Remove prefix if present.
|
||||||
if(!Character.isLetter(rawMessage.charAt(0)))
|
if (!Character.isLetter(rawMessage.charAt(0)))
|
||||||
rawMessage = rawMessage.substring(1);
|
rawMessage = rawMessage.substring(1);
|
||||||
|
|
||||||
// Parse message.
|
// Parse message.
|
||||||
@ -105,38 +120,23 @@ public final class CommandMap {
|
|||||||
|
|
||||||
// Get command handler.
|
// Get command handler.
|
||||||
CommandHandler handler = this.commands.get(label);
|
CommandHandler handler = this.commands.get(label);
|
||||||
if(handler == null) {
|
if (handler == null) {
|
||||||
CommandHandler.sendMessage(player, "Unknown command: " + label); return;
|
CommandHandler.sendMessage(player, "Unknown command: " + label);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for permission.
|
// Check for permission.
|
||||||
if(player != null) {
|
if (player != null) {
|
||||||
String permissionNode = this.annotations.get(label).permission();
|
String permissionNode = this.annotations.get(label).permission();
|
||||||
Account account = player.getAccount();
|
Account account = player.getAccount();
|
||||||
if(!permissionNode.isEmpty() && !account.hasPermission(permissionNode)) {
|
if(!permissionNode.isEmpty() && !account.hasPermission(permissionNode)) {
|
||||||
CommandHandler.sendMessage(player, "You do not have permission to run this command."); return;
|
CommandHandler.sendMessage(player, "You do not have permission to run this command.");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execution power check.
|
|
||||||
Command.Execution executionPower = this.annotations.get(label).execution();
|
|
||||||
if(player == null && executionPower == Command.Execution.PLAYER) {
|
|
||||||
CommandHandler.sendMessage(null, "Run this command in-game."); return;
|
|
||||||
} else if (player != null && executionPower == Command.Execution.CONSOLE) {
|
|
||||||
CommandHandler.sendMessage(player, "This command can only be run from the console."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Invoke execute method for handler.
|
// Invoke execute method for handler.
|
||||||
if(player == null) handler.execute(args);
|
handler.execute(player, args);
|
||||||
else handler.execute(player, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CommandMap() {
|
|
||||||
this(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CommandMap(boolean scan) {
|
|
||||||
if(scan) this.scan();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -0,0 +1,62 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.database.DatabaseHelper;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "account", usage = "account <create|delete> <username> [uid]",
|
||||||
|
description = "Modify user accounts")
|
||||||
|
public final class AccountCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender != null) {
|
||||||
|
CommandHandler.sendMessage(sender, "This command can only be run from the console.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.size() < 2) {
|
||||||
|
CommandHandler.sendMessage(null, "Usage: account <create|delete> <username> [uid]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String action = args.get(0);
|
||||||
|
String username = args.get(1);
|
||||||
|
|
||||||
|
switch (action) {
|
||||||
|
default:
|
||||||
|
CommandHandler.sendMessage(null, "Usage: account <create|delete> <username> [uid]");
|
||||||
|
return;
|
||||||
|
case "create":
|
||||||
|
int uid = 0;
|
||||||
|
if (args.size() > 2) {
|
||||||
|
try {
|
||||||
|
uid = Integer.parseInt(args.get(2));
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(null, "Invalid UID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
emu.grasscutter.game.Account account = DatabaseHelper.createAccountWithId(username, uid);
|
||||||
|
if (account == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Account already exists.");
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
CommandHandler.sendMessage(null, "Account created with UID " + account.getPlayerUid() + ".");
|
||||||
|
account.addPermission("*"); // Grant the player superuser permissions.
|
||||||
|
account.save(); // Save account to database.
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
case "delete":
|
||||||
|
if (DatabaseHelper.deleteAccount(username)) {
|
||||||
|
CommandHandler.sendMessage(null, "Account deleted.");
|
||||||
|
} else {
|
||||||
|
CommandHandler.sendMessage(null, "Account not found.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "broadcast", usage = "broadcast <message>",
|
||||||
|
description = "Sends a message to all the players", aliases = {"b"}, permission = "server.broadcast")
|
||||||
|
public final class BroadcastCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (args.size() < 1) {
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: broadcast <message>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String message = String.join(" ", args.subList(0, args.size()));
|
||||||
|
|
||||||
|
for (GenshinPlayer p : Grasscutter.getGameServer().getPlayers().values()) {
|
||||||
|
CommandHandler.sendMessage(p, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandHandler.sendMessage(sender, "Message sent.");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "changescene", usage = "changescene <scene id>",
|
||||||
|
description = "Changes your scene", aliases = {"scene"}, permission = "player.changescene")
|
||||||
|
public final class ChangeSceneCommand implements CommandHandler {
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.size() < 1) {
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: changescene <scene id>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
int sceneId = Integer.parseInt(args.get(0));
|
||||||
|
|
||||||
|
if (sceneId == sender.getSceneId()) {
|
||||||
|
CommandHandler.sendMessage(sender, "You are already in that scene");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean result = sender.getWorld().transferPlayerToScene(sender, sceneId, sender.getPos());
|
||||||
|
CommandHandler.sendMessage(sender, "Changed to scene " + sceneId);
|
||||||
|
|
||||||
|
if (!result) {
|
||||||
|
CommandHandler.sendMessage(sender, "Scene does not exist");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: changescene <scene id>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.inventory.Inventory;
|
||||||
|
import emu.grasscutter.game.inventory.ItemType;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "clearartifacts", usage = "clearartifacts",
|
||||||
|
description = "Deletes all unequipped and unlocked level 0 artifacts, including yellow rarity ones from your inventory",
|
||||||
|
aliases = {"clearart"}, permission = "player.clearartifacts")
|
||||||
|
public final class ClearArtifactsCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return; // TODO: clear player's artifacts from console or other players
|
||||||
|
}
|
||||||
|
|
||||||
|
Inventory playerInventory = sender.getInventory();
|
||||||
|
playerInventory.getItems().values().stream()
|
||||||
|
.filter(item -> item.getItemType() == ItemType.ITEM_RELIQUARY)
|
||||||
|
.filter(item -> item.getLevel() == 1 && item.getExp() == 0)
|
||||||
|
.filter(item -> !item.isLocked() && !item.isEquipped())
|
||||||
|
.forEach(item -> playerInventory.removeItem(item, item.getCount()));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.data.GenshinData;
|
||||||
|
import emu.grasscutter.data.def.ItemData;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.entity.EntityItem;
|
||||||
|
import emu.grasscutter.utils.Position;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "drop", usage = "drop <itemId|itemName> [amount]",
|
||||||
|
description = "Drops an item near you", aliases = {"d", "dropitem"}, permission = "server.drop")
|
||||||
|
public final class DropCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.size() < 1) {
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: drop <itemId|itemName> [amount]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
int item = Integer.parseInt(args.get(0));
|
||||||
|
int amount = 1;
|
||||||
|
if (args.size() > 1) amount = Integer.parseInt(args.get(1));
|
||||||
|
|
||||||
|
ItemData itemData = GenshinData.getItemDataMap().get(item);
|
||||||
|
if (itemData == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid item id.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemData.isEquip()) {
|
||||||
|
float range = (5f + (.1f * amount));
|
||||||
|
for (int i = 0; i < amount; i++) {
|
||||||
|
Position pos = sender.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2));
|
||||||
|
EntityItem entity = new EntityItem(sender.getScene(), sender, itemData, pos, 1);
|
||||||
|
sender.getScene().addEntity(entity);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
EntityItem entity = new EntityItem(sender.getScene(), sender, itemData, sender.getPos().clone().addY(3f), amount);
|
||||||
|
sender.getScene().addEntity(entity);
|
||||||
|
}
|
||||||
|
CommandHandler.sendMessage(sender, String.format("Dropped %s of %s.", amount, item));
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid item or player ID.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,93 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.data.GenshinData;
|
||||||
|
import emu.grasscutter.data.def.AvatarData;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.avatar.GenshinAvatar;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "givechar", usage = "givechar <playerId> <avatarId> [level]",
|
||||||
|
description = "Gives the player a specified character", aliases = {"givec"}, permission = "player.givechar")
|
||||||
|
public final class GiveCharCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
int target, avatarId, level = 1, ascension;
|
||||||
|
|
||||||
|
if (sender == null && args.size() < 2) {
|
||||||
|
CommandHandler.sendMessage(null, "Usage: givechar <player> <itemId|itemName> [amount]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args.size()) {
|
||||||
|
default:
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: givechar <player> <avatarId> [level]");
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
try {
|
||||||
|
target = Integer.parseInt(args.get(0));
|
||||||
|
if (Grasscutter.getGameServer().getPlayerByUid(target) == null && sender != null) {
|
||||||
|
target = sender.getUid();
|
||||||
|
level = Integer.parseInt(args.get(1));
|
||||||
|
avatarId = Integer.parseInt(args.get(0));
|
||||||
|
} else {
|
||||||
|
avatarId = Integer.parseInt(args.get(1));
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
// TODO: Parse from avatar name using GM Handbook.
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid avatar or player ID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
try {
|
||||||
|
target = Integer.parseInt(args.get(0));
|
||||||
|
if (Grasscutter.getGameServer().getPlayerByUid(target) == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid player ID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
avatarId = Integer.parseInt(args.get(1));
|
||||||
|
level = Integer.parseInt(args.get(2));
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
// TODO: Parse from avatar name using GM Handbook.
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid avatar or player ID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
||||||
|
if (targetPlayer == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Player not found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
AvatarData avatarData = GenshinData.getAvatarDataMap().get(avatarId);
|
||||||
|
if (avatarData == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid avatar id.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate ascension level.
|
||||||
|
if (level <= 40) {
|
||||||
|
ascension = (int) Math.ceil(level / 20f);
|
||||||
|
} else {
|
||||||
|
ascension = (int) Math.ceil(level / 10f) - 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
GenshinAvatar avatar = new GenshinAvatar(avatarId);
|
||||||
|
avatar.setLevel(level);
|
||||||
|
avatar.setPromoteLevel(ascension);
|
||||||
|
|
||||||
|
// This will handle stats and talents
|
||||||
|
avatar.recalcStats();
|
||||||
|
|
||||||
|
targetPlayer.addAvatar(avatar);
|
||||||
|
CommandHandler.sendMessage(sender, String.format("Given %s to %s.", avatarId, target));
|
||||||
|
}
|
||||||
|
}
|
113
src/main/java/emu/grasscutter/command/commands/GiveCommand.java
Normal file
113
src/main/java/emu/grasscutter/command/commands/GiveCommand.java
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.data.GenshinData;
|
||||||
|
import emu.grasscutter.data.def.ItemData;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.inventory.GenshinItem;
|
||||||
|
import emu.grasscutter.game.props.ActionReason;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "give", usage = "give [player] <itemId|itemName> [amount]",
|
||||||
|
description = "Gives an item to you or the specified player", aliases = {"g", "item", "giveitem"}, permission = "player.give")
|
||||||
|
public final class GiveCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
int target, item, amount = 1;
|
||||||
|
|
||||||
|
if (sender == null && args.size() < 2) {
|
||||||
|
CommandHandler.sendMessage(null, "Usage: give <player> <itemId|itemName> [amount]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args.size()) {
|
||||||
|
default: // *No args*
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: give [player] <itemId|itemName> [amount]");
|
||||||
|
return;
|
||||||
|
case 1: // <itemId|itemName>
|
||||||
|
try {
|
||||||
|
item = Integer.parseInt(args.get(0));
|
||||||
|
target = sender.getUid();
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
// TODO: Parse from item name using GM Handbook.
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid item id.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2: // <itemId|itemName> [amount] | [player] <itemId|itemName>
|
||||||
|
try {
|
||||||
|
target = Integer.parseInt(args.get(0));
|
||||||
|
|
||||||
|
if (Grasscutter.getGameServer().getPlayerByUid(target) == null && sender != null) {
|
||||||
|
target = sender.getUid();
|
||||||
|
item = Integer.parseInt(args.get(0));
|
||||||
|
amount = Integer.parseInt(args.get(1));
|
||||||
|
} else {
|
||||||
|
item = Integer.parseInt(args.get(1));
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
// TODO: Parse from item name using GM Handbook.
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid item or player ID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3: // [player] <itemId|itemName> [amount]
|
||||||
|
try {
|
||||||
|
target = Integer.parseInt(args.get(0));
|
||||||
|
|
||||||
|
if (Grasscutter.getGameServer().getPlayerByUid(target) == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid player ID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
item = Integer.parseInt(args.get(1));
|
||||||
|
amount = Integer.parseInt(args.get(2));
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
// TODO: Parse from item name using GM Handbook.
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid item or player ID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
||||||
|
|
||||||
|
if (targetPlayer == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Player not found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemData itemData = GenshinData.getItemDataMap().get(item);
|
||||||
|
if (itemData == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid item id.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.item(targetPlayer, itemData, amount);
|
||||||
|
|
||||||
|
CommandHandler.sendMessage(sender, String.format("Given %s of %s to %s.", amount, item, target));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void item(GenshinPlayer player, ItemData itemData, int amount) {
|
||||||
|
if (itemData.isEquip()) {
|
||||||
|
List<GenshinItem> items = new LinkedList<>();
|
||||||
|
for (int i = 0; i < amount; i++) {
|
||||||
|
items.add(new GenshinItem(itemData));
|
||||||
|
}
|
||||||
|
player.getInventory().addItems(items);
|
||||||
|
player.sendPacket(new PacketItemAddHintNotify(items, ActionReason.SubfieldDrop));
|
||||||
|
} else {
|
||||||
|
GenshinItem genshinItem = new GenshinItem(itemData);
|
||||||
|
genshinItem.setCount(amount);
|
||||||
|
player.getInventory().addItem(genshinItem);
|
||||||
|
player.sendPacket(new PacketItemAddHintNotify(genshinItem, ActionReason.SubfieldDrop));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "godmode", usage = "godmode [playerId]",
|
||||||
|
description = "Prevents you from taking damage", permission = "player.godmode")
|
||||||
|
public final class GodModeCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return; // TODO: toggle player's godmode statue from console or other players
|
||||||
|
}
|
||||||
|
sender.setGodmode(!sender.inGodmode());
|
||||||
|
sender.dropMessage("Godmode is now " + (sender.inGodmode() ? "enabled" : "disabled") + ".");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.props.FightProperty;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketAvatarFightPropUpdateNotify;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketAvatarLifeStateChangeNotify;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketLifeStateChangeNotify;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "heal", usage = "heal|h",
|
||||||
|
description = "Heal all characters in your current team.", aliases = {"h"}, permission = "player.heal")
|
||||||
|
public class HealCommand implements CommandHandler {
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sender.getTeamManager().getActiveTeam().forEach(entity -> {
|
||||||
|
boolean isAlive = entity.isAlive();
|
||||||
|
entity.setFightProperty(
|
||||||
|
FightProperty.FIGHT_PROP_CUR_HP,
|
||||||
|
entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP)
|
||||||
|
);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketAvatarFightPropUpdateNotify(entity.getAvatar(), FightProperty.FIGHT_PROP_CUR_HP));
|
||||||
|
if (!isAlive) {
|
||||||
|
entity.getWorld().broadcastPacket(new PacketAvatarLifeStateChangeNotify(entity.getAvatar()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
CommandHandler.sendMessage(sender, "All characters are healed.");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,91 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.command.CommandMap;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Command(label = "help", usage = "help [command]",
|
||||||
|
description = "Sends the help message or shows information about a specified command")
|
||||||
|
public final class HelpCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer player, List<String> args) {
|
||||||
|
if (args.size() < 1) {
|
||||||
|
HashMap<String, CommandHandler> handlers = CommandMap.getInstance().getHandlers();
|
||||||
|
List<Command> annotations = new ArrayList<>();
|
||||||
|
for (String key : handlers.keySet()) {
|
||||||
|
Command annotation = handlers.get(key).getClass().getAnnotation(Command.class);
|
||||||
|
|
||||||
|
if (!Arrays.asList(annotation.aliases()).contains(key)) {
|
||||||
|
if (player != null && !Objects.equals(annotation.permission(), "") && !player.getAccount().hasPermission(annotation.permission()))
|
||||||
|
continue;
|
||||||
|
annotations.add(annotation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SendAllHelpMessage(player, annotations);
|
||||||
|
} else {
|
||||||
|
String command = args.get(0);
|
||||||
|
CommandHandler handler = CommandMap.getInstance().getHandler(command);
|
||||||
|
StringBuilder builder = new StringBuilder(player == null ? "\nHelp - " : "Help - ").append(command).append(": \n");
|
||||||
|
if (handler == null) {
|
||||||
|
builder.append("No command found.");
|
||||||
|
} else {
|
||||||
|
Command annotation = handler.getClass().getAnnotation(Command.class);
|
||||||
|
|
||||||
|
builder.append(" ").append(annotation.description()).append("\n");
|
||||||
|
builder.append(" Usage: ").append(annotation.usage());
|
||||||
|
if (annotation.aliases().length >= 1) {
|
||||||
|
builder.append("\n").append(" Aliases: ");
|
||||||
|
for (String alias : annotation.aliases()) {
|
||||||
|
builder.append(alias).append(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (player != null && !Objects.equals(annotation.permission(), "") && !player.getAccount().hasPermission(annotation.permission())) {
|
||||||
|
builder.append("\n Warning: You do not have permission to run this command.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandHandler.sendMessage(player, builder.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SendAllHelpMessage(GenshinPlayer player, List<Command> annotations) {
|
||||||
|
if (player == null) {
|
||||||
|
StringBuilder builder = new StringBuilder("\nAvailable commands:\n");
|
||||||
|
annotations.forEach(annotation -> {
|
||||||
|
builder.append(annotation.label()).append("\n");
|
||||||
|
builder.append(" ").append(annotation.description()).append("\n");
|
||||||
|
builder.append(" Usage: ").append(annotation.usage());
|
||||||
|
if (annotation.aliases().length >= 1) {
|
||||||
|
builder.append("\n").append(" Aliases: ");
|
||||||
|
for (String alias : annotation.aliases()) {
|
||||||
|
builder.append(alias).append(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.append("\n");
|
||||||
|
});
|
||||||
|
|
||||||
|
CommandHandler.sendMessage(null, builder.toString());
|
||||||
|
} else {
|
||||||
|
CommandHandler.sendMessage(player, "Available commands:");
|
||||||
|
annotations.forEach(annotation -> {
|
||||||
|
StringBuilder builder = new StringBuilder(annotation.label()).append("\n");
|
||||||
|
builder.append(" ").append(annotation.description()).append("\n");
|
||||||
|
builder.append(" Usage: ").append(annotation.usage());
|
||||||
|
if (annotation.aliases().length >= 1) {
|
||||||
|
builder.append("\n").append(" Aliases: ");
|
||||||
|
for (String alias : annotation.aliases()) {
|
||||||
|
builder.append(alias).append(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandHandler.sendMessage(player, builder.toString());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "kick", usage = "kick <player>",
|
||||||
|
description = "Kicks the specified player from the server (WIP)", permission = "server.kick")
|
||||||
|
public final class KickCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
int target = Integer.parseInt(args.get(0));
|
||||||
|
|
||||||
|
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
||||||
|
if (targetPlayer == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Player not found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sender != null) {
|
||||||
|
CommandHandler.sendMessage(sender, String.format("Player [%s:%s] has kicked player [%s:%s]", sender.getAccount().getPlayerUid(), sender.getAccount().getUsername(), target, targetPlayer.getAccount().getUsername()));
|
||||||
|
}
|
||||||
|
CommandHandler.sendMessage(sender, String.format("Kicking player [%s:%s]", target, targetPlayer.getAccount().getUsername()));
|
||||||
|
|
||||||
|
targetPlayer.getSession().close();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,64 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.GenshinScene;
|
||||||
|
import emu.grasscutter.game.entity.EntityMonster;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "killall", usage = "killall [playerUid] [sceneId]",
|
||||||
|
description = "Kill all entities", permission = "server.killall")
|
||||||
|
public final class KillAllCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
GenshinScene scene;
|
||||||
|
GenshinPlayer genshinPlayer;
|
||||||
|
|
||||||
|
try {
|
||||||
|
switch (args.size()) {
|
||||||
|
case 0: // *No args*
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Usage: killall [playerUid] [sceneId]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
scene = sender.getScene();
|
||||||
|
break;
|
||||||
|
case 1: // [playerUid]
|
||||||
|
genshinPlayer = Grasscutter.getGameServer().getPlayerByUid(Integer.parseInt(args.get(0)));
|
||||||
|
if (genshinPlayer == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Player not found or offline.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
scene = genshinPlayer.getScene();
|
||||||
|
break;
|
||||||
|
case 2: // [playerUid] [sceneId]
|
||||||
|
genshinPlayer = Grasscutter.getGameServer().getPlayerByUid(Integer.parseInt(args.get(0)));
|
||||||
|
if (genshinPlayer == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Player not found or offline.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
GenshinScene genshinScene = sender.getWorld().getSceneById(Integer.parseInt(args.get(1)));
|
||||||
|
if (genshinScene == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Scene not found in player world");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
scene = genshinScene;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: killall [playerUid] [sceneId]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
scene.getEntities().values().stream()
|
||||||
|
.filter(entity -> entity instanceof EntityMonster)
|
||||||
|
.forEach(entity -> scene.killEntity(entity, 0));
|
||||||
|
CommandHandler.sendMessage(sender, "Killing all monsters in scene " + scene.getId());
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid arguments.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Command(label = "list", description = "List online players")
|
||||||
|
public class ListCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
Map<Integer, GenshinPlayer> playersMap = Grasscutter.getGameServer().getPlayers();
|
||||||
|
|
||||||
|
CommandHandler.sendMessage(sender, String.format("There are %s player(s) online:", playersMap.size()));
|
||||||
|
|
||||||
|
if (playersMap.size() != 0) {
|
||||||
|
StringBuilder playerSet = new StringBuilder();
|
||||||
|
|
||||||
|
for (Map.Entry<Integer, GenshinPlayer> entry : playersMap.entrySet()) {
|
||||||
|
playerSet.append(entry.getValue().getNickname());
|
||||||
|
playerSet.append(", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
String players = playerSet.toString();
|
||||||
|
|
||||||
|
CommandHandler.sendMessage(sender, players.substring(0, players.length() - 2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.Account;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "permission", usage = "permission <add|remove> <username> <permission>",
|
||||||
|
description = "Grants or removes a permission for a user", permission = "*")
|
||||||
|
public final class PermissionCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (args.size() < 3) {
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: permission <add|remove> <username> <permission>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String action = args.get(0);
|
||||||
|
String username = args.get(1);
|
||||||
|
String permission = args.get(2);
|
||||||
|
|
||||||
|
Account account = Grasscutter.getGameServer().getAccountByName(username);
|
||||||
|
if (account == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Account not found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (action) {
|
||||||
|
default:
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: permission <add|remove> <username> <permission>");
|
||||||
|
break;
|
||||||
|
case "add":
|
||||||
|
if (account.addPermission(permission)) {
|
||||||
|
CommandHandler.sendMessage(sender, "Permission added.");
|
||||||
|
} else CommandHandler.sendMessage(sender, "They already have this permission!");
|
||||||
|
break;
|
||||||
|
case "remove":
|
||||||
|
if (account.removePermission(permission)) {
|
||||||
|
CommandHandler.sendMessage(sender, "Permission removed.");
|
||||||
|
} else CommandHandler.sendMessage(sender, "They don't have this permission!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
account.save();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "position", usage = "position", aliases = {"pos"},
|
||||||
|
description = "Get coordinates.")
|
||||||
|
public final class PositionCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sender.dropMessage(String.format("Coord: %.3f, %.3f, %.3f", sender.getPos().getX(), sender.getPos().getY(), sender.getPos().getZ()));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "reload", usage = "reload",
|
||||||
|
description = "Reload server config", permission = "server.reload")
|
||||||
|
public final class ReloadCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
CommandHandler.sendMessage(sender, "Reloading config.");
|
||||||
|
Grasscutter.loadConfig();
|
||||||
|
Grasscutter.getGameServer().getGachaManager().load();
|
||||||
|
Grasscutter.getDispatchServer().loadQueries();
|
||||||
|
CommandHandler.sendMessage(sender, "Reload complete.");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.avatar.GenshinAvatar;
|
||||||
|
import emu.grasscutter.game.entity.EntityAvatar;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "resetconst", usage = "resetconst [all]",
|
||||||
|
description = "Resets the constellation level on your current active character, will need to relog after using the command to see any changes.",
|
||||||
|
aliases = {"resetconstellation"}, permission = "player.resetconstellation")
|
||||||
|
public final class ResetConstCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.size() > 0 && args.get(0).equalsIgnoreCase("all")) {
|
||||||
|
sender.getAvatars().forEach(this::resetConstellation);
|
||||||
|
sender.dropMessage("Reset all avatars' constellations.");
|
||||||
|
} else {
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
if (entity == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GenshinAvatar avatar = entity.getAvatar();
|
||||||
|
this.resetConstellation(avatar);
|
||||||
|
|
||||||
|
sender.dropMessage("Constellations for " + avatar.getAvatarData().getName() + " have been reset. Please relog to see changes.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetConstellation(GenshinAvatar avatar) {
|
||||||
|
avatar.getTalentIdList().clear();
|
||||||
|
avatar.setCoreProudSkillLevel(0);
|
||||||
|
avatar.recalcStats();
|
||||||
|
avatar.save();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "restart", usage = "restart - Restarts the current session")
|
||||||
|
public final class RestartCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
sender.getSession().close();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "say", usage = "say <player> <message>", description = "Sends a message to a player as the server",
|
||||||
|
aliases = {"sendservmsg", "sendservermessage", "sendmessage"}, permission = "server.sendmessage")
|
||||||
|
public final class SendMessageCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (args.size() < 2) {
|
||||||
|
CommandHandler.sendMessage(null, "Usage: sendmessage <player> <message>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
int target = Integer.parseInt(args.get(0));
|
||||||
|
String message = String.join(" ", args.subList(1, args.size()));
|
||||||
|
|
||||||
|
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
||||||
|
if (targetPlayer == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Player not found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandHandler.sendMessage(targetPlayer, message);
|
||||||
|
CommandHandler.sendMessage(sender, "Message sent.");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid player ID.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,239 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.entity.EntityAvatar;
|
||||||
|
import emu.grasscutter.game.props.FightProperty;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "setstats", usage = "setstats|stats <stat> <value>",
|
||||||
|
description = "Set fight property for your current active character", aliases = {"stats"}, permission = "player.setstats")
|
||||||
|
public final class SetStatsCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.size() < 2){
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: setstats|stats <stat> <value>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String stat = args.get(0);
|
||||||
|
switch (stat) {
|
||||||
|
default:
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: /setstats|stats <hp | def | atk | em | er | crate | cdmg> <value> for basic stats");
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: /stats <epyro | ecryo | ehydro | egeo | edend | eelec | ephys> <amount> for elemental bonus");
|
||||||
|
return;
|
||||||
|
case "hp":
|
||||||
|
try {
|
||||||
|
int health = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, health);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP));
|
||||||
|
CommandHandler.sendMessage(sender, "HP set to " + health + ".");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid HP value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "def":
|
||||||
|
try {
|
||||||
|
int def = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE, def);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_DEFENSE));
|
||||||
|
CommandHandler.sendMessage(sender, "DEF set to " + def + ".");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid DEF value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "atk":
|
||||||
|
try {
|
||||||
|
int atk = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK, atk);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_ATTACK));
|
||||||
|
CommandHandler.sendMessage(sender, "ATK set to " + atk + ".");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid ATK value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "em":
|
||||||
|
try {
|
||||||
|
int em = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_ELEMENT_MASTERY, em);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_ELEMENT_MASTERY));
|
||||||
|
CommandHandler.sendMessage(sender, "Elemental Mastery set to " + em + ".");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid EM value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "er":
|
||||||
|
try {
|
||||||
|
float er = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float erecharge = er / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_CHARGE_EFFICIENCY, erecharge);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CHARGE_EFFICIENCY));
|
||||||
|
float iger = erecharge * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Energy recharge set to " + iger + "%.");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid ER value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "crate":
|
||||||
|
try {
|
||||||
|
float cr = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float crate = cr / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_CRITICAL, crate);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CRITICAL));
|
||||||
|
float igcrate = crate * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Crit Rate set to " + igcrate + "%.");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid Crit Rate value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "cdmg":
|
||||||
|
try {
|
||||||
|
float cdmg = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float cdamage = cdmg / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_CRITICAL_HURT, cdamage);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CRITICAL_HURT));
|
||||||
|
float igcdmg = cdamage * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Crit DMG set to " + igcdmg + "%");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid Crit DMG value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "epyro":
|
||||||
|
try {
|
||||||
|
float epyro = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float pyro = epyro / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_FIRE_ADD_HURT, pyro);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_FIRE_ADD_HURT));
|
||||||
|
float igpyro = pyro * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Pyro DMG Bonus set to " + igpyro + "%");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid Pyro DMG Bonus value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "ecryo":
|
||||||
|
try {
|
||||||
|
float ecryo = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float cryo = ecryo / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_ICE_ADD_HURT, cryo);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_ICE_ADD_HURT));
|
||||||
|
float igcyro = cryo * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Cyro DMG Bonus set to " + igcyro + "%");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid Cryo DMG Bonus value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "ehydro":
|
||||||
|
try {
|
||||||
|
float ehydro = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float hydro = ehydro / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_WATER_ADD_HURT, hydro);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_WATER_ADD_HURT));
|
||||||
|
float ighydro = hydro * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Hydro DMG Bonus set to " + ighydro + "%");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid Hydro DMG Bonus value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "eanemo":
|
||||||
|
try {
|
||||||
|
float eanemo = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float anemo = eanemo / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_WIND_ADD_HURT, anemo);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_WIND_ADD_HURT));
|
||||||
|
float iganemo = anemo * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Anemo DMG Bonus set to " + iganemo + "%");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid Anemo DMG Bonus value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "egeo":
|
||||||
|
try {
|
||||||
|
float egeo = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float geo = egeo / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_ROCK_ADD_HURT, geo);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_ROCK_ADD_HURT));
|
||||||
|
float iggeo = geo * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Geo DMG Bonus set to " + iggeo + "%");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid Geo DMG Bonus value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "ethunder":
|
||||||
|
case "eelec":
|
||||||
|
try {
|
||||||
|
float eelec = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float elec = eelec / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_CRITICAL_HURT, elec);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CRITICAL_HURT));
|
||||||
|
float igelec = elec * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Electro DMG Bonus set to " + igelec + "%");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid Electro DMG Bonus value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "ephys":
|
||||||
|
try {
|
||||||
|
float ephys = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float phys = ephys / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_PHYSICAL_ADD_HURT, phys);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_PHYSICAL_ADD_HURT));
|
||||||
|
float igphys = phys * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Physical DMG Bonus set to " + igphys + "%");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid Physical DMG Bonus value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "edend":
|
||||||
|
try {
|
||||||
|
float edend = Integer.parseInt(args.get(1));
|
||||||
|
EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity();
|
||||||
|
float dend = edend / 10000;
|
||||||
|
entity.setFightProperty(FightProperty.FIGHT_PROP_GRASS_ADD_HURT, dend);
|
||||||
|
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_GRASS_ADD_HURT));
|
||||||
|
float igdend = dend * 100;
|
||||||
|
CommandHandler.sendMessage(sender, "Dendro DMG Bonus set to " + igdend + "%");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid Dendro DMG Bonus value.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.props.PlayerProperty;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "setworldlevel", usage = "setworldlevel <level>",
|
||||||
|
description = "Sets your world level (Relog to see proper effects)",
|
||||||
|
aliases = {"setworldlvl"}, permission = "player.setworldlevel")
|
||||||
|
public final class SetWorldLevelCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return; // TODO: set player's world level from console or other players
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.size() < 1) {
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: setworldlevel <level>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
int level = Integer.parseInt(args.get(0));
|
||||||
|
|
||||||
|
// Set in both world and player props
|
||||||
|
sender.getWorld().setWorldLevel(level);
|
||||||
|
sender.setProperty(PlayerProperty.PROP_PLAYER_WORLD_LEVEL, level);
|
||||||
|
|
||||||
|
sender.dropMessage("World level set to " + level + ".");
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(null, "Invalid world level.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.data.GenshinData;
|
||||||
|
import emu.grasscutter.data.def.MonsterData;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.entity.EntityMonster;
|
||||||
|
import emu.grasscutter.utils.Position;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "spawn", usage = "spawn <entityId|entityName> [level] [amount]",
|
||||||
|
description = "Spawns an entity near you", permission = "server.spawn")
|
||||||
|
public final class SpawnCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.size() < 1) {
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: spawn <entityId|entityName> [amount]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
int entity = Integer.parseInt(args.get(0));
|
||||||
|
int level = args.size() > 1 ? Integer.parseInt(args.get(1)) : 1;
|
||||||
|
int amount = args.size() > 2 ? Integer.parseInt(args.get(2)) : 1;
|
||||||
|
|
||||||
|
MonsterData entityData = GenshinData.getMonsterDataMap().get(entity);
|
||||||
|
if (entityData == null) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid entity id.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
float range = (5f + (.1f * amount));
|
||||||
|
for (int i = 0; i < amount; i++) {
|
||||||
|
Position pos = sender.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2));
|
||||||
|
EntityMonster monster = new EntityMonster(sender.getScene(), entityData, pos, level);
|
||||||
|
sender.getScene().addEntity(monster);
|
||||||
|
}
|
||||||
|
CommandHandler.sendMessage(sender, String.format("Spawned %s of %s.", amount, entity));
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid item or player ID.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "stop", usage = "stop",
|
||||||
|
description = "Stops the server", permission = "server.stop")
|
||||||
|
public final class StopCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
CommandHandler.sendMessage(null, "Server shutting down...");
|
||||||
|
for (GenshinPlayer p : Grasscutter.getGameServer().getPlayers().values()) {
|
||||||
|
CommandHandler.sendMessage(p, "Server shutting down...");
|
||||||
|
}
|
||||||
|
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package emu.grasscutter.command.commands;
|
||||||
|
|
||||||
|
import emu.grasscutter.command.Command;
|
||||||
|
import emu.grasscutter.command.CommandHandler;
|
||||||
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
|
import emu.grasscutter.game.props.ClimateType;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketSceneAreaWeatherNotify;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Command(label = "weather", usage = "weather <weatherId> [climateId]",
|
||||||
|
description = "Changes the weather.", aliases = {"w"}, permission = "player.weather")
|
||||||
|
public final class WeatherCommand implements CommandHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(GenshinPlayer sender, List<String> args) {
|
||||||
|
if (sender == null) {
|
||||||
|
CommandHandler.sendMessage(null, "Run this command in-game.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.size() < 1) {
|
||||||
|
CommandHandler.sendMessage(sender, "Usage: weather <weatherId> [climateId]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
int weatherId = Integer.parseInt(args.get(0));
|
||||||
|
int climateId = args.size() > 1 ? Integer.parseInt(args.get(1)) : 1;
|
||||||
|
|
||||||
|
ClimateType climate = ClimateType.getTypeByValue(climateId);
|
||||||
|
|
||||||
|
sender.getScene().setWeather(weatherId);
|
||||||
|
sender.getScene().setClimate(climate);
|
||||||
|
sender.getScene().broadcastPacket(new PacketSceneAreaWeatherNotify(sender));
|
||||||
|
CommandHandler.sendMessage(sender, "Changed weather to " + weatherId + " with climate " + climateId);
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
CommandHandler.sendMessage(sender, "Invalid ID.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,25 +0,0 @@
|
|||||||
package emu.grasscutter.commands;
|
|
||||||
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
public @interface Command {
|
|
||||||
String label() default "";
|
|
||||||
|
|
||||||
String usage() default "No usage specified";
|
|
||||||
|
|
||||||
String description() default "No description specified";
|
|
||||||
|
|
||||||
String[] aliases() default {};
|
|
||||||
|
|
||||||
Execution execution() default Execution.ALL;
|
|
||||||
|
|
||||||
String permission() default "";
|
|
||||||
|
|
||||||
enum Execution {
|
|
||||||
ALL,
|
|
||||||
CONSOLE,
|
|
||||||
PLAYER
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
package emu.grasscutter.commands;
|
|
||||||
|
|
||||||
import emu.grasscutter.Grasscutter;
|
|
||||||
import emu.grasscutter.game.GenshinPlayer;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface CommandHandler {
|
|
||||||
/* Invoked on player execution. */
|
|
||||||
default void execute(GenshinPlayer player, List<String> args) { }
|
|
||||||
/* Invoked on server execution. */
|
|
||||||
default void execute(List<String> args) { }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Utilities.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Send a message to the target.
|
|
||||||
* @param player The player to send the message to, or null for the server console.
|
|
||||||
* @param message The message to send.
|
|
||||||
*/
|
|
||||||
static void sendMessage(GenshinPlayer player, String message) {
|
|
||||||
if(player == null) {
|
|
||||||
Grasscutter.getLogger().info(message);
|
|
||||||
} else player.dropMessage(message);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,539 +0,0 @@
|
|||||||
package emu.grasscutter.commands;
|
|
||||||
|
|
||||||
import emu.grasscutter.Grasscutter;
|
|
||||||
import emu.grasscutter.data.GenshinData;
|
|
||||||
import emu.grasscutter.data.def.ItemData;
|
|
||||||
import emu.grasscutter.data.def.AvatarData;
|
|
||||||
import emu.grasscutter.data.def.AvatarSkillDepotData;
|
|
||||||
import emu.grasscutter.data.def.MonsterData;
|
|
||||||
import emu.grasscutter.game.GenshinPlayer;
|
|
||||||
import emu.grasscutter.game.GenshinScene;
|
|
||||||
import emu.grasscutter.game.World;
|
|
||||||
import emu.grasscutter.game.avatar.GenshinAvatar;
|
|
||||||
import emu.grasscutter.game.entity.EntityAvatar;
|
|
||||||
import emu.grasscutter.game.entity.EntityItem;
|
|
||||||
import emu.grasscutter.game.entity.EntityMonster;
|
|
||||||
import emu.grasscutter.game.inventory.GenshinItem;
|
|
||||||
import emu.grasscutter.game.inventory.Inventory;
|
|
||||||
import emu.grasscutter.game.inventory.ItemType;
|
|
||||||
import emu.grasscutter.game.props.ActionReason;
|
|
||||||
import emu.grasscutter.game.props.FightProperty;
|
|
||||||
import emu.grasscutter.game.props.PlayerProperty;
|
|
||||||
import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify;
|
|
||||||
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
|
||||||
import emu.grasscutter.utils.Position;
|
|
||||||
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A container for player-related commands.
|
|
||||||
*/
|
|
||||||
public final class PlayerCommands {
|
|
||||||
@Command(label = "give", aliases = {"g", "item", "giveitem"},
|
|
||||||
usage = "give [player] <itemId|itemName> [amount]", description = "Gives an item to you or the specified player", permission = "player.give")
|
|
||||||
public static class GiveCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
int target, item, amount = 1;
|
|
||||||
|
|
||||||
switch(args.size()) {
|
|
||||||
default:
|
|
||||||
CommandHandler.sendMessage(player, "Usage: give <player> <itemId|itemName> [amount]");
|
|
||||||
return;
|
|
||||||
case 1:
|
|
||||||
try {
|
|
||||||
item = Integer.parseInt(args.get(0));
|
|
||||||
target = player.getAccount().getPlayerId();
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
// TODO: Parse from item name using GM Handbook.
|
|
||||||
CommandHandler.sendMessage(player, "Invalid item id.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
try {
|
|
||||||
target = Integer.parseInt(args.get(0));
|
|
||||||
|
|
||||||
if(Grasscutter.getGameServer().getPlayerByUid(target) == null) {
|
|
||||||
target = player.getUid(); amount = Integer.parseInt(args.get(1));
|
|
||||||
item = Integer.parseInt(args.get(0));
|
|
||||||
} else {
|
|
||||||
item = Integer.parseInt(args.get(1));
|
|
||||||
}
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
// TODO: Parse from item name using GM Handbook.
|
|
||||||
CommandHandler.sendMessage(player, "Invalid item or player ID.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
try {
|
|
||||||
target = Integer.parseInt(args.get(0));
|
|
||||||
|
|
||||||
if(Grasscutter.getGameServer().getPlayerByUid(target) == null) {
|
|
||||||
CommandHandler.sendMessage(player, "Invalid player ID."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
item = Integer.parseInt(args.get(1));
|
|
||||||
amount = Integer.parseInt(args.get(2));
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
// TODO: Parse from item name using GM Handbook.
|
|
||||||
CommandHandler.sendMessage(player, "Invalid item or player ID.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
|
||||||
|
|
||||||
if(targetPlayer == null) {
|
|
||||||
CommandHandler.sendMessage(player, "Player not found."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemData itemData = GenshinData.getItemDataMap().get(item);
|
|
||||||
if(itemData == null) {
|
|
||||||
CommandHandler.sendMessage(player, "Invalid item id."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.item(targetPlayer, itemData, amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* give [player] [itemId|itemName] [amount]
|
|
||||||
*/
|
|
||||||
@Override public void execute(List<String> args) {
|
|
||||||
if(args.size() < 2) {
|
|
||||||
CommandHandler.sendMessage(null, "Usage: give <player> <itemId|itemName> [amount]");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int target = Integer.parseInt(args.get(0));
|
|
||||||
int item = Integer.parseInt(args.get(1));
|
|
||||||
int amount = 1; if(args.size() > 2) amount = Integer.parseInt(args.get(2));
|
|
||||||
|
|
||||||
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
|
||||||
|
|
||||||
if(targetPlayer == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Player not found."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemData itemData = GenshinData.getItemDataMap().get(item);
|
|
||||||
if(itemData == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid item id."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.item(targetPlayer, itemData, amount);
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid item or player ID.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void item(GenshinPlayer player, ItemData itemData, int amount) {
|
|
||||||
GenshinItem genshinItem = new GenshinItem(itemData);
|
|
||||||
if(itemData.isEquip()) {
|
|
||||||
List<GenshinItem> items = new LinkedList<>();
|
|
||||||
for(int i = 0; i < amount; i++) {
|
|
||||||
items.add(genshinItem);
|
|
||||||
} player.getInventory().addItems(items);
|
|
||||||
player.sendPacket(new PacketItemAddHintNotify(items, ActionReason.SubfieldDrop));
|
|
||||||
} else {
|
|
||||||
genshinItem.setCount(amount);
|
|
||||||
player.getInventory().addItem(genshinItem);
|
|
||||||
player.sendPacket(new PacketItemAddHintNotify(genshinItem, ActionReason.SubfieldDrop));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "drop", aliases = {"d", "dropitem"},
|
|
||||||
usage = "drop <itemId|itemName> [amount]",
|
|
||||||
execution = Command.Execution.PLAYER, description = "Drops an item near you", permission = "server.drop")
|
|
||||||
public static class DropCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
if(args.size() < 1) {
|
|
||||||
CommandHandler.sendMessage(player, "Usage: drop <itemId|itemName> [amount]");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int item = Integer.parseInt(args.get(0));
|
|
||||||
int amount = 1; if(args.size() > 1) amount = Integer.parseInt(args.get(1));
|
|
||||||
|
|
||||||
ItemData itemData = GenshinData.getItemDataMap().get(item);
|
|
||||||
if(itemData == null) {
|
|
||||||
CommandHandler.sendMessage(player, "Invalid item id."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (itemData.isEquip()) {
|
|
||||||
float range = (5f + (.1f * amount));
|
|
||||||
for (int i = 0; i < amount; i++) {
|
|
||||||
Position pos = player.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2));
|
|
||||||
EntityItem entity = new EntityItem(player.getScene(), player, itemData, pos, 1);
|
|
||||||
player.getScene().addEntity(entity);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
EntityItem entity = new EntityItem(player.getScene(), player, itemData, player.getPos().clone().addY(3f), amount);
|
|
||||||
player.getScene().addEntity(entity);
|
|
||||||
}
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(player, "Invalid item or player ID.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "givechar", aliases = { "givec" }, usage = "givechar <playerId> <avatarId> [level]",
|
|
||||||
description = "Gives the player a specified character", permission = "player.givechar")
|
|
||||||
public static class GiveCharCommand implements CommandHandler {
|
|
||||||
@Override public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
int target, avatarId, level = 1, ascension = 1;
|
|
||||||
|
|
||||||
if(args.size() < 1) {
|
|
||||||
CommandHandler.sendMessage(player, "Usage: givechar <player> <avatarId> [level]");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(args.size()) {
|
|
||||||
default:
|
|
||||||
CommandHandler.sendMessage(player, "Usage: givechar <player> <avatarId> [level]");
|
|
||||||
return;
|
|
||||||
case 2:
|
|
||||||
try {
|
|
||||||
target = Integer.parseInt(args.get(0));
|
|
||||||
if(Grasscutter.getGameServer().getPlayerByUid(target) == null) {
|
|
||||||
target = player.getUid();
|
|
||||||
level = Integer.parseInt(args.get(1));
|
|
||||||
avatarId = Integer.parseInt(args.get(0));
|
|
||||||
} else {
|
|
||||||
avatarId = Integer.parseInt(args.get(1));
|
|
||||||
}
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
// TODO: Parse from avatar name using GM Handbook.
|
|
||||||
CommandHandler.sendMessage(player, "Invalid avatar or player ID.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
try {
|
|
||||||
target = Integer.parseInt(args.get(0));
|
|
||||||
if(Grasscutter.getGameServer().getPlayerByUid(target) == null) {
|
|
||||||
CommandHandler.sendMessage(player, "Invalid player ID."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
avatarId = Integer.parseInt(args.get(1));
|
|
||||||
level = Integer.parseInt(args.get(2));
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
// TODO: Parse from avatar name using GM Handbook.
|
|
||||||
CommandHandler.sendMessage(player, "Invalid avatar or player ID.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
|
||||||
if(targetPlayer == null) {
|
|
||||||
CommandHandler.sendMessage(player, "Player not found."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
AvatarData avatarData = GenshinData.getAvatarDataMap().get(avatarId);
|
|
||||||
if(avatarData == null) {
|
|
||||||
CommandHandler.sendMessage(player, "Invalid avatar id."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate ascension level.
|
|
||||||
if (level <= 40) {
|
|
||||||
ascension = (int) Math.ceil(level / 20f);
|
|
||||||
} else {
|
|
||||||
ascension = (int) Math.ceil(level / 10f) - 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
GenshinAvatar avatar = new GenshinAvatar(avatarId);
|
|
||||||
avatar.setLevel(level);
|
|
||||||
avatar.setPromoteLevel(ascension);
|
|
||||||
|
|
||||||
// This will handle stats and talents
|
|
||||||
avatar.recalcStats();
|
|
||||||
|
|
||||||
targetPlayer.addAvatar(avatar);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(List<String> args) {
|
|
||||||
if(args.size() < 2) {
|
|
||||||
CommandHandler.sendMessage(null, "Usage: givechar <player> <itemId|itemName> [amount]");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int target = Integer.parseInt(args.get(0));
|
|
||||||
int avatarID = Integer.parseInt(args.get(1));
|
|
||||||
int level = 1; if(args.size() > 2) level = Integer.parseInt(args.get(2));
|
|
||||||
int ascension;
|
|
||||||
|
|
||||||
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
|
||||||
if(targetPlayer == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Player not found."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
AvatarData avatarData = GenshinData.getAvatarDataMap().get(avatarID);
|
|
||||||
if(avatarData == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid avatar id."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate ascension level.
|
|
||||||
if (level <= 40) {
|
|
||||||
ascension = (int) Math.ceil(level / 20f);
|
|
||||||
} else {
|
|
||||||
ascension = (int) Math.ceil(level / 10f) - 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
GenshinAvatar avatar = new GenshinAvatar(avatarID);
|
|
||||||
avatar.setLevel(level);
|
|
||||||
avatar.setPromoteLevel(ascension);
|
|
||||||
|
|
||||||
// This will handle stats and talents
|
|
||||||
avatar.recalcStats();
|
|
||||||
|
|
||||||
targetPlayer.addAvatar(avatar);
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid item or player ID.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "spawn", execution = Command.Execution.PLAYER,
|
|
||||||
usage = "spawn <entityId|entityName> [level] [amount]", description = "Spawns an entity near you", permission = "server.spawn")
|
|
||||||
public static class SpawnCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
if(args.size() < 1) {
|
|
||||||
CommandHandler.sendMessage(null, "Usage: spawn <entityId|entityName> [amount]");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int entity = Integer.parseInt(args.get(0));
|
|
||||||
int level = 1; if(args.size() > 1) level = Integer.parseInt(args.get(1));
|
|
||||||
int amount = 1; if(args.size() > 2) amount = Integer.parseInt(args.get(2));
|
|
||||||
|
|
||||||
MonsterData entityData = GenshinData.getMonsterDataMap().get(entity);
|
|
||||||
if(entityData == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid entity id."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
float range = (5f + (.1f * amount));
|
|
||||||
for (int i = 0; i < amount; i++) {
|
|
||||||
Position pos = player.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2));
|
|
||||||
EntityMonster monster = new EntityMonster(player.getScene(), entityData, pos, level);
|
|
||||||
player.getScene().addEntity(monster);
|
|
||||||
}
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid item or player ID.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "killall",
|
|
||||||
usage = "killall [playerUid] [sceneId]", description = "Kill all entities", permission = "server.killall")
|
|
||||||
public static class KillAllCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
GenshinScene scene = player.getScene();
|
|
||||||
scene.getEntities().values().stream()
|
|
||||||
.filter(entity -> entity instanceof EntityMonster)
|
|
||||||
.forEach(entity -> scene.killEntity(entity, 0));
|
|
||||||
CommandHandler.sendMessage(null, "Killing all monsters in scene " + scene.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(List<String> args) {
|
|
||||||
if(args.size() < 2) {
|
|
||||||
CommandHandler.sendMessage(null, "Usage: killall [playerUid] [sceneId]"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int playerUid = Integer.parseInt(args.get(0));
|
|
||||||
int sceneId = Integer.parseInt(args.get(1));
|
|
||||||
|
|
||||||
GenshinPlayer player = Grasscutter.getGameServer().getPlayerByUid(playerUid);
|
|
||||||
if (player == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Player not found or offline.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
GenshinScene scene = player.getWorld().getSceneById(sceneId);
|
|
||||||
if (scene == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Scene not found in player world");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
scene.getEntities().values().stream()
|
|
||||||
.filter(entity -> entity instanceof EntityMonster)
|
|
||||||
.forEach(entity -> scene.killEntity(entity, 0));
|
|
||||||
CommandHandler.sendMessage(null, "Killing all monsters in scene " + scene.getId());
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid arguments.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "resetconst", aliases = {"resetconstellation"},
|
|
||||||
usage = "resetconst [all]", execution = Command.Execution.PLAYER, permission = "player.resetconstellation",
|
|
||||||
description = "Resets the constellation level on your current active character, will need to relog after using the command to see any changes.")
|
|
||||||
public static class ResetConstellationCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
if(args.size() > 0 && args.get(0).equalsIgnoreCase("all")) {
|
|
||||||
player.getAvatars().forEach(this::resetConstellation);
|
|
||||||
player.dropMessage("Reset all avatars' constellations.");
|
|
||||||
} else {
|
|
||||||
EntityAvatar entity = player.getTeamManager().getCurrentAvatarEntity();
|
|
||||||
if(entity == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
GenshinAvatar avatar = entity.getAvatar();
|
|
||||||
this.resetConstellation(avatar);
|
|
||||||
|
|
||||||
player.dropMessage("Constellations for " + avatar.getAvatarData().getName() + " have been reset. Please relog to see changes.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void resetConstellation(GenshinAvatar avatar) {
|
|
||||||
avatar.getTalentIdList().clear();
|
|
||||||
avatar.setCoreProudSkillLevel(0);
|
|
||||||
avatar.recalcStats();
|
|
||||||
avatar.save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "godmode",
|
|
||||||
usage = "godmode", execution = Command.Execution.PLAYER, description = "Prevents you from taking damage", permission = "player.godmode")
|
|
||||||
public static class GodModeCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
player.setGodmode(!player.inGodmode());
|
|
||||||
player.dropMessage("Godmode is now " + (player.inGodmode() ? "enabled" : "disabled") + ".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "sethealth", aliases = {"sethp"},
|
|
||||||
usage = "sethealth <hp>", execution = Command.Execution.PLAYER, description = "Sets your health to the specified value",
|
|
||||||
permission = "player.sethealth")
|
|
||||||
public static class SetHealthCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
if(args.size() < 1) {
|
|
||||||
CommandHandler.sendMessage(null, "Usage: sethealth <hp>"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int health = Integer.parseInt(args.get(0));
|
|
||||||
EntityAvatar entity = player.getTeamManager().getCurrentAvatarEntity();
|
|
||||||
if(entity == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, health);
|
|
||||||
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP));
|
|
||||||
player.dropMessage("Health set to " + health + ".");
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid health value.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "setworldlevel", aliases = {"setworldlvl"}, usage = "setworldlevel <level>",
|
|
||||||
description = "Sets your world level (Relog to see proper effects)", permission = "player.setworldlevel",
|
|
||||||
execution = Command.Execution.PLAYER)
|
|
||||||
public static class SetWorldLevelCommand implements CommandHandler {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
if(args.size() < 1) {
|
|
||||||
CommandHandler.sendMessage(player, "Usage: setworldlevel <level>"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int level = Integer.parseInt(args.get(0));
|
|
||||||
|
|
||||||
// Set in both world and player props
|
|
||||||
player.getWorld().setWorldLevel(level);
|
|
||||||
player.setProperty(PlayerProperty.PROP_PLAYER_WORLD_LEVEL, level);
|
|
||||||
|
|
||||||
player.dropMessage("World level set to " + level + ".");
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid world level.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "clearartifacts", aliases = {"clearart"},
|
|
||||||
usage = "clearartifacts", execution = Command.Execution.PLAYER, permission = "player.clearartifacts",
|
|
||||||
description = "Deletes all unequipped and unlocked level 0 artifacts, including yellow rarity ones from your inventory")
|
|
||||||
public static class ClearArtifactsCommand implements CommandHandler {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
Inventory playerInventory = player.getInventory();
|
|
||||||
playerInventory.getItems().values().stream()
|
|
||||||
.filter(item -> item.getItemType() == ItemType.ITEM_RELIQUARY)
|
|
||||||
.filter(item -> item.getLevel() == 1 && item.getExp() == 0)
|
|
||||||
.filter(item -> !item.isLocked() && !item.isEquipped())
|
|
||||||
.forEach(item -> playerInventory.removeItem(item, item.getCount()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "changescene", aliases = {"scene"},
|
|
||||||
usage = "changescene <scene id>", description = "Changes your scene", permission = "player.changescene", execution = Command.Execution.PLAYER)
|
|
||||||
public static class ChangeSceneCommand implements CommandHandler {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
if(args.size() < 1) {
|
|
||||||
CommandHandler.sendMessage(player, "Usage: changescene <scene id>"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int sceneId = Integer.parseInt(args.get(0));
|
|
||||||
boolean result = player.getWorld().transferPlayerToScene(player, sceneId, player.getPos());
|
|
||||||
|
|
||||||
if (!result) {
|
|
||||||
CommandHandler.sendMessage(null, "Scene does not exist or you are already in it");
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
CommandHandler.sendMessage(player, "Usage: changescene <scene id>"); return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "sendservermessage", aliases = {"sendservmsg"},
|
|
||||||
usage = "sendservermessage <player> <message>", description = "Sends a message to a player as the server",
|
|
||||||
execution = Command.Execution.PLAYER, permission = "server.sendmessage")
|
|
||||||
public static class SendServerMessageCommand implements CommandHandler {
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
if(args.size() < 2) {
|
|
||||||
CommandHandler.sendMessage(null, "Usage: sendmessage <player> <message>"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int target = Integer.parseInt(args.get(0));
|
|
||||||
String message = String.join(" ", args.subList(1, args.size()));
|
|
||||||
|
|
||||||
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
|
||||||
if(targetPlayer == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Player not found."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
targetPlayer.dropMessage(message);
|
|
||||||
CommandHandler.sendMessage(null, "Message sent.");
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid player ID.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,334 +0,0 @@
|
|||||||
package emu.grasscutter.commands;
|
|
||||||
|
|
||||||
import emu.grasscutter.Grasscutter;
|
|
||||||
import emu.grasscutter.database.DatabaseHelper;
|
|
||||||
import emu.grasscutter.game.Account;
|
|
||||||
import emu.grasscutter.game.GenshinPlayer;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A container for server-related commands.
|
|
||||||
*/
|
|
||||||
public final class ServerCommands {
|
|
||||||
@Command(label = "reload", usage = "reload", description = "Reload server config", permission = "server.reload")
|
|
||||||
public static class ReloadCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(List<String> args) {
|
|
||||||
Grasscutter.getLogger().info("Reloading config.");
|
|
||||||
Grasscutter.loadConfig();
|
|
||||||
Grasscutter.getDispatchServer().loadQueries();
|
|
||||||
Grasscutter.getLogger().info("Reload complete.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
CommandHandler.sendMessage(player, "Reloading config.");
|
|
||||||
this.execute(args);
|
|
||||||
CommandHandler.sendMessage(player, "Reload complete.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "kick", usage = "kick <player>", description = "Kicks the specified player from the server (WIP)", permission = "server.kick")
|
|
||||||
public static class KickCommand implements CommandHandler {
|
|
||||||
@Override
|
|
||||||
public void execute(List<String> args) {
|
|
||||||
this.execute(null, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
int target = Integer.parseInt(args.get(0));
|
|
||||||
|
|
||||||
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
|
||||||
if(targetPlayer == null) {
|
|
||||||
CommandHandler.sendMessage(player, "Player not found.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(player != null) {
|
|
||||||
CommandHandler.sendMessage(null, String.format("Player [%s:%s] has kicked player [%s:%s]", player.getAccount().getPlayerId(), player.getAccount().getUsername(), target, targetPlayer.getAccount().getUsername()));
|
|
||||||
}
|
|
||||||
CommandHandler.sendMessage(player, String.format("Kicking player [%s:%s]", target, targetPlayer.getAccount().getUsername()));
|
|
||||||
|
|
||||||
targetPlayer.getSession().close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "stop", usage = "stop", description = "Stops the server", permission = "server.stop")
|
|
||||||
public static class StopCommand implements CommandHandler {
|
|
||||||
@Override
|
|
||||||
public void execute(List<String> args) {
|
|
||||||
Grasscutter.getLogger().info("Server shutting down...");
|
|
||||||
for (GenshinPlayer p : Grasscutter.getGameServer().getPlayers().values()) {
|
|
||||||
p.dropMessage("Server shutting down...");
|
|
||||||
}
|
|
||||||
|
|
||||||
System.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "broadcast", aliases = {"b"},
|
|
||||||
usage = "broadcast <message>", description = "Sends a message to all the players", permission = "server.broadcast")
|
|
||||||
public static class BroadcastCommand implements CommandHandler {
|
|
||||||
@Override
|
|
||||||
public void execute(List<String> args) {
|
|
||||||
if(args.size() < 1) {
|
|
||||||
CommandHandler.sendMessage(null, "Usage: broadcast <message>"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String message = String.join(" ", args.subList(0, args.size()));
|
|
||||||
|
|
||||||
for (GenshinPlayer p : Grasscutter.getGameServer().getPlayers().values()) {
|
|
||||||
p.dropMessage(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
CommandHandler.sendMessage(null, "Message sent.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
if(args.size() < 1) {
|
|
||||||
CommandHandler.sendMessage(player, "Usage: broadcast <message>"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String message = String.join(" ", args.subList(0, args.size()));
|
|
||||||
|
|
||||||
for (GenshinPlayer p : Grasscutter.getGameServer().getPlayers().values()) {
|
|
||||||
p.dropMessage(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
CommandHandler.sendMessage(player, "Message sent.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "sendmessage", aliases = {"sendmsg", "msg"},
|
|
||||||
usage = "sendmessage <player> <message>", description = "Sends a message to a player")
|
|
||||||
public static class SendMessageCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(List<String> args) {
|
|
||||||
if(args.size() < 2) {
|
|
||||||
CommandHandler.sendMessage(null, "Usage: sendmessage <player> <message>"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int target = Integer.parseInt(args.get(0));
|
|
||||||
String message = String.join(" ", args.subList(1, args.size()));
|
|
||||||
|
|
||||||
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
|
||||||
|
|
||||||
if(targetPlayer == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Player not found."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
targetPlayer.dropMessage(message);
|
|
||||||
CommandHandler.sendMessage(null, "Message sent.");
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid player ID.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
if(args.size() < 2) {
|
|
||||||
CommandHandler.sendMessage(player, "Usage: sendmessage <player> <message>"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int target = Integer.parseInt(args.get(0));
|
|
||||||
String message = String.join(" ", args.subList(1, args.size()));
|
|
||||||
|
|
||||||
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
|
||||||
|
|
||||||
if(targetPlayer == null) {
|
|
||||||
CommandHandler.sendMessage(player, "Player not found."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
targetPlayer.sendMessage(player, message);
|
|
||||||
CommandHandler.sendMessage(player, "Message sent.");
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(player, "Invalid player ID.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "account",
|
|
||||||
usage = "account <create|delete> <username> [uid]",
|
|
||||||
description = "Modify user accounts", execution = Command.Execution.CONSOLE)
|
|
||||||
public static class AccountCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(List<String> args) {
|
|
||||||
if(args.size() < 2) {
|
|
||||||
CommandHandler.sendMessage(null, "Usage: account <create|delete> <username> [uid]"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String action = args.get(0);
|
|
||||||
String username = args.get(1);
|
|
||||||
|
|
||||||
switch(action) {
|
|
||||||
default:
|
|
||||||
CommandHandler.sendMessage(null, "Usage: account <create|delete> <username> [uid]");
|
|
||||||
return;
|
|
||||||
case "create":
|
|
||||||
int uid = 0;
|
|
||||||
if(args.size() > 2) {
|
|
||||||
try {
|
|
||||||
uid = Integer.parseInt(args.get(2));
|
|
||||||
} catch (NumberFormatException ignored) {
|
|
||||||
CommandHandler.sendMessage(null, "Invalid UID."); return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Account account = DatabaseHelper.createAccountWithId(username, uid);
|
|
||||||
if(account == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Account already exists."); return;
|
|
||||||
} else {
|
|
||||||
CommandHandler.sendMessage(null, "Account created with UID " + account.getPlayerId() + ".");
|
|
||||||
account.addPermission("*"); // Grant the player superuser permissions.
|
|
||||||
account.save(); // Save account to database.
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
case "delete":
|
|
||||||
if(DatabaseHelper.deleteAccount(username)) {
|
|
||||||
CommandHandler.sendMessage(null, "Account deleted."); return;
|
|
||||||
} else CommandHandler.sendMessage(null, "Account not found.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "permission",
|
|
||||||
usage = "permission <add|remove> <username> <permission>",
|
|
||||||
description = "Grants or removes a permission for a user", permission = "*")
|
|
||||||
public static class PermissionCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(List<String> args) {
|
|
||||||
if(args.size() < 3) {
|
|
||||||
CommandHandler.sendMessage(null, "Usage: permission <add|remove> <username> <permission>"); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String action = args.get(0);
|
|
||||||
String username = args.get(1);
|
|
||||||
String permission = args.get(2);
|
|
||||||
|
|
||||||
Account account = Grasscutter.getGameServer().getAccountByName(username);
|
|
||||||
if(account == null) {
|
|
||||||
CommandHandler.sendMessage(null, "Account not found."); return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(action) {
|
|
||||||
default:
|
|
||||||
CommandHandler.sendMessage(null, "Usage: permission <add|remove> <username> <permission>");
|
|
||||||
break;
|
|
||||||
case "add":
|
|
||||||
if(account.addPermission(permission)) {
|
|
||||||
CommandHandler.sendMessage(null, "Permission added.");
|
|
||||||
} else CommandHandler.sendMessage(null, "They already have this permission!");
|
|
||||||
break;
|
|
||||||
case "remove":
|
|
||||||
if(account.removePermission(permission)) {
|
|
||||||
CommandHandler.sendMessage(null, "Permission removed.");
|
|
||||||
} else CommandHandler.sendMessage(null, "They don't have this permission!");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
account.save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Command(label = "help",
|
|
||||||
usage = "help [command]", description = "Sends the help message or shows information about a specified command")
|
|
||||||
public static class HelpCommand implements CommandHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(List<String> args) {
|
|
||||||
this.execute(null, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(GenshinPlayer player, List<String> args) {
|
|
||||||
if(args.size() < 1) {
|
|
||||||
HashMap<String, CommandHandler> handlers = CommandMap.getInstance().getHandlers();
|
|
||||||
List<Command> annotations = new ArrayList<>();
|
|
||||||
for(String key : handlers.keySet()) {
|
|
||||||
Command annotation = handlers.get(key).getClass().getAnnotation(Command.class);
|
|
||||||
|
|
||||||
if(!Arrays.asList(annotation.aliases()).contains(key)) {
|
|
||||||
if(player != null && !Objects.equals(annotation.permission(), "") && !player.getAccount().hasPermission(annotation.permission())) continue;
|
|
||||||
annotations.add(annotation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SendAllHelpMessage(player, annotations);
|
|
||||||
} else {
|
|
||||||
String command = args.get(0);
|
|
||||||
CommandHandler handler = CommandMap.getInstance().getHandler(command);
|
|
||||||
StringBuilder builder = new StringBuilder(player == null ? "\nHelp - " : "Help - ").append(command).append(": \n");
|
|
||||||
if(handler == null) {
|
|
||||||
builder.append("No command found.");
|
|
||||||
} else {
|
|
||||||
Command annotation = handler.getClass().getAnnotation(Command.class);
|
|
||||||
|
|
||||||
builder.append(" ").append(annotation.description()).append("\n");
|
|
||||||
builder.append(" Usage: ").append(annotation.usage());
|
|
||||||
if(annotation.aliases().length >= 1) {
|
|
||||||
builder.append("\n").append(" Aliases: ");
|
|
||||||
for (String alias : annotation.aliases()) {
|
|
||||||
builder.append(alias).append(" ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(player != null && !Objects.equals(annotation.permission(), "") && !player.getAccount().hasPermission(annotation.permission())) {
|
|
||||||
builder.append("\n Warning: You do not have permission to run this command.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CommandHandler.sendMessage(player, builder.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SendAllHelpMessage(GenshinPlayer player, List<Command> annotations) {
|
|
||||||
if(player == null) {
|
|
||||||
StringBuilder builder = new StringBuilder("\nAvailable commands:\n");
|
|
||||||
annotations.forEach(annotation -> {
|
|
||||||
if (annotation.execution() != Command.Execution.PLAYER) {
|
|
||||||
builder.append(annotation.label()).append("\n");
|
|
||||||
builder.append(" ").append(annotation.description()).append("\n");
|
|
||||||
builder.append(" Usage: ").append(annotation.usage());
|
|
||||||
if (annotation.aliases().length >= 1) {
|
|
||||||
builder.append("\n").append(" Aliases: ");
|
|
||||||
for (String alias : annotation.aliases()) {
|
|
||||||
builder.append(alias).append(" ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
builder.append("\n");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
CommandHandler.sendMessage(null, builder.toString());
|
|
||||||
} else {
|
|
||||||
CommandHandler.sendMessage(player, "Available commands:");
|
|
||||||
annotations.forEach(annotation -> {
|
|
||||||
if (annotation.execution() != Command.Execution.CONSOLE) {
|
|
||||||
StringBuilder builder = new StringBuilder(annotation.label()).append("\n");
|
|
||||||
builder.append(" ").append(annotation.description()).append("\n");
|
|
||||||
builder.append(" Usage: ").append(annotation.usage());
|
|
||||||
if (annotation.aliases().length >= 1) {
|
|
||||||
builder.append("\n").append(" Aliases: ");
|
|
||||||
for (String alias : annotation.aliases()) {
|
|
||||||
builder.append(alias).append(" ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CommandHandler.sendMessage(player, builder.toString());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,13 +1,16 @@
|
|||||||
package emu.grasscutter.data;
|
package emu.grasscutter.data;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.utils.Utils;
|
import emu.grasscutter.utils.Utils;
|
||||||
import emu.grasscutter.data.custom.AbilityEmbryoEntry;
|
import emu.grasscutter.data.custom.AbilityEmbryoEntry;
|
||||||
import emu.grasscutter.data.custom.OpenConfigEntry;
|
import emu.grasscutter.data.custom.OpenConfigEntry;
|
||||||
|
import emu.grasscutter.data.custom.ScenePointEntry;
|
||||||
import emu.grasscutter.data.def.*;
|
import emu.grasscutter.data.def.*;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
@ -18,6 +21,7 @@ public class GenshinData {
|
|||||||
private static final Int2ObjectMap<String> abilityHashes = new Int2ObjectOpenHashMap<>();
|
private static final Int2ObjectMap<String> abilityHashes = new Int2ObjectOpenHashMap<>();
|
||||||
private static final Map<String, AbilityEmbryoEntry> abilityEmbryos = new HashMap<>();
|
private static final Map<String, AbilityEmbryoEntry> abilityEmbryos = new HashMap<>();
|
||||||
private static final Map<String, OpenConfigEntry> openConfigEntries = new HashMap<>();
|
private static final Map<String, OpenConfigEntry> openConfigEntries = new HashMap<>();
|
||||||
|
private static final Map<String, ScenePointEntry> scenePointEntries = new HashMap<>();
|
||||||
|
|
||||||
// ExcelConfigs
|
// ExcelConfigs
|
||||||
private static final Int2ObjectMap<PlayerLevelData> playerLevelDataMap = new Int2ObjectOpenHashMap<>();
|
private static final Int2ObjectMap<PlayerLevelData> playerLevelDataMap = new Int2ObjectOpenHashMap<>();
|
||||||
@ -52,6 +56,10 @@ public class GenshinData {
|
|||||||
private static final Int2ObjectMap<AvatarCostumeData> avatarCostumeDataItemIdMap = new Int2ObjectLinkedOpenHashMap<>();
|
private static final Int2ObjectMap<AvatarCostumeData> avatarCostumeDataItemIdMap = new Int2ObjectLinkedOpenHashMap<>();
|
||||||
|
|
||||||
private static final Int2ObjectMap<SceneData> sceneDataMap = new Int2ObjectLinkedOpenHashMap<>();
|
private static final Int2ObjectMap<SceneData> sceneDataMap = new Int2ObjectLinkedOpenHashMap<>();
|
||||||
|
private static final Int2ObjectMap<FetterData> fetterDataMap = new Int2ObjectOpenHashMap<>();
|
||||||
|
|
||||||
|
// Cache
|
||||||
|
private static Map<Integer, List<Integer>> fetters = new HashMap<>();
|
||||||
|
|
||||||
public static Int2ObjectMap<?> getMapByResourceDef(Class<?> resourceDefinition) {
|
public static Int2ObjectMap<?> getMapByResourceDef(Class<?> resourceDefinition) {
|
||||||
Int2ObjectMap<?> map = null;
|
Int2ObjectMap<?> map = null;
|
||||||
@ -82,6 +90,10 @@ public class GenshinData {
|
|||||||
return openConfigEntries;
|
return openConfigEntries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Map<String, ScenePointEntry> getScenePointEntries() {
|
||||||
|
return scenePointEntries;
|
||||||
|
}
|
||||||
|
|
||||||
public static Int2ObjectMap<AvatarData> getAvatarDataMap() {
|
public static Int2ObjectMap<AvatarData> getAvatarDataMap() {
|
||||||
return avatarDataMap;
|
return avatarDataMap;
|
||||||
}
|
}
|
||||||
@ -215,4 +227,17 @@ public class GenshinData {
|
|||||||
public static Int2ObjectMap<SceneData> getSceneDataMap() {
|
public static Int2ObjectMap<SceneData> getSceneDataMap() {
|
||||||
return sceneDataMap;
|
return sceneDataMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Map<Integer, List<Integer>> getFetterDataEntries() {
|
||||||
|
if (fetters.isEmpty()) {
|
||||||
|
fetterDataMap.forEach((k, v) -> {
|
||||||
|
if (!fetters.containsKey(v.getAvatarId())) {
|
||||||
|
fetters.put(v.getAvatarId(), new ArrayList<>());
|
||||||
|
}
|
||||||
|
fetters.get(v.getAvatarId()).add(k);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return fetters;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,11 +10,15 @@ import java.util.regex.Pattern;
|
|||||||
import emu.grasscutter.utils.Utils;
|
import emu.grasscutter.utils.Utils;
|
||||||
import org.reflections.Reflections;
|
import org.reflections.Reflections;
|
||||||
|
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
|
import emu.grasscutter.data.common.PointData;
|
||||||
|
import emu.grasscutter.data.common.ScenePointConfig;
|
||||||
import emu.grasscutter.data.custom.AbilityEmbryoEntry;
|
import emu.grasscutter.data.custom.AbilityEmbryoEntry;
|
||||||
import emu.grasscutter.data.custom.OpenConfigEntry;
|
import emu.grasscutter.data.custom.OpenConfigEntry;
|
||||||
|
import emu.grasscutter.data.custom.ScenePointEntry;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
|
|
||||||
public class ResourceLoader {
|
public class ResourceLoader {
|
||||||
@ -42,6 +46,7 @@ public class ResourceLoader {
|
|||||||
loadOpenConfig();
|
loadOpenConfig();
|
||||||
// Load resources
|
// Load resources
|
||||||
loadResources();
|
loadResources();
|
||||||
|
loadScenePoints();
|
||||||
// Process into depots
|
// Process into depots
|
||||||
GenshinDepot.load();
|
GenshinDepot.load();
|
||||||
// Custom - TODO move this somewhere else
|
// Custom - TODO move this somewhere else
|
||||||
@ -121,6 +126,51 @@ public class ResourceLoader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void loadScenePoints() {
|
||||||
|
Pattern pattern = Pattern.compile("(?<=scene)(.*?)(?=_point.json)");
|
||||||
|
File folder = new File(Grasscutter.getConfig().RESOURCE_FOLDER + "BinOutput/Scene/Point");
|
||||||
|
|
||||||
|
if (!folder.isDirectory() || !folder.exists() || folder.listFiles() == null) {
|
||||||
|
Grasscutter.getLogger().error("Scene point files cannot be found, you cannot use teleport waypoints!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<ScenePointEntry> scenePointList = new ArrayList<>();
|
||||||
|
for (File file : folder.listFiles()) {
|
||||||
|
ScenePointConfig config = null;
|
||||||
|
Integer sceneId = null;
|
||||||
|
|
||||||
|
Matcher matcher = pattern.matcher(file.getName());
|
||||||
|
if (matcher.find()) {
|
||||||
|
sceneId = Integer.parseInt(matcher.group(1));
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try (FileReader fileReader = new FileReader(file)) {
|
||||||
|
config = Grasscutter.getGsonFactory().fromJson(fileReader, ScenePointConfig.class);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.points == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Map.Entry<String, JsonElement> entry : config.points.entrySet()) {
|
||||||
|
PointData pointData = Grasscutter.getGsonFactory().fromJson(entry.getValue(), PointData.class);
|
||||||
|
|
||||||
|
ScenePointEntry sl = new ScenePointEntry(sceneId + "_" + entry.getKey(), pointData);
|
||||||
|
scenePointList.add(sl);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ScenePointEntry entry : scenePointList) {
|
||||||
|
GenshinData.getScenePointEntries().put(entry.getName(), entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void loadAbilityEmbryos() {
|
private static void loadAbilityEmbryos() {
|
||||||
// Read from cached file if exists
|
// Read from cached file if exists
|
||||||
File embryoCache = new File(Grasscutter.getConfig().DATA_FOLDER + "AbilityEmbryos.json");
|
File embryoCache = new File(Grasscutter.getConfig().DATA_FOLDER + "AbilityEmbryos.json");
|
||||||
|
43
src/main/java/emu/grasscutter/data/common/PointData.java
Normal file
43
src/main/java/emu/grasscutter/data/common/PointData.java
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
package emu.grasscutter.data.common;
|
||||||
|
|
||||||
|
public class PointData {
|
||||||
|
private pos tranPos;
|
||||||
|
|
||||||
|
public pos getTranPos() {
|
||||||
|
return tranPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTranPos(pos tranPos) {
|
||||||
|
this.tranPos = tranPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class pos {
|
||||||
|
private float x;
|
||||||
|
private float y;
|
||||||
|
private float z;
|
||||||
|
|
||||||
|
public float getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setX(float x) {
|
||||||
|
this.x = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setY(float y) {
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZ(float z) {
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package emu.grasscutter.data.common;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
|
||||||
|
public class ScenePointConfig {
|
||||||
|
public JsonObject points;
|
||||||
|
|
||||||
|
public JsonObject getPoints() {
|
||||||
|
return points;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPoints(JsonObject Points) {
|
||||||
|
points = Points;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package emu.grasscutter.data.custom;
|
||||||
|
|
||||||
|
import emu.grasscutter.data.common.PointData;
|
||||||
|
|
||||||
|
public class ScenePointEntry {
|
||||||
|
private String name;
|
||||||
|
private PointData pointData;
|
||||||
|
|
||||||
|
public ScenePointEntry(String name, PointData pointData) {
|
||||||
|
this.name = name;
|
||||||
|
this.pointData = pointData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PointData getPointData() {
|
||||||
|
return pointData;
|
||||||
|
}
|
||||||
|
}
|
@ -56,6 +56,8 @@ public class AvatarData extends GenshinResource {
|
|||||||
private AvatarSkillDepotData skillDepot;
|
private AvatarSkillDepotData skillDepot;
|
||||||
private IntList abilities;
|
private IntList abilities;
|
||||||
|
|
||||||
|
private List<Integer> fetters;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getId(){
|
public int getId(){
|
||||||
return this.Id;
|
return this.Id;
|
||||||
@ -193,10 +195,17 @@ public class AvatarData extends GenshinResource {
|
|||||||
return abilities;
|
return abilities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Integer> getFetters() {
|
||||||
|
return fetters;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
this.skillDepot = GenshinData.getAvatarSkillDepotDataMap().get(this.SkillDepotId);
|
this.skillDepot = GenshinData.getAvatarSkillDepotDataMap().get(this.SkillDepotId);
|
||||||
|
|
||||||
|
// Get fetters from GenshinData
|
||||||
|
this.fetters = GenshinData.getFetterDataEntries().get(this.Id);
|
||||||
|
|
||||||
int size = GenshinData.getAvatarCurveDataMap().size();
|
int size = GenshinData.getAvatarCurveDataMap().size();
|
||||||
this.hpGrowthCurve = new float[size];
|
this.hpGrowthCurve = new float[size];
|
||||||
this.attackGrowthCurve = new float[size];
|
this.attackGrowthCurve = new float[size];
|
||||||
|
24
src/main/java/emu/grasscutter/data/def/FetterData.java
Normal file
24
src/main/java/emu/grasscutter/data/def/FetterData.java
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package emu.grasscutter.data.def;
|
||||||
|
|
||||||
|
import emu.grasscutter.data.GenshinResource;
|
||||||
|
import emu.grasscutter.data.ResourceType;
|
||||||
|
import emu.grasscutter.data.ResourceType.LoadPriority;
|
||||||
|
|
||||||
|
@ResourceType(name = {"FetterInfoExcelConfigData.json", "FettersExcelConfigData.json", "FetterStoryExcelConfigData.json"}, loadPriority = LoadPriority.HIGHEST)
|
||||||
|
public class FetterData extends GenshinResource {
|
||||||
|
private int AvatarId;
|
||||||
|
private int FetterId;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getId() {
|
||||||
|
return FetterId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAvatarId() {
|
||||||
|
return AvatarId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoad() {
|
||||||
|
}
|
||||||
|
}
|
@ -74,36 +74,36 @@ public class DatabaseHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void saveAccount(Account account) {
|
public static void saveAccount(Account account) {
|
||||||
DatabaseManager.getDatastore().save(account);
|
DatabaseManager.getAccountDatastore().save(account);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Account getAccountByName(String username) {
|
public static Account getAccountByName(String username) {
|
||||||
MorphiaCursor<Account> cursor = DatabaseManager.getDatastore().createQuery(Account.class).field("username").equalIgnoreCase(username).find(FIND_ONE);
|
MorphiaCursor<Account> cursor = DatabaseManager.getAccountDatastore().createQuery(Account.class).field("username").equalIgnoreCase(username).find(FIND_ONE);
|
||||||
if (!cursor.hasNext()) return null;
|
if (!cursor.hasNext()) return null;
|
||||||
return cursor.next();
|
return cursor.next();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Account getAccountByToken(String token) {
|
public static Account getAccountByToken(String token) {
|
||||||
if (token == null) return null;
|
if (token == null) return null;
|
||||||
MorphiaCursor<Account> cursor = DatabaseManager.getDatastore().createQuery(Account.class).field("token").equal(token).find(FIND_ONE);
|
MorphiaCursor<Account> cursor = DatabaseManager.getAccountDatastore().createQuery(Account.class).field("token").equal(token).find(FIND_ONE);
|
||||||
if (!cursor.hasNext()) return null;
|
if (!cursor.hasNext()) return null;
|
||||||
return cursor.next();
|
return cursor.next();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Account getAccountById(String uid) {
|
public static Account getAccountById(String uid) {
|
||||||
MorphiaCursor<Account> cursor = DatabaseManager.getDatastore().createQuery(Account.class).field("_id").equal(uid).find(FIND_ONE);
|
MorphiaCursor<Account> cursor = DatabaseManager.getAccountDatastore().createQuery(Account.class).field("_id").equal(uid).find(FIND_ONE);
|
||||||
if (!cursor.hasNext()) return null;
|
if (!cursor.hasNext()) return null;
|
||||||
return cursor.next();
|
return cursor.next();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Account getAccountByPlayerId(int playerId) {
|
public static Account getAccountByPlayerId(int playerId) {
|
||||||
MorphiaCursor<Account> cursor = DatabaseManager.getDatastore().createQuery(Account.class).field("playerId").equal(playerId).find(FIND_ONE);
|
MorphiaCursor<Account> cursor = DatabaseManager.getAccountDatastore().createQuery(Account.class).field("playerId").equal(playerId).find(FIND_ONE);
|
||||||
if (!cursor.hasNext()) return null;
|
if (!cursor.hasNext()) return null;
|
||||||
return cursor.next();
|
return cursor.next();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean deleteAccount(String username) {
|
public static boolean deleteAccount(String username) {
|
||||||
Query<Account> q = DatabaseManager.getDatastore().createQuery(Account.class).field("username").equalIgnoreCase(username);
|
Query<Account> q = DatabaseManager.getAccountDatastore().createQuery(Account.class).field("username").equalIgnoreCase(username);
|
||||||
return DatabaseManager.getDatastore().findAndDelete(q) != null;
|
return DatabaseManager.getDatastore().findAndDelete(q) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,10 @@ import emu.grasscutter.game.inventory.GenshinItem;
|
|||||||
|
|
||||||
public final class DatabaseManager {
|
public final class DatabaseManager {
|
||||||
private static MongoClient mongoClient;
|
private static MongoClient mongoClient;
|
||||||
|
private static MongoClient dispatchMongoClient;
|
||||||
|
|
||||||
private static Datastore datastore;
|
private static Datastore datastore;
|
||||||
|
private static Datastore dispatchDatastore;
|
||||||
|
|
||||||
private static final Class<?>[] mappedClasses = new Class<?>[] {
|
private static final Class<?>[] mappedClasses = new Class<?>[] {
|
||||||
DatabaseCounter.class, Account.class, GenshinPlayer.class, GenshinAvatar.class, GenshinItem.class, Friendship.class
|
DatabaseCounter.class, Account.class, GenshinPlayer.class, GenshinAvatar.class, GenshinItem.class, Friendship.class
|
||||||
@ -35,6 +38,16 @@ public final class DatabaseManager {
|
|||||||
return getDatastore().getDatabase();
|
return getDatastore().getDatabase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Yes. I very dislike this method. However, this will be good for now.
|
||||||
|
// TODO: Add dispatch routes for player account management
|
||||||
|
public static Datastore getAccountDatastore() {
|
||||||
|
if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("GAME_ONLY")) {
|
||||||
|
return dispatchDatastore;
|
||||||
|
} else {
|
||||||
|
return datastore;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void initialize() {
|
public static void initialize() {
|
||||||
// Initialize
|
// Initialize
|
||||||
mongoClient = new MongoClient(new MongoClientURI(Grasscutter.getConfig().DatabaseUrl));
|
mongoClient = new MongoClient(new MongoClientURI(Grasscutter.getConfig().DatabaseUrl));
|
||||||
@ -67,6 +80,28 @@ public final class DatabaseManager {
|
|||||||
datastore.ensureIndexes();
|
datastore.ensureIndexes();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("GAME_ONLY")) {
|
||||||
|
dispatchMongoClient = new MongoClient(new MongoClientURI(Grasscutter.getConfig().getGameServerOptions().DispatchServerDatabaseUrl));
|
||||||
|
dispatchDatastore = morphia.createDatastore(dispatchMongoClient, Grasscutter.getConfig().getGameServerOptions().DispatchServerDatabaseCollection);
|
||||||
|
|
||||||
|
// Ensure indexes for dispatch server
|
||||||
|
try {
|
||||||
|
dispatchDatastore.ensureIndexes();
|
||||||
|
} catch (MongoCommandException e) {
|
||||||
|
Grasscutter.getLogger().info("Mongo index error: ", e);
|
||||||
|
// Duplicate index error
|
||||||
|
if (e.getCode() == 85) {
|
||||||
|
// Drop all indexes and re add them
|
||||||
|
MongoIterable<String> collections = dispatchDatastore.getDatabase().listCollectionNames();
|
||||||
|
for (String name : collections) {
|
||||||
|
dispatchDatastore.getDatabase().getCollection(name).dropIndexes();
|
||||||
|
}
|
||||||
|
// Add back indexes
|
||||||
|
dispatchDatastore.ensureIndexes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static synchronized int getNextId(Class<?> c) {
|
public static synchronized int getNextId(Class<?> c) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package emu.grasscutter.game;
|
package emu.grasscutter.game;
|
||||||
|
|
||||||
|
import dev.morphia.annotations.AlsoLoad;
|
||||||
import dev.morphia.annotations.Collation;
|
import dev.morphia.annotations.Collation;
|
||||||
import dev.morphia.annotations.Entity;
|
import dev.morphia.annotations.Entity;
|
||||||
import dev.morphia.annotations.Id;
|
import dev.morphia.annotations.Id;
|
||||||
@ -24,7 +25,7 @@ public class Account {
|
|||||||
private String username;
|
private String username;
|
||||||
private String password; // Unused for now
|
private String password; // Unused for now
|
||||||
|
|
||||||
private int playerId;
|
@AlsoLoad("playerUid") private int playerId;
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
private String token;
|
private String token;
|
||||||
@ -68,7 +69,7 @@ public class Account {
|
|||||||
this.token = token;
|
this.token = token;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getPlayerId() {
|
public int getPlayerUid() {
|
||||||
return this.playerId;
|
return this.playerId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ import emu.grasscutter.net.proto.OnlinePlayerInfoOuterClass.OnlinePlayerInfo;
|
|||||||
import emu.grasscutter.net.proto.PlayerApplyEnterMpReasonOuterClass.PlayerApplyEnterMpReason;
|
import emu.grasscutter.net.proto.PlayerApplyEnterMpReasonOuterClass.PlayerApplyEnterMpReason;
|
||||||
import emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo;
|
import emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo;
|
||||||
import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail;
|
import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail;
|
||||||
|
import emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo;
|
||||||
import emu.grasscutter.server.game.GameServer;
|
import emu.grasscutter.server.game.GameServer;
|
||||||
import emu.grasscutter.server.game.GameSession;
|
import emu.grasscutter.server.game.GameSession;
|
||||||
import emu.grasscutter.server.packet.send.PacketAbilityInvocationsNotify;
|
import emu.grasscutter.server.packet.send.PacketAbilityInvocationsNotify;
|
||||||
@ -38,6 +39,7 @@ import emu.grasscutter.server.packet.send.PacketAvatarAddNotify;
|
|||||||
import emu.grasscutter.server.packet.send.PacketAvatarDataNotify;
|
import emu.grasscutter.server.packet.send.PacketAvatarDataNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketAvatarGainCostumeNotify;
|
import emu.grasscutter.server.packet.send.PacketAvatarGainCostumeNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketAvatarGainFlycloakNotify;
|
import emu.grasscutter.server.packet.send.PacketAvatarGainFlycloakNotify;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketClientAbilityInitFinishNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketCombatInvocationsNotify;
|
import emu.grasscutter.server.packet.send.PacketCombatInvocationsNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketGadgetInteractRsp;
|
import emu.grasscutter.server.packet.send.PacketGadgetInteractRsp;
|
||||||
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
||||||
@ -48,9 +50,11 @@ import emu.grasscutter.server.packet.send.PacketPlayerEnterSceneNotify;
|
|||||||
import emu.grasscutter.server.packet.send.PacketPlayerPropNotify;
|
import emu.grasscutter.server.packet.send.PacketPlayerPropNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketPlayerStoreNotify;
|
import emu.grasscutter.server.packet.send.PacketPlayerStoreNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketPrivateChatNotify;
|
import emu.grasscutter.server.packet.send.PacketPrivateChatNotify;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketScenePlayerLocationNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketSetNameCardRsp;
|
import emu.grasscutter.server.packet.send.PacketSetNameCardRsp;
|
||||||
import emu.grasscutter.server.packet.send.PacketStoreWeightLimitNotify;
|
import emu.grasscutter.server.packet.send.PacketStoreWeightLimitNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketUnlockNameCardNotify;
|
import emu.grasscutter.server.packet.send.PacketUnlockNameCardNotify;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketWorldPlayerLocationNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketWorldPlayerRTTNotify;
|
import emu.grasscutter.server.packet.send.PacketWorldPlayerRTTNotify;
|
||||||
import emu.grasscutter.utils.Position;
|
import emu.grasscutter.utils.Position;
|
||||||
|
|
||||||
@ -100,10 +104,12 @@ public class GenshinPlayer {
|
|||||||
@Transient private int enterSceneToken;
|
@Transient private int enterSceneToken;
|
||||||
@Transient private SceneLoadState sceneState;
|
@Transient private SceneLoadState sceneState;
|
||||||
@Transient private boolean hasSentAvatarDataNotify;
|
@Transient private boolean hasSentAvatarDataNotify;
|
||||||
|
@Transient private long nextSendPlayerLocTime = 0;
|
||||||
|
|
||||||
@Transient private final Int2ObjectMap<CoopRequest> coopRequests;
|
@Transient private final Int2ObjectMap<CoopRequest> coopRequests;
|
||||||
@Transient private final InvokeHandler<CombatInvokeEntry> combatInvokeHandler;
|
@Transient private final InvokeHandler<CombatInvokeEntry> combatInvokeHandler;
|
||||||
@Transient private final InvokeHandler<AbilityInvokeEntry> abilityInvokeHandler;
|
@Transient private final InvokeHandler<AbilityInvokeEntry> abilityInvokeHandler;
|
||||||
|
@Transient private final InvokeHandler<AbilityInvokeEntry> clientAbilityInitFinishHandler;
|
||||||
|
|
||||||
@Deprecated @SuppressWarnings({ "rawtypes", "unchecked" }) // Morphia only!
|
@Deprecated @SuppressWarnings({ "rawtypes", "unchecked" }) // Morphia only!
|
||||||
public GenshinPlayer() {
|
public GenshinPlayer() {
|
||||||
@ -119,6 +125,12 @@ public class GenshinPlayer {
|
|||||||
}
|
}
|
||||||
this.properties.put(prop.getId(), 0);
|
this.properties.put(prop.getId(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.gachaInfo = new PlayerGachaInfo();
|
||||||
|
this.nameCardList = new HashSet<>();
|
||||||
|
this.flyCloakList = new HashSet<>();
|
||||||
|
this.costumeList = new HashSet<>();
|
||||||
|
|
||||||
this.setSceneId(3);
|
this.setSceneId(3);
|
||||||
this.setRegionId(1);
|
this.setRegionId(1);
|
||||||
this.sceneState = SceneLoadState.NONE;
|
this.sceneState = SceneLoadState.NONE;
|
||||||
@ -126,6 +138,7 @@ public class GenshinPlayer {
|
|||||||
this.coopRequests = new Int2ObjectOpenHashMap<>();
|
this.coopRequests = new Int2ObjectOpenHashMap<>();
|
||||||
this.combatInvokeHandler = new InvokeHandler(PacketCombatInvocationsNotify.class);
|
this.combatInvokeHandler = new InvokeHandler(PacketCombatInvocationsNotify.class);
|
||||||
this.abilityInvokeHandler = new InvokeHandler(PacketAbilityInvocationsNotify.class);
|
this.abilityInvokeHandler = new InvokeHandler(PacketAbilityInvocationsNotify.class);
|
||||||
|
this.clientAbilityInitFinishHandler = new InvokeHandler(PacketClientAbilityInitFinishNotify.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
// On player creation
|
// On player creation
|
||||||
@ -137,11 +150,6 @@ public class GenshinPlayer {
|
|||||||
this.nickname = "Traveler";
|
this.nickname = "Traveler";
|
||||||
this.signature = "";
|
this.signature = "";
|
||||||
this.teamManager = new TeamManager(this);
|
this.teamManager = new TeamManager(this);
|
||||||
this.gachaInfo = new PlayerGachaInfo();
|
|
||||||
this.playerProfile = new PlayerProfile(this);
|
|
||||||
this.nameCardList = new HashSet<>();
|
|
||||||
this.flyCloakList = new HashSet<>();
|
|
||||||
this.costumeList = new HashSet<>();
|
|
||||||
this.setProperty(PlayerProperty.PROP_PLAYER_LEVEL, 1);
|
this.setProperty(PlayerProperty.PROP_PLAYER_LEVEL, 1);
|
||||||
this.setProperty(PlayerProperty.PROP_IS_SPRING_AUTO_USE, 1);
|
this.setProperty(PlayerProperty.PROP_IS_SPRING_AUTO_USE, 1);
|
||||||
this.setProperty(PlayerProperty.PROP_SPRING_AUTO_USE_PERCENT, 50);
|
this.setProperty(PlayerProperty.PROP_SPRING_AUTO_USE_PERCENT, 50);
|
||||||
@ -285,7 +293,7 @@ public class GenshinPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private float getExpModifier() {
|
private float getExpModifier() {
|
||||||
return Grasscutter.getConfig().getGameRates().ADVENTURE_EXP_RATE;
|
return Grasscutter.getConfig().getGameServerOptions().getGameRates().ADVENTURE_EXP_RATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Affected by exp rate
|
// Affected by exp rate
|
||||||
@ -344,7 +352,6 @@ public class GenshinPlayer {
|
|||||||
public PlayerProfile getProfile() {
|
public PlayerProfile getProfile() {
|
||||||
if (this.playerProfile == null) {
|
if (this.playerProfile == null) {
|
||||||
this.playerProfile = new PlayerProfile(this);
|
this.playerProfile = new PlayerProfile(this);
|
||||||
this.save();
|
|
||||||
}
|
}
|
||||||
return playerProfile;
|
return playerProfile;
|
||||||
}
|
}
|
||||||
@ -389,6 +396,10 @@ public class GenshinPlayer {
|
|||||||
return this.abilityInvokeHandler;
|
return this.abilityInvokeHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public InvokeHandler<AbilityInvokeEntry> getClientAbilityInitFinishHandler() {
|
||||||
|
return clientAbilityInitFinishHandler;
|
||||||
|
}
|
||||||
|
|
||||||
public void setMpSetting(MpSettingType mpSetting) {
|
public void setMpSetting(MpSettingType mpSetting) {
|
||||||
this.mpSetting = mpSetting;
|
this.mpSetting = mpSetting;
|
||||||
}
|
}
|
||||||
@ -647,6 +658,13 @@ public class GenshinPlayer {
|
|||||||
return social;
|
return social;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WorldPlayerLocationInfo getWorldPlayerLocationInfo() {
|
||||||
|
return WorldPlayerLocationInfo.newBuilder()
|
||||||
|
.setSceneId(this.getSceneId())
|
||||||
|
.setPlayerLoc(this.getPlayerLocationInfo())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
public PlayerLocationInfo getPlayerLocationInfo() {
|
public PlayerLocationInfo getPlayerLocationInfo() {
|
||||||
return PlayerLocationInfo.newBuilder()
|
return PlayerLocationInfo.newBuilder()
|
||||||
.setUid(this.getUid())
|
.setUid(this.getUid())
|
||||||
@ -672,9 +690,22 @@ public class GenshinPlayer {
|
|||||||
}
|
}
|
||||||
// Ping
|
// Ping
|
||||||
if (this.getWorld() != null) {
|
if (this.getWorld() != null) {
|
||||||
this.sendPacket(new PacketWorldPlayerRTTNotify(this.getWorld())); // Player ping
|
// RTT notify - very important to send this often
|
||||||
|
this.sendPacket(new PacketWorldPlayerRTTNotify(this.getWorld()));
|
||||||
|
|
||||||
|
// Update player locations if in multiplayer every 5 seconds
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
if (this.getWorld().isMultiplayer() && this.getScene() != null && time > nextSendPlayerLocTime) {
|
||||||
|
this.sendPacket(new PacketWorldPlayerLocationNotify(this.getWorld()));
|
||||||
|
this.sendPacket(new PacketScenePlayerLocationNotify(this.getScene()));
|
||||||
|
this.resetSendPlayerLocTime();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetSendPlayerLocTime() {
|
||||||
|
this.nextSendPlayerLocTime = System.currentTimeMillis() + 5000;
|
||||||
|
}
|
||||||
|
|
||||||
@PostLoad
|
@PostLoad
|
||||||
private void onLoad() {
|
private void onLoad() {
|
||||||
@ -689,12 +720,8 @@ public class GenshinPlayer {
|
|||||||
// Make sure these exist
|
// Make sure these exist
|
||||||
if (this.getTeamManager() == null) {
|
if (this.getTeamManager() == null) {
|
||||||
this.teamManager = new TeamManager(this);
|
this.teamManager = new TeamManager(this);
|
||||||
} if (this.getGachaInfo() == null) {
|
} if (this.getProfile().getUid() == 0) {
|
||||||
this.gachaInfo = new PlayerGachaInfo();
|
this.getProfile().syncWithCharacter(this);
|
||||||
} if (this.nameCardList == null) {
|
|
||||||
this.nameCardList = new HashSet<>();
|
|
||||||
} if (this.costumeList == null) {
|
|
||||||
this.costumeList = new HashSet<>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if player object exists in server
|
// Check if player object exists in server
|
||||||
|
@ -34,6 +34,7 @@ public class GenshinScene {
|
|||||||
|
|
||||||
private int time;
|
private int time;
|
||||||
private ClimateType climate;
|
private ClimateType climate;
|
||||||
|
private int weather;
|
||||||
|
|
||||||
public GenshinScene(World world, SceneData sceneData) {
|
public GenshinScene(World world, SceneData sceneData) {
|
||||||
this.world = world;
|
this.world = world;
|
||||||
@ -89,10 +90,18 @@ public class GenshinScene {
|
|||||||
return climate;
|
return climate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getWeather() {
|
||||||
|
return weather;
|
||||||
|
}
|
||||||
|
|
||||||
public void setClimate(ClimateType climate) {
|
public void setClimate(ClimateType climate) {
|
||||||
this.climate = climate;
|
this.climate = climate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setWeather(int weather) {
|
||||||
|
this.weather = weather;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isInScene(GenshinEntity entity) {
|
public boolean isInScene(GenshinEntity entity) {
|
||||||
return this.entities.containsKey(entity.getId());
|
return this.entities.containsKey(entity.getId());
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ public class TeamInfo {
|
|||||||
|
|
||||||
public TeamInfo() {
|
public TeamInfo() {
|
||||||
this.name = "";
|
this.name = "";
|
||||||
this.avatars = new ArrayList<>(Grasscutter.getConfig().getServerOptions().MaxAvatarsInTeam);
|
this.avatars = new ArrayList<>(Grasscutter.getConfig().getGameServerOptions().MaxAvatarsInTeam);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
@ -37,7 +37,7 @@ public class TeamInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean addAvatar(GenshinAvatar avatar) {
|
public boolean addAvatar(GenshinAvatar avatar) {
|
||||||
if (size() >= Grasscutter.getConfig().getServerOptions().MaxAvatarsInTeam || contains(avatar)) {
|
if (size() >= Grasscutter.getConfig().getGameServerOptions().MaxAvatarsInTeam || contains(avatar)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ public class TeamInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void copyFrom(TeamInfo team) {
|
public void copyFrom(TeamInfo team) {
|
||||||
copyFrom(team, Grasscutter.getConfig().getServerOptions().MaxAvatarsInTeam);
|
copyFrom(team, Grasscutter.getConfig().getGameServerOptions().MaxAvatarsInTeam);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void copyFrom(TeamInfo team, int maxTeamSize) {
|
public void copyFrom(TeamInfo team, int maxTeamSize) {
|
||||||
|
@ -164,13 +164,13 @@ public class TeamManager {
|
|||||||
|
|
||||||
public int getMaxTeamSize() {
|
public int getMaxTeamSize() {
|
||||||
if (getPlayer().isInMultiplayer()) {
|
if (getPlayer().isInMultiplayer()) {
|
||||||
int max = Grasscutter.getConfig().getServerOptions().MaxAvatarsInTeamMultiplayer;
|
int max = Grasscutter.getConfig().getGameServerOptions().MaxAvatarsInTeamMultiplayer;
|
||||||
if (getPlayer().getWorld().getHost() == this.getPlayer()) {
|
if (getPlayer().getWorld().getHost() == this.getPlayer()) {
|
||||||
return Math.max(1, (int) Math.ceil(max / (double) getWorld().getPlayerCount()));
|
return Math.max(1, (int) Math.ceil(max / (double) getWorld().getPlayerCount()));
|
||||||
}
|
}
|
||||||
return Math.max(1, (int) Math.floor(max / (double) getWorld().getPlayerCount()));
|
return Math.max(1, (int) Math.floor(max / (double) getWorld().getPlayerCount()));
|
||||||
}
|
}
|
||||||
return Grasscutter.getConfig().getServerOptions().MaxAvatarsInTeam;
|
return Grasscutter.getConfig().getGameServerOptions().MaxAvatarsInTeam;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Methods
|
// Methods
|
||||||
|
@ -208,11 +208,14 @@ public class World implements Iterable<GenshinPlayer> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean transferPlayerToScene(GenshinPlayer player, int sceneId, Position pos) {
|
public boolean transferPlayerToScene(GenshinPlayer player, int sceneId, Position pos) {
|
||||||
if (player.getScene().getId() == sceneId || GenshinData.getSceneDataMap().get(sceneId) == null) {
|
if (GenshinData.getSceneDataMap().get(sceneId) == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Integer oldSceneId = null;
|
||||||
|
|
||||||
if (player.getScene() != null) {
|
if (player.getScene() != null) {
|
||||||
|
oldSceneId = player.getScene().getId();
|
||||||
player.getScene().removePlayer(player);
|
player.getScene().removePlayer(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,7 +224,11 @@ public class World implements Iterable<GenshinPlayer> {
|
|||||||
player.getPos().set(pos);
|
player.getPos().set(pos);
|
||||||
|
|
||||||
// Teleport packet
|
// Teleport packet
|
||||||
player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterSelf, EnterReason.TransPoint, sceneId, pos));
|
if (oldSceneId.equals(sceneId)) {
|
||||||
|
player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterGoto, EnterReason.TransPoint, sceneId, pos));
|
||||||
|
} else {
|
||||||
|
player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterJump, EnterReason.TransPoint, sceneId, pos));
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package emu.grasscutter.game.avatar;
|
package emu.grasscutter.game.avatar;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -13,6 +15,7 @@ import dev.morphia.annotations.Indexed;
|
|||||||
import dev.morphia.annotations.PostLoad;
|
import dev.morphia.annotations.PostLoad;
|
||||||
import dev.morphia.annotations.PrePersist;
|
import dev.morphia.annotations.PrePersist;
|
||||||
import dev.morphia.annotations.Transient;
|
import dev.morphia.annotations.Transient;
|
||||||
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.data.GenshinData;
|
import emu.grasscutter.data.GenshinData;
|
||||||
import emu.grasscutter.data.common.FightPropData;
|
import emu.grasscutter.data.common.FightPropData;
|
||||||
import emu.grasscutter.data.custom.OpenConfigEntry;
|
import emu.grasscutter.data.custom.OpenConfigEntry;
|
||||||
@ -38,10 +41,13 @@ import emu.grasscutter.game.inventory.EquipType;
|
|||||||
import emu.grasscutter.game.inventory.GenshinItem;
|
import emu.grasscutter.game.inventory.GenshinItem;
|
||||||
import emu.grasscutter.game.props.ElementType;
|
import emu.grasscutter.game.props.ElementType;
|
||||||
import emu.grasscutter.game.props.EntityIdType;
|
import emu.grasscutter.game.props.EntityIdType;
|
||||||
|
import emu.grasscutter.game.props.FetterState;
|
||||||
import emu.grasscutter.game.props.FightProperty;
|
import emu.grasscutter.game.props.FightProperty;
|
||||||
import emu.grasscutter.game.props.PlayerProperty;
|
import emu.grasscutter.game.props.PlayerProperty;
|
||||||
import emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo;
|
import emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo;
|
||||||
|
import emu.grasscutter.net.proto.FetterDataOuterClass.FetterData;
|
||||||
import emu.grasscutter.net.proto.AvatarInfoOuterClass.AvatarInfo;
|
import emu.grasscutter.net.proto.AvatarInfoOuterClass.AvatarInfo;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketAbilityChangeNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketAvatarEquipChangeNotify;
|
import emu.grasscutter.server.packet.send.PacketAvatarEquipChangeNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketAvatarFightPropNotify;
|
import emu.grasscutter.server.packet.send.PacketAvatarFightPropNotify;
|
||||||
import emu.grasscutter.utils.ProtoHelper;
|
import emu.grasscutter.utils.ProtoHelper;
|
||||||
@ -69,7 +75,9 @@ public class GenshinAvatar {
|
|||||||
|
|
||||||
@Transient private final Int2ObjectMap<GenshinItem> equips;
|
@Transient private final Int2ObjectMap<GenshinItem> equips;
|
||||||
@Transient private final Int2FloatOpenHashMap fightProp;
|
@Transient private final Int2FloatOpenHashMap fightProp;
|
||||||
@Transient private final Set<String> bonusAbilityList;
|
@Transient private Set<String> extraAbilityEmbryos;
|
||||||
|
|
||||||
|
private List<Integer> fetters;
|
||||||
|
|
||||||
private Map<Integer, Integer> skillLevelMap; // Talent levels
|
private Map<Integer, Integer> skillLevelMap; // Talent levels
|
||||||
private Map<Integer, Integer> proudSkillBonusMap; // Talent bonus levels (from const)
|
private Map<Integer, Integer> proudSkillBonusMap; // Talent bonus levels (from const)
|
||||||
@ -86,8 +94,9 @@ public class GenshinAvatar {
|
|||||||
// Morhpia only!
|
// Morhpia only!
|
||||||
this.equips = new Int2ObjectOpenHashMap<>();
|
this.equips = new Int2ObjectOpenHashMap<>();
|
||||||
this.fightProp = new Int2FloatOpenHashMap();
|
this.fightProp = new Int2FloatOpenHashMap();
|
||||||
this.bonusAbilityList = new HashSet<>();
|
this.extraAbilityEmbryos = new HashSet<>();
|
||||||
this.proudSkillBonusMap = new HashMap<>(); // TODO Move to genshin avatar
|
this.proudSkillBonusMap = new HashMap<>();
|
||||||
|
this.fetters = new ArrayList<>(); // TODO Move to genshin avatar
|
||||||
}
|
}
|
||||||
|
|
||||||
// On creation
|
// On creation
|
||||||
@ -260,8 +269,16 @@ public class GenshinAvatar {
|
|||||||
return proudSkillBonusMap;
|
return proudSkillBonusMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<String> getBonusAbilityList() {
|
public Set<String> getExtraAbilityEmbryos() {
|
||||||
return bonusAbilityList;
|
return extraAbilityEmbryos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFetterList(List<Integer> fetterList) {
|
||||||
|
this.fetters = fetterList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Integer> getFetterList() {
|
||||||
|
return fetters;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getCurrentHp() {
|
public float getCurrentHp() {
|
||||||
@ -347,14 +364,14 @@ public class GenshinAvatar {
|
|||||||
item.setEquipCharacter(this.getAvatarId());
|
item.setEquipCharacter(this.getAvatarId());
|
||||||
item.save();
|
item.save();
|
||||||
|
|
||||||
if (shouldRecalc) {
|
|
||||||
this.recalcStats();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.getPlayer().hasSentAvatarDataNotify()) {
|
if (this.getPlayer().hasSentAvatarDataNotify()) {
|
||||||
this.getPlayer().sendPacket(new PacketAvatarEquipChangeNotify(this, item));
|
this.getPlayer().sendPacket(new PacketAvatarEquipChangeNotify(this, item));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (shouldRecalc) {
|
||||||
|
this.recalcStats();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,11 +388,21 @@ public class GenshinAvatar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void recalcStats() {
|
public void recalcStats() {
|
||||||
|
recalcStats(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void recalcStats(boolean forceSendAbilityChange) {
|
||||||
// Setup
|
// Setup
|
||||||
AvatarData data = this.getAvatarData();
|
AvatarData data = this.getAvatarData();
|
||||||
AvatarPromoteData promoteData = GenshinData.getAvatarPromoteData(data.getAvatarPromoteId(), this.getPromoteLevel());
|
AvatarPromoteData promoteData = GenshinData.getAvatarPromoteData(data.getAvatarPromoteId(), this.getPromoteLevel());
|
||||||
Int2IntOpenHashMap setMap = new Int2IntOpenHashMap();
|
Int2IntOpenHashMap setMap = new Int2IntOpenHashMap();
|
||||||
this.getBonusAbilityList().clear();
|
|
||||||
|
// Extra ability embryos
|
||||||
|
Set<String> prevExtraAbilityEmbryos = this.getExtraAbilityEmbryos();
|
||||||
|
this.extraAbilityEmbryos = new HashSet<>();
|
||||||
|
|
||||||
|
// Fetters
|
||||||
|
this.setFetterList(data.getFetters());
|
||||||
|
|
||||||
// Get hp percent, set to 100% if none
|
// Get hp percent, set to 100% if none
|
||||||
float hpPercent = this.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) <= 0 ? 1f : this.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP) / this.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP);
|
float hpPercent = this.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) <= 0 ? 1f : this.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP) / this.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP);
|
||||||
@ -458,7 +485,7 @@ public class GenshinAvatar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add any skill strings from this affix
|
// Add any skill strings from this affix
|
||||||
this.addToAbilityList(affix.getOpenConfig(), true);
|
this.addToExtraAbilityEmbryos(affix.getOpenConfig(), true);
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -505,7 +532,7 @@ public class GenshinAvatar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add any skill strings from this affix
|
// Add any skill strings from this affix
|
||||||
this.addToAbilityList(affix.getOpenConfig(), true);
|
this.addToExtraAbilityEmbryos(affix.getOpenConfig(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -538,7 +565,7 @@ public class GenshinAvatar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add any skill strings from this proud skill
|
// Add any skill strings from this proud skill
|
||||||
this.addToAbilityList(proudSkillData.getOpenConfig(), true);
|
this.addToExtraAbilityEmbryos(proudSkillData.getOpenConfig(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Constellations
|
// Constellations
|
||||||
@ -550,7 +577,7 @@ public class GenshinAvatar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add any skill strings from this constellation
|
// Add any skill strings from this constellation
|
||||||
this.addToAbilityList(avatarTalentData.getOpenConfig(), false);
|
this.addToExtraAbilityEmbryos(avatarTalentData.getOpenConfig(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -573,11 +600,17 @@ public class GenshinAvatar {
|
|||||||
|
|
||||||
// Packet
|
// Packet
|
||||||
if (getPlayer() != null && getPlayer().hasSentAvatarDataNotify()) {
|
if (getPlayer() != null && getPlayer().hasSentAvatarDataNotify()) {
|
||||||
|
// Update stats for client
|
||||||
getPlayer().sendPacket(new PacketAvatarFightPropNotify(this));
|
getPlayer().sendPacket(new PacketAvatarFightPropNotify(this));
|
||||||
|
// Update client abilities
|
||||||
|
EntityAvatar entity = this.getAsEntity();
|
||||||
|
if (entity != null && (!this.getExtraAbilityEmbryos().equals(prevExtraAbilityEmbryos) || forceSendAbilityChange)) {
|
||||||
|
getPlayer().sendPacket(new PacketAbilityChangeNotify(entity));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addToAbilityList(String openConfig, boolean forceAdd) {
|
public void addToExtraAbilityEmbryos(String openConfig, boolean forceAdd) {
|
||||||
if (openConfig == null || openConfig.length() == 0) {
|
if (openConfig == null || openConfig.length() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -586,14 +619,14 @@ public class GenshinAvatar {
|
|||||||
if (entry == null) {
|
if (entry == null) {
|
||||||
if (forceAdd) {
|
if (forceAdd) {
|
||||||
// Add config string to ability skill list anyways
|
// Add config string to ability skill list anyways
|
||||||
this.getBonusAbilityList().add(openConfig);
|
this.getExtraAbilityEmbryos().add(openConfig);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry.getAddAbilities() != null) {
|
if (entry.getAddAbilities() != null) {
|
||||||
for (String ability : entry.getAddAbilities()) {
|
for (String ability : entry.getAddAbilities()) {
|
||||||
this.getBonusAbilityList().add(ability);
|
this.getExtraAbilityEmbryos().add(ability);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -668,6 +701,20 @@ public class GenshinAvatar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public AvatarInfo toProto() {
|
public AvatarInfo toProto() {
|
||||||
|
AvatarFetterInfo.Builder avatarFetter = AvatarFetterInfo.newBuilder()
|
||||||
|
.setExpLevel(10)
|
||||||
|
.setExpNumber(6325); // Highest Level
|
||||||
|
|
||||||
|
if (this.getFetterList() != null) {
|
||||||
|
for (int i = 0; i < this.getFetterList().size(); i++) {
|
||||||
|
avatarFetter.addFetterList(
|
||||||
|
FetterData.newBuilder()
|
||||||
|
.setFetterId(this.getFetterList().get(i))
|
||||||
|
.setFetterState(FetterState.FINISH.getValue())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AvatarInfo.Builder avatarInfo = AvatarInfo.newBuilder()
|
AvatarInfo.Builder avatarInfo = AvatarInfo.newBuilder()
|
||||||
.setAvatarId(this.getAvatarId())
|
.setAvatarId(this.getAvatarId())
|
||||||
.setGuid(this.getGuid())
|
.setGuid(this.getGuid())
|
||||||
@ -681,7 +728,7 @@ public class GenshinAvatar {
|
|||||||
.putAllProudSkillExtraLevel(getProudSkillBonusMap())
|
.putAllProudSkillExtraLevel(getProudSkillBonusMap())
|
||||||
.setAvatarType(1)
|
.setAvatarType(1)
|
||||||
.setBornTime(this.getBornTime())
|
.setBornTime(this.getBornTime())
|
||||||
.setFetterInfo(AvatarFetterInfo.newBuilder().setExpLevel(1))
|
.setFetterInfo(avatarFetter)
|
||||||
.setWearingFlycloakId(this.getFlyCloak())
|
.setWearingFlycloakId(this.getFlyCloak())
|
||||||
.setCostumeId(this.getCostume());
|
.setCostumeId(this.getCostume());
|
||||||
|
|
||||||
|
@ -223,8 +223,8 @@ public class EntityAvatar extends GenshinEntity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add equip abilities
|
// Add equip abilities
|
||||||
if (this.getAvatar().getBonusAbilityList().size() > 0) {
|
if (this.getAvatar().getExtraAbilityEmbryos().size() > 0) {
|
||||||
for (String skill : this.getAvatar().getBonusAbilityList()) {
|
for (String skill : this.getAvatar().getExtraAbilityEmbryos()) {
|
||||||
AbilityEmbryo emb = AbilityEmbryo.newBuilder()
|
AbilityEmbryo emb = AbilityEmbryo.newBuilder()
|
||||||
.setAbilityId(++embryoId)
|
.setAbilityId(++embryoId)
|
||||||
.setAbilityNameHash(Utils.abilityHash(skill))
|
.setAbilityNameHash(Utils.abilityHash(skill))
|
||||||
|
@ -220,7 +220,7 @@ public class FriendsList {
|
|||||||
friendship.setOwner(getPlayer());
|
friendship.setOwner(getPlayer());
|
||||||
|
|
||||||
// Check if friend is online
|
// Check if friend is online
|
||||||
GenshinPlayer friend = getPlayer().getSession().getServer().getPlayerByUid(friendship.getFriendProfile().getId());
|
GenshinPlayer friend = getPlayer().getSession().getServer().getPlayerByUid(friendship.getFriendProfile().getUid());
|
||||||
if (friend != null) {
|
if (friend != null) {
|
||||||
// Set friend to online mode
|
// Set friend to online mode
|
||||||
friendship.setFriendProfile(friend);
|
friendship.setFriendProfile(friend);
|
||||||
|
@ -88,7 +88,7 @@ public class Friendship {
|
|||||||
|
|
||||||
public FriendBrief toProto() {
|
public FriendBrief toProto() {
|
||||||
FriendBrief proto = FriendBrief.newBuilder()
|
FriendBrief proto = FriendBrief.newBuilder()
|
||||||
.setUid(getFriendProfile().getId())
|
.setUid(getFriendProfile().getUid())
|
||||||
.setNickname(getFriendProfile().getName())
|
.setNickname(getFriendProfile().getName())
|
||||||
.setLevel(getFriendProfile().getPlayerLevel())
|
.setLevel(getFriendProfile().getPlayerLevel())
|
||||||
.setAvatar(HeadImage.newBuilder().setAvatarId(getFriendProfile().getAvatarId()))
|
.setAvatar(HeadImage.newBuilder().setAvatarId(getFriendProfile().getAvatarId()))
|
||||||
|
@ -7,7 +7,7 @@ import emu.grasscutter.utils.Utils;
|
|||||||
public class PlayerProfile {
|
public class PlayerProfile {
|
||||||
@Transient private GenshinPlayer player;
|
@Transient private GenshinPlayer player;
|
||||||
|
|
||||||
private int id;
|
@AlsoLoad("id") private int uid;
|
||||||
private int nameCard;
|
private int nameCard;
|
||||||
private int avatarId;
|
private int avatarId;
|
||||||
private String name;
|
private String name;
|
||||||
@ -22,12 +22,12 @@ public class PlayerProfile {
|
|||||||
public PlayerProfile() { }
|
public PlayerProfile() { }
|
||||||
|
|
||||||
public PlayerProfile(GenshinPlayer player) {
|
public PlayerProfile(GenshinPlayer player) {
|
||||||
this.id = player.getUid();
|
this.uid = player.getUid();
|
||||||
this.syncWithCharacter(player);
|
this.syncWithCharacter(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getId() {
|
public int getUid() {
|
||||||
return id;
|
return uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GenshinPlayer getPlayer() {
|
public GenshinPlayer getPlayer() {
|
||||||
@ -87,6 +87,7 @@ public class PlayerProfile {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.uid = player.getUid();
|
||||||
this.name = player.getNickname();
|
this.name = player.getNickname();
|
||||||
this.avatarId = player.getHeadImage();
|
this.avatarId = player.getHeadImage();
|
||||||
this.signature = player.getSignature();
|
this.signature = player.getSignature();
|
||||||
|
@ -92,7 +92,7 @@ public class GachaBanner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public GachaInfo toProto() {
|
public GachaInfo toProto() {
|
||||||
String record = "http://" + (Grasscutter.getConfig().DispatchServerPublicIp.isEmpty() ? Grasscutter.getConfig().DispatchServerIp : Grasscutter.getConfig().DispatchServerPublicIp) + "/gacha";
|
String record = "http://" + (Grasscutter.getConfig().getDispatchOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getDispatchOptions().Ip : Grasscutter.getConfig().getDispatchOptions().PublicIp) + "/gacha";
|
||||||
|
|
||||||
GachaInfo.Builder info = GachaInfo.newBuilder()
|
GachaInfo.Builder info = GachaInfo.newBuilder()
|
||||||
.setGachaType(this.getGachaType())
|
.setGachaType(this.getGachaType())
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package emu.grasscutter.game.gacha;
|
package emu.grasscutter.game.gacha;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
|
import java.nio.file.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -8,6 +10,7 @@ import java.util.concurrent.ThreadLocalRandom;
|
|||||||
|
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
import com.sun.nio.file.SensitivityWatchEventModifier;
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.data.GenshinData;
|
import emu.grasscutter.data.GenshinData;
|
||||||
import emu.grasscutter.data.def.ItemData;
|
import emu.grasscutter.data.def.ItemData;
|
||||||
@ -21,16 +24,19 @@ import emu.grasscutter.net.proto.GachaTransferItemOuterClass.GachaTransferItem;
|
|||||||
import emu.grasscutter.net.proto.GetGachaInfoRspOuterClass.GetGachaInfoRsp;
|
import emu.grasscutter.net.proto.GetGachaInfoRspOuterClass.GetGachaInfoRsp;
|
||||||
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
|
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
|
||||||
import emu.grasscutter.server.game.GameServer;
|
import emu.grasscutter.server.game.GameServer;
|
||||||
|
import emu.grasscutter.server.game.GameServerTickEvent;
|
||||||
import emu.grasscutter.server.packet.send.PacketDoGachaRsp;
|
import emu.grasscutter.server.packet.send.PacketDoGachaRsp;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||||
import it.unimi.dsi.fastutil.ints.IntList;
|
import it.unimi.dsi.fastutil.ints.IntList;
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
|
||||||
public class GachaManager {
|
public class GachaManager {
|
||||||
private final GameServer server;
|
private final GameServer server;
|
||||||
private final Int2ObjectMap<GachaBanner> gachaBanners;
|
private final Int2ObjectMap<GachaBanner> gachaBanners;
|
||||||
private GetGachaInfoRsp cachedProto;
|
private GetGachaInfoRsp cachedProto;
|
||||||
|
WatchService watchService;
|
||||||
|
|
||||||
private int[] yellowAvatars = new int[] {1003, 1016, 1042, 1035, 1041};
|
private int[] yellowAvatars = new int[] {1003, 1016, 1042, 1035, 1041};
|
||||||
private int[] yellowWeapons = new int[] {11501, 11502, 12501, 12502, 13502, 13505, 14501, 14502, 15501, 15502};
|
private int[] yellowWeapons = new int[] {11501, 11502, 12501, 12502, 13502, 13505, 14501, 14502, 15501, 15502};
|
||||||
@ -45,6 +51,7 @@ public class GachaManager {
|
|||||||
this.server = server;
|
this.server = server;
|
||||||
this.gachaBanners = new Int2ObjectOpenHashMap<>();
|
this.gachaBanners = new Int2ObjectOpenHashMap<>();
|
||||||
this.load();
|
this.load();
|
||||||
|
this.startWatcher(server);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameServer getServer() {
|
public GameServer getServer() {
|
||||||
@ -65,10 +72,17 @@ public class GachaManager {
|
|||||||
|
|
||||||
public synchronized void load() {
|
public synchronized void load() {
|
||||||
try (FileReader fileReader = new FileReader(Grasscutter.getConfig().DATA_FOLDER + "Banners.json")) {
|
try (FileReader fileReader = new FileReader(Grasscutter.getConfig().DATA_FOLDER + "Banners.json")) {
|
||||||
|
getGachaBanners().clear();
|
||||||
List<GachaBanner> banners = Grasscutter.getGsonFactory().fromJson(fileReader, TypeToken.getParameterized(Collection.class, GachaBanner.class).getType());
|
List<GachaBanner> banners = Grasscutter.getGsonFactory().fromJson(fileReader, TypeToken.getParameterized(Collection.class, GachaBanner.class).getType());
|
||||||
|
if(banners.size() > 0) {
|
||||||
for (GachaBanner banner : banners) {
|
for (GachaBanner banner : banners) {
|
||||||
getGachaBanners().put(banner.getGachaType(), banner);
|
getGachaBanners().put(banner.getGachaType(), banner);
|
||||||
}
|
}
|
||||||
|
Grasscutter.getLogger().info("Banners successfully loaded.");
|
||||||
|
this.cachedProto = createProto();
|
||||||
|
} else {
|
||||||
|
Grasscutter.getLogger().error("Unable to load banners. Banners size is 0.");
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -204,7 +218,6 @@ public class GachaManager {
|
|||||||
addStarglitter = 2;
|
addStarglitter = 2;
|
||||||
// Add 1 const
|
// Add 1 const
|
||||||
gachaItem.addTransferItems(GachaTransferItem.newBuilder().setItem(ItemParam.newBuilder().setItemId(constItemId).setCount(1)).setIsTransferItemNew(constItem == null));
|
gachaItem.addTransferItems(GachaTransferItem.newBuilder().setItem(ItemParam.newBuilder().setItemId(constItemId).setCount(1)).setIsTransferItemNew(constItem == null));
|
||||||
gachaItem.addTokenItemList(ItemParam.newBuilder().setItemId(constItemId).setCount(1));
|
|
||||||
player.getInventory().addItem(constItemId, 1);
|
player.getInventory().addItem(constItemId, 1);
|
||||||
} else {
|
} else {
|
||||||
// Is max const
|
// Is max const
|
||||||
@ -267,6 +280,48 @@ public class GachaManager {
|
|||||||
player.sendPacket(new PacketDoGachaRsp(banner, list));
|
player.sendPacket(new PacketDoGachaRsp(banner, list));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private synchronized void startWatcher(GameServer server) {
|
||||||
|
if(this.watchService == null) {
|
||||||
|
try {
|
||||||
|
this.watchService = FileSystems.getDefault().newWatchService();
|
||||||
|
Path path = new File(Grasscutter.getConfig().DATA_FOLDER).toPath();
|
||||||
|
path.register(watchService, new WatchEvent.Kind[]{StandardWatchEventKinds.ENTRY_MODIFY}, SensitivityWatchEventModifier.HIGH);
|
||||||
|
|
||||||
|
server.OnGameServerTick.register(this);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Grasscutter.getLogger().error("Unable to load the Gacha Manager Watch Service. If ServerOptions.watchGacha is true it will not auto-reload");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Grasscutter.getLogger().error("Cannot reinitialise watcher ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public synchronized void watchBannerJson(GameServerTickEvent tickEvent) {
|
||||||
|
if(Grasscutter.getConfig().getGameServerOptions().WatchGacha) {
|
||||||
|
try {
|
||||||
|
WatchKey watchKey = watchService.take();
|
||||||
|
|
||||||
|
for (WatchEvent<?> event : watchKey.pollEvents()) {
|
||||||
|
final Path changed = (Path) event.context();
|
||||||
|
if (changed.endsWith("Banners.json")) {
|
||||||
|
Grasscutter.getLogger().info("Change detected with banners.json. Reloading gacha config");
|
||||||
|
this.load();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean valid = watchKey.reset();
|
||||||
|
if (!valid) {
|
||||||
|
Grasscutter.getLogger().error("Unable to reset Gacha Manager Watch Key. Auto-reload of banners.json will no longer work.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private synchronized GetGachaInfoRsp createProto() {
|
private synchronized GetGachaInfoRsp createProto() {
|
||||||
GetGachaInfoRsp.Builder proto = GetGachaInfoRsp.newBuilder().setGachaRandom(12345);
|
GetGachaInfoRsp.Builder proto = GetGachaInfoRsp.newBuilder().setGachaRandom(12345);
|
||||||
|
|
||||||
|
@ -37,10 +37,10 @@ public class Inventory implements Iterable<GenshinItem> {
|
|||||||
this.store = new Long2ObjectOpenHashMap<>();
|
this.store = new Long2ObjectOpenHashMap<>();
|
||||||
this.inventoryTypes = new Int2ObjectOpenHashMap<>();
|
this.inventoryTypes = new Int2ObjectOpenHashMap<>();
|
||||||
|
|
||||||
this.createInventoryTab(ItemType.ITEM_WEAPON, new EquipInventoryTab(Grasscutter.getConfig().getServerOptions().InventoryLimitWeapon));
|
this.createInventoryTab(ItemType.ITEM_WEAPON, new EquipInventoryTab(Grasscutter.getConfig().getGameServerOptions().InventoryLimitWeapon));
|
||||||
this.createInventoryTab(ItemType.ITEM_RELIQUARY, new EquipInventoryTab(Grasscutter.getConfig().getServerOptions().InventoryLimitRelic));
|
this.createInventoryTab(ItemType.ITEM_RELIQUARY, new EquipInventoryTab(Grasscutter.getConfig().getGameServerOptions().InventoryLimitRelic));
|
||||||
this.createInventoryTab(ItemType.ITEM_MATERIAL, new MaterialInventoryTab(Grasscutter.getConfig().getServerOptions().InventoryLimitMaterial));
|
this.createInventoryTab(ItemType.ITEM_MATERIAL, new MaterialInventoryTab(Grasscutter.getConfig().getGameServerOptions().InventoryLimitMaterial));
|
||||||
this.createInventoryTab(ItemType.ITEM_FURNITURE, new MaterialInventoryTab(Grasscutter.getConfig().getServerOptions().InventoryLimitFurniture));
|
this.createInventoryTab(ItemType.ITEM_FURNITURE, new MaterialInventoryTab(Grasscutter.getConfig().getGameServerOptions().InventoryLimitFurniture));
|
||||||
}
|
}
|
||||||
|
|
||||||
public GenshinPlayer getPlayer() {
|
public GenshinPlayer getPlayer() {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package emu.grasscutter.game.managers;
|
package emu.grasscutter.game.managers;
|
||||||
|
|
||||||
import emu.grasscutter.commands.CommandMap;
|
import emu.grasscutter.command.CommandMap;
|
||||||
import emu.grasscutter.game.GenshinPlayer;
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
import emu.grasscutter.net.packet.GenshinPacket;
|
import emu.grasscutter.net.packet.GenshinPacket;
|
||||||
import emu.grasscutter.server.game.GameServer;
|
import emu.grasscutter.server.game.GameServer;
|
||||||
|
@ -589,7 +589,6 @@ public class InventoryManager {
|
|||||||
|
|
||||||
// Update proud skills
|
// Update proud skills
|
||||||
AvatarSkillDepotData skillDepot = GenshinData.getAvatarSkillDepotDataMap().get(avatar.getSkillDepotId());
|
AvatarSkillDepotData skillDepot = GenshinData.getAvatarSkillDepotDataMap().get(avatar.getSkillDepotId());
|
||||||
boolean hasAddedProudSkill = false;
|
|
||||||
|
|
||||||
if (skillDepot != null && skillDepot.getInherentProudSkillOpens() != null) {
|
if (skillDepot != null && skillDepot.getInherentProudSkillOpens() != null) {
|
||||||
for (InherentProudSkillOpens openData : skillDepot.getInherentProudSkillOpens()) {
|
for (InherentProudSkillOpens openData : skillDepot.getInherentProudSkillOpens()) {
|
||||||
@ -599,7 +598,6 @@ public class InventoryManager {
|
|||||||
if (openData.getNeedAvatarPromoteLevel() == avatar.getPromoteLevel()) {
|
if (openData.getNeedAvatarPromoteLevel() == avatar.getPromoteLevel()) {
|
||||||
int proudSkillId = (openData.getProudSkillGroupId() * 100) + 1;
|
int proudSkillId = (openData.getProudSkillGroupId() * 100) + 1;
|
||||||
if (GenshinData.getProudSkillDataMap().containsKey(proudSkillId)) {
|
if (GenshinData.getProudSkillDataMap().containsKey(proudSkillId)) {
|
||||||
hasAddedProudSkill = true;
|
|
||||||
avatar.getProudSkillList().add(proudSkillId);
|
avatar.getProudSkillList().add(proudSkillId);
|
||||||
player.sendPacket(new PacketProudSkillChangeNotify(avatar));
|
player.sendPacket(new PacketProudSkillChangeNotify(avatar));
|
||||||
}
|
}
|
||||||
@ -607,20 +605,13 @@ public class InventoryManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Racalc stats and save avatar
|
|
||||||
avatar.recalcStats();
|
|
||||||
avatar.save();
|
|
||||||
|
|
||||||
// Resend ability embryos if proud skill has been added
|
|
||||||
if (hasAddedProudSkill && avatar.getAsEntity() != null) {
|
|
||||||
player.sendPacket(new PacketAbilityChangeNotify(avatar.getAsEntity()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO Send entity prop update packet to world
|
|
||||||
|
|
||||||
// Packets
|
// Packets
|
||||||
player.sendPacket(new PacketAvatarPropNotify(avatar));
|
player.sendPacket(new PacketAvatarPropNotify(avatar));
|
||||||
player.sendPacket(new PacketAvatarPromoteRsp(avatar));
|
player.sendPacket(new PacketAvatarPromoteRsp(avatar));
|
||||||
|
|
||||||
|
// TODO Send entity prop update packet to world
|
||||||
|
avatar.recalcStats(true);
|
||||||
|
avatar.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void upgradeAvatar(GenshinPlayer player, long guid, int itemId, int count) {
|
public void upgradeAvatar(GenshinPlayer player, long guid, int itemId, int count) {
|
||||||
@ -827,25 +818,20 @@ public class InventoryManager {
|
|||||||
// Apply + recalc
|
// Apply + recalc
|
||||||
avatar.getTalentIdList().add(talentData.getId());
|
avatar.getTalentIdList().add(talentData.getId());
|
||||||
avatar.setCoreProudSkillLevel(currentTalentLevel + 1);
|
avatar.setCoreProudSkillLevel(currentTalentLevel + 1);
|
||||||
avatar.recalcStats();
|
|
||||||
|
|
||||||
// Packet
|
// Packet
|
||||||
player.sendPacket(new PacketAvatarUnlockTalentNotify(avatar, nextTalentId));
|
player.sendPacket(new PacketAvatarUnlockTalentNotify(avatar, nextTalentId));
|
||||||
player.sendPacket(new PacketUnlockAvatarTalentRsp(avatar, nextTalentId));
|
player.sendPacket(new PacketUnlockAvatarTalentRsp(avatar, nextTalentId));
|
||||||
|
|
||||||
// Proud skill bonus map
|
// Proud skill bonus map (Extra skills)
|
||||||
OpenConfigEntry entry = GenshinData.getOpenConfigEntries().get(talentData.getOpenConfig());
|
OpenConfigEntry entry = GenshinData.getOpenConfigEntries().get(talentData.getOpenConfig());
|
||||||
if (entry != null && entry.getExtraTalentIndex() > 0) {
|
if (entry != null && entry.getExtraTalentIndex() > 0) {
|
||||||
avatar.recalcProudSkillBonusMap();
|
avatar.recalcProudSkillBonusMap();
|
||||||
player.sendPacket(new PacketProudSkillExtraLevelNotify(avatar, entry.getExtraTalentIndex()));
|
player.sendPacket(new PacketProudSkillExtraLevelNotify(avatar, entry.getExtraTalentIndex()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resend ability embryos
|
// Recalc + save avatar
|
||||||
if (avatar.getAsEntity() != null) {
|
avatar.recalcStats(true);
|
||||||
player.sendPacket(new PacketAbilityChangeNotify(avatar.getAsEntity()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save avatar
|
|
||||||
avatar.save();
|
avatar.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
42
src/main/java/emu/grasscutter/game/props/FetterState.java
Normal file
42
src/main/java/emu/grasscutter/game/props/FetterState.java
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
package emu.grasscutter.game.props;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
|
|
||||||
|
public enum FetterState {
|
||||||
|
NONE(0),
|
||||||
|
NOT_OPEN(1),
|
||||||
|
OPEN(1),
|
||||||
|
FINISH(3);
|
||||||
|
|
||||||
|
private final int value;
|
||||||
|
private static final Int2ObjectMap<FetterState> map = new Int2ObjectOpenHashMap<>();
|
||||||
|
private static final Map<String, FetterState> stringMap = new HashMap<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
Stream.of(values()).forEach(e -> {
|
||||||
|
map.put(e.getValue(), e);
|
||||||
|
stringMap.put(e.name(), e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private FetterState(int value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FetterState getTypeByValue(int value) {
|
||||||
|
return map.getOrDefault(value, NONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FetterState getTypeByName(String name) {
|
||||||
|
return stringMap.getOrDefault(name, NONE);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,810 @@
|
|||||||
|
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
// source: AvatarFetterDataNotify.proto
|
||||||
|
|
||||||
|
package emu.grasscutter.net.proto;
|
||||||
|
|
||||||
|
public final class AvatarFetterDataNotifyOuterClass {
|
||||||
|
private AvatarFetterDataNotifyOuterClass() {}
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistry registry) {
|
||||||
|
registerAllExtensions(
|
||||||
|
(com.google.protobuf.ExtensionRegistryLite) registry);
|
||||||
|
}
|
||||||
|
public interface AvatarFetterDataNotifyOrBuilder extends
|
||||||
|
// @@protoc_insertion_point(interface_extends:AvatarFetterDataNotify)
|
||||||
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
int getFetterInfoMapCount();
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
boolean containsFetterInfoMap(
|
||||||
|
long key);
|
||||||
|
/**
|
||||||
|
* Use {@link #getFetterInfoMapMap()} instead.
|
||||||
|
*/
|
||||||
|
@java.lang.Deprecated
|
||||||
|
java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo>
|
||||||
|
getFetterInfoMap();
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo>
|
||||||
|
getFetterInfoMapMap();
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* nullable */
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrDefault(
|
||||||
|
long key,
|
||||||
|
/* nullable */
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo defaultValue);
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrThrow(
|
||||||
|
long key);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code AvatarFetterDataNotify}
|
||||||
|
*/
|
||||||
|
public static final class AvatarFetterDataNotify extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3 implements
|
||||||
|
// @@protoc_insertion_point(message_implements:AvatarFetterDataNotify)
|
||||||
|
AvatarFetterDataNotifyOrBuilder {
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
// Use AvatarFetterDataNotify.newBuilder() to construct.
|
||||||
|
private AvatarFetterDataNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
private AvatarFetterDataNotify() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
@SuppressWarnings({"unused"})
|
||||||
|
protected java.lang.Object newInstance(
|
||||||
|
UnusedPrivateParameter unused) {
|
||||||
|
return new AvatarFetterDataNotify();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final com.google.protobuf.UnknownFieldSet
|
||||||
|
getUnknownFields() {
|
||||||
|
return this.unknownFields;
|
||||||
|
}
|
||||||
|
private AvatarFetterDataNotify(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
this();
|
||||||
|
if (extensionRegistry == null) {
|
||||||
|
throw new java.lang.NullPointerException();
|
||||||
|
}
|
||||||
|
int mutable_bitField0_ = 0;
|
||||||
|
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
|
||||||
|
com.google.protobuf.UnknownFieldSet.newBuilder();
|
||||||
|
try {
|
||||||
|
boolean done = false;
|
||||||
|
while (!done) {
|
||||||
|
int tag = input.readTag();
|
||||||
|
switch (tag) {
|
||||||
|
case 0:
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 10: {
|
||||||
|
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
|
||||||
|
fetterInfoMap_ = com.google.protobuf.MapField.newMapField(
|
||||||
|
FetterInfoMapDefaultEntryHolder.defaultEntry);
|
||||||
|
mutable_bitField0_ |= 0x00000001;
|
||||||
|
}
|
||||||
|
com.google.protobuf.MapEntry<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo>
|
||||||
|
fetterInfoMap__ = input.readMessage(
|
||||||
|
FetterInfoMapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
|
||||||
|
fetterInfoMap_.getMutableMap().put(
|
||||||
|
fetterInfoMap__.getKey(), fetterInfoMap__.getValue());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
if (!parseUnknownField(
|
||||||
|
input, unknownFields, extensionRegistry, tag)) {
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
throw e.setUnfinishedMessage(this);
|
||||||
|
} catch (com.google.protobuf.UninitializedMessageException e) {
|
||||||
|
throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
throw new com.google.protobuf.InvalidProtocolBufferException(
|
||||||
|
e).setUnfinishedMessage(this);
|
||||||
|
} finally {
|
||||||
|
this.unknownFields = unknownFields.build();
|
||||||
|
makeExtensionsImmutable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings({"rawtypes"})
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.MapField internalGetMapField(
|
||||||
|
int number) {
|
||||||
|
switch (number) {
|
||||||
|
case 1:
|
||||||
|
return internalGetFetterInfoMap();
|
||||||
|
default:
|
||||||
|
throw new RuntimeException(
|
||||||
|
"Invalid map field number: " + number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.class, emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int FETTERINFOMAP_FIELD_NUMBER = 1;
|
||||||
|
private static final class FetterInfoMapDefaultEntryHolder {
|
||||||
|
static final com.google.protobuf.MapEntry<
|
||||||
|
java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> defaultEntry =
|
||||||
|
com.google.protobuf.MapEntry
|
||||||
|
.<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo>newDefaultInstance(
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_descriptor,
|
||||||
|
com.google.protobuf.WireFormat.FieldType.UINT64,
|
||||||
|
0L,
|
||||||
|
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo.getDefaultInstance());
|
||||||
|
}
|
||||||
|
private com.google.protobuf.MapField<
|
||||||
|
java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> fetterInfoMap_;
|
||||||
|
private com.google.protobuf.MapField<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo>
|
||||||
|
internalGetFetterInfoMap() {
|
||||||
|
if (fetterInfoMap_ == null) {
|
||||||
|
return com.google.protobuf.MapField.emptyMapField(
|
||||||
|
FetterInfoMapDefaultEntryHolder.defaultEntry);
|
||||||
|
}
|
||||||
|
return fetterInfoMap_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFetterInfoMapCount() {
|
||||||
|
return internalGetFetterInfoMap().getMap().size();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean containsFetterInfoMap(
|
||||||
|
long key) {
|
||||||
|
|
||||||
|
return internalGetFetterInfoMap().getMap().containsKey(key);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Use {@link #getFetterInfoMapMap()} instead.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
@java.lang.Deprecated
|
||||||
|
public java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> getFetterInfoMap() {
|
||||||
|
return getFetterInfoMapMap();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
|
||||||
|
public java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> getFetterInfoMapMap() {
|
||||||
|
return internalGetFetterInfoMap().getMap();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrDefault(
|
||||||
|
long key,
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo defaultValue) {
|
||||||
|
|
||||||
|
java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> map =
|
||||||
|
internalGetFetterInfoMap().getMap();
|
||||||
|
return map.containsKey(key) ? map.get(key) : defaultValue;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrThrow(
|
||||||
|
long key) {
|
||||||
|
|
||||||
|
java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> map =
|
||||||
|
internalGetFetterInfoMap().getMap();
|
||||||
|
if (!map.containsKey(key)) {
|
||||||
|
throw new java.lang.IllegalArgumentException();
|
||||||
|
}
|
||||||
|
return map.get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte memoizedIsInitialized = -1;
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
byte isInitialized = memoizedIsInitialized;
|
||||||
|
if (isInitialized == 1) return true;
|
||||||
|
if (isInitialized == 0) return false;
|
||||||
|
|
||||||
|
memoizedIsInitialized = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
|
throws java.io.IOException {
|
||||||
|
com.google.protobuf.GeneratedMessageV3
|
||||||
|
.serializeLongMapTo(
|
||||||
|
output,
|
||||||
|
internalGetFetterInfoMap(),
|
||||||
|
FetterInfoMapDefaultEntryHolder.defaultEntry,
|
||||||
|
1);
|
||||||
|
unknownFields.writeTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSerializedSize() {
|
||||||
|
int size = memoizedSize;
|
||||||
|
if (size != -1) return size;
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
for (java.util.Map.Entry<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> entry
|
||||||
|
: internalGetFetterInfoMap().getMap().entrySet()) {
|
||||||
|
com.google.protobuf.MapEntry<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo>
|
||||||
|
fetterInfoMap__ = FetterInfoMapDefaultEntryHolder.defaultEntry.newBuilderForType()
|
||||||
|
.setKey(entry.getKey())
|
||||||
|
.setValue(entry.getValue())
|
||||||
|
.build();
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeMessageSize(1, fetterInfoMap__);
|
||||||
|
}
|
||||||
|
size += unknownFields.getSerializedSize();
|
||||||
|
memoizedSize = size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean equals(final java.lang.Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify)) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify other = (emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify) obj;
|
||||||
|
|
||||||
|
if (!internalGetFetterInfoMap().equals(
|
||||||
|
other.internalGetFetterInfoMap())) return false;
|
||||||
|
if (!unknownFields.equals(other.unknownFields)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (memoizedHashCode != 0) {
|
||||||
|
return memoizedHashCode;
|
||||||
|
}
|
||||||
|
int hash = 41;
|
||||||
|
hash = (19 * hash) + getDescriptor().hashCode();
|
||||||
|
if (!internalGetFetterInfoMap().getMap().isEmpty()) {
|
||||||
|
hash = (37 * hash) + FETTERINFOMAP_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + internalGetFetterInfoMap().hashCode();
|
||||||
|
}
|
||||||
|
hash = (29 * hash) + unknownFields.hashCode();
|
||||||
|
memoizedHashCode = hash;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(
|
||||||
|
java.nio.ByteBuffer data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(
|
||||||
|
java.nio.ByteBuffer data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(
|
||||||
|
com.google.protobuf.ByteString data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(
|
||||||
|
com.google.protobuf.ByteString data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(byte[] data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(
|
||||||
|
byte[] data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseDelimitedFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseDelimitedFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder newBuilderForType() { return newBuilder(); }
|
||||||
|
public static Builder newBuilder() {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder();
|
||||||
|
}
|
||||||
|
public static Builder newBuilder(emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify prototype) {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return this == DEFAULT_INSTANCE
|
||||||
|
? new Builder() : new Builder().mergeFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected Builder newBuilderForType(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
Builder builder = new Builder(parent);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code AvatarFetterDataNotify}
|
||||||
|
*/
|
||||||
|
public static final class Builder extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||||
|
// @@protoc_insertion_point(builder_implements:AvatarFetterDataNotify)
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotifyOrBuilder {
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings({"rawtypes"})
|
||||||
|
protected com.google.protobuf.MapField internalGetMapField(
|
||||||
|
int number) {
|
||||||
|
switch (number) {
|
||||||
|
case 1:
|
||||||
|
return internalGetFetterInfoMap();
|
||||||
|
default:
|
||||||
|
throw new RuntimeException(
|
||||||
|
"Invalid map field number: " + number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@SuppressWarnings({"rawtypes"})
|
||||||
|
protected com.google.protobuf.MapField internalGetMutableMapField(
|
||||||
|
int number) {
|
||||||
|
switch (number) {
|
||||||
|
case 1:
|
||||||
|
return internalGetMutableFetterInfoMap();
|
||||||
|
default:
|
||||||
|
throw new RuntimeException(
|
||||||
|
"Invalid map field number: " + number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.class, emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct using emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.newBuilder()
|
||||||
|
private Builder() {
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Builder(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
super(parent);
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
private void maybeForceBuilderInitialization() {
|
||||||
|
if (com.google.protobuf.GeneratedMessageV3
|
||||||
|
.alwaysUseFieldBuilders) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clear() {
|
||||||
|
super.clear();
|
||||||
|
internalGetMutableFetterInfoMap().clear();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify getDefaultInstanceForType() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.getDefaultInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify build() {
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify result = buildPartial();
|
||||||
|
if (!result.isInitialized()) {
|
||||||
|
throw newUninitializedMessageException(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify buildPartial() {
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify result = new emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify(this);
|
||||||
|
int from_bitField0_ = bitField0_;
|
||||||
|
result.fetterInfoMap_ = internalGetFetterInfoMap();
|
||||||
|
result.fetterInfoMap_.makeImmutable();
|
||||||
|
onBuilt();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.setField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field) {
|
||||||
|
return super.clearField(field);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearOneof(
|
||||||
|
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
|
||||||
|
return super.clearOneof(oneof);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
int index, java.lang.Object value) {
|
||||||
|
return super.setRepeatedField(field, index, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder addRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.addRepeatedField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(com.google.protobuf.Message other) {
|
||||||
|
if (other instanceof emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify) {
|
||||||
|
return mergeFrom((emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify)other);
|
||||||
|
} else {
|
||||||
|
super.mergeFrom(other);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder mergeFrom(emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify other) {
|
||||||
|
if (other == emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.getDefaultInstance()) return this;
|
||||||
|
internalGetMutableFetterInfoMap().mergeFrom(
|
||||||
|
other.internalGetFetterInfoMap());
|
||||||
|
this.mergeUnknownFields(other.unknownFields);
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parsedMessage = null;
|
||||||
|
try {
|
||||||
|
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
parsedMessage = (emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify) e.getUnfinishedMessage();
|
||||||
|
throw e.unwrapIOException();
|
||||||
|
} finally {
|
||||||
|
if (parsedMessage != null) {
|
||||||
|
mergeFrom(parsedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
private int bitField0_;
|
||||||
|
|
||||||
|
private com.google.protobuf.MapField<
|
||||||
|
java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> fetterInfoMap_;
|
||||||
|
private com.google.protobuf.MapField<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo>
|
||||||
|
internalGetFetterInfoMap() {
|
||||||
|
if (fetterInfoMap_ == null) {
|
||||||
|
return com.google.protobuf.MapField.emptyMapField(
|
||||||
|
FetterInfoMapDefaultEntryHolder.defaultEntry);
|
||||||
|
}
|
||||||
|
return fetterInfoMap_;
|
||||||
|
}
|
||||||
|
private com.google.protobuf.MapField<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo>
|
||||||
|
internalGetMutableFetterInfoMap() {
|
||||||
|
onChanged();;
|
||||||
|
if (fetterInfoMap_ == null) {
|
||||||
|
fetterInfoMap_ = com.google.protobuf.MapField.newMapField(
|
||||||
|
FetterInfoMapDefaultEntryHolder.defaultEntry);
|
||||||
|
}
|
||||||
|
if (!fetterInfoMap_.isMutable()) {
|
||||||
|
fetterInfoMap_ = fetterInfoMap_.copy();
|
||||||
|
}
|
||||||
|
return fetterInfoMap_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFetterInfoMapCount() {
|
||||||
|
return internalGetFetterInfoMap().getMap().size();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean containsFetterInfoMap(
|
||||||
|
long key) {
|
||||||
|
|
||||||
|
return internalGetFetterInfoMap().getMap().containsKey(key);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Use {@link #getFetterInfoMapMap()} instead.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
@java.lang.Deprecated
|
||||||
|
public java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> getFetterInfoMap() {
|
||||||
|
return getFetterInfoMapMap();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
|
||||||
|
public java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> getFetterInfoMapMap() {
|
||||||
|
return internalGetFetterInfoMap().getMap();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrDefault(
|
||||||
|
long key,
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo defaultValue) {
|
||||||
|
|
||||||
|
java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> map =
|
||||||
|
internalGetFetterInfoMap().getMap();
|
||||||
|
return map.containsKey(key) ? map.get(key) : defaultValue;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrThrow(
|
||||||
|
long key) {
|
||||||
|
|
||||||
|
java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> map =
|
||||||
|
internalGetFetterInfoMap().getMap();
|
||||||
|
if (!map.containsKey(key)) {
|
||||||
|
throw new java.lang.IllegalArgumentException();
|
||||||
|
}
|
||||||
|
return map.get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder clearFetterInfoMap() {
|
||||||
|
internalGetMutableFetterInfoMap().getMutableMap()
|
||||||
|
.clear();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
|
||||||
|
public Builder removeFetterInfoMap(
|
||||||
|
long key) {
|
||||||
|
|
||||||
|
internalGetMutableFetterInfoMap().getMutableMap()
|
||||||
|
.remove(key);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Use alternate mutation accessors instead.
|
||||||
|
*/
|
||||||
|
@java.lang.Deprecated
|
||||||
|
public java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo>
|
||||||
|
getMutableFetterInfoMap() {
|
||||||
|
return internalGetMutableFetterInfoMap().getMutableMap();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
public Builder putFetterInfoMap(
|
||||||
|
long key,
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo value) {
|
||||||
|
|
||||||
|
if (value == null) {
|
||||||
|
throw new NullPointerException("map value");
|
||||||
|
}
|
||||||
|
|
||||||
|
internalGetMutableFetterInfoMap().getMutableMap()
|
||||||
|
.put(key, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>map<uint64, .AvatarFetterInfo> fetterInfoMap = 1;</code>
|
||||||
|
*/
|
||||||
|
|
||||||
|
public Builder putAllFetterInfoMap(
|
||||||
|
java.util.Map<java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> values) {
|
||||||
|
internalGetMutableFetterInfoMap().getMutableMap()
|
||||||
|
.putAll(values);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder setUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.setUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder mergeUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.mergeUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(builder_scope:AvatarFetterDataNotify)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(class_scope:AvatarFetterDataNotify)
|
||||||
|
private static final emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify DEFAULT_INSTANCE;
|
||||||
|
static {
|
||||||
|
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify getDefaultInstance() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Parser<AvatarFetterDataNotify>
|
||||||
|
PARSER = new com.google.protobuf.AbstractParser<AvatarFetterDataNotify>() {
|
||||||
|
@java.lang.Override
|
||||||
|
public AvatarFetterDataNotify parsePartialFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return new AvatarFetterDataNotify(input, extensionRegistry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static com.google.protobuf.Parser<AvatarFetterDataNotify> parser() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Parser<AvatarFetterDataNotify> getParserForType() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify getDefaultInstanceForType() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_AvatarFetterDataNotify_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_AvatarFetterDataNotify_fieldAccessorTable;
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_fieldAccessorTable;
|
||||||
|
|
||||||
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
private static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
descriptor;
|
||||||
|
static {
|
||||||
|
java.lang.String[] descriptorData = {
|
||||||
|
"\n\034AvatarFetterDataNotify.proto\032\026AvatarFe" +
|
||||||
|
"tterInfo.proto\"\244\001\n\026AvatarFetterDataNotif" +
|
||||||
|
"y\022A\n\rfetterInfoMap\030\001 \003(\0132*.AvatarFetterD" +
|
||||||
|
"ataNotify.FetterInfoMapEntry\032G\n\022FetterIn" +
|
||||||
|
"foMapEntry\022\013\n\003key\030\001 \001(\004\022 \n\005value\030\002 \001(\0132\021" +
|
||||||
|
".AvatarFetterInfo:\0028\001B\033\n\031emu.grasscutter" +
|
||||||
|
".net.protob\006proto3"
|
||||||
|
};
|
||||||
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.getDescriptor(),
|
||||||
|
});
|
||||||
|
internal_static_AvatarFetterDataNotify_descriptor =
|
||||||
|
getDescriptor().getMessageTypes().get(0);
|
||||||
|
internal_static_AvatarFetterDataNotify_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_AvatarFetterDataNotify_descriptor,
|
||||||
|
new java.lang.String[] { "FetterInfoMap", });
|
||||||
|
internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_descriptor =
|
||||||
|
internal_static_AvatarFetterDataNotify_descriptor.getNestedTypes().get(0);
|
||||||
|
internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_descriptor,
|
||||||
|
new java.lang.String[] { "Key", "Value", });
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.getDescriptor();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
}
|
@ -0,0 +1,610 @@
|
|||||||
|
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
// source: AvatarFetterLevelRewardReq.proto
|
||||||
|
|
||||||
|
package emu.grasscutter.net.proto;
|
||||||
|
|
||||||
|
public final class AvatarFetterLevelRewardReqOuterClass {
|
||||||
|
private AvatarFetterLevelRewardReqOuterClass() {}
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistry registry) {
|
||||||
|
registerAllExtensions(
|
||||||
|
(com.google.protobuf.ExtensionRegistryLite) registry);
|
||||||
|
}
|
||||||
|
public interface AvatarFetterLevelRewardReqOrBuilder extends
|
||||||
|
// @@protoc_insertion_point(interface_extends:AvatarFetterLevelRewardReq)
|
||||||
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint64 avatarGuid = 1;</code>
|
||||||
|
* @return The avatarGuid.
|
||||||
|
*/
|
||||||
|
long getAvatarGuid();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 fetterLevel = 2;</code>
|
||||||
|
* @return The fetterLevel.
|
||||||
|
*/
|
||||||
|
int getFetterLevel();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code AvatarFetterLevelRewardReq}
|
||||||
|
*/
|
||||||
|
public static final class AvatarFetterLevelRewardReq extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3 implements
|
||||||
|
// @@protoc_insertion_point(message_implements:AvatarFetterLevelRewardReq)
|
||||||
|
AvatarFetterLevelRewardReqOrBuilder {
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
// Use AvatarFetterLevelRewardReq.newBuilder() to construct.
|
||||||
|
private AvatarFetterLevelRewardReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
private AvatarFetterLevelRewardReq() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
@SuppressWarnings({"unused"})
|
||||||
|
protected java.lang.Object newInstance(
|
||||||
|
UnusedPrivateParameter unused) {
|
||||||
|
return new AvatarFetterLevelRewardReq();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final com.google.protobuf.UnknownFieldSet
|
||||||
|
getUnknownFields() {
|
||||||
|
return this.unknownFields;
|
||||||
|
}
|
||||||
|
private AvatarFetterLevelRewardReq(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
this();
|
||||||
|
if (extensionRegistry == null) {
|
||||||
|
throw new java.lang.NullPointerException();
|
||||||
|
}
|
||||||
|
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
|
||||||
|
com.google.protobuf.UnknownFieldSet.newBuilder();
|
||||||
|
try {
|
||||||
|
boolean done = false;
|
||||||
|
while (!done) {
|
||||||
|
int tag = input.readTag();
|
||||||
|
switch (tag) {
|
||||||
|
case 0:
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 8: {
|
||||||
|
|
||||||
|
avatarGuid_ = input.readUInt64();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 16: {
|
||||||
|
|
||||||
|
fetterLevel_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
if (!parseUnknownField(
|
||||||
|
input, unknownFields, extensionRegistry, tag)) {
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
throw e.setUnfinishedMessage(this);
|
||||||
|
} catch (com.google.protobuf.UninitializedMessageException e) {
|
||||||
|
throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
throw new com.google.protobuf.InvalidProtocolBufferException(
|
||||||
|
e).setUnfinishedMessage(this);
|
||||||
|
} finally {
|
||||||
|
this.unknownFields = unknownFields.build();
|
||||||
|
makeExtensionsImmutable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.internal_static_AvatarFetterLevelRewardReq_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.internal_static_AvatarFetterLevelRewardReq_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.class, emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int AVATARGUID_FIELD_NUMBER = 1;
|
||||||
|
private long avatarGuid_;
|
||||||
|
/**
|
||||||
|
* <code>uint64 avatarGuid = 1;</code>
|
||||||
|
* @return The avatarGuid.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public long getAvatarGuid() {
|
||||||
|
return avatarGuid_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int FETTERLEVEL_FIELD_NUMBER = 2;
|
||||||
|
private int fetterLevel_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 fetterLevel = 2;</code>
|
||||||
|
* @return The fetterLevel.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getFetterLevel() {
|
||||||
|
return fetterLevel_;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte memoizedIsInitialized = -1;
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
byte isInitialized = memoizedIsInitialized;
|
||||||
|
if (isInitialized == 1) return true;
|
||||||
|
if (isInitialized == 0) return false;
|
||||||
|
|
||||||
|
memoizedIsInitialized = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
|
throws java.io.IOException {
|
||||||
|
if (avatarGuid_ != 0L) {
|
||||||
|
output.writeUInt64(1, avatarGuid_);
|
||||||
|
}
|
||||||
|
if (fetterLevel_ != 0) {
|
||||||
|
output.writeUInt32(2, fetterLevel_);
|
||||||
|
}
|
||||||
|
unknownFields.writeTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSerializedSize() {
|
||||||
|
int size = memoizedSize;
|
||||||
|
if (size != -1) return size;
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
if (avatarGuid_ != 0L) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt64Size(1, avatarGuid_);
|
||||||
|
}
|
||||||
|
if (fetterLevel_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(2, fetterLevel_);
|
||||||
|
}
|
||||||
|
size += unknownFields.getSerializedSize();
|
||||||
|
memoizedSize = size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean equals(final java.lang.Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq)) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq other = (emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq) obj;
|
||||||
|
|
||||||
|
if (getAvatarGuid()
|
||||||
|
!= other.getAvatarGuid()) return false;
|
||||||
|
if (getFetterLevel()
|
||||||
|
!= other.getFetterLevel()) return false;
|
||||||
|
if (!unknownFields.equals(other.unknownFields)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (memoizedHashCode != 0) {
|
||||||
|
return memoizedHashCode;
|
||||||
|
}
|
||||||
|
int hash = 41;
|
||||||
|
hash = (19 * hash) + getDescriptor().hashCode();
|
||||||
|
hash = (37 * hash) + AVATARGUID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
|
||||||
|
getAvatarGuid());
|
||||||
|
hash = (37 * hash) + FETTERLEVEL_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getFetterLevel();
|
||||||
|
hash = (29 * hash) + unknownFields.hashCode();
|
||||||
|
memoizedHashCode = hash;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(
|
||||||
|
java.nio.ByteBuffer data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(
|
||||||
|
java.nio.ByteBuffer data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(
|
||||||
|
com.google.protobuf.ByteString data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(
|
||||||
|
com.google.protobuf.ByteString data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(byte[] data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(
|
||||||
|
byte[] data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseDelimitedFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseDelimitedFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder newBuilderForType() { return newBuilder(); }
|
||||||
|
public static Builder newBuilder() {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder();
|
||||||
|
}
|
||||||
|
public static Builder newBuilder(emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq prototype) {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return this == DEFAULT_INSTANCE
|
||||||
|
? new Builder() : new Builder().mergeFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected Builder newBuilderForType(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
Builder builder = new Builder(parent);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code AvatarFetterLevelRewardReq}
|
||||||
|
*/
|
||||||
|
public static final class Builder extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||||
|
// @@protoc_insertion_point(builder_implements:AvatarFetterLevelRewardReq)
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReqOrBuilder {
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.internal_static_AvatarFetterLevelRewardReq_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.internal_static_AvatarFetterLevelRewardReq_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.class, emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct using emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.newBuilder()
|
||||||
|
private Builder() {
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Builder(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
super(parent);
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
private void maybeForceBuilderInitialization() {
|
||||||
|
if (com.google.protobuf.GeneratedMessageV3
|
||||||
|
.alwaysUseFieldBuilders) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clear() {
|
||||||
|
super.clear();
|
||||||
|
avatarGuid_ = 0L;
|
||||||
|
|
||||||
|
fetterLevel_ = 0;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.internal_static_AvatarFetterLevelRewardReq_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq getDefaultInstanceForType() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.getDefaultInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq build() {
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq result = buildPartial();
|
||||||
|
if (!result.isInitialized()) {
|
||||||
|
throw newUninitializedMessageException(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq buildPartial() {
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq result = new emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq(this);
|
||||||
|
result.avatarGuid_ = avatarGuid_;
|
||||||
|
result.fetterLevel_ = fetterLevel_;
|
||||||
|
onBuilt();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.setField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field) {
|
||||||
|
return super.clearField(field);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearOneof(
|
||||||
|
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
|
||||||
|
return super.clearOneof(oneof);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
int index, java.lang.Object value) {
|
||||||
|
return super.setRepeatedField(field, index, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder addRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.addRepeatedField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(com.google.protobuf.Message other) {
|
||||||
|
if (other instanceof emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq) {
|
||||||
|
return mergeFrom((emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq)other);
|
||||||
|
} else {
|
||||||
|
super.mergeFrom(other);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder mergeFrom(emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq other) {
|
||||||
|
if (other == emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.getDefaultInstance()) return this;
|
||||||
|
if (other.getAvatarGuid() != 0L) {
|
||||||
|
setAvatarGuid(other.getAvatarGuid());
|
||||||
|
}
|
||||||
|
if (other.getFetterLevel() != 0) {
|
||||||
|
setFetterLevel(other.getFetterLevel());
|
||||||
|
}
|
||||||
|
this.mergeUnknownFields(other.unknownFields);
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parsedMessage = null;
|
||||||
|
try {
|
||||||
|
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
parsedMessage = (emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq) e.getUnfinishedMessage();
|
||||||
|
throw e.unwrapIOException();
|
||||||
|
} finally {
|
||||||
|
if (parsedMessage != null) {
|
||||||
|
mergeFrom(parsedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private long avatarGuid_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint64 avatarGuid = 1;</code>
|
||||||
|
* @return The avatarGuid.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public long getAvatarGuid() {
|
||||||
|
return avatarGuid_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint64 avatarGuid = 1;</code>
|
||||||
|
* @param value The avatarGuid to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setAvatarGuid(long value) {
|
||||||
|
|
||||||
|
avatarGuid_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint64 avatarGuid = 1;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearAvatarGuid() {
|
||||||
|
|
||||||
|
avatarGuid_ = 0L;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int fetterLevel_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 fetterLevel = 2;</code>
|
||||||
|
* @return The fetterLevel.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getFetterLevel() {
|
||||||
|
return fetterLevel_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 fetterLevel = 2;</code>
|
||||||
|
* @param value The fetterLevel to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setFetterLevel(int value) {
|
||||||
|
|
||||||
|
fetterLevel_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 fetterLevel = 2;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearFetterLevel() {
|
||||||
|
|
||||||
|
fetterLevel_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder setUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.setUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder mergeUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.mergeUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(builder_scope:AvatarFetterLevelRewardReq)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(class_scope:AvatarFetterLevelRewardReq)
|
||||||
|
private static final emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq DEFAULT_INSTANCE;
|
||||||
|
static {
|
||||||
|
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq getDefaultInstance() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Parser<AvatarFetterLevelRewardReq>
|
||||||
|
PARSER = new com.google.protobuf.AbstractParser<AvatarFetterLevelRewardReq>() {
|
||||||
|
@java.lang.Override
|
||||||
|
public AvatarFetterLevelRewardReq parsePartialFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return new AvatarFetterLevelRewardReq(input, extensionRegistry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static com.google.protobuf.Parser<AvatarFetterLevelRewardReq> parser() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Parser<AvatarFetterLevelRewardReq> getParserForType() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq getDefaultInstanceForType() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_AvatarFetterLevelRewardReq_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_AvatarFetterLevelRewardReq_fieldAccessorTable;
|
||||||
|
|
||||||
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
private static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
descriptor;
|
||||||
|
static {
|
||||||
|
java.lang.String[] descriptorData = {
|
||||||
|
"\n AvatarFetterLevelRewardReq.proto\"E\n\032Av" +
|
||||||
|
"atarFetterLevelRewardReq\022\022\n\navatarGuid\030\001" +
|
||||||
|
" \001(\004\022\023\n\013fetterLevel\030\002 \001(\rB\033\n\031emu.grasscu" +
|
||||||
|
"tter.net.protob\006proto3"
|
||||||
|
};
|
||||||
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
|
});
|
||||||
|
internal_static_AvatarFetterLevelRewardReq_descriptor =
|
||||||
|
getDescriptor().getMessageTypes().get(0);
|
||||||
|
internal_static_AvatarFetterLevelRewardReq_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_AvatarFetterLevelRewardReq_descriptor,
|
||||||
|
new java.lang.String[] { "AvatarGuid", "FetterLevel", });
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
}
|
@ -0,0 +1,751 @@
|
|||||||
|
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
// source: AvatarFetterLevelRewardRsp.proto
|
||||||
|
|
||||||
|
package emu.grasscutter.net.proto;
|
||||||
|
|
||||||
|
public final class AvatarFetterLevelRewardRspOuterClass {
|
||||||
|
private AvatarFetterLevelRewardRspOuterClass() {}
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistry registry) {
|
||||||
|
registerAllExtensions(
|
||||||
|
(com.google.protobuf.ExtensionRegistryLite) registry);
|
||||||
|
}
|
||||||
|
public interface AvatarFetterLevelRewardRspOrBuilder extends
|
||||||
|
// @@protoc_insertion_point(interface_extends:AvatarFetterLevelRewardRsp)
|
||||||
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return The retcode.
|
||||||
|
*/
|
||||||
|
int getRetcode();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint64 avatarGuid = 2;</code>
|
||||||
|
* @return The avatarGuid.
|
||||||
|
*/
|
||||||
|
long getAvatarGuid();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 fetterLevel = 3;</code>
|
||||||
|
* @return The fetterLevel.
|
||||||
|
*/
|
||||||
|
int getFetterLevel();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 rewardId = 4;</code>
|
||||||
|
* @return The rewardId.
|
||||||
|
*/
|
||||||
|
int getRewardId();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code AvatarFetterLevelRewardRsp}
|
||||||
|
*/
|
||||||
|
public static final class AvatarFetterLevelRewardRsp extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3 implements
|
||||||
|
// @@protoc_insertion_point(message_implements:AvatarFetterLevelRewardRsp)
|
||||||
|
AvatarFetterLevelRewardRspOrBuilder {
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
// Use AvatarFetterLevelRewardRsp.newBuilder() to construct.
|
||||||
|
private AvatarFetterLevelRewardRsp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
private AvatarFetterLevelRewardRsp() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
@SuppressWarnings({"unused"})
|
||||||
|
protected java.lang.Object newInstance(
|
||||||
|
UnusedPrivateParameter unused) {
|
||||||
|
return new AvatarFetterLevelRewardRsp();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final com.google.protobuf.UnknownFieldSet
|
||||||
|
getUnknownFields() {
|
||||||
|
return this.unknownFields;
|
||||||
|
}
|
||||||
|
private AvatarFetterLevelRewardRsp(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
this();
|
||||||
|
if (extensionRegistry == null) {
|
||||||
|
throw new java.lang.NullPointerException();
|
||||||
|
}
|
||||||
|
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
|
||||||
|
com.google.protobuf.UnknownFieldSet.newBuilder();
|
||||||
|
try {
|
||||||
|
boolean done = false;
|
||||||
|
while (!done) {
|
||||||
|
int tag = input.readTag();
|
||||||
|
switch (tag) {
|
||||||
|
case 0:
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 8: {
|
||||||
|
|
||||||
|
retcode_ = input.readInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 16: {
|
||||||
|
|
||||||
|
avatarGuid_ = input.readUInt64();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 24: {
|
||||||
|
|
||||||
|
fetterLevel_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 32: {
|
||||||
|
|
||||||
|
rewardId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
if (!parseUnknownField(
|
||||||
|
input, unknownFields, extensionRegistry, tag)) {
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
throw e.setUnfinishedMessage(this);
|
||||||
|
} catch (com.google.protobuf.UninitializedMessageException e) {
|
||||||
|
throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
throw new com.google.protobuf.InvalidProtocolBufferException(
|
||||||
|
e).setUnfinishedMessage(this);
|
||||||
|
} finally {
|
||||||
|
this.unknownFields = unknownFields.build();
|
||||||
|
makeExtensionsImmutable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.internal_static_AvatarFetterLevelRewardRsp_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.internal_static_AvatarFetterLevelRewardRsp_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.class, emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int RETCODE_FIELD_NUMBER = 1;
|
||||||
|
private int retcode_;
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return The retcode.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getRetcode() {
|
||||||
|
return retcode_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int AVATARGUID_FIELD_NUMBER = 2;
|
||||||
|
private long avatarGuid_;
|
||||||
|
/**
|
||||||
|
* <code>uint64 avatarGuid = 2;</code>
|
||||||
|
* @return The avatarGuid.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public long getAvatarGuid() {
|
||||||
|
return avatarGuid_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int FETTERLEVEL_FIELD_NUMBER = 3;
|
||||||
|
private int fetterLevel_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 fetterLevel = 3;</code>
|
||||||
|
* @return The fetterLevel.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getFetterLevel() {
|
||||||
|
return fetterLevel_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int REWARDID_FIELD_NUMBER = 4;
|
||||||
|
private int rewardId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 rewardId = 4;</code>
|
||||||
|
* @return The rewardId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getRewardId() {
|
||||||
|
return rewardId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte memoizedIsInitialized = -1;
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
byte isInitialized = memoizedIsInitialized;
|
||||||
|
if (isInitialized == 1) return true;
|
||||||
|
if (isInitialized == 0) return false;
|
||||||
|
|
||||||
|
memoizedIsInitialized = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
|
throws java.io.IOException {
|
||||||
|
if (retcode_ != 0) {
|
||||||
|
output.writeInt32(1, retcode_);
|
||||||
|
}
|
||||||
|
if (avatarGuid_ != 0L) {
|
||||||
|
output.writeUInt64(2, avatarGuid_);
|
||||||
|
}
|
||||||
|
if (fetterLevel_ != 0) {
|
||||||
|
output.writeUInt32(3, fetterLevel_);
|
||||||
|
}
|
||||||
|
if (rewardId_ != 0) {
|
||||||
|
output.writeUInt32(4, rewardId_);
|
||||||
|
}
|
||||||
|
unknownFields.writeTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSerializedSize() {
|
||||||
|
int size = memoizedSize;
|
||||||
|
if (size != -1) return size;
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
if (retcode_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeInt32Size(1, retcode_);
|
||||||
|
}
|
||||||
|
if (avatarGuid_ != 0L) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt64Size(2, avatarGuid_);
|
||||||
|
}
|
||||||
|
if (fetterLevel_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(3, fetterLevel_);
|
||||||
|
}
|
||||||
|
if (rewardId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(4, rewardId_);
|
||||||
|
}
|
||||||
|
size += unknownFields.getSerializedSize();
|
||||||
|
memoizedSize = size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean equals(final java.lang.Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp)) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp other = (emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp) obj;
|
||||||
|
|
||||||
|
if (getRetcode()
|
||||||
|
!= other.getRetcode()) return false;
|
||||||
|
if (getAvatarGuid()
|
||||||
|
!= other.getAvatarGuid()) return false;
|
||||||
|
if (getFetterLevel()
|
||||||
|
!= other.getFetterLevel()) return false;
|
||||||
|
if (getRewardId()
|
||||||
|
!= other.getRewardId()) return false;
|
||||||
|
if (!unknownFields.equals(other.unknownFields)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (memoizedHashCode != 0) {
|
||||||
|
return memoizedHashCode;
|
||||||
|
}
|
||||||
|
int hash = 41;
|
||||||
|
hash = (19 * hash) + getDescriptor().hashCode();
|
||||||
|
hash = (37 * hash) + RETCODE_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getRetcode();
|
||||||
|
hash = (37 * hash) + AVATARGUID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
|
||||||
|
getAvatarGuid());
|
||||||
|
hash = (37 * hash) + FETTERLEVEL_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getFetterLevel();
|
||||||
|
hash = (37 * hash) + REWARDID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getRewardId();
|
||||||
|
hash = (29 * hash) + unknownFields.hashCode();
|
||||||
|
memoizedHashCode = hash;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(
|
||||||
|
java.nio.ByteBuffer data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(
|
||||||
|
java.nio.ByteBuffer data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(
|
||||||
|
com.google.protobuf.ByteString data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(
|
||||||
|
com.google.protobuf.ByteString data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(byte[] data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(
|
||||||
|
byte[] data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseDelimitedFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseDelimitedFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder newBuilderForType() { return newBuilder(); }
|
||||||
|
public static Builder newBuilder() {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder();
|
||||||
|
}
|
||||||
|
public static Builder newBuilder(emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp prototype) {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return this == DEFAULT_INSTANCE
|
||||||
|
? new Builder() : new Builder().mergeFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected Builder newBuilderForType(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
Builder builder = new Builder(parent);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code AvatarFetterLevelRewardRsp}
|
||||||
|
*/
|
||||||
|
public static final class Builder extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||||
|
// @@protoc_insertion_point(builder_implements:AvatarFetterLevelRewardRsp)
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRspOrBuilder {
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.internal_static_AvatarFetterLevelRewardRsp_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.internal_static_AvatarFetterLevelRewardRsp_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.class, emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct using emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.newBuilder()
|
||||||
|
private Builder() {
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Builder(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
super(parent);
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
private void maybeForceBuilderInitialization() {
|
||||||
|
if (com.google.protobuf.GeneratedMessageV3
|
||||||
|
.alwaysUseFieldBuilders) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clear() {
|
||||||
|
super.clear();
|
||||||
|
retcode_ = 0;
|
||||||
|
|
||||||
|
avatarGuid_ = 0L;
|
||||||
|
|
||||||
|
fetterLevel_ = 0;
|
||||||
|
|
||||||
|
rewardId_ = 0;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.internal_static_AvatarFetterLevelRewardRsp_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp getDefaultInstanceForType() {
|
||||||
|
return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.getDefaultInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp build() {
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp result = buildPartial();
|
||||||
|
if (!result.isInitialized()) {
|
||||||
|
throw newUninitializedMessageException(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp buildPartial() {
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp result = new emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp(this);
|
||||||
|
result.retcode_ = retcode_;
|
||||||
|
result.avatarGuid_ = avatarGuid_;
|
||||||
|
result.fetterLevel_ = fetterLevel_;
|
||||||
|
result.rewardId_ = rewardId_;
|
||||||
|
onBuilt();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.setField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field) {
|
||||||
|
return super.clearField(field);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearOneof(
|
||||||
|
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
|
||||||
|
return super.clearOneof(oneof);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
int index, java.lang.Object value) {
|
||||||
|
return super.setRepeatedField(field, index, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder addRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.addRepeatedField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(com.google.protobuf.Message other) {
|
||||||
|
if (other instanceof emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp) {
|
||||||
|
return mergeFrom((emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp)other);
|
||||||
|
} else {
|
||||||
|
super.mergeFrom(other);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder mergeFrom(emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp other) {
|
||||||
|
if (other == emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.getDefaultInstance()) return this;
|
||||||
|
if (other.getRetcode() != 0) {
|
||||||
|
setRetcode(other.getRetcode());
|
||||||
|
}
|
||||||
|
if (other.getAvatarGuid() != 0L) {
|
||||||
|
setAvatarGuid(other.getAvatarGuid());
|
||||||
|
}
|
||||||
|
if (other.getFetterLevel() != 0) {
|
||||||
|
setFetterLevel(other.getFetterLevel());
|
||||||
|
}
|
||||||
|
if (other.getRewardId() != 0) {
|
||||||
|
setRewardId(other.getRewardId());
|
||||||
|
}
|
||||||
|
this.mergeUnknownFields(other.unknownFields);
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parsedMessage = null;
|
||||||
|
try {
|
||||||
|
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
parsedMessage = (emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp) e.getUnfinishedMessage();
|
||||||
|
throw e.unwrapIOException();
|
||||||
|
} finally {
|
||||||
|
if (parsedMessage != null) {
|
||||||
|
mergeFrom(parsedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int retcode_ ;
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return The retcode.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getRetcode() {
|
||||||
|
return retcode_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @param value The retcode to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setRetcode(int value) {
|
||||||
|
|
||||||
|
retcode_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearRetcode() {
|
||||||
|
|
||||||
|
retcode_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private long avatarGuid_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint64 avatarGuid = 2;</code>
|
||||||
|
* @return The avatarGuid.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public long getAvatarGuid() {
|
||||||
|
return avatarGuid_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint64 avatarGuid = 2;</code>
|
||||||
|
* @param value The avatarGuid to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setAvatarGuid(long value) {
|
||||||
|
|
||||||
|
avatarGuid_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint64 avatarGuid = 2;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearAvatarGuid() {
|
||||||
|
|
||||||
|
avatarGuid_ = 0L;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int fetterLevel_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 fetterLevel = 3;</code>
|
||||||
|
* @return The fetterLevel.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getFetterLevel() {
|
||||||
|
return fetterLevel_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 fetterLevel = 3;</code>
|
||||||
|
* @param value The fetterLevel to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setFetterLevel(int value) {
|
||||||
|
|
||||||
|
fetterLevel_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 fetterLevel = 3;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearFetterLevel() {
|
||||||
|
|
||||||
|
fetterLevel_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int rewardId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 rewardId = 4;</code>
|
||||||
|
* @return The rewardId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getRewardId() {
|
||||||
|
return rewardId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 rewardId = 4;</code>
|
||||||
|
* @param value The rewardId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setRewardId(int value) {
|
||||||
|
|
||||||
|
rewardId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 rewardId = 4;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearRewardId() {
|
||||||
|
|
||||||
|
rewardId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder setUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.setUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder mergeUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.mergeUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(builder_scope:AvatarFetterLevelRewardRsp)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(class_scope:AvatarFetterLevelRewardRsp)
|
||||||
|
private static final emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp DEFAULT_INSTANCE;
|
||||||
|
static {
|
||||||
|
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp getDefaultInstance() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Parser<AvatarFetterLevelRewardRsp>
|
||||||
|
PARSER = new com.google.protobuf.AbstractParser<AvatarFetterLevelRewardRsp>() {
|
||||||
|
@java.lang.Override
|
||||||
|
public AvatarFetterLevelRewardRsp parsePartialFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return new AvatarFetterLevelRewardRsp(input, extensionRegistry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static com.google.protobuf.Parser<AvatarFetterLevelRewardRsp> parser() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Parser<AvatarFetterLevelRewardRsp> getParserForType() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp getDefaultInstanceForType() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_AvatarFetterLevelRewardRsp_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_AvatarFetterLevelRewardRsp_fieldAccessorTable;
|
||||||
|
|
||||||
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
private static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
descriptor;
|
||||||
|
static {
|
||||||
|
java.lang.String[] descriptorData = {
|
||||||
|
"\n AvatarFetterLevelRewardRsp.proto\"h\n\032Av" +
|
||||||
|
"atarFetterLevelRewardRsp\022\017\n\007retcode\030\001 \001(" +
|
||||||
|
"\005\022\022\n\navatarGuid\030\002 \001(\004\022\023\n\013fetterLevel\030\003 \001" +
|
||||||
|
"(\r\022\020\n\010rewardId\030\004 \001(\rB\033\n\031emu.grasscutter." +
|
||||||
|
"net.protob\006proto3"
|
||||||
|
};
|
||||||
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
|
});
|
||||||
|
internal_static_AvatarFetterLevelRewardRsp_descriptor =
|
||||||
|
getDescriptor().getMessageTypes().get(0);
|
||||||
|
internal_static_AvatarFetterLevelRewardRsp_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_AvatarFetterLevelRewardRsp_descriptor,
|
||||||
|
new java.lang.String[] { "Retcode", "AvatarGuid", "FetterLevel", "RewardId", });
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
}
|
@ -0,0 +1,923 @@
|
|||||||
|
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
// source: EvtDoSkillSuccNotify.proto
|
||||||
|
|
||||||
|
package emu.grasscutter.net.proto;
|
||||||
|
|
||||||
|
public final class EvtDoSkillSuccNotifyOuterClass {
|
||||||
|
private EvtDoSkillSuccNotifyOuterClass() {}
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistry registry) {
|
||||||
|
registerAllExtensions(
|
||||||
|
(com.google.protobuf.ExtensionRegistryLite) registry);
|
||||||
|
}
|
||||||
|
public interface EvtDoSkillSuccNotifyOrBuilder extends
|
||||||
|
// @@protoc_insertion_point(interface_extends:EvtDoSkillSuccNotify)
|
||||||
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>.ForwardType forwardType = 1;</code>
|
||||||
|
* @return The enum numeric value on the wire for forwardType.
|
||||||
|
*/
|
||||||
|
int getForwardTypeValue();
|
||||||
|
/**
|
||||||
|
* <code>.ForwardType forwardType = 1;</code>
|
||||||
|
* @return The forwardType.
|
||||||
|
*/
|
||||||
|
emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType getForwardType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 casterId = 2;</code>
|
||||||
|
* @return The casterId.
|
||||||
|
*/
|
||||||
|
int getCasterId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 skillId = 3;</code>
|
||||||
|
* @return The skillId.
|
||||||
|
*/
|
||||||
|
int getSkillId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
* @return Whether the forward field is set.
|
||||||
|
*/
|
||||||
|
boolean hasForward();
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
* @return The forward.
|
||||||
|
*/
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.Vector getForward();
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
*/
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getForwardOrBuilder();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code EvtDoSkillSuccNotify}
|
||||||
|
*/
|
||||||
|
public static final class EvtDoSkillSuccNotify extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3 implements
|
||||||
|
// @@protoc_insertion_point(message_implements:EvtDoSkillSuccNotify)
|
||||||
|
EvtDoSkillSuccNotifyOrBuilder {
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
// Use EvtDoSkillSuccNotify.newBuilder() to construct.
|
||||||
|
private EvtDoSkillSuccNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
private EvtDoSkillSuccNotify() {
|
||||||
|
forwardType_ = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
@SuppressWarnings({"unused"})
|
||||||
|
protected java.lang.Object newInstance(
|
||||||
|
UnusedPrivateParameter unused) {
|
||||||
|
return new EvtDoSkillSuccNotify();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final com.google.protobuf.UnknownFieldSet
|
||||||
|
getUnknownFields() {
|
||||||
|
return this.unknownFields;
|
||||||
|
}
|
||||||
|
private EvtDoSkillSuccNotify(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
this();
|
||||||
|
if (extensionRegistry == null) {
|
||||||
|
throw new java.lang.NullPointerException();
|
||||||
|
}
|
||||||
|
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
|
||||||
|
com.google.protobuf.UnknownFieldSet.newBuilder();
|
||||||
|
try {
|
||||||
|
boolean done = false;
|
||||||
|
while (!done) {
|
||||||
|
int tag = input.readTag();
|
||||||
|
switch (tag) {
|
||||||
|
case 0:
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 8: {
|
||||||
|
int rawValue = input.readEnum();
|
||||||
|
|
||||||
|
forwardType_ = rawValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 16: {
|
||||||
|
|
||||||
|
casterId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 24: {
|
||||||
|
|
||||||
|
skillId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 34: {
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder subBuilder = null;
|
||||||
|
if (forward_ != null) {
|
||||||
|
subBuilder = forward_.toBuilder();
|
||||||
|
}
|
||||||
|
forward_ = input.readMessage(emu.grasscutter.net.proto.VectorOuterClass.Vector.parser(), extensionRegistry);
|
||||||
|
if (subBuilder != null) {
|
||||||
|
subBuilder.mergeFrom(forward_);
|
||||||
|
forward_ = subBuilder.buildPartial();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
if (!parseUnknownField(
|
||||||
|
input, unknownFields, extensionRegistry, tag)) {
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
throw e.setUnfinishedMessage(this);
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
throw new com.google.protobuf.InvalidProtocolBufferException(
|
||||||
|
e).setUnfinishedMessage(this);
|
||||||
|
} finally {
|
||||||
|
this.unknownFields = unknownFields.build();
|
||||||
|
makeExtensionsImmutable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.internal_static_EvtDoSkillSuccNotify_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.internal_static_EvtDoSkillSuccNotify_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.class, emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int FORWARDTYPE_FIELD_NUMBER = 1;
|
||||||
|
private int forwardType_;
|
||||||
|
/**
|
||||||
|
* <code>.ForwardType forwardType = 1;</code>
|
||||||
|
* @return The enum numeric value on the wire for forwardType.
|
||||||
|
*/
|
||||||
|
@java.lang.Override public int getForwardTypeValue() {
|
||||||
|
return forwardType_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.ForwardType forwardType = 1;</code>
|
||||||
|
* @return The forwardType.
|
||||||
|
*/
|
||||||
|
@java.lang.Override public emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType getForwardType() {
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType result = emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.valueOf(forwardType_);
|
||||||
|
return result == null ? emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.UNRECOGNIZED : result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int CASTERID_FIELD_NUMBER = 2;
|
||||||
|
private int casterId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 casterId = 2;</code>
|
||||||
|
* @return The casterId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getCasterId() {
|
||||||
|
return casterId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int SKILLID_FIELD_NUMBER = 3;
|
||||||
|
private int skillId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 skillId = 3;</code>
|
||||||
|
* @return The skillId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSkillId() {
|
||||||
|
return skillId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int FORWARD_FIELD_NUMBER = 4;
|
||||||
|
private emu.grasscutter.net.proto.VectorOuterClass.Vector forward_;
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
* @return Whether the forward field is set.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean hasForward() {
|
||||||
|
return forward_ != null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
* @return The forward.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.VectorOuterClass.Vector getForward() {
|
||||||
|
return forward_ == null ? emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : forward_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getForwardOrBuilder() {
|
||||||
|
return getForward();
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte memoizedIsInitialized = -1;
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
byte isInitialized = memoizedIsInitialized;
|
||||||
|
if (isInitialized == 1) return true;
|
||||||
|
if (isInitialized == 0) return false;
|
||||||
|
|
||||||
|
memoizedIsInitialized = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
|
throws java.io.IOException {
|
||||||
|
if (forwardType_ != emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.ForwardLocal.getNumber()) {
|
||||||
|
output.writeEnum(1, forwardType_);
|
||||||
|
}
|
||||||
|
if (casterId_ != 0) {
|
||||||
|
output.writeUInt32(2, casterId_);
|
||||||
|
}
|
||||||
|
if (skillId_ != 0) {
|
||||||
|
output.writeUInt32(3, skillId_);
|
||||||
|
}
|
||||||
|
if (forward_ != null) {
|
||||||
|
output.writeMessage(4, getForward());
|
||||||
|
}
|
||||||
|
unknownFields.writeTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSerializedSize() {
|
||||||
|
int size = memoizedSize;
|
||||||
|
if (size != -1) return size;
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
if (forwardType_ != emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.ForwardLocal.getNumber()) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeEnumSize(1, forwardType_);
|
||||||
|
}
|
||||||
|
if (casterId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(2, casterId_);
|
||||||
|
}
|
||||||
|
if (skillId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(3, skillId_);
|
||||||
|
}
|
||||||
|
if (forward_ != null) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeMessageSize(4, getForward());
|
||||||
|
}
|
||||||
|
size += unknownFields.getSerializedSize();
|
||||||
|
memoizedSize = size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean equals(final java.lang.Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify)) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify other = (emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify) obj;
|
||||||
|
|
||||||
|
if (forwardType_ != other.forwardType_) return false;
|
||||||
|
if (getCasterId()
|
||||||
|
!= other.getCasterId()) return false;
|
||||||
|
if (getSkillId()
|
||||||
|
!= other.getSkillId()) return false;
|
||||||
|
if (hasForward() != other.hasForward()) return false;
|
||||||
|
if (hasForward()) {
|
||||||
|
if (!getForward()
|
||||||
|
.equals(other.getForward())) return false;
|
||||||
|
}
|
||||||
|
if (!unknownFields.equals(other.unknownFields)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (memoizedHashCode != 0) {
|
||||||
|
return memoizedHashCode;
|
||||||
|
}
|
||||||
|
int hash = 41;
|
||||||
|
hash = (19 * hash) + getDescriptor().hashCode();
|
||||||
|
hash = (37 * hash) + FORWARDTYPE_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + forwardType_;
|
||||||
|
hash = (37 * hash) + CASTERID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getCasterId();
|
||||||
|
hash = (37 * hash) + SKILLID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getSkillId();
|
||||||
|
if (hasForward()) {
|
||||||
|
hash = (37 * hash) + FORWARD_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getForward().hashCode();
|
||||||
|
}
|
||||||
|
hash = (29 * hash) + unknownFields.hashCode();
|
||||||
|
memoizedHashCode = hash;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(
|
||||||
|
java.nio.ByteBuffer data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(
|
||||||
|
java.nio.ByteBuffer data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(
|
||||||
|
com.google.protobuf.ByteString data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(
|
||||||
|
com.google.protobuf.ByteString data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(byte[] data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(
|
||||||
|
byte[] data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseDelimitedFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseDelimitedFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder newBuilderForType() { return newBuilder(); }
|
||||||
|
public static Builder newBuilder() {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder();
|
||||||
|
}
|
||||||
|
public static Builder newBuilder(emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify prototype) {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return this == DEFAULT_INSTANCE
|
||||||
|
? new Builder() : new Builder().mergeFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected Builder newBuilderForType(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
Builder builder = new Builder(parent);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code EvtDoSkillSuccNotify}
|
||||||
|
*/
|
||||||
|
public static final class Builder extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||||
|
// @@protoc_insertion_point(builder_implements:EvtDoSkillSuccNotify)
|
||||||
|
emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotifyOrBuilder {
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.internal_static_EvtDoSkillSuccNotify_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.internal_static_EvtDoSkillSuccNotify_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.class, emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct using emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.newBuilder()
|
||||||
|
private Builder() {
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Builder(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
super(parent);
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
private void maybeForceBuilderInitialization() {
|
||||||
|
if (com.google.protobuf.GeneratedMessageV3
|
||||||
|
.alwaysUseFieldBuilders) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clear() {
|
||||||
|
super.clear();
|
||||||
|
forwardType_ = 0;
|
||||||
|
|
||||||
|
casterId_ = 0;
|
||||||
|
|
||||||
|
skillId_ = 0;
|
||||||
|
|
||||||
|
if (forwardBuilder_ == null) {
|
||||||
|
forward_ = null;
|
||||||
|
} else {
|
||||||
|
forward_ = null;
|
||||||
|
forwardBuilder_ = null;
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.internal_static_EvtDoSkillSuccNotify_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify getDefaultInstanceForType() {
|
||||||
|
return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.getDefaultInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify build() {
|
||||||
|
emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify result = buildPartial();
|
||||||
|
if (!result.isInitialized()) {
|
||||||
|
throw newUninitializedMessageException(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify buildPartial() {
|
||||||
|
emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify result = new emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify(this);
|
||||||
|
result.forwardType_ = forwardType_;
|
||||||
|
result.casterId_ = casterId_;
|
||||||
|
result.skillId_ = skillId_;
|
||||||
|
if (forwardBuilder_ == null) {
|
||||||
|
result.forward_ = forward_;
|
||||||
|
} else {
|
||||||
|
result.forward_ = forwardBuilder_.build();
|
||||||
|
}
|
||||||
|
onBuilt();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.setField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field) {
|
||||||
|
return super.clearField(field);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearOneof(
|
||||||
|
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
|
||||||
|
return super.clearOneof(oneof);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
int index, java.lang.Object value) {
|
||||||
|
return super.setRepeatedField(field, index, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder addRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.addRepeatedField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(com.google.protobuf.Message other) {
|
||||||
|
if (other instanceof emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify) {
|
||||||
|
return mergeFrom((emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify)other);
|
||||||
|
} else {
|
||||||
|
super.mergeFrom(other);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder mergeFrom(emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify other) {
|
||||||
|
if (other == emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.getDefaultInstance()) return this;
|
||||||
|
if (other.forwardType_ != 0) {
|
||||||
|
setForwardTypeValue(other.getForwardTypeValue());
|
||||||
|
}
|
||||||
|
if (other.getCasterId() != 0) {
|
||||||
|
setCasterId(other.getCasterId());
|
||||||
|
}
|
||||||
|
if (other.getSkillId() != 0) {
|
||||||
|
setSkillId(other.getSkillId());
|
||||||
|
}
|
||||||
|
if (other.hasForward()) {
|
||||||
|
mergeForward(other.getForward());
|
||||||
|
}
|
||||||
|
this.mergeUnknownFields(other.unknownFields);
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parsedMessage = null;
|
||||||
|
try {
|
||||||
|
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
parsedMessage = (emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify) e.getUnfinishedMessage();
|
||||||
|
throw e.unwrapIOException();
|
||||||
|
} finally {
|
||||||
|
if (parsedMessage != null) {
|
||||||
|
mergeFrom(parsedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int forwardType_ = 0;
|
||||||
|
/**
|
||||||
|
* <code>.ForwardType forwardType = 1;</code>
|
||||||
|
* @return The enum numeric value on the wire for forwardType.
|
||||||
|
*/
|
||||||
|
@java.lang.Override public int getForwardTypeValue() {
|
||||||
|
return forwardType_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.ForwardType forwardType = 1;</code>
|
||||||
|
* @param value The enum numeric value on the wire for forwardType to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setForwardTypeValue(int value) {
|
||||||
|
|
||||||
|
forwardType_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.ForwardType forwardType = 1;</code>
|
||||||
|
* @return The forwardType.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType getForwardType() {
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
|
emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType result = emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.valueOf(forwardType_);
|
||||||
|
return result == null ? emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.UNRECOGNIZED : result;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.ForwardType forwardType = 1;</code>
|
||||||
|
* @param value The forwardType to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setForwardType(emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType value) {
|
||||||
|
if (value == null) {
|
||||||
|
throw new NullPointerException();
|
||||||
|
}
|
||||||
|
|
||||||
|
forwardType_ = value.getNumber();
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.ForwardType forwardType = 1;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearForwardType() {
|
||||||
|
|
||||||
|
forwardType_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int casterId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 casterId = 2;</code>
|
||||||
|
* @return The casterId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getCasterId() {
|
||||||
|
return casterId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 casterId = 2;</code>
|
||||||
|
* @param value The casterId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setCasterId(int value) {
|
||||||
|
|
||||||
|
casterId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 casterId = 2;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearCasterId() {
|
||||||
|
|
||||||
|
casterId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int skillId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 skillId = 3;</code>
|
||||||
|
* @return The skillId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSkillId() {
|
||||||
|
return skillId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 skillId = 3;</code>
|
||||||
|
* @param value The skillId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setSkillId(int value) {
|
||||||
|
|
||||||
|
skillId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 skillId = 3;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearSkillId() {
|
||||||
|
|
||||||
|
skillId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private emu.grasscutter.net.proto.VectorOuterClass.Vector forward_;
|
||||||
|
private com.google.protobuf.SingleFieldBuilderV3<
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder> forwardBuilder_;
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
* @return Whether the forward field is set.
|
||||||
|
*/
|
||||||
|
public boolean hasForward() {
|
||||||
|
return forwardBuilder_ != null || forward_ != null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
* @return The forward.
|
||||||
|
*/
|
||||||
|
public emu.grasscutter.net.proto.VectorOuterClass.Vector getForward() {
|
||||||
|
if (forwardBuilder_ == null) {
|
||||||
|
return forward_ == null ? emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : forward_;
|
||||||
|
} else {
|
||||||
|
return forwardBuilder_.getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
*/
|
||||||
|
public Builder setForward(emu.grasscutter.net.proto.VectorOuterClass.Vector value) {
|
||||||
|
if (forwardBuilder_ == null) {
|
||||||
|
if (value == null) {
|
||||||
|
throw new NullPointerException();
|
||||||
|
}
|
||||||
|
forward_ = value;
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
forwardBuilder_.setMessage(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
*/
|
||||||
|
public Builder setForward(
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder builderForValue) {
|
||||||
|
if (forwardBuilder_ == null) {
|
||||||
|
forward_ = builderForValue.build();
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
forwardBuilder_.setMessage(builderForValue.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
*/
|
||||||
|
public Builder mergeForward(emu.grasscutter.net.proto.VectorOuterClass.Vector value) {
|
||||||
|
if (forwardBuilder_ == null) {
|
||||||
|
if (forward_ != null) {
|
||||||
|
forward_ =
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.Vector.newBuilder(forward_).mergeFrom(value).buildPartial();
|
||||||
|
} else {
|
||||||
|
forward_ = value;
|
||||||
|
}
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
forwardBuilder_.mergeFrom(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
*/
|
||||||
|
public Builder clearForward() {
|
||||||
|
if (forwardBuilder_ == null) {
|
||||||
|
forward_ = null;
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
forward_ = null;
|
||||||
|
forwardBuilder_ = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
*/
|
||||||
|
public emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder getForwardBuilder() {
|
||||||
|
|
||||||
|
onChanged();
|
||||||
|
return getForwardFieldBuilder().getBuilder();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
*/
|
||||||
|
public emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getForwardOrBuilder() {
|
||||||
|
if (forwardBuilder_ != null) {
|
||||||
|
return forwardBuilder_.getMessageOrBuilder();
|
||||||
|
} else {
|
||||||
|
return forward_ == null ?
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : forward_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.Vector forward = 4;</code>
|
||||||
|
*/
|
||||||
|
private com.google.protobuf.SingleFieldBuilderV3<
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder>
|
||||||
|
getForwardFieldBuilder() {
|
||||||
|
if (forwardBuilder_ == null) {
|
||||||
|
forwardBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder>(
|
||||||
|
getForward(),
|
||||||
|
getParentForChildren(),
|
||||||
|
isClean());
|
||||||
|
forward_ = null;
|
||||||
|
}
|
||||||
|
return forwardBuilder_;
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder setUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.setUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder mergeUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.mergeUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(builder_scope:EvtDoSkillSuccNotify)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(class_scope:EvtDoSkillSuccNotify)
|
||||||
|
private static final emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify DEFAULT_INSTANCE;
|
||||||
|
static {
|
||||||
|
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify getDefaultInstance() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Parser<EvtDoSkillSuccNotify>
|
||||||
|
PARSER = new com.google.protobuf.AbstractParser<EvtDoSkillSuccNotify>() {
|
||||||
|
@java.lang.Override
|
||||||
|
public EvtDoSkillSuccNotify parsePartialFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return new EvtDoSkillSuccNotify(input, extensionRegistry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static com.google.protobuf.Parser<EvtDoSkillSuccNotify> parser() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Parser<EvtDoSkillSuccNotify> getParserForType() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify getDefaultInstanceForType() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_EvtDoSkillSuccNotify_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_EvtDoSkillSuccNotify_fieldAccessorTable;
|
||||||
|
|
||||||
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
private static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
descriptor;
|
||||||
|
static {
|
||||||
|
java.lang.String[] descriptorData = {
|
||||||
|
"\n\032EvtDoSkillSuccNotify.proto\032\021ForwardTyp" +
|
||||||
|
"e.proto\032\014Vector.proto\"v\n\024EvtDoSkillSuccN" +
|
||||||
|
"otify\022!\n\013forwardType\030\001 \001(\0162\014.ForwardType" +
|
||||||
|
"\022\020\n\010casterId\030\002 \001(\r\022\017\n\007skillId\030\003 \001(\r\022\030\n\007f" +
|
||||||
|
"orward\030\004 \001(\0132\007.VectorB\033\n\031emu.grasscutter" +
|
||||||
|
".net.protob\006proto3"
|
||||||
|
};
|
||||||
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
|
emu.grasscutter.net.proto.ForwardTypeOuterClass.getDescriptor(),
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.getDescriptor(),
|
||||||
|
});
|
||||||
|
internal_static_EvtDoSkillSuccNotify_descriptor =
|
||||||
|
getDescriptor().getMessageTypes().get(0);
|
||||||
|
internal_static_EvtDoSkillSuccNotify_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_EvtDoSkillSuccNotify_descriptor,
|
||||||
|
new java.lang.String[] { "ForwardType", "CasterId", "SkillId", "Forward", });
|
||||||
|
emu.grasscutter.net.proto.ForwardTypeOuterClass.getDescriptor();
|
||||||
|
emu.grasscutter.net.proto.VectorOuterClass.getDescriptor();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
}
|
@ -0,0 +1,680 @@
|
|||||||
|
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
// source: Grasscutter-Protos/proto/NpcTalkReq.proto
|
||||||
|
|
||||||
|
package emu.grasscutter.net.proto;
|
||||||
|
|
||||||
|
public final class NpcTalkReqOuterClass {
|
||||||
|
private NpcTalkReqOuterClass() {}
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistry registry) {
|
||||||
|
registerAllExtensions(
|
||||||
|
(com.google.protobuf.ExtensionRegistryLite) registry);
|
||||||
|
}
|
||||||
|
public interface NpcTalkReqOrBuilder extends
|
||||||
|
// @@protoc_insertion_point(interface_extends:NpcTalkReq)
|
||||||
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 npc_entity_id = 1;</code>
|
||||||
|
* @return The npcEntityId.
|
||||||
|
*/
|
||||||
|
int getNpcEntityId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 talk_id = 3;</code>
|
||||||
|
* @return The talkId.
|
||||||
|
*/
|
||||||
|
int getTalkId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 entity_id = 4;</code>
|
||||||
|
* @return The entityId.
|
||||||
|
*/
|
||||||
|
int getEntityId();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code NpcTalkReq}
|
||||||
|
*/
|
||||||
|
public static final class NpcTalkReq extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3 implements
|
||||||
|
// @@protoc_insertion_point(message_implements:NpcTalkReq)
|
||||||
|
NpcTalkReqOrBuilder {
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
// Use NpcTalkReq.newBuilder() to construct.
|
||||||
|
private NpcTalkReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
private NpcTalkReq() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
@SuppressWarnings({"unused"})
|
||||||
|
protected java.lang.Object newInstance(
|
||||||
|
UnusedPrivateParameter unused) {
|
||||||
|
return new NpcTalkReq();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final com.google.protobuf.UnknownFieldSet
|
||||||
|
getUnknownFields() {
|
||||||
|
return this.unknownFields;
|
||||||
|
}
|
||||||
|
private NpcTalkReq(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
this();
|
||||||
|
if (extensionRegistry == null) {
|
||||||
|
throw new java.lang.NullPointerException();
|
||||||
|
}
|
||||||
|
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
|
||||||
|
com.google.protobuf.UnknownFieldSet.newBuilder();
|
||||||
|
try {
|
||||||
|
boolean done = false;
|
||||||
|
while (!done) {
|
||||||
|
int tag = input.readTag();
|
||||||
|
switch (tag) {
|
||||||
|
case 0:
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 8: {
|
||||||
|
|
||||||
|
npcEntityId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 24: {
|
||||||
|
|
||||||
|
talkId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 32: {
|
||||||
|
|
||||||
|
entityId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
if (!parseUnknownField(
|
||||||
|
input, unknownFields, extensionRegistry, tag)) {
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
throw e.setUnfinishedMessage(this);
|
||||||
|
} catch (com.google.protobuf.UninitializedMessageException e) {
|
||||||
|
throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
throw new com.google.protobuf.InvalidProtocolBufferException(
|
||||||
|
e).setUnfinishedMessage(this);
|
||||||
|
} finally {
|
||||||
|
this.unknownFields = unknownFields.build();
|
||||||
|
makeExtensionsImmutable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.class, emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int NPC_ENTITY_ID_FIELD_NUMBER = 1;
|
||||||
|
private int npcEntityId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 npc_entity_id = 1;</code>
|
||||||
|
* @return The npcEntityId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getNpcEntityId() {
|
||||||
|
return npcEntityId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int TALK_ID_FIELD_NUMBER = 3;
|
||||||
|
private int talkId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 talk_id = 3;</code>
|
||||||
|
* @return The talkId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getTalkId() {
|
||||||
|
return talkId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int ENTITY_ID_FIELD_NUMBER = 4;
|
||||||
|
private int entityId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 entity_id = 4;</code>
|
||||||
|
* @return The entityId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getEntityId() {
|
||||||
|
return entityId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte memoizedIsInitialized = -1;
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
byte isInitialized = memoizedIsInitialized;
|
||||||
|
if (isInitialized == 1) return true;
|
||||||
|
if (isInitialized == 0) return false;
|
||||||
|
|
||||||
|
memoizedIsInitialized = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
|
throws java.io.IOException {
|
||||||
|
if (npcEntityId_ != 0) {
|
||||||
|
output.writeUInt32(1, npcEntityId_);
|
||||||
|
}
|
||||||
|
if (talkId_ != 0) {
|
||||||
|
output.writeUInt32(3, talkId_);
|
||||||
|
}
|
||||||
|
if (entityId_ != 0) {
|
||||||
|
output.writeUInt32(4, entityId_);
|
||||||
|
}
|
||||||
|
unknownFields.writeTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSerializedSize() {
|
||||||
|
int size = memoizedSize;
|
||||||
|
if (size != -1) return size;
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
if (npcEntityId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(1, npcEntityId_);
|
||||||
|
}
|
||||||
|
if (talkId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(3, talkId_);
|
||||||
|
}
|
||||||
|
if (entityId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(4, entityId_);
|
||||||
|
}
|
||||||
|
size += unknownFields.getSerializedSize();
|
||||||
|
memoizedSize = size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean equals(final java.lang.Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq)) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq other = (emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq) obj;
|
||||||
|
|
||||||
|
if (getNpcEntityId()
|
||||||
|
!= other.getNpcEntityId()) return false;
|
||||||
|
if (getTalkId()
|
||||||
|
!= other.getTalkId()) return false;
|
||||||
|
if (getEntityId()
|
||||||
|
!= other.getEntityId()) return false;
|
||||||
|
if (!unknownFields.equals(other.unknownFields)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (memoizedHashCode != 0) {
|
||||||
|
return memoizedHashCode;
|
||||||
|
}
|
||||||
|
int hash = 41;
|
||||||
|
hash = (19 * hash) + getDescriptor().hashCode();
|
||||||
|
hash = (37 * hash) + NPC_ENTITY_ID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getNpcEntityId();
|
||||||
|
hash = (37 * hash) + TALK_ID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getTalkId();
|
||||||
|
hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getEntityId();
|
||||||
|
hash = (29 * hash) + unknownFields.hashCode();
|
||||||
|
memoizedHashCode = hash;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
|
||||||
|
java.nio.ByteBuffer data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
|
||||||
|
java.nio.ByteBuffer data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
|
||||||
|
com.google.protobuf.ByteString data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
|
||||||
|
com.google.protobuf.ByteString data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(byte[] data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
|
||||||
|
byte[] data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseDelimitedFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseDelimitedFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder newBuilderForType() { return newBuilder(); }
|
||||||
|
public static Builder newBuilder() {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder();
|
||||||
|
}
|
||||||
|
public static Builder newBuilder(emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq prototype) {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return this == DEFAULT_INSTANCE
|
||||||
|
? new Builder() : new Builder().mergeFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected Builder newBuilderForType(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
Builder builder = new Builder(parent);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code NpcTalkReq}
|
||||||
|
*/
|
||||||
|
public static final class Builder extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||||
|
// @@protoc_insertion_point(builder_implements:NpcTalkReq)
|
||||||
|
emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReqOrBuilder {
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.class, emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct using emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.newBuilder()
|
||||||
|
private Builder() {
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Builder(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
super(parent);
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
private void maybeForceBuilderInitialization() {
|
||||||
|
if (com.google.protobuf.GeneratedMessageV3
|
||||||
|
.alwaysUseFieldBuilders) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clear() {
|
||||||
|
super.clear();
|
||||||
|
npcEntityId_ = 0;
|
||||||
|
|
||||||
|
talkId_ = 0;
|
||||||
|
|
||||||
|
entityId_ = 0;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq getDefaultInstanceForType() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.getDefaultInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq build() {
|
||||||
|
emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq result = buildPartial();
|
||||||
|
if (!result.isInitialized()) {
|
||||||
|
throw newUninitializedMessageException(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq buildPartial() {
|
||||||
|
emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq result = new emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq(this);
|
||||||
|
result.npcEntityId_ = npcEntityId_;
|
||||||
|
result.talkId_ = talkId_;
|
||||||
|
result.entityId_ = entityId_;
|
||||||
|
onBuilt();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.setField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field) {
|
||||||
|
return super.clearField(field);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearOneof(
|
||||||
|
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
|
||||||
|
return super.clearOneof(oneof);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
int index, java.lang.Object value) {
|
||||||
|
return super.setRepeatedField(field, index, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder addRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.addRepeatedField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(com.google.protobuf.Message other) {
|
||||||
|
if (other instanceof emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq) {
|
||||||
|
return mergeFrom((emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq)other);
|
||||||
|
} else {
|
||||||
|
super.mergeFrom(other);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder mergeFrom(emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq other) {
|
||||||
|
if (other == emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.getDefaultInstance()) return this;
|
||||||
|
if (other.getNpcEntityId() != 0) {
|
||||||
|
setNpcEntityId(other.getNpcEntityId());
|
||||||
|
}
|
||||||
|
if (other.getTalkId() != 0) {
|
||||||
|
setTalkId(other.getTalkId());
|
||||||
|
}
|
||||||
|
if (other.getEntityId() != 0) {
|
||||||
|
setEntityId(other.getEntityId());
|
||||||
|
}
|
||||||
|
this.mergeUnknownFields(other.unknownFields);
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parsedMessage = null;
|
||||||
|
try {
|
||||||
|
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
parsedMessage = (emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq) e.getUnfinishedMessage();
|
||||||
|
throw e.unwrapIOException();
|
||||||
|
} finally {
|
||||||
|
if (parsedMessage != null) {
|
||||||
|
mergeFrom(parsedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int npcEntityId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 npc_entity_id = 1;</code>
|
||||||
|
* @return The npcEntityId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getNpcEntityId() {
|
||||||
|
return npcEntityId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 npc_entity_id = 1;</code>
|
||||||
|
* @param value The npcEntityId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setNpcEntityId(int value) {
|
||||||
|
|
||||||
|
npcEntityId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 npc_entity_id = 1;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearNpcEntityId() {
|
||||||
|
|
||||||
|
npcEntityId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int talkId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 talk_id = 3;</code>
|
||||||
|
* @return The talkId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getTalkId() {
|
||||||
|
return talkId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 talk_id = 3;</code>
|
||||||
|
* @param value The talkId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setTalkId(int value) {
|
||||||
|
|
||||||
|
talkId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 talk_id = 3;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearTalkId() {
|
||||||
|
|
||||||
|
talkId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int entityId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 entity_id = 4;</code>
|
||||||
|
* @return The entityId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getEntityId() {
|
||||||
|
return entityId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 entity_id = 4;</code>
|
||||||
|
* @param value The entityId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setEntityId(int value) {
|
||||||
|
|
||||||
|
entityId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 entity_id = 4;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearEntityId() {
|
||||||
|
|
||||||
|
entityId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder setUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.setUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder mergeUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.mergeUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(builder_scope:NpcTalkReq)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(class_scope:NpcTalkReq)
|
||||||
|
private static final emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq DEFAULT_INSTANCE;
|
||||||
|
static {
|
||||||
|
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq getDefaultInstance() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Parser<NpcTalkReq>
|
||||||
|
PARSER = new com.google.protobuf.AbstractParser<NpcTalkReq>() {
|
||||||
|
@java.lang.Override
|
||||||
|
public NpcTalkReq parsePartialFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return new NpcTalkReq(input, extensionRegistry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static com.google.protobuf.Parser<NpcTalkReq> parser() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Parser<NpcTalkReq> getParserForType() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq getDefaultInstanceForType() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_NpcTalkReq_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_NpcTalkReq_fieldAccessorTable;
|
||||||
|
|
||||||
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
private static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
descriptor;
|
||||||
|
static {
|
||||||
|
java.lang.String[] descriptorData = {
|
||||||
|
"\n)Grasscutter-Protos/proto/NpcTalkReq.pr" +
|
||||||
|
"oto\"G\n\nNpcTalkReq\022\025\n\rnpc_entity_id\030\001 \001(\r" +
|
||||||
|
"\022\017\n\007talk_id\030\003 \001(\r\022\021\n\tentity_id\030\004 \001(\rB1\n\031" +
|
||||||
|
"emu.grasscutter.net.protoB\024NpcTalkReqOut" +
|
||||||
|
"erClassb\006proto3"
|
||||||
|
};
|
||||||
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
|
});
|
||||||
|
internal_static_NpcTalkReq_descriptor =
|
||||||
|
getDescriptor().getMessageTypes().get(0);
|
||||||
|
internal_static_NpcTalkReq_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_NpcTalkReq_descriptor,
|
||||||
|
new java.lang.String[] { "NpcEntityId", "TalkId", "EntityId", });
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
}
|
@ -0,0 +1,750 @@
|
|||||||
|
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
// source: Grasscutter-Protos/proto/NpcTalkRsp.proto
|
||||||
|
|
||||||
|
package emu.grasscutter.net.proto;
|
||||||
|
|
||||||
|
public final class NpcTalkRspOuterClass {
|
||||||
|
private NpcTalkRspOuterClass() {}
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistry registry) {
|
||||||
|
registerAllExtensions(
|
||||||
|
(com.google.protobuf.ExtensionRegistryLite) registry);
|
||||||
|
}
|
||||||
|
public interface NpcTalkRspOrBuilder extends
|
||||||
|
// @@protoc_insertion_point(interface_extends:NpcTalkRsp)
|
||||||
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return The retcode.
|
||||||
|
*/
|
||||||
|
int getRetcode();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 npc_entity_id = 2;</code>
|
||||||
|
* @return The npcEntityId.
|
||||||
|
*/
|
||||||
|
int getNpcEntityId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 cur_talk_id = 4;</code>
|
||||||
|
* @return The curTalkId.
|
||||||
|
*/
|
||||||
|
int getCurTalkId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 entity_id = 5;</code>
|
||||||
|
* @return The entityId.
|
||||||
|
*/
|
||||||
|
int getEntityId();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code NpcTalkRsp}
|
||||||
|
*/
|
||||||
|
public static final class NpcTalkRsp extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3 implements
|
||||||
|
// @@protoc_insertion_point(message_implements:NpcTalkRsp)
|
||||||
|
NpcTalkRspOrBuilder {
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
// Use NpcTalkRsp.newBuilder() to construct.
|
||||||
|
private NpcTalkRsp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
private NpcTalkRsp() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
@SuppressWarnings({"unused"})
|
||||||
|
protected java.lang.Object newInstance(
|
||||||
|
UnusedPrivateParameter unused) {
|
||||||
|
return new NpcTalkRsp();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final com.google.protobuf.UnknownFieldSet
|
||||||
|
getUnknownFields() {
|
||||||
|
return this.unknownFields;
|
||||||
|
}
|
||||||
|
private NpcTalkRsp(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
this();
|
||||||
|
if (extensionRegistry == null) {
|
||||||
|
throw new java.lang.NullPointerException();
|
||||||
|
}
|
||||||
|
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
|
||||||
|
com.google.protobuf.UnknownFieldSet.newBuilder();
|
||||||
|
try {
|
||||||
|
boolean done = false;
|
||||||
|
while (!done) {
|
||||||
|
int tag = input.readTag();
|
||||||
|
switch (tag) {
|
||||||
|
case 0:
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 8: {
|
||||||
|
|
||||||
|
retcode_ = input.readInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 16: {
|
||||||
|
|
||||||
|
npcEntityId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 32: {
|
||||||
|
|
||||||
|
curTalkId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 40: {
|
||||||
|
|
||||||
|
entityId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
if (!parseUnknownField(
|
||||||
|
input, unknownFields, extensionRegistry, tag)) {
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
throw e.setUnfinishedMessage(this);
|
||||||
|
} catch (com.google.protobuf.UninitializedMessageException e) {
|
||||||
|
throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
throw new com.google.protobuf.InvalidProtocolBufferException(
|
||||||
|
e).setUnfinishedMessage(this);
|
||||||
|
} finally {
|
||||||
|
this.unknownFields = unknownFields.build();
|
||||||
|
makeExtensionsImmutable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.class, emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int RETCODE_FIELD_NUMBER = 1;
|
||||||
|
private int retcode_;
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return The retcode.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getRetcode() {
|
||||||
|
return retcode_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int NPC_ENTITY_ID_FIELD_NUMBER = 2;
|
||||||
|
private int npcEntityId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 npc_entity_id = 2;</code>
|
||||||
|
* @return The npcEntityId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getNpcEntityId() {
|
||||||
|
return npcEntityId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int CUR_TALK_ID_FIELD_NUMBER = 4;
|
||||||
|
private int curTalkId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 cur_talk_id = 4;</code>
|
||||||
|
* @return The curTalkId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getCurTalkId() {
|
||||||
|
return curTalkId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int ENTITY_ID_FIELD_NUMBER = 5;
|
||||||
|
private int entityId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 entity_id = 5;</code>
|
||||||
|
* @return The entityId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getEntityId() {
|
||||||
|
return entityId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte memoizedIsInitialized = -1;
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
byte isInitialized = memoizedIsInitialized;
|
||||||
|
if (isInitialized == 1) return true;
|
||||||
|
if (isInitialized == 0) return false;
|
||||||
|
|
||||||
|
memoizedIsInitialized = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
|
throws java.io.IOException {
|
||||||
|
if (retcode_ != 0) {
|
||||||
|
output.writeInt32(1, retcode_);
|
||||||
|
}
|
||||||
|
if (npcEntityId_ != 0) {
|
||||||
|
output.writeUInt32(2, npcEntityId_);
|
||||||
|
}
|
||||||
|
if (curTalkId_ != 0) {
|
||||||
|
output.writeUInt32(4, curTalkId_);
|
||||||
|
}
|
||||||
|
if (entityId_ != 0) {
|
||||||
|
output.writeUInt32(5, entityId_);
|
||||||
|
}
|
||||||
|
unknownFields.writeTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSerializedSize() {
|
||||||
|
int size = memoizedSize;
|
||||||
|
if (size != -1) return size;
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
if (retcode_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeInt32Size(1, retcode_);
|
||||||
|
}
|
||||||
|
if (npcEntityId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(2, npcEntityId_);
|
||||||
|
}
|
||||||
|
if (curTalkId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(4, curTalkId_);
|
||||||
|
}
|
||||||
|
if (entityId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(5, entityId_);
|
||||||
|
}
|
||||||
|
size += unknownFields.getSerializedSize();
|
||||||
|
memoizedSize = size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean equals(final java.lang.Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp)) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp other = (emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp) obj;
|
||||||
|
|
||||||
|
if (getRetcode()
|
||||||
|
!= other.getRetcode()) return false;
|
||||||
|
if (getNpcEntityId()
|
||||||
|
!= other.getNpcEntityId()) return false;
|
||||||
|
if (getCurTalkId()
|
||||||
|
!= other.getCurTalkId()) return false;
|
||||||
|
if (getEntityId()
|
||||||
|
!= other.getEntityId()) return false;
|
||||||
|
if (!unknownFields.equals(other.unknownFields)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (memoizedHashCode != 0) {
|
||||||
|
return memoizedHashCode;
|
||||||
|
}
|
||||||
|
int hash = 41;
|
||||||
|
hash = (19 * hash) + getDescriptor().hashCode();
|
||||||
|
hash = (37 * hash) + RETCODE_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getRetcode();
|
||||||
|
hash = (37 * hash) + NPC_ENTITY_ID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getNpcEntityId();
|
||||||
|
hash = (37 * hash) + CUR_TALK_ID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getCurTalkId();
|
||||||
|
hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getEntityId();
|
||||||
|
hash = (29 * hash) + unknownFields.hashCode();
|
||||||
|
memoizedHashCode = hash;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
|
||||||
|
java.nio.ByteBuffer data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
|
||||||
|
java.nio.ByteBuffer data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
|
||||||
|
com.google.protobuf.ByteString data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
|
||||||
|
com.google.protobuf.ByteString data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(byte[] data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
|
||||||
|
byte[] data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseDelimitedFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseDelimitedFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder newBuilderForType() { return newBuilder(); }
|
||||||
|
public static Builder newBuilder() {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder();
|
||||||
|
}
|
||||||
|
public static Builder newBuilder(emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp prototype) {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return this == DEFAULT_INSTANCE
|
||||||
|
? new Builder() : new Builder().mergeFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected Builder newBuilderForType(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
Builder builder = new Builder(parent);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code NpcTalkRsp}
|
||||||
|
*/
|
||||||
|
public static final class Builder extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||||
|
// @@protoc_insertion_point(builder_implements:NpcTalkRsp)
|
||||||
|
emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRspOrBuilder {
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.class, emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct using emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.newBuilder()
|
||||||
|
private Builder() {
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Builder(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
super(parent);
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
private void maybeForceBuilderInitialization() {
|
||||||
|
if (com.google.protobuf.GeneratedMessageV3
|
||||||
|
.alwaysUseFieldBuilders) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clear() {
|
||||||
|
super.clear();
|
||||||
|
retcode_ = 0;
|
||||||
|
|
||||||
|
npcEntityId_ = 0;
|
||||||
|
|
||||||
|
curTalkId_ = 0;
|
||||||
|
|
||||||
|
entityId_ = 0;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp getDefaultInstanceForType() {
|
||||||
|
return emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.getDefaultInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp build() {
|
||||||
|
emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp result = buildPartial();
|
||||||
|
if (!result.isInitialized()) {
|
||||||
|
throw newUninitializedMessageException(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp buildPartial() {
|
||||||
|
emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp result = new emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp(this);
|
||||||
|
result.retcode_ = retcode_;
|
||||||
|
result.npcEntityId_ = npcEntityId_;
|
||||||
|
result.curTalkId_ = curTalkId_;
|
||||||
|
result.entityId_ = entityId_;
|
||||||
|
onBuilt();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.setField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field) {
|
||||||
|
return super.clearField(field);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearOneof(
|
||||||
|
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
|
||||||
|
return super.clearOneof(oneof);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
int index, java.lang.Object value) {
|
||||||
|
return super.setRepeatedField(field, index, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder addRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.addRepeatedField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(com.google.protobuf.Message other) {
|
||||||
|
if (other instanceof emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp) {
|
||||||
|
return mergeFrom((emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp)other);
|
||||||
|
} else {
|
||||||
|
super.mergeFrom(other);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder mergeFrom(emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp other) {
|
||||||
|
if (other == emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.getDefaultInstance()) return this;
|
||||||
|
if (other.getRetcode() != 0) {
|
||||||
|
setRetcode(other.getRetcode());
|
||||||
|
}
|
||||||
|
if (other.getNpcEntityId() != 0) {
|
||||||
|
setNpcEntityId(other.getNpcEntityId());
|
||||||
|
}
|
||||||
|
if (other.getCurTalkId() != 0) {
|
||||||
|
setCurTalkId(other.getCurTalkId());
|
||||||
|
}
|
||||||
|
if (other.getEntityId() != 0) {
|
||||||
|
setEntityId(other.getEntityId());
|
||||||
|
}
|
||||||
|
this.mergeUnknownFields(other.unknownFields);
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parsedMessage = null;
|
||||||
|
try {
|
||||||
|
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
parsedMessage = (emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp) e.getUnfinishedMessage();
|
||||||
|
throw e.unwrapIOException();
|
||||||
|
} finally {
|
||||||
|
if (parsedMessage != null) {
|
||||||
|
mergeFrom(parsedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int retcode_ ;
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return The retcode.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getRetcode() {
|
||||||
|
return retcode_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @param value The retcode to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setRetcode(int value) {
|
||||||
|
|
||||||
|
retcode_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearRetcode() {
|
||||||
|
|
||||||
|
retcode_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int npcEntityId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 npc_entity_id = 2;</code>
|
||||||
|
* @return The npcEntityId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getNpcEntityId() {
|
||||||
|
return npcEntityId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 npc_entity_id = 2;</code>
|
||||||
|
* @param value The npcEntityId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setNpcEntityId(int value) {
|
||||||
|
|
||||||
|
npcEntityId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 npc_entity_id = 2;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearNpcEntityId() {
|
||||||
|
|
||||||
|
npcEntityId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int curTalkId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 cur_talk_id = 4;</code>
|
||||||
|
* @return The curTalkId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getCurTalkId() {
|
||||||
|
return curTalkId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 cur_talk_id = 4;</code>
|
||||||
|
* @param value The curTalkId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setCurTalkId(int value) {
|
||||||
|
|
||||||
|
curTalkId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 cur_talk_id = 4;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearCurTalkId() {
|
||||||
|
|
||||||
|
curTalkId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int entityId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 entity_id = 5;</code>
|
||||||
|
* @return The entityId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getEntityId() {
|
||||||
|
return entityId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 entity_id = 5;</code>
|
||||||
|
* @param value The entityId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setEntityId(int value) {
|
||||||
|
|
||||||
|
entityId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 entity_id = 5;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearEntityId() {
|
||||||
|
|
||||||
|
entityId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder setUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.setUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder mergeUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.mergeUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(builder_scope:NpcTalkRsp)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(class_scope:NpcTalkRsp)
|
||||||
|
private static final emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp DEFAULT_INSTANCE;
|
||||||
|
static {
|
||||||
|
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp getDefaultInstance() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Parser<NpcTalkRsp>
|
||||||
|
PARSER = new com.google.protobuf.AbstractParser<NpcTalkRsp>() {
|
||||||
|
@java.lang.Override
|
||||||
|
public NpcTalkRsp parsePartialFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return new NpcTalkRsp(input, extensionRegistry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static com.google.protobuf.Parser<NpcTalkRsp> parser() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Parser<NpcTalkRsp> getParserForType() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp getDefaultInstanceForType() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_NpcTalkRsp_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_NpcTalkRsp_fieldAccessorTable;
|
||||||
|
|
||||||
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
private static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
descriptor;
|
||||||
|
static {
|
||||||
|
java.lang.String[] descriptorData = {
|
||||||
|
"\n)Grasscutter-Protos/proto/NpcTalkRsp.pr" +
|
||||||
|
"oto\"\\\n\nNpcTalkRsp\022\017\n\007retcode\030\001 \001(\005\022\025\n\rnp" +
|
||||||
|
"c_entity_id\030\002 \001(\r\022\023\n\013cur_talk_id\030\004 \001(\r\022\021" +
|
||||||
|
"\n\tentity_id\030\005 \001(\rB1\n\031emu.grasscutter.net" +
|
||||||
|
".protoB\024NpcTalkRspOuterClassb\006proto3"
|
||||||
|
};
|
||||||
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
|
});
|
||||||
|
internal_static_NpcTalkRsp_descriptor =
|
||||||
|
getDescriptor().getMessageTypes().get(0);
|
||||||
|
internal_static_NpcTalkRsp_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_NpcTalkRsp_descriptor,
|
||||||
|
new java.lang.String[] { "Retcode", "NpcEntityId", "CurTalkId", "EntityId", });
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
}
|
@ -0,0 +1,750 @@
|
|||||||
|
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
// source: SceneTransToPointReq.proto
|
||||||
|
|
||||||
|
package emu.grasscutter.net.proto;
|
||||||
|
|
||||||
|
public final class SceneTransToPointReqOuterClass {
|
||||||
|
private SceneTransToPointReqOuterClass() {}
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistry registry) {
|
||||||
|
registerAllExtensions(
|
||||||
|
(com.google.protobuf.ExtensionRegistryLite) registry);
|
||||||
|
}
|
||||||
|
public interface SceneTransToPointReqOrBuilder extends
|
||||||
|
// @@protoc_insertion_point(interface_extends:SceneTransToPointReq)
|
||||||
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 1;</code>
|
||||||
|
* @return The sceneId.
|
||||||
|
*/
|
||||||
|
int getSceneId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 pointId = 2;</code>
|
||||||
|
* @return The pointId.
|
||||||
|
*/
|
||||||
|
int getPointId();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code SceneTransToPointReq}
|
||||||
|
*/
|
||||||
|
public static final class SceneTransToPointReq extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3 implements
|
||||||
|
// @@protoc_insertion_point(message_implements:SceneTransToPointReq)
|
||||||
|
SceneTransToPointReqOrBuilder {
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
// Use SceneTransToPointReq.newBuilder() to construct.
|
||||||
|
private SceneTransToPointReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
private SceneTransToPointReq() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
@SuppressWarnings({"unused"})
|
||||||
|
protected java.lang.Object newInstance(
|
||||||
|
UnusedPrivateParameter unused) {
|
||||||
|
return new SceneTransToPointReq();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final com.google.protobuf.UnknownFieldSet
|
||||||
|
getUnknownFields() {
|
||||||
|
return this.unknownFields;
|
||||||
|
}
|
||||||
|
private SceneTransToPointReq(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
this();
|
||||||
|
if (extensionRegistry == null) {
|
||||||
|
throw new java.lang.NullPointerException();
|
||||||
|
}
|
||||||
|
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
|
||||||
|
com.google.protobuf.UnknownFieldSet.newBuilder();
|
||||||
|
try {
|
||||||
|
boolean done = false;
|
||||||
|
while (!done) {
|
||||||
|
int tag = input.readTag();
|
||||||
|
switch (tag) {
|
||||||
|
case 0:
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 8: {
|
||||||
|
|
||||||
|
sceneId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 16: {
|
||||||
|
|
||||||
|
pointId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
if (!parseUnknownField(
|
||||||
|
input, unknownFields, extensionRegistry, tag)) {
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
throw e.setUnfinishedMessage(this);
|
||||||
|
} catch (com.google.protobuf.UninitializedMessageException e) {
|
||||||
|
throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
throw new com.google.protobuf.InvalidProtocolBufferException(
|
||||||
|
e).setUnfinishedMessage(this);
|
||||||
|
} finally {
|
||||||
|
this.unknownFields = unknownFields.build();
|
||||||
|
makeExtensionsImmutable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.internal_static_SceneTransToPointReq_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.internal_static_SceneTransToPointReq_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.class, emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Protobuf enum {@code SceneTransToPointReq.CmdId}
|
||||||
|
*/
|
||||||
|
public enum CmdId
|
||||||
|
implements com.google.protobuf.ProtocolMessageEnum {
|
||||||
|
/**
|
||||||
|
* <code>NONE = 0;</code>
|
||||||
|
*/
|
||||||
|
NONE(0, 0),
|
||||||
|
/**
|
||||||
|
* <code>ENET_IS_RELIABLE = 1;</code>
|
||||||
|
*/
|
||||||
|
ENET_IS_RELIABLE(2, 1),
|
||||||
|
/**
|
||||||
|
* <code>CMD_ID = 219;</code>
|
||||||
|
*/
|
||||||
|
CMD_ID(4, 219),
|
||||||
|
UNRECOGNIZED(-1, -1),
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>ENET_CHANNEL_ID = 0;</code>
|
||||||
|
*/
|
||||||
|
public static final CmdId ENET_CHANNEL_ID = NONE;
|
||||||
|
/**
|
||||||
|
* <code>IS_ALLOW_CLIENT = 1;</code>
|
||||||
|
*/
|
||||||
|
public static final CmdId IS_ALLOW_CLIENT = ENET_IS_RELIABLE;
|
||||||
|
/**
|
||||||
|
* <code>NONE = 0;</code>
|
||||||
|
*/
|
||||||
|
public static final int NONE_VALUE = 0;
|
||||||
|
/**
|
||||||
|
* <code>ENET_CHANNEL_ID = 0;</code>
|
||||||
|
*/
|
||||||
|
public static final int ENET_CHANNEL_ID_VALUE = 0;
|
||||||
|
/**
|
||||||
|
* <code>ENET_IS_RELIABLE = 1;</code>
|
||||||
|
*/
|
||||||
|
public static final int ENET_IS_RELIABLE_VALUE = 1;
|
||||||
|
/**
|
||||||
|
* <code>IS_ALLOW_CLIENT = 1;</code>
|
||||||
|
*/
|
||||||
|
public static final int IS_ALLOW_CLIENT_VALUE = 1;
|
||||||
|
/**
|
||||||
|
* <code>CMD_ID = 219;</code>
|
||||||
|
*/
|
||||||
|
public static final int CMD_ID_VALUE = 219;
|
||||||
|
|
||||||
|
|
||||||
|
public final int getNumber() {
|
||||||
|
if (index == -1) {
|
||||||
|
throw new java.lang.IllegalArgumentException(
|
||||||
|
"Can't get the number of an unknown enum value.");
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param value The numeric wire value of the corresponding enum entry.
|
||||||
|
* @return The enum associated with the given numeric wire value.
|
||||||
|
* @deprecated Use {@link #forNumber(int)} instead.
|
||||||
|
*/
|
||||||
|
@java.lang.Deprecated
|
||||||
|
public static CmdId valueOf(int value) {
|
||||||
|
return forNumber(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param value The numeric wire value of the corresponding enum entry.
|
||||||
|
* @return The enum associated with the given numeric wire value.
|
||||||
|
*/
|
||||||
|
public static CmdId forNumber(int value) {
|
||||||
|
switch (value) {
|
||||||
|
case 0: return NONE;
|
||||||
|
case 1: return ENET_IS_RELIABLE;
|
||||||
|
case 219: return CMD_ID;
|
||||||
|
default: return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static com.google.protobuf.Internal.EnumLiteMap<CmdId>
|
||||||
|
internalGetValueMap() {
|
||||||
|
return internalValueMap;
|
||||||
|
}
|
||||||
|
private static final com.google.protobuf.Internal.EnumLiteMap<
|
||||||
|
CmdId> internalValueMap =
|
||||||
|
new com.google.protobuf.Internal.EnumLiteMap<CmdId>() {
|
||||||
|
public CmdId findValueByNumber(int number) {
|
||||||
|
return CmdId.forNumber(number);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public final com.google.protobuf.Descriptors.EnumValueDescriptor
|
||||||
|
getValueDescriptor() {
|
||||||
|
if (index == -1) {
|
||||||
|
throw new java.lang.IllegalStateException(
|
||||||
|
"Can't get the descriptor of an unrecognized enum value.");
|
||||||
|
}
|
||||||
|
return getDescriptor().getValues().get(index);
|
||||||
|
}
|
||||||
|
public final com.google.protobuf.Descriptors.EnumDescriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return getDescriptor();
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.EnumDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.getDescriptor().getEnumTypes().get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final CmdId[] VALUES = getStaticValuesArray();
|
||||||
|
private static CmdId[] getStaticValuesArray() {
|
||||||
|
return new CmdId[] {
|
||||||
|
NONE, ENET_CHANNEL_ID, ENET_IS_RELIABLE, IS_ALLOW_CLIENT, CMD_ID,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public static CmdId valueOf(
|
||||||
|
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
|
||||||
|
if (desc.getType() != getDescriptor()) {
|
||||||
|
throw new java.lang.IllegalArgumentException(
|
||||||
|
"EnumValueDescriptor is not for this type.");
|
||||||
|
}
|
||||||
|
if (desc.getIndex() == -1) {
|
||||||
|
return UNRECOGNIZED;
|
||||||
|
}
|
||||||
|
return VALUES[desc.getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
private final int index;
|
||||||
|
private final int value;
|
||||||
|
|
||||||
|
private CmdId(int index, int value) {
|
||||||
|
this.index = index;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(enum_scope:SceneTransToPointReq.CmdId)
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int SCENEID_FIELD_NUMBER = 1;
|
||||||
|
private int sceneId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 1;</code>
|
||||||
|
* @return The sceneId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSceneId() {
|
||||||
|
return sceneId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int POINTID_FIELD_NUMBER = 2;
|
||||||
|
private int pointId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 pointId = 2;</code>
|
||||||
|
* @return The pointId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getPointId() {
|
||||||
|
return pointId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte memoizedIsInitialized = -1;
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
byte isInitialized = memoizedIsInitialized;
|
||||||
|
if (isInitialized == 1) return true;
|
||||||
|
if (isInitialized == 0) return false;
|
||||||
|
|
||||||
|
memoizedIsInitialized = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
|
throws java.io.IOException {
|
||||||
|
if (sceneId_ != 0) {
|
||||||
|
output.writeUInt32(1, sceneId_);
|
||||||
|
}
|
||||||
|
if (pointId_ != 0) {
|
||||||
|
output.writeUInt32(2, pointId_);
|
||||||
|
}
|
||||||
|
unknownFields.writeTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSerializedSize() {
|
||||||
|
int size = memoizedSize;
|
||||||
|
if (size != -1) return size;
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
if (sceneId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(1, sceneId_);
|
||||||
|
}
|
||||||
|
if (pointId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(2, pointId_);
|
||||||
|
}
|
||||||
|
size += unknownFields.getSerializedSize();
|
||||||
|
memoizedSize = size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean equals(final java.lang.Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq)) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq other = (emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq) obj;
|
||||||
|
|
||||||
|
if (getSceneId()
|
||||||
|
!= other.getSceneId()) return false;
|
||||||
|
if (getPointId()
|
||||||
|
!= other.getPointId()) return false;
|
||||||
|
if (!unknownFields.equals(other.unknownFields)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (memoizedHashCode != 0) {
|
||||||
|
return memoizedHashCode;
|
||||||
|
}
|
||||||
|
int hash = 41;
|
||||||
|
hash = (19 * hash) + getDescriptor().hashCode();
|
||||||
|
hash = (37 * hash) + SCENEID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getSceneId();
|
||||||
|
hash = (37 * hash) + POINTID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getPointId();
|
||||||
|
hash = (29 * hash) + unknownFields.hashCode();
|
||||||
|
memoizedHashCode = hash;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(
|
||||||
|
java.nio.ByteBuffer data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(
|
||||||
|
java.nio.ByteBuffer data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(
|
||||||
|
com.google.protobuf.ByteString data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(
|
||||||
|
com.google.protobuf.ByteString data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(byte[] data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(
|
||||||
|
byte[] data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseDelimitedFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseDelimitedFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder newBuilderForType() { return newBuilder(); }
|
||||||
|
public static Builder newBuilder() {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder();
|
||||||
|
}
|
||||||
|
public static Builder newBuilder(emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq prototype) {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return this == DEFAULT_INSTANCE
|
||||||
|
? new Builder() : new Builder().mergeFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected Builder newBuilderForType(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
Builder builder = new Builder(parent);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code SceneTransToPointReq}
|
||||||
|
*/
|
||||||
|
public static final class Builder extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||||
|
// @@protoc_insertion_point(builder_implements:SceneTransToPointReq)
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReqOrBuilder {
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.internal_static_SceneTransToPointReq_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.internal_static_SceneTransToPointReq_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.class, emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct using emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.newBuilder()
|
||||||
|
private Builder() {
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Builder(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
super(parent);
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
private void maybeForceBuilderInitialization() {
|
||||||
|
if (com.google.protobuf.GeneratedMessageV3
|
||||||
|
.alwaysUseFieldBuilders) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clear() {
|
||||||
|
super.clear();
|
||||||
|
sceneId_ = 0;
|
||||||
|
|
||||||
|
pointId_ = 0;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.internal_static_SceneTransToPointReq_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq getDefaultInstanceForType() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.getDefaultInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq build() {
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq result = buildPartial();
|
||||||
|
if (!result.isInitialized()) {
|
||||||
|
throw newUninitializedMessageException(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq buildPartial() {
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq result = new emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq(this);
|
||||||
|
result.sceneId_ = sceneId_;
|
||||||
|
result.pointId_ = pointId_;
|
||||||
|
onBuilt();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.setField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field) {
|
||||||
|
return super.clearField(field);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearOneof(
|
||||||
|
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
|
||||||
|
return super.clearOneof(oneof);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
int index, java.lang.Object value) {
|
||||||
|
return super.setRepeatedField(field, index, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder addRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.addRepeatedField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(com.google.protobuf.Message other) {
|
||||||
|
if (other instanceof emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq) {
|
||||||
|
return mergeFrom((emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq)other);
|
||||||
|
} else {
|
||||||
|
super.mergeFrom(other);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder mergeFrom(emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq other) {
|
||||||
|
if (other == emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.getDefaultInstance()) return this;
|
||||||
|
if (other.getSceneId() != 0) {
|
||||||
|
setSceneId(other.getSceneId());
|
||||||
|
}
|
||||||
|
if (other.getPointId() != 0) {
|
||||||
|
setPointId(other.getPointId());
|
||||||
|
}
|
||||||
|
this.mergeUnknownFields(other.unknownFields);
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parsedMessage = null;
|
||||||
|
try {
|
||||||
|
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
parsedMessage = (emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq) e.getUnfinishedMessage();
|
||||||
|
throw e.unwrapIOException();
|
||||||
|
} finally {
|
||||||
|
if (parsedMessage != null) {
|
||||||
|
mergeFrom(parsedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int sceneId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 1;</code>
|
||||||
|
* @return The sceneId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSceneId() {
|
||||||
|
return sceneId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 1;</code>
|
||||||
|
* @param value The sceneId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setSceneId(int value) {
|
||||||
|
|
||||||
|
sceneId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 1;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearSceneId() {
|
||||||
|
|
||||||
|
sceneId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int pointId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 pointId = 2;</code>
|
||||||
|
* @return The pointId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getPointId() {
|
||||||
|
return pointId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 pointId = 2;</code>
|
||||||
|
* @param value The pointId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setPointId(int value) {
|
||||||
|
|
||||||
|
pointId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 pointId = 2;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearPointId() {
|
||||||
|
|
||||||
|
pointId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder setUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.setUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder mergeUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.mergeUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(builder_scope:SceneTransToPointReq)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(class_scope:SceneTransToPointReq)
|
||||||
|
private static final emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq DEFAULT_INSTANCE;
|
||||||
|
static {
|
||||||
|
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq getDefaultInstance() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Parser<SceneTransToPointReq>
|
||||||
|
PARSER = new com.google.protobuf.AbstractParser<SceneTransToPointReq>() {
|
||||||
|
@java.lang.Override
|
||||||
|
public SceneTransToPointReq parsePartialFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return new SceneTransToPointReq(input, extensionRegistry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static com.google.protobuf.Parser<SceneTransToPointReq> parser() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Parser<SceneTransToPointReq> getParserForType() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq getDefaultInstanceForType() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_SceneTransToPointReq_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_SceneTransToPointReq_fieldAccessorTable;
|
||||||
|
|
||||||
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
private static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
descriptor;
|
||||||
|
static {
|
||||||
|
java.lang.String[] descriptorData = {
|
||||||
|
"\n\032SceneTransToPointReq.proto\"\234\001\n\024SceneTr" +
|
||||||
|
"ansToPointReq\022\017\n\007sceneId\030\001 \001(\r\022\017\n\007pointI" +
|
||||||
|
"d\030\002 \001(\r\"b\n\005CmdId\022\010\n\004NONE\020\000\022\023\n\017ENET_CHANN" +
|
||||||
|
"EL_ID\020\000\022\024\n\020ENET_IS_RELIABLE\020\001\022\023\n\017IS_ALLO" +
|
||||||
|
"W_CLIENT\020\001\022\013\n\006CMD_ID\020\333\001\032\002\020\001B\033\n\031emu.grass" +
|
||||||
|
"cutter.net.protob\006proto3"
|
||||||
|
};
|
||||||
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
|
});
|
||||||
|
internal_static_SceneTransToPointReq_descriptor =
|
||||||
|
getDescriptor().getMessageTypes().get(0);
|
||||||
|
internal_static_SceneTransToPointReq_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_SceneTransToPointReq_descriptor,
|
||||||
|
new java.lang.String[] { "SceneId", "PointId", });
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
}
|
@ -0,0 +1,812 @@
|
|||||||
|
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
// source: SceneTransToPointRsp.proto
|
||||||
|
|
||||||
|
package emu.grasscutter.net.proto;
|
||||||
|
|
||||||
|
public final class SceneTransToPointRspOuterClass {
|
||||||
|
private SceneTransToPointRspOuterClass() {}
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistry registry) {
|
||||||
|
registerAllExtensions(
|
||||||
|
(com.google.protobuf.ExtensionRegistryLite) registry);
|
||||||
|
}
|
||||||
|
public interface SceneTransToPointRspOrBuilder extends
|
||||||
|
// @@protoc_insertion_point(interface_extends:SceneTransToPointRsp)
|
||||||
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return The retcode.
|
||||||
|
*/
|
||||||
|
int getRetcode();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 2;</code>
|
||||||
|
* @return The sceneId.
|
||||||
|
*/
|
||||||
|
int getSceneId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 pointId = 3;</code>
|
||||||
|
* @return The pointId.
|
||||||
|
*/
|
||||||
|
int getPointId();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code SceneTransToPointRsp}
|
||||||
|
*/
|
||||||
|
public static final class SceneTransToPointRsp extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3 implements
|
||||||
|
// @@protoc_insertion_point(message_implements:SceneTransToPointRsp)
|
||||||
|
SceneTransToPointRspOrBuilder {
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
// Use SceneTransToPointRsp.newBuilder() to construct.
|
||||||
|
private SceneTransToPointRsp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
private SceneTransToPointRsp() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
@SuppressWarnings({"unused"})
|
||||||
|
protected java.lang.Object newInstance(
|
||||||
|
UnusedPrivateParameter unused) {
|
||||||
|
return new SceneTransToPointRsp();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final com.google.protobuf.UnknownFieldSet
|
||||||
|
getUnknownFields() {
|
||||||
|
return this.unknownFields;
|
||||||
|
}
|
||||||
|
private SceneTransToPointRsp(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
this();
|
||||||
|
if (extensionRegistry == null) {
|
||||||
|
throw new java.lang.NullPointerException();
|
||||||
|
}
|
||||||
|
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
|
||||||
|
com.google.protobuf.UnknownFieldSet.newBuilder();
|
||||||
|
try {
|
||||||
|
boolean done = false;
|
||||||
|
while (!done) {
|
||||||
|
int tag = input.readTag();
|
||||||
|
switch (tag) {
|
||||||
|
case 0:
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 8: {
|
||||||
|
|
||||||
|
retcode_ = input.readInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 16: {
|
||||||
|
|
||||||
|
sceneId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 24: {
|
||||||
|
|
||||||
|
pointId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
if (!parseUnknownField(
|
||||||
|
input, unknownFields, extensionRegistry, tag)) {
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
throw e.setUnfinishedMessage(this);
|
||||||
|
} catch (com.google.protobuf.UninitializedMessageException e) {
|
||||||
|
throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
throw new com.google.protobuf.InvalidProtocolBufferException(
|
||||||
|
e).setUnfinishedMessage(this);
|
||||||
|
} finally {
|
||||||
|
this.unknownFields = unknownFields.build();
|
||||||
|
makeExtensionsImmutable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.internal_static_SceneTransToPointRsp_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.internal_static_SceneTransToPointRsp_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.class, emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Protobuf enum {@code SceneTransToPointRsp.CmdId}
|
||||||
|
*/
|
||||||
|
public enum CmdId
|
||||||
|
implements com.google.protobuf.ProtocolMessageEnum {
|
||||||
|
/**
|
||||||
|
* <code>NONE = 0;</code>
|
||||||
|
*/
|
||||||
|
NONE(0, 0),
|
||||||
|
/**
|
||||||
|
* <code>ENET_IS_RELIABLE = 1;</code>
|
||||||
|
*/
|
||||||
|
ENET_IS_RELIABLE(2, 1),
|
||||||
|
/**
|
||||||
|
* <code>CMD_ID = 220;</code>
|
||||||
|
*/
|
||||||
|
CMD_ID(3, 220),
|
||||||
|
UNRECOGNIZED(-1, -1),
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>ENET_CHANNEL_ID = 0;</code>
|
||||||
|
*/
|
||||||
|
public static final CmdId ENET_CHANNEL_ID = NONE;
|
||||||
|
/**
|
||||||
|
* <code>NONE = 0;</code>
|
||||||
|
*/
|
||||||
|
public static final int NONE_VALUE = 0;
|
||||||
|
/**
|
||||||
|
* <code>ENET_CHANNEL_ID = 0;</code>
|
||||||
|
*/
|
||||||
|
public static final int ENET_CHANNEL_ID_VALUE = 0;
|
||||||
|
/**
|
||||||
|
* <code>ENET_IS_RELIABLE = 1;</code>
|
||||||
|
*/
|
||||||
|
public static final int ENET_IS_RELIABLE_VALUE = 1;
|
||||||
|
/**
|
||||||
|
* <code>CMD_ID = 220;</code>
|
||||||
|
*/
|
||||||
|
public static final int CMD_ID_VALUE = 220;
|
||||||
|
|
||||||
|
|
||||||
|
public final int getNumber() {
|
||||||
|
if (index == -1) {
|
||||||
|
throw new java.lang.IllegalArgumentException(
|
||||||
|
"Can't get the number of an unknown enum value.");
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param value The numeric wire value of the corresponding enum entry.
|
||||||
|
* @return The enum associated with the given numeric wire value.
|
||||||
|
* @deprecated Use {@link #forNumber(int)} instead.
|
||||||
|
*/
|
||||||
|
@java.lang.Deprecated
|
||||||
|
public static CmdId valueOf(int value) {
|
||||||
|
return forNumber(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param value The numeric wire value of the corresponding enum entry.
|
||||||
|
* @return The enum associated with the given numeric wire value.
|
||||||
|
*/
|
||||||
|
public static CmdId forNumber(int value) {
|
||||||
|
switch (value) {
|
||||||
|
case 0: return NONE;
|
||||||
|
case 1: return ENET_IS_RELIABLE;
|
||||||
|
case 220: return CMD_ID;
|
||||||
|
default: return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static com.google.protobuf.Internal.EnumLiteMap<CmdId>
|
||||||
|
internalGetValueMap() {
|
||||||
|
return internalValueMap;
|
||||||
|
}
|
||||||
|
private static final com.google.protobuf.Internal.EnumLiteMap<
|
||||||
|
CmdId> internalValueMap =
|
||||||
|
new com.google.protobuf.Internal.EnumLiteMap<CmdId>() {
|
||||||
|
public CmdId findValueByNumber(int number) {
|
||||||
|
return CmdId.forNumber(number);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public final com.google.protobuf.Descriptors.EnumValueDescriptor
|
||||||
|
getValueDescriptor() {
|
||||||
|
if (index == -1) {
|
||||||
|
throw new java.lang.IllegalStateException(
|
||||||
|
"Can't get the descriptor of an unrecognized enum value.");
|
||||||
|
}
|
||||||
|
return getDescriptor().getValues().get(index);
|
||||||
|
}
|
||||||
|
public final com.google.protobuf.Descriptors.EnumDescriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return getDescriptor();
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.EnumDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.getDescriptor().getEnumTypes().get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final CmdId[] VALUES = getStaticValuesArray();
|
||||||
|
private static CmdId[] getStaticValuesArray() {
|
||||||
|
return new CmdId[] {
|
||||||
|
NONE, ENET_CHANNEL_ID, ENET_IS_RELIABLE, CMD_ID,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public static CmdId valueOf(
|
||||||
|
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
|
||||||
|
if (desc.getType() != getDescriptor()) {
|
||||||
|
throw new java.lang.IllegalArgumentException(
|
||||||
|
"EnumValueDescriptor is not for this type.");
|
||||||
|
}
|
||||||
|
if (desc.getIndex() == -1) {
|
||||||
|
return UNRECOGNIZED;
|
||||||
|
}
|
||||||
|
return VALUES[desc.getIndex()];
|
||||||
|
}
|
||||||
|
|
||||||
|
private final int index;
|
||||||
|
private final int value;
|
||||||
|
|
||||||
|
private CmdId(int index, int value) {
|
||||||
|
this.index = index;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(enum_scope:SceneTransToPointRsp.CmdId)
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int RETCODE_FIELD_NUMBER = 1;
|
||||||
|
private int retcode_;
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return The retcode.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getRetcode() {
|
||||||
|
return retcode_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int SCENEID_FIELD_NUMBER = 2;
|
||||||
|
private int sceneId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 2;</code>
|
||||||
|
* @return The sceneId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSceneId() {
|
||||||
|
return sceneId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int POINTID_FIELD_NUMBER = 3;
|
||||||
|
private int pointId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 pointId = 3;</code>
|
||||||
|
* @return The pointId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getPointId() {
|
||||||
|
return pointId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte memoizedIsInitialized = -1;
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
byte isInitialized = memoizedIsInitialized;
|
||||||
|
if (isInitialized == 1) return true;
|
||||||
|
if (isInitialized == 0) return false;
|
||||||
|
|
||||||
|
memoizedIsInitialized = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
|
throws java.io.IOException {
|
||||||
|
if (retcode_ != 0) {
|
||||||
|
output.writeInt32(1, retcode_);
|
||||||
|
}
|
||||||
|
if (sceneId_ != 0) {
|
||||||
|
output.writeUInt32(2, sceneId_);
|
||||||
|
}
|
||||||
|
if (pointId_ != 0) {
|
||||||
|
output.writeUInt32(3, pointId_);
|
||||||
|
}
|
||||||
|
unknownFields.writeTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSerializedSize() {
|
||||||
|
int size = memoizedSize;
|
||||||
|
if (size != -1) return size;
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
if (retcode_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeInt32Size(1, retcode_);
|
||||||
|
}
|
||||||
|
if (sceneId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(2, sceneId_);
|
||||||
|
}
|
||||||
|
if (pointId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(3, pointId_);
|
||||||
|
}
|
||||||
|
size += unknownFields.getSerializedSize();
|
||||||
|
memoizedSize = size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean equals(final java.lang.Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp)) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp other = (emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp) obj;
|
||||||
|
|
||||||
|
if (getRetcode()
|
||||||
|
!= other.getRetcode()) return false;
|
||||||
|
if (getSceneId()
|
||||||
|
!= other.getSceneId()) return false;
|
||||||
|
if (getPointId()
|
||||||
|
!= other.getPointId()) return false;
|
||||||
|
if (!unknownFields.equals(other.unknownFields)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (memoizedHashCode != 0) {
|
||||||
|
return memoizedHashCode;
|
||||||
|
}
|
||||||
|
int hash = 41;
|
||||||
|
hash = (19 * hash) + getDescriptor().hashCode();
|
||||||
|
hash = (37 * hash) + RETCODE_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getRetcode();
|
||||||
|
hash = (37 * hash) + SCENEID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getSceneId();
|
||||||
|
hash = (37 * hash) + POINTID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getPointId();
|
||||||
|
hash = (29 * hash) + unknownFields.hashCode();
|
||||||
|
memoizedHashCode = hash;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(
|
||||||
|
java.nio.ByteBuffer data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(
|
||||||
|
java.nio.ByteBuffer data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(
|
||||||
|
com.google.protobuf.ByteString data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(
|
||||||
|
com.google.protobuf.ByteString data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(byte[] data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(
|
||||||
|
byte[] data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseDelimitedFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseDelimitedFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder newBuilderForType() { return newBuilder(); }
|
||||||
|
public static Builder newBuilder() {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder();
|
||||||
|
}
|
||||||
|
public static Builder newBuilder(emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp prototype) {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return this == DEFAULT_INSTANCE
|
||||||
|
? new Builder() : new Builder().mergeFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected Builder newBuilderForType(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
Builder builder = new Builder(parent);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code SceneTransToPointRsp}
|
||||||
|
*/
|
||||||
|
public static final class Builder extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||||
|
// @@protoc_insertion_point(builder_implements:SceneTransToPointRsp)
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRspOrBuilder {
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.internal_static_SceneTransToPointRsp_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.internal_static_SceneTransToPointRsp_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.class, emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct using emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.newBuilder()
|
||||||
|
private Builder() {
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Builder(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
super(parent);
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
private void maybeForceBuilderInitialization() {
|
||||||
|
if (com.google.protobuf.GeneratedMessageV3
|
||||||
|
.alwaysUseFieldBuilders) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clear() {
|
||||||
|
super.clear();
|
||||||
|
retcode_ = 0;
|
||||||
|
|
||||||
|
sceneId_ = 0;
|
||||||
|
|
||||||
|
pointId_ = 0;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.internal_static_SceneTransToPointRsp_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp getDefaultInstanceForType() {
|
||||||
|
return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.getDefaultInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp build() {
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp result = buildPartial();
|
||||||
|
if (!result.isInitialized()) {
|
||||||
|
throw newUninitializedMessageException(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp buildPartial() {
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp result = new emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp(this);
|
||||||
|
result.retcode_ = retcode_;
|
||||||
|
result.sceneId_ = sceneId_;
|
||||||
|
result.pointId_ = pointId_;
|
||||||
|
onBuilt();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.setField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field) {
|
||||||
|
return super.clearField(field);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearOneof(
|
||||||
|
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
|
||||||
|
return super.clearOneof(oneof);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
int index, java.lang.Object value) {
|
||||||
|
return super.setRepeatedField(field, index, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder addRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.addRepeatedField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(com.google.protobuf.Message other) {
|
||||||
|
if (other instanceof emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp) {
|
||||||
|
return mergeFrom((emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp)other);
|
||||||
|
} else {
|
||||||
|
super.mergeFrom(other);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder mergeFrom(emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp other) {
|
||||||
|
if (other == emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.getDefaultInstance()) return this;
|
||||||
|
if (other.getRetcode() != 0) {
|
||||||
|
setRetcode(other.getRetcode());
|
||||||
|
}
|
||||||
|
if (other.getSceneId() != 0) {
|
||||||
|
setSceneId(other.getSceneId());
|
||||||
|
}
|
||||||
|
if (other.getPointId() != 0) {
|
||||||
|
setPointId(other.getPointId());
|
||||||
|
}
|
||||||
|
this.mergeUnknownFields(other.unknownFields);
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parsedMessage = null;
|
||||||
|
try {
|
||||||
|
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
parsedMessage = (emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp) e.getUnfinishedMessage();
|
||||||
|
throw e.unwrapIOException();
|
||||||
|
} finally {
|
||||||
|
if (parsedMessage != null) {
|
||||||
|
mergeFrom(parsedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int retcode_ ;
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return The retcode.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getRetcode() {
|
||||||
|
return retcode_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @param value The retcode to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setRetcode(int value) {
|
||||||
|
|
||||||
|
retcode_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>int32 retcode = 1;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearRetcode() {
|
||||||
|
|
||||||
|
retcode_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int sceneId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 2;</code>
|
||||||
|
* @return The sceneId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSceneId() {
|
||||||
|
return sceneId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 2;</code>
|
||||||
|
* @param value The sceneId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setSceneId(int value) {
|
||||||
|
|
||||||
|
sceneId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 2;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearSceneId() {
|
||||||
|
|
||||||
|
sceneId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int pointId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 pointId = 3;</code>
|
||||||
|
* @return The pointId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getPointId() {
|
||||||
|
return pointId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 pointId = 3;</code>
|
||||||
|
* @param value The pointId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setPointId(int value) {
|
||||||
|
|
||||||
|
pointId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 pointId = 3;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearPointId() {
|
||||||
|
|
||||||
|
pointId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder setUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.setUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder mergeUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.mergeUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(builder_scope:SceneTransToPointRsp)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(class_scope:SceneTransToPointRsp)
|
||||||
|
private static final emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp DEFAULT_INSTANCE;
|
||||||
|
static {
|
||||||
|
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp getDefaultInstance() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Parser<SceneTransToPointRsp>
|
||||||
|
PARSER = new com.google.protobuf.AbstractParser<SceneTransToPointRsp>() {
|
||||||
|
@java.lang.Override
|
||||||
|
public SceneTransToPointRsp parsePartialFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return new SceneTransToPointRsp(input, extensionRegistry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static com.google.protobuf.Parser<SceneTransToPointRsp> parser() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Parser<SceneTransToPointRsp> getParserForType() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp getDefaultInstanceForType() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_SceneTransToPointRsp_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_SceneTransToPointRsp_fieldAccessorTable;
|
||||||
|
|
||||||
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
private static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
descriptor;
|
||||||
|
static {
|
||||||
|
java.lang.String[] descriptorData = {
|
||||||
|
"\n\032SceneTransToPointRsp.proto\"\230\001\n\024SceneTr" +
|
||||||
|
"ansToPointRsp\022\017\n\007retcode\030\001 \001(\005\022\017\n\007sceneI" +
|
||||||
|
"d\030\002 \001(\r\022\017\n\007pointId\030\003 \001(\r\"M\n\005CmdId\022\010\n\004NON" +
|
||||||
|
"E\020\000\022\023\n\017ENET_CHANNEL_ID\020\000\022\024\n\020ENET_IS_RELI" +
|
||||||
|
"ABLE\020\001\022\013\n\006CMD_ID\020\334\001\032\002\020\001B\033\n\031emu.grasscutt" +
|
||||||
|
"er.net.protob\006proto3"
|
||||||
|
};
|
||||||
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
|
});
|
||||||
|
internal_static_SceneTransToPointRsp_descriptor =
|
||||||
|
getDescriptor().getMessageTypes().get(0);
|
||||||
|
internal_static_SceneTransToPointRsp_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_SceneTransToPointRsp_descriptor,
|
||||||
|
new java.lang.String[] { "Retcode", "SceneId", "PointId", });
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
}
|
@ -0,0 +1,743 @@
|
|||||||
|
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
// source: SetEntityClientDataNotify.proto
|
||||||
|
|
||||||
|
package emu.grasscutter.net.proto;
|
||||||
|
|
||||||
|
public final class SetEntityClientDataNotifyOuterClass {
|
||||||
|
private SetEntityClientDataNotifyOuterClass() {}
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistry registry) {
|
||||||
|
registerAllExtensions(
|
||||||
|
(com.google.protobuf.ExtensionRegistryLite) registry);
|
||||||
|
}
|
||||||
|
public interface SetEntityClientDataNotifyOrBuilder extends
|
||||||
|
// @@protoc_insertion_point(interface_extends:SetEntityClientDataNotify)
|
||||||
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 entityId = 1;</code>
|
||||||
|
* @return The entityId.
|
||||||
|
*/
|
||||||
|
int getEntityId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
* @return Whether the entityClientData field is set.
|
||||||
|
*/
|
||||||
|
boolean hasEntityClientData();
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
* @return The entityClientData.
|
||||||
|
*/
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData getEntityClientData();
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
*/
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder getEntityClientDataOrBuilder();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code SetEntityClientDataNotify}
|
||||||
|
*/
|
||||||
|
public static final class SetEntityClientDataNotify extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3 implements
|
||||||
|
// @@protoc_insertion_point(message_implements:SetEntityClientDataNotify)
|
||||||
|
SetEntityClientDataNotifyOrBuilder {
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
// Use SetEntityClientDataNotify.newBuilder() to construct.
|
||||||
|
private SetEntityClientDataNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
private SetEntityClientDataNotify() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
@SuppressWarnings({"unused"})
|
||||||
|
protected java.lang.Object newInstance(
|
||||||
|
UnusedPrivateParameter unused) {
|
||||||
|
return new SetEntityClientDataNotify();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final com.google.protobuf.UnknownFieldSet
|
||||||
|
getUnknownFields() {
|
||||||
|
return this.unknownFields;
|
||||||
|
}
|
||||||
|
private SetEntityClientDataNotify(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
this();
|
||||||
|
if (extensionRegistry == null) {
|
||||||
|
throw new java.lang.NullPointerException();
|
||||||
|
}
|
||||||
|
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
|
||||||
|
com.google.protobuf.UnknownFieldSet.newBuilder();
|
||||||
|
try {
|
||||||
|
boolean done = false;
|
||||||
|
while (!done) {
|
||||||
|
int tag = input.readTag();
|
||||||
|
switch (tag) {
|
||||||
|
case 0:
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 8: {
|
||||||
|
|
||||||
|
entityId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 18: {
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder subBuilder = null;
|
||||||
|
if (entityClientData_ != null) {
|
||||||
|
subBuilder = entityClientData_.toBuilder();
|
||||||
|
}
|
||||||
|
entityClientData_ = input.readMessage(emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.parser(), extensionRegistry);
|
||||||
|
if (subBuilder != null) {
|
||||||
|
subBuilder.mergeFrom(entityClientData_);
|
||||||
|
entityClientData_ = subBuilder.buildPartial();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
if (!parseUnknownField(
|
||||||
|
input, unknownFields, extensionRegistry, tag)) {
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
throw e.setUnfinishedMessage(this);
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
throw new com.google.protobuf.InvalidProtocolBufferException(
|
||||||
|
e).setUnfinishedMessage(this);
|
||||||
|
} finally {
|
||||||
|
this.unknownFields = unknownFields.build();
|
||||||
|
makeExtensionsImmutable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.internal_static_SetEntityClientDataNotify_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.internal_static_SetEntityClientDataNotify_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.class, emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int ENTITYID_FIELD_NUMBER = 1;
|
||||||
|
private int entityId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 entityId = 1;</code>
|
||||||
|
* @return The entityId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getEntityId() {
|
||||||
|
return entityId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int ENTITYCLIENTDATA_FIELD_NUMBER = 2;
|
||||||
|
private emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData entityClientData_;
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
* @return Whether the entityClientData field is set.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean hasEntityClientData() {
|
||||||
|
return entityClientData_ != null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
* @return The entityClientData.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData getEntityClientData() {
|
||||||
|
return entityClientData_ == null ? emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.getDefaultInstance() : entityClientData_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder getEntityClientDataOrBuilder() {
|
||||||
|
return getEntityClientData();
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte memoizedIsInitialized = -1;
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
byte isInitialized = memoizedIsInitialized;
|
||||||
|
if (isInitialized == 1) return true;
|
||||||
|
if (isInitialized == 0) return false;
|
||||||
|
|
||||||
|
memoizedIsInitialized = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
|
throws java.io.IOException {
|
||||||
|
if (entityId_ != 0) {
|
||||||
|
output.writeUInt32(1, entityId_);
|
||||||
|
}
|
||||||
|
if (entityClientData_ != null) {
|
||||||
|
output.writeMessage(2, getEntityClientData());
|
||||||
|
}
|
||||||
|
unknownFields.writeTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSerializedSize() {
|
||||||
|
int size = memoizedSize;
|
||||||
|
if (size != -1) return size;
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
if (entityId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(1, entityId_);
|
||||||
|
}
|
||||||
|
if (entityClientData_ != null) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeMessageSize(2, getEntityClientData());
|
||||||
|
}
|
||||||
|
size += unknownFields.getSerializedSize();
|
||||||
|
memoizedSize = size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean equals(final java.lang.Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify)) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify other = (emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify) obj;
|
||||||
|
|
||||||
|
if (getEntityId()
|
||||||
|
!= other.getEntityId()) return false;
|
||||||
|
if (hasEntityClientData() != other.hasEntityClientData()) return false;
|
||||||
|
if (hasEntityClientData()) {
|
||||||
|
if (!getEntityClientData()
|
||||||
|
.equals(other.getEntityClientData())) return false;
|
||||||
|
}
|
||||||
|
if (!unknownFields.equals(other.unknownFields)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (memoizedHashCode != 0) {
|
||||||
|
return memoizedHashCode;
|
||||||
|
}
|
||||||
|
int hash = 41;
|
||||||
|
hash = (19 * hash) + getDescriptor().hashCode();
|
||||||
|
hash = (37 * hash) + ENTITYID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getEntityId();
|
||||||
|
if (hasEntityClientData()) {
|
||||||
|
hash = (37 * hash) + ENTITYCLIENTDATA_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getEntityClientData().hashCode();
|
||||||
|
}
|
||||||
|
hash = (29 * hash) + unknownFields.hashCode();
|
||||||
|
memoizedHashCode = hash;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(
|
||||||
|
java.nio.ByteBuffer data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(
|
||||||
|
java.nio.ByteBuffer data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(
|
||||||
|
com.google.protobuf.ByteString data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(
|
||||||
|
com.google.protobuf.ByteString data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(byte[] data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(
|
||||||
|
byte[] data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseDelimitedFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseDelimitedFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder newBuilderForType() { return newBuilder(); }
|
||||||
|
public static Builder newBuilder() {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder();
|
||||||
|
}
|
||||||
|
public static Builder newBuilder(emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify prototype) {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return this == DEFAULT_INSTANCE
|
||||||
|
? new Builder() : new Builder().mergeFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected Builder newBuilderForType(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
Builder builder = new Builder(parent);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code SetEntityClientDataNotify}
|
||||||
|
*/
|
||||||
|
public static final class Builder extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||||
|
// @@protoc_insertion_point(builder_implements:SetEntityClientDataNotify)
|
||||||
|
emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotifyOrBuilder {
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.internal_static_SetEntityClientDataNotify_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.internal_static_SetEntityClientDataNotify_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.class, emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct using emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.newBuilder()
|
||||||
|
private Builder() {
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Builder(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
super(parent);
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
private void maybeForceBuilderInitialization() {
|
||||||
|
if (com.google.protobuf.GeneratedMessageV3
|
||||||
|
.alwaysUseFieldBuilders) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clear() {
|
||||||
|
super.clear();
|
||||||
|
entityId_ = 0;
|
||||||
|
|
||||||
|
if (entityClientDataBuilder_ == null) {
|
||||||
|
entityClientData_ = null;
|
||||||
|
} else {
|
||||||
|
entityClientData_ = null;
|
||||||
|
entityClientDataBuilder_ = null;
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.internal_static_SetEntityClientDataNotify_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify getDefaultInstanceForType() {
|
||||||
|
return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.getDefaultInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify build() {
|
||||||
|
emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify result = buildPartial();
|
||||||
|
if (!result.isInitialized()) {
|
||||||
|
throw newUninitializedMessageException(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify buildPartial() {
|
||||||
|
emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify result = new emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify(this);
|
||||||
|
result.entityId_ = entityId_;
|
||||||
|
if (entityClientDataBuilder_ == null) {
|
||||||
|
result.entityClientData_ = entityClientData_;
|
||||||
|
} else {
|
||||||
|
result.entityClientData_ = entityClientDataBuilder_.build();
|
||||||
|
}
|
||||||
|
onBuilt();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.setField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field) {
|
||||||
|
return super.clearField(field);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearOneof(
|
||||||
|
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
|
||||||
|
return super.clearOneof(oneof);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
int index, java.lang.Object value) {
|
||||||
|
return super.setRepeatedField(field, index, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder addRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.addRepeatedField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(com.google.protobuf.Message other) {
|
||||||
|
if (other instanceof emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify) {
|
||||||
|
return mergeFrom((emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify)other);
|
||||||
|
} else {
|
||||||
|
super.mergeFrom(other);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder mergeFrom(emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify other) {
|
||||||
|
if (other == emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.getDefaultInstance()) return this;
|
||||||
|
if (other.getEntityId() != 0) {
|
||||||
|
setEntityId(other.getEntityId());
|
||||||
|
}
|
||||||
|
if (other.hasEntityClientData()) {
|
||||||
|
mergeEntityClientData(other.getEntityClientData());
|
||||||
|
}
|
||||||
|
this.mergeUnknownFields(other.unknownFields);
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parsedMessage = null;
|
||||||
|
try {
|
||||||
|
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
parsedMessage = (emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify) e.getUnfinishedMessage();
|
||||||
|
throw e.unwrapIOException();
|
||||||
|
} finally {
|
||||||
|
if (parsedMessage != null) {
|
||||||
|
mergeFrom(parsedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int entityId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 entityId = 1;</code>
|
||||||
|
* @return The entityId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getEntityId() {
|
||||||
|
return entityId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 entityId = 1;</code>
|
||||||
|
* @param value The entityId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setEntityId(int value) {
|
||||||
|
|
||||||
|
entityId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 entityId = 1;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearEntityId() {
|
||||||
|
|
||||||
|
entityId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData entityClientData_;
|
||||||
|
private com.google.protobuf.SingleFieldBuilderV3<
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder> entityClientDataBuilder_;
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
* @return Whether the entityClientData field is set.
|
||||||
|
*/
|
||||||
|
public boolean hasEntityClientData() {
|
||||||
|
return entityClientDataBuilder_ != null || entityClientData_ != null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
* @return The entityClientData.
|
||||||
|
*/
|
||||||
|
public emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData getEntityClientData() {
|
||||||
|
if (entityClientDataBuilder_ == null) {
|
||||||
|
return entityClientData_ == null ? emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.getDefaultInstance() : entityClientData_;
|
||||||
|
} else {
|
||||||
|
return entityClientDataBuilder_.getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
*/
|
||||||
|
public Builder setEntityClientData(emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData value) {
|
||||||
|
if (entityClientDataBuilder_ == null) {
|
||||||
|
if (value == null) {
|
||||||
|
throw new NullPointerException();
|
||||||
|
}
|
||||||
|
entityClientData_ = value;
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
entityClientDataBuilder_.setMessage(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
*/
|
||||||
|
public Builder setEntityClientData(
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder builderForValue) {
|
||||||
|
if (entityClientDataBuilder_ == null) {
|
||||||
|
entityClientData_ = builderForValue.build();
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
entityClientDataBuilder_.setMessage(builderForValue.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
*/
|
||||||
|
public Builder mergeEntityClientData(emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData value) {
|
||||||
|
if (entityClientDataBuilder_ == null) {
|
||||||
|
if (entityClientData_ != null) {
|
||||||
|
entityClientData_ =
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.newBuilder(entityClientData_).mergeFrom(value).buildPartial();
|
||||||
|
} else {
|
||||||
|
entityClientData_ = value;
|
||||||
|
}
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
entityClientDataBuilder_.mergeFrom(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
*/
|
||||||
|
public Builder clearEntityClientData() {
|
||||||
|
if (entityClientDataBuilder_ == null) {
|
||||||
|
entityClientData_ = null;
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
entityClientData_ = null;
|
||||||
|
entityClientDataBuilder_ = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
*/
|
||||||
|
public emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder getEntityClientDataBuilder() {
|
||||||
|
|
||||||
|
onChanged();
|
||||||
|
return getEntityClientDataFieldBuilder().getBuilder();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
*/
|
||||||
|
public emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder getEntityClientDataOrBuilder() {
|
||||||
|
if (entityClientDataBuilder_ != null) {
|
||||||
|
return entityClientDataBuilder_.getMessageOrBuilder();
|
||||||
|
} else {
|
||||||
|
return entityClientData_ == null ?
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.getDefaultInstance() : entityClientData_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.EntityClientData entityClientData = 2;</code>
|
||||||
|
*/
|
||||||
|
private com.google.protobuf.SingleFieldBuilderV3<
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder>
|
||||||
|
getEntityClientDataFieldBuilder() {
|
||||||
|
if (entityClientDataBuilder_ == null) {
|
||||||
|
entityClientDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder>(
|
||||||
|
getEntityClientData(),
|
||||||
|
getParentForChildren(),
|
||||||
|
isClean());
|
||||||
|
entityClientData_ = null;
|
||||||
|
}
|
||||||
|
return entityClientDataBuilder_;
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder setUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.setUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder mergeUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.mergeUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(builder_scope:SetEntityClientDataNotify)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(class_scope:SetEntityClientDataNotify)
|
||||||
|
private static final emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify DEFAULT_INSTANCE;
|
||||||
|
static {
|
||||||
|
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify getDefaultInstance() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Parser<SetEntityClientDataNotify>
|
||||||
|
PARSER = new com.google.protobuf.AbstractParser<SetEntityClientDataNotify>() {
|
||||||
|
@java.lang.Override
|
||||||
|
public SetEntityClientDataNotify parsePartialFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return new SetEntityClientDataNotify(input, extensionRegistry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static com.google.protobuf.Parser<SetEntityClientDataNotify> parser() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Parser<SetEntityClientDataNotify> getParserForType() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify getDefaultInstanceForType() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_SetEntityClientDataNotify_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_SetEntityClientDataNotify_fieldAccessorTable;
|
||||||
|
|
||||||
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
private static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
descriptor;
|
||||||
|
static {
|
||||||
|
java.lang.String[] descriptorData = {
|
||||||
|
"\n\037SetEntityClientDataNotify.proto\032\026Entit" +
|
||||||
|
"yClientData.proto\"Z\n\031SetEntityClientData" +
|
||||||
|
"Notify\022\020\n\010entityId\030\001 \001(\r\022+\n\020entityClient" +
|
||||||
|
"Data\030\002 \001(\0132\021.EntityClientDataB\033\n\031emu.gra" +
|
||||||
|
"sscutter.net.protob\006proto3"
|
||||||
|
};
|
||||||
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.getDescriptor(),
|
||||||
|
});
|
||||||
|
internal_static_SetEntityClientDataNotify_descriptor =
|
||||||
|
getDescriptor().getMessageTypes().get(0);
|
||||||
|
internal_static_SetEntityClientDataNotify_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_SetEntityClientDataNotify_descriptor,
|
||||||
|
new java.lang.String[] { "EntityId", "EntityClientData", });
|
||||||
|
emu.grasscutter.net.proto.EntityClientDataOuterClass.getDescriptor();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
}
|
@ -0,0 +1,743 @@
|
|||||||
|
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
// source: WorldPlayerLocationInfo.proto
|
||||||
|
|
||||||
|
package emu.grasscutter.net.proto;
|
||||||
|
|
||||||
|
public final class WorldPlayerLocationInfoOuterClass {
|
||||||
|
private WorldPlayerLocationInfoOuterClass() {}
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerAllExtensions(
|
||||||
|
com.google.protobuf.ExtensionRegistry registry) {
|
||||||
|
registerAllExtensions(
|
||||||
|
(com.google.protobuf.ExtensionRegistryLite) registry);
|
||||||
|
}
|
||||||
|
public interface WorldPlayerLocationInfoOrBuilder extends
|
||||||
|
// @@protoc_insertion_point(interface_extends:WorldPlayerLocationInfo)
|
||||||
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 1;</code>
|
||||||
|
* @return The sceneId.
|
||||||
|
*/
|
||||||
|
int getSceneId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
* @return Whether the playerLoc field is set.
|
||||||
|
*/
|
||||||
|
boolean hasPlayerLoc();
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
* @return The playerLoc.
|
||||||
|
*/
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLoc();
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
*/
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocOrBuilder();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code WorldPlayerLocationInfo}
|
||||||
|
*/
|
||||||
|
public static final class WorldPlayerLocationInfo extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3 implements
|
||||||
|
// @@protoc_insertion_point(message_implements:WorldPlayerLocationInfo)
|
||||||
|
WorldPlayerLocationInfoOrBuilder {
|
||||||
|
private static final long serialVersionUID = 0L;
|
||||||
|
// Use WorldPlayerLocationInfo.newBuilder() to construct.
|
||||||
|
private WorldPlayerLocationInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||||
|
super(builder);
|
||||||
|
}
|
||||||
|
private WorldPlayerLocationInfo() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
@SuppressWarnings({"unused"})
|
||||||
|
protected java.lang.Object newInstance(
|
||||||
|
UnusedPrivateParameter unused) {
|
||||||
|
return new WorldPlayerLocationInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final com.google.protobuf.UnknownFieldSet
|
||||||
|
getUnknownFields() {
|
||||||
|
return this.unknownFields;
|
||||||
|
}
|
||||||
|
private WorldPlayerLocationInfo(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
this();
|
||||||
|
if (extensionRegistry == null) {
|
||||||
|
throw new java.lang.NullPointerException();
|
||||||
|
}
|
||||||
|
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
|
||||||
|
com.google.protobuf.UnknownFieldSet.newBuilder();
|
||||||
|
try {
|
||||||
|
boolean done = false;
|
||||||
|
while (!done) {
|
||||||
|
int tag = input.readTag();
|
||||||
|
switch (tag) {
|
||||||
|
case 0:
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
case 8: {
|
||||||
|
|
||||||
|
sceneId_ = input.readUInt32();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 18: {
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder subBuilder = null;
|
||||||
|
if (playerLoc_ != null) {
|
||||||
|
subBuilder = playerLoc_.toBuilder();
|
||||||
|
}
|
||||||
|
playerLoc_ = input.readMessage(emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.parser(), extensionRegistry);
|
||||||
|
if (subBuilder != null) {
|
||||||
|
subBuilder.mergeFrom(playerLoc_);
|
||||||
|
playerLoc_ = subBuilder.buildPartial();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
if (!parseUnknownField(
|
||||||
|
input, unknownFields, extensionRegistry, tag)) {
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
throw e.setUnfinishedMessage(this);
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
throw new com.google.protobuf.InvalidProtocolBufferException(
|
||||||
|
e).setUnfinishedMessage(this);
|
||||||
|
} finally {
|
||||||
|
this.unknownFields = unknownFields.build();
|
||||||
|
makeExtensionsImmutable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.internal_static_WorldPlayerLocationInfo_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.internal_static_WorldPlayerLocationInfo_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.class, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int SCENEID_FIELD_NUMBER = 1;
|
||||||
|
private int sceneId_;
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 1;</code>
|
||||||
|
* @return The sceneId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSceneId() {
|
||||||
|
return sceneId_;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final int PLAYERLOC_FIELD_NUMBER = 2;
|
||||||
|
private emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo playerLoc_;
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
* @return Whether the playerLoc field is set.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean hasPlayerLoc() {
|
||||||
|
return playerLoc_ != null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
* @return The playerLoc.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLoc() {
|
||||||
|
return playerLoc_ == null ? emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.getDefaultInstance() : playerLoc_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocOrBuilder() {
|
||||||
|
return getPlayerLoc();
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte memoizedIsInitialized = -1;
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
byte isInitialized = memoizedIsInitialized;
|
||||||
|
if (isInitialized == 1) return true;
|
||||||
|
if (isInitialized == 0) return false;
|
||||||
|
|
||||||
|
memoizedIsInitialized = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
|
throws java.io.IOException {
|
||||||
|
if (sceneId_ != 0) {
|
||||||
|
output.writeUInt32(1, sceneId_);
|
||||||
|
}
|
||||||
|
if (playerLoc_ != null) {
|
||||||
|
output.writeMessage(2, getPlayerLoc());
|
||||||
|
}
|
||||||
|
unknownFields.writeTo(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSerializedSize() {
|
||||||
|
int size = memoizedSize;
|
||||||
|
if (size != -1) return size;
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
if (sceneId_ != 0) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeUInt32Size(1, sceneId_);
|
||||||
|
}
|
||||||
|
if (playerLoc_ != null) {
|
||||||
|
size += com.google.protobuf.CodedOutputStream
|
||||||
|
.computeMessageSize(2, getPlayerLoc());
|
||||||
|
}
|
||||||
|
size += unknownFields.getSerializedSize();
|
||||||
|
memoizedSize = size;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public boolean equals(final java.lang.Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo)) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo other = (emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo) obj;
|
||||||
|
|
||||||
|
if (getSceneId()
|
||||||
|
!= other.getSceneId()) return false;
|
||||||
|
if (hasPlayerLoc() != other.hasPlayerLoc()) return false;
|
||||||
|
if (hasPlayerLoc()) {
|
||||||
|
if (!getPlayerLoc()
|
||||||
|
.equals(other.getPlayerLoc())) return false;
|
||||||
|
}
|
||||||
|
if (!unknownFields.equals(other.unknownFields)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public int hashCode() {
|
||||||
|
if (memoizedHashCode != 0) {
|
||||||
|
return memoizedHashCode;
|
||||||
|
}
|
||||||
|
int hash = 41;
|
||||||
|
hash = (19 * hash) + getDescriptor().hashCode();
|
||||||
|
hash = (37 * hash) + SCENEID_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getSceneId();
|
||||||
|
if (hasPlayerLoc()) {
|
||||||
|
hash = (37 * hash) + PLAYERLOC_FIELD_NUMBER;
|
||||||
|
hash = (53 * hash) + getPlayerLoc().hashCode();
|
||||||
|
}
|
||||||
|
hash = (29 * hash) + unknownFields.hashCode();
|
||||||
|
memoizedHashCode = hash;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(
|
||||||
|
java.nio.ByteBuffer data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(
|
||||||
|
java.nio.ByteBuffer data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(
|
||||||
|
com.google.protobuf.ByteString data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(
|
||||||
|
com.google.protobuf.ByteString data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(byte[] data)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(
|
||||||
|
byte[] data,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return PARSER.parseFrom(data, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseDelimitedFrom(java.io.InputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseDelimitedFrom(
|
||||||
|
java.io.InputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input);
|
||||||
|
}
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
return com.google.protobuf.GeneratedMessageV3
|
||||||
|
.parseWithIOException(PARSER, input, extensionRegistry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder newBuilderForType() { return newBuilder(); }
|
||||||
|
public static Builder newBuilder() {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder();
|
||||||
|
}
|
||||||
|
public static Builder newBuilder(emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo prototype) {
|
||||||
|
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return this == DEFAULT_INSTANCE
|
||||||
|
? new Builder() : new Builder().mergeFrom(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected Builder newBuilderForType(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
Builder builder = new Builder(parent);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Protobuf type {@code WorldPlayerLocationInfo}
|
||||||
|
*/
|
||||||
|
public static final class Builder extends
|
||||||
|
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||||
|
// @@protoc_insertion_point(builder_implements:WorldPlayerLocationInfo)
|
||||||
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder {
|
||||||
|
public static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.internal_static_WorldPlayerLocationInfo_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internalGetFieldAccessorTable() {
|
||||||
|
return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.internal_static_WorldPlayerLocationInfo_fieldAccessorTable
|
||||||
|
.ensureFieldAccessorsInitialized(
|
||||||
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.class, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Construct using emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.newBuilder()
|
||||||
|
private Builder() {
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Builder(
|
||||||
|
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||||
|
super(parent);
|
||||||
|
maybeForceBuilderInitialization();
|
||||||
|
}
|
||||||
|
private void maybeForceBuilderInitialization() {
|
||||||
|
if (com.google.protobuf.GeneratedMessageV3
|
||||||
|
.alwaysUseFieldBuilders) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clear() {
|
||||||
|
super.clear();
|
||||||
|
sceneId_ = 0;
|
||||||
|
|
||||||
|
if (playerLocBuilder_ == null) {
|
||||||
|
playerLoc_ = null;
|
||||||
|
} else {
|
||||||
|
playerLoc_ = null;
|
||||||
|
playerLocBuilder_ = null;
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Descriptors.Descriptor
|
||||||
|
getDescriptorForType() {
|
||||||
|
return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.internal_static_WorldPlayerLocationInfo_descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getDefaultInstanceForType() {
|
||||||
|
return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.getDefaultInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo build() {
|
||||||
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo result = buildPartial();
|
||||||
|
if (!result.isInitialized()) {
|
||||||
|
throw newUninitializedMessageException(result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo buildPartial() {
|
||||||
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo result = new emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo(this);
|
||||||
|
result.sceneId_ = sceneId_;
|
||||||
|
if (playerLocBuilder_ == null) {
|
||||||
|
result.playerLoc_ = playerLoc_;
|
||||||
|
} else {
|
||||||
|
result.playerLoc_ = playerLocBuilder_.build();
|
||||||
|
}
|
||||||
|
onBuilt();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clone() {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.setField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field) {
|
||||||
|
return super.clearField(field);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder clearOneof(
|
||||||
|
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
|
||||||
|
return super.clearOneof(oneof);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder setRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
int index, java.lang.Object value) {
|
||||||
|
return super.setRepeatedField(field, index, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder addRepeatedField(
|
||||||
|
com.google.protobuf.Descriptors.FieldDescriptor field,
|
||||||
|
java.lang.Object value) {
|
||||||
|
return super.addRepeatedField(field, value);
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(com.google.protobuf.Message other) {
|
||||||
|
if (other instanceof emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo) {
|
||||||
|
return mergeFrom((emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo)other);
|
||||||
|
} else {
|
||||||
|
super.mergeFrom(other);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder mergeFrom(emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo other) {
|
||||||
|
if (other == emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.getDefaultInstance()) return this;
|
||||||
|
if (other.getSceneId() != 0) {
|
||||||
|
setSceneId(other.getSceneId());
|
||||||
|
}
|
||||||
|
if (other.hasPlayerLoc()) {
|
||||||
|
mergePlayerLoc(other.getPlayerLoc());
|
||||||
|
}
|
||||||
|
this.mergeUnknownFields(other.unknownFields);
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final boolean isInitialized() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public Builder mergeFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws java.io.IOException {
|
||||||
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parsedMessage = null;
|
||||||
|
try {
|
||||||
|
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||||
|
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||||
|
parsedMessage = (emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo) e.getUnfinishedMessage();
|
||||||
|
throw e.unwrapIOException();
|
||||||
|
} finally {
|
||||||
|
if (parsedMessage != null) {
|
||||||
|
mergeFrom(parsedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int sceneId_ ;
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 1;</code>
|
||||||
|
* @return The sceneId.
|
||||||
|
*/
|
||||||
|
@java.lang.Override
|
||||||
|
public int getSceneId() {
|
||||||
|
return sceneId_;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 1;</code>
|
||||||
|
* @param value The sceneId to set.
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder setSceneId(int value) {
|
||||||
|
|
||||||
|
sceneId_ = value;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>uint32 sceneId = 1;</code>
|
||||||
|
* @return This builder for chaining.
|
||||||
|
*/
|
||||||
|
public Builder clearSceneId() {
|
||||||
|
|
||||||
|
sceneId_ = 0;
|
||||||
|
onChanged();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo playerLoc_;
|
||||||
|
private com.google.protobuf.SingleFieldBuilderV3<
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder> playerLocBuilder_;
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
* @return Whether the playerLoc field is set.
|
||||||
|
*/
|
||||||
|
public boolean hasPlayerLoc() {
|
||||||
|
return playerLocBuilder_ != null || playerLoc_ != null;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
* @return The playerLoc.
|
||||||
|
*/
|
||||||
|
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLoc() {
|
||||||
|
if (playerLocBuilder_ == null) {
|
||||||
|
return playerLoc_ == null ? emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.getDefaultInstance() : playerLoc_;
|
||||||
|
} else {
|
||||||
|
return playerLocBuilder_.getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
*/
|
||||||
|
public Builder setPlayerLoc(emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo value) {
|
||||||
|
if (playerLocBuilder_ == null) {
|
||||||
|
if (value == null) {
|
||||||
|
throw new NullPointerException();
|
||||||
|
}
|
||||||
|
playerLoc_ = value;
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
playerLocBuilder_.setMessage(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
*/
|
||||||
|
public Builder setPlayerLoc(
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder builderForValue) {
|
||||||
|
if (playerLocBuilder_ == null) {
|
||||||
|
playerLoc_ = builderForValue.build();
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
playerLocBuilder_.setMessage(builderForValue.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
*/
|
||||||
|
public Builder mergePlayerLoc(emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo value) {
|
||||||
|
if (playerLocBuilder_ == null) {
|
||||||
|
if (playerLoc_ != null) {
|
||||||
|
playerLoc_ =
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.newBuilder(playerLoc_).mergeFrom(value).buildPartial();
|
||||||
|
} else {
|
||||||
|
playerLoc_ = value;
|
||||||
|
}
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
playerLocBuilder_.mergeFrom(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
*/
|
||||||
|
public Builder clearPlayerLoc() {
|
||||||
|
if (playerLocBuilder_ == null) {
|
||||||
|
playerLoc_ = null;
|
||||||
|
onChanged();
|
||||||
|
} else {
|
||||||
|
playerLoc_ = null;
|
||||||
|
playerLocBuilder_ = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
*/
|
||||||
|
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder getPlayerLocBuilder() {
|
||||||
|
|
||||||
|
onChanged();
|
||||||
|
return getPlayerLocFieldBuilder().getBuilder();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
*/
|
||||||
|
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocOrBuilder() {
|
||||||
|
if (playerLocBuilder_ != null) {
|
||||||
|
return playerLocBuilder_.getMessageOrBuilder();
|
||||||
|
} else {
|
||||||
|
return playerLoc_ == null ?
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.getDefaultInstance() : playerLoc_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* <code>.PlayerLocationInfo playerLoc = 2;</code>
|
||||||
|
*/
|
||||||
|
private com.google.protobuf.SingleFieldBuilderV3<
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder>
|
||||||
|
getPlayerLocFieldBuilder() {
|
||||||
|
if (playerLocBuilder_ == null) {
|
||||||
|
playerLocBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder>(
|
||||||
|
getPlayerLoc(),
|
||||||
|
getParentForChildren(),
|
||||||
|
isClean());
|
||||||
|
playerLoc_ = null;
|
||||||
|
}
|
||||||
|
return playerLocBuilder_;
|
||||||
|
}
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder setUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.setUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public final Builder mergeUnknownFields(
|
||||||
|
final com.google.protobuf.UnknownFieldSet unknownFields) {
|
||||||
|
return super.mergeUnknownFields(unknownFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(builder_scope:WorldPlayerLocationInfo)
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(class_scope:WorldPlayerLocationInfo)
|
||||||
|
private static final emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo DEFAULT_INSTANCE;
|
||||||
|
static {
|
||||||
|
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getDefaultInstance() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Parser<WorldPlayerLocationInfo>
|
||||||
|
PARSER = new com.google.protobuf.AbstractParser<WorldPlayerLocationInfo>() {
|
||||||
|
@java.lang.Override
|
||||||
|
public WorldPlayerLocationInfo parsePartialFrom(
|
||||||
|
com.google.protobuf.CodedInputStream input,
|
||||||
|
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||||
|
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||||
|
return new WorldPlayerLocationInfo(input, extensionRegistry);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static com.google.protobuf.Parser<WorldPlayerLocationInfo> parser() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public com.google.protobuf.Parser<WorldPlayerLocationInfo> getParserForType() {
|
||||||
|
return PARSER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@java.lang.Override
|
||||||
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getDefaultInstanceForType() {
|
||||||
|
return DEFAULT_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final com.google.protobuf.Descriptors.Descriptor
|
||||||
|
internal_static_WorldPlayerLocationInfo_descriptor;
|
||||||
|
private static final
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||||
|
internal_static_WorldPlayerLocationInfo_fieldAccessorTable;
|
||||||
|
|
||||||
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
getDescriptor() {
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
private static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
descriptor;
|
||||||
|
static {
|
||||||
|
java.lang.String[] descriptorData = {
|
||||||
|
"\n\035WorldPlayerLocationInfo.proto\032\030PlayerL" +
|
||||||
|
"ocationInfo.proto\"R\n\027WorldPlayerLocation" +
|
||||||
|
"Info\022\017\n\007sceneId\030\001 \001(\r\022&\n\tplayerLoc\030\002 \001(\013" +
|
||||||
|
"2\023.PlayerLocationInfoB\033\n\031emu.grasscutter" +
|
||||||
|
".net.protob\006proto3"
|
||||||
|
};
|
||||||
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.getDescriptor(),
|
||||||
|
});
|
||||||
|
internal_static_WorldPlayerLocationInfo_descriptor =
|
||||||
|
getDescriptor().getMessageTypes().get(0);
|
||||||
|
internal_static_WorldPlayerLocationInfo_fieldAccessorTable = new
|
||||||
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
|
internal_static_WorldPlayerLocationInfo_descriptor,
|
||||||
|
new java.lang.String[] { "SceneId", "PlayerLoc", });
|
||||||
|
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.getDescriptor();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
}
|
@ -19,27 +19,27 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
com.google.protobuf.MessageOrBuilder {
|
com.google.protobuf.MessageOrBuilder {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
java.util.List<emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo>
|
java.util.List<emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo>
|
||||||
getPlayerLocListList();
|
getPlayerLocListList();
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLocList(int index);
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getPlayerLocList(int index);
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
int getPlayerLocListCount();
|
int getPlayerLocListCount();
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
java.util.List<? extends emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder>
|
java.util.List<? extends emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder>
|
||||||
getPlayerLocListOrBuilderList();
|
getPlayerLocListOrBuilderList();
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocListOrBuilder(
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder getPlayerLocListOrBuilder(
|
||||||
int index);
|
int index);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -89,13 +89,13 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
case 0:
|
case 0:
|
||||||
done = true;
|
done = true;
|
||||||
break;
|
break;
|
||||||
case 10: {
|
case 18: {
|
||||||
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
|
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
|
||||||
playerLocList_ = new java.util.ArrayList<emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo>();
|
playerLocList_ = new java.util.ArrayList<emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo>();
|
||||||
mutable_bitField0_ |= 0x00000001;
|
mutable_bitField0_ |= 0x00000001;
|
||||||
}
|
}
|
||||||
playerLocList_.add(
|
playerLocList_.add(
|
||||||
input.readMessage(emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.parser(), extensionRegistry));
|
input.readMessage(emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.parser(), extensionRegistry));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
@ -133,42 +133,42 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
emu.grasscutter.net.proto.WorldPlayerLocationNotifyOuterClass.WorldPlayerLocationNotify.class, emu.grasscutter.net.proto.WorldPlayerLocationNotifyOuterClass.WorldPlayerLocationNotify.Builder.class);
|
emu.grasscutter.net.proto.WorldPlayerLocationNotifyOuterClass.WorldPlayerLocationNotify.class, emu.grasscutter.net.proto.WorldPlayerLocationNotifyOuterClass.WorldPlayerLocationNotify.Builder.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final int PLAYERLOCLIST_FIELD_NUMBER = 1;
|
public static final int PLAYERLOCLIST_FIELD_NUMBER = 2;
|
||||||
private java.util.List<emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo> playerLocList_;
|
private java.util.List<emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo> playerLocList_;
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
@java.lang.Override
|
@java.lang.Override
|
||||||
public java.util.List<emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo> getPlayerLocListList() {
|
public java.util.List<emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo> getPlayerLocListList() {
|
||||||
return playerLocList_;
|
return playerLocList_;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
@java.lang.Override
|
@java.lang.Override
|
||||||
public java.util.List<? extends emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder>
|
public java.util.List<? extends emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder>
|
||||||
getPlayerLocListOrBuilderList() {
|
getPlayerLocListOrBuilderList() {
|
||||||
return playerLocList_;
|
return playerLocList_;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
@java.lang.Override
|
@java.lang.Override
|
||||||
public int getPlayerLocListCount() {
|
public int getPlayerLocListCount() {
|
||||||
return playerLocList_.size();
|
return playerLocList_.size();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
@java.lang.Override
|
@java.lang.Override
|
||||||
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLocList(int index) {
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getPlayerLocList(int index) {
|
||||||
return playerLocList_.get(index);
|
return playerLocList_.get(index);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
@java.lang.Override
|
@java.lang.Override
|
||||||
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocListOrBuilder(
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder getPlayerLocListOrBuilder(
|
||||||
int index) {
|
int index) {
|
||||||
return playerLocList_.get(index);
|
return playerLocList_.get(index);
|
||||||
}
|
}
|
||||||
@ -188,7 +188,7 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
public void writeTo(com.google.protobuf.CodedOutputStream output)
|
||||||
throws java.io.IOException {
|
throws java.io.IOException {
|
||||||
for (int i = 0; i < playerLocList_.size(); i++) {
|
for (int i = 0; i < playerLocList_.size(); i++) {
|
||||||
output.writeMessage(1, playerLocList_.get(i));
|
output.writeMessage(2, playerLocList_.get(i));
|
||||||
}
|
}
|
||||||
unknownFields.writeTo(output);
|
unknownFields.writeTo(output);
|
||||||
}
|
}
|
||||||
@ -201,7 +201,7 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
size = 0;
|
size = 0;
|
||||||
for (int i = 0; i < playerLocList_.size(); i++) {
|
for (int i = 0; i < playerLocList_.size(); i++) {
|
||||||
size += com.google.protobuf.CodedOutputStream
|
size += com.google.protobuf.CodedOutputStream
|
||||||
.computeMessageSize(1, playerLocList_.get(i));
|
.computeMessageSize(2, playerLocList_.get(i));
|
||||||
}
|
}
|
||||||
size += unknownFields.getSerializedSize();
|
size += unknownFields.getSerializedSize();
|
||||||
memoizedSize = size;
|
memoizedSize = size;
|
||||||
@ -515,22 +515,22 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
}
|
}
|
||||||
private int bitField0_;
|
private int bitField0_;
|
||||||
|
|
||||||
private java.util.List<emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo> playerLocList_ =
|
private java.util.List<emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo> playerLocList_ =
|
||||||
java.util.Collections.emptyList();
|
java.util.Collections.emptyList();
|
||||||
private void ensurePlayerLocListIsMutable() {
|
private void ensurePlayerLocListIsMutable() {
|
||||||
if (!((bitField0_ & 0x00000001) != 0)) {
|
if (!((bitField0_ & 0x00000001) != 0)) {
|
||||||
playerLocList_ = new java.util.ArrayList<emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo>(playerLocList_);
|
playerLocList_ = new java.util.ArrayList<emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo>(playerLocList_);
|
||||||
bitField0_ |= 0x00000001;
|
bitField0_ |= 0x00000001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private com.google.protobuf.RepeatedFieldBuilderV3<
|
private com.google.protobuf.RepeatedFieldBuilderV3<
|
||||||
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder> playerLocListBuilder_;
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder> playerLocListBuilder_;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public java.util.List<emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo> getPlayerLocListList() {
|
public java.util.List<emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo> getPlayerLocListList() {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
return java.util.Collections.unmodifiableList(playerLocList_);
|
return java.util.Collections.unmodifiableList(playerLocList_);
|
||||||
} else {
|
} else {
|
||||||
@ -538,7 +538,7 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public int getPlayerLocListCount() {
|
public int getPlayerLocListCount() {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
@ -548,9 +548,9 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLocList(int index) {
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getPlayerLocList(int index) {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
return playerLocList_.get(index);
|
return playerLocList_.get(index);
|
||||||
} else {
|
} else {
|
||||||
@ -558,10 +558,10 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public Builder setPlayerLocList(
|
public Builder setPlayerLocList(
|
||||||
int index, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo value) {
|
int index, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo value) {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
throw new NullPointerException();
|
throw new NullPointerException();
|
||||||
@ -575,10 +575,10 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public Builder setPlayerLocList(
|
public Builder setPlayerLocList(
|
||||||
int index, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder builderForValue) {
|
int index, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder builderForValue) {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
ensurePlayerLocListIsMutable();
|
ensurePlayerLocListIsMutable();
|
||||||
playerLocList_.set(index, builderForValue.build());
|
playerLocList_.set(index, builderForValue.build());
|
||||||
@ -589,9 +589,9 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public Builder addPlayerLocList(emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo value) {
|
public Builder addPlayerLocList(emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo value) {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
throw new NullPointerException();
|
throw new NullPointerException();
|
||||||
@ -605,10 +605,10 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public Builder addPlayerLocList(
|
public Builder addPlayerLocList(
|
||||||
int index, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo value) {
|
int index, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo value) {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
throw new NullPointerException();
|
throw new NullPointerException();
|
||||||
@ -622,10 +622,10 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public Builder addPlayerLocList(
|
public Builder addPlayerLocList(
|
||||||
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder builderForValue) {
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder builderForValue) {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
ensurePlayerLocListIsMutable();
|
ensurePlayerLocListIsMutable();
|
||||||
playerLocList_.add(builderForValue.build());
|
playerLocList_.add(builderForValue.build());
|
||||||
@ -636,10 +636,10 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public Builder addPlayerLocList(
|
public Builder addPlayerLocList(
|
||||||
int index, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder builderForValue) {
|
int index, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder builderForValue) {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
ensurePlayerLocListIsMutable();
|
ensurePlayerLocListIsMutable();
|
||||||
playerLocList_.add(index, builderForValue.build());
|
playerLocList_.add(index, builderForValue.build());
|
||||||
@ -650,10 +650,10 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public Builder addAllPlayerLocList(
|
public Builder addAllPlayerLocList(
|
||||||
java.lang.Iterable<? extends emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo> values) {
|
java.lang.Iterable<? extends emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo> values) {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
ensurePlayerLocListIsMutable();
|
ensurePlayerLocListIsMutable();
|
||||||
com.google.protobuf.AbstractMessageLite.Builder.addAll(
|
com.google.protobuf.AbstractMessageLite.Builder.addAll(
|
||||||
@ -665,7 +665,7 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public Builder clearPlayerLocList() {
|
public Builder clearPlayerLocList() {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
@ -678,7 +678,7 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public Builder removePlayerLocList(int index) {
|
public Builder removePlayerLocList(int index) {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
@ -691,16 +691,16 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder getPlayerLocListBuilder(
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder getPlayerLocListBuilder(
|
||||||
int index) {
|
int index) {
|
||||||
return getPlayerLocListFieldBuilder().getBuilder(index);
|
return getPlayerLocListFieldBuilder().getBuilder(index);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocListOrBuilder(
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder getPlayerLocListOrBuilder(
|
||||||
int index) {
|
int index) {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
return playerLocList_.get(index); } else {
|
return playerLocList_.get(index); } else {
|
||||||
@ -708,9 +708,9 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public java.util.List<? extends emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder>
|
public java.util.List<? extends emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder>
|
||||||
getPlayerLocListOrBuilderList() {
|
getPlayerLocListOrBuilderList() {
|
||||||
if (playerLocListBuilder_ != null) {
|
if (playerLocListBuilder_ != null) {
|
||||||
return playerLocListBuilder_.getMessageOrBuilderList();
|
return playerLocListBuilder_.getMessageOrBuilderList();
|
||||||
@ -719,33 +719,33 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder addPlayerLocListBuilder() {
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder addPlayerLocListBuilder() {
|
||||||
return getPlayerLocListFieldBuilder().addBuilder(
|
return getPlayerLocListFieldBuilder().addBuilder(
|
||||||
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.getDefaultInstance());
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.getDefaultInstance());
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder addPlayerLocListBuilder(
|
public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder addPlayerLocListBuilder(
|
||||||
int index) {
|
int index) {
|
||||||
return getPlayerLocListFieldBuilder().addBuilder(
|
return getPlayerLocListFieldBuilder().addBuilder(
|
||||||
index, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.getDefaultInstance());
|
index, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.getDefaultInstance());
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* <code>repeated .PlayerLocationInfo playerLocList = 1;</code>
|
* <code>repeated .WorldPlayerLocationInfo playerLocList = 2;</code>
|
||||||
*/
|
*/
|
||||||
public java.util.List<emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder>
|
public java.util.List<emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder>
|
||||||
getPlayerLocListBuilderList() {
|
getPlayerLocListBuilderList() {
|
||||||
return getPlayerLocListFieldBuilder().getBuilderList();
|
return getPlayerLocListFieldBuilder().getBuilderList();
|
||||||
}
|
}
|
||||||
private com.google.protobuf.RepeatedFieldBuilderV3<
|
private com.google.protobuf.RepeatedFieldBuilderV3<
|
||||||
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder>
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder>
|
||||||
getPlayerLocListFieldBuilder() {
|
getPlayerLocListFieldBuilder() {
|
||||||
if (playerLocListBuilder_ == null) {
|
if (playerLocListBuilder_ == null) {
|
||||||
playerLocListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
|
playerLocListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
|
||||||
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder>(
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder>(
|
||||||
playerLocList_,
|
playerLocList_,
|
||||||
((bitField0_ & 0x00000001) != 0),
|
((bitField0_ & 0x00000001) != 0),
|
||||||
getParentForChildren(),
|
getParentForChildren(),
|
||||||
@ -821,16 +821,16 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
descriptor;
|
descriptor;
|
||||||
static {
|
static {
|
||||||
java.lang.String[] descriptorData = {
|
java.lang.String[] descriptorData = {
|
||||||
"\n\037WorldPlayerLocationNotify.proto\032\030Playe" +
|
"\n\037WorldPlayerLocationNotify.proto\032\035World" +
|
||||||
"rLocationInfo.proto\"G\n\031WorldPlayerLocati" +
|
"PlayerLocationInfo.proto\"L\n\031WorldPlayerL" +
|
||||||
"onNotify\022*\n\rplayerLocList\030\001 \003(\0132\023.Player" +
|
"ocationNotify\022/\n\rplayerLocList\030\002 \003(\0132\030.W" +
|
||||||
"LocationInfoB\033\n\031emu.grasscutter.net.prot" +
|
"orldPlayerLocationInfoB\033\n\031emu.grasscutte" +
|
||||||
"ob\006proto3"
|
"r.net.protob\006proto3"
|
||||||
};
|
};
|
||||||
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||||
.internalBuildGeneratedFileFrom(descriptorData,
|
.internalBuildGeneratedFileFrom(descriptorData,
|
||||||
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||||
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.getDescriptor(),
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.getDescriptor(),
|
||||||
});
|
});
|
||||||
internal_static_WorldPlayerLocationNotify_descriptor =
|
internal_static_WorldPlayerLocationNotify_descriptor =
|
||||||
getDescriptor().getMessageTypes().get(0);
|
getDescriptor().getMessageTypes().get(0);
|
||||||
@ -838,7 +838,7 @@ public final class WorldPlayerLocationNotifyOuterClass {
|
|||||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||||
internal_static_WorldPlayerLocationNotify_descriptor,
|
internal_static_WorldPlayerLocationNotify_descriptor,
|
||||||
new java.lang.String[] { "PlayerLocList", });
|
new java.lang.String[] { "PlayerLocList", });
|
||||||
emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.getDescriptor();
|
emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.getDescriptor();
|
||||||
}
|
}
|
||||||
|
|
||||||
// @@protoc_insertion_point(outer_class_scope)
|
// @@protoc_insertion_point(outer_class_scope)
|
||||||
|
@ -1,30 +1,14 @@
|
|||||||
package emu.grasscutter.server.dispatch;
|
package emu.grasscutter.server.dispatch;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.net.InetSocketAddress;
|
|
||||||
import java.net.URI;
|
|
||||||
import java.net.URLDecoder;
|
|
||||||
import java.security.KeyStore;
|
|
||||||
import java.util.Base64;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.net.ssl.KeyManagerFactory;
|
|
||||||
import javax.net.ssl.SSLContext;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.google.protobuf.ByteString;
|
import com.google.protobuf.ByteString;
|
||||||
import com.sun.net.httpserver.HttpExchange;
|
import com.sun.net.httpserver.HttpExchange;
|
||||||
import com.sun.net.httpserver.HttpHandler;
|
import com.sun.net.httpserver.HttpServer;
|
||||||
import com.sun.net.httpserver.HttpsConfigurator;
|
import com.sun.net.httpserver.HttpsConfigurator;
|
||||||
import com.sun.net.httpserver.HttpsServer;
|
import com.sun.net.httpserver.HttpsServer;
|
||||||
|
|
||||||
|
import emu.grasscutter.Config;
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.database.DatabaseHelper;
|
import emu.grasscutter.database.DatabaseHelper;
|
||||||
import emu.grasscutter.game.Account;
|
import emu.grasscutter.game.Account;
|
||||||
@ -32,30 +16,34 @@ import emu.grasscutter.net.proto.QueryCurrRegionHttpRspOuterClass.QueryCurrRegio
|
|||||||
import emu.grasscutter.net.proto.QueryRegionListHttpRspOuterClass.QueryRegionListHttpRsp;
|
import emu.grasscutter.net.proto.QueryRegionListHttpRspOuterClass.QueryRegionListHttpRsp;
|
||||||
import emu.grasscutter.net.proto.RegionInfoOuterClass.RegionInfo;
|
import emu.grasscutter.net.proto.RegionInfoOuterClass.RegionInfo;
|
||||||
import emu.grasscutter.net.proto.RegionSimpleInfoOuterClass.RegionSimpleInfo;
|
import emu.grasscutter.net.proto.RegionSimpleInfoOuterClass.RegionSimpleInfo;
|
||||||
import emu.grasscutter.server.dispatch.json.ComboTokenReqJson;
|
import emu.grasscutter.server.dispatch.json.*;
|
||||||
import emu.grasscutter.server.dispatch.json.ComboTokenResJson;
|
|
||||||
import emu.grasscutter.server.dispatch.json.LoginAccountRequestJson;
|
|
||||||
import emu.grasscutter.server.dispatch.json.LoginResultJson;
|
|
||||||
import emu.grasscutter.server.dispatch.json.LoginTokenRequestJson;
|
|
||||||
import emu.grasscutter.server.dispatch.json.ComboTokenReqJson.LoginTokenData;
|
import emu.grasscutter.server.dispatch.json.ComboTokenReqJson.LoginTokenData;
|
||||||
import emu.grasscutter.utils.FileUtils;
|
import emu.grasscutter.utils.FileUtils;
|
||||||
import emu.grasscutter.utils.Utils;
|
import emu.grasscutter.utils.Utils;
|
||||||
|
|
||||||
import com.sun.net.httpserver.HttpServer;
|
import javax.net.ssl.KeyManagerFactory;
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URLDecoder;
|
||||||
|
import java.security.KeyStore;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
public final class DispatchServer {
|
public final class DispatchServer {
|
||||||
private final InetSocketAddress address;
|
|
||||||
private final Gson gson;
|
|
||||||
private QueryCurrRegionHttpRsp currRegion;
|
|
||||||
|
|
||||||
public String regionListBase64;
|
|
||||||
public String regionCurrentBase64;
|
|
||||||
|
|
||||||
public static String query_region_list = "";
|
public static String query_region_list = "";
|
||||||
public static String query_cur_region = "";
|
public static String query_cur_region = "";
|
||||||
|
|
||||||
|
private final InetSocketAddress address;
|
||||||
|
private final Gson gson;
|
||||||
|
private final String defaultServerName = "os_usa";
|
||||||
|
|
||||||
|
public String regionListBase64;
|
||||||
|
public HashMap<String, RegionData> regions;
|
||||||
|
|
||||||
public DispatchServer() {
|
public DispatchServer() {
|
||||||
this.address = new InetSocketAddress(Grasscutter.getConfig().DispatchServerIp, Grasscutter.getConfig().DispatchServerPort);
|
this.regions = new HashMap<String, RegionData>();
|
||||||
|
this.address = new InetSocketAddress(Grasscutter.getConfig().getDispatchOptions().Ip, Grasscutter.getConfig().getDispatchOptions().Port);
|
||||||
this.gson = new GsonBuilder().create();
|
this.gson = new GsonBuilder().create();
|
||||||
|
|
||||||
this.loadQueries();
|
this.loadQueries();
|
||||||
@ -71,7 +59,13 @@ public final class DispatchServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public QueryCurrRegionHttpRsp getCurrRegion() {
|
public QueryCurrRegionHttpRsp getCurrRegion() {
|
||||||
return currRegion;
|
// Needs to be fixed by having the game servers connect to the dispatch server.
|
||||||
|
if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("HYBRID")) {
|
||||||
|
return regions.get(defaultServerName).parsedRegionQuery;
|
||||||
|
}
|
||||||
|
|
||||||
|
Grasscutter.getLogger().warn("[Dispatch] Unsupported run mode for getCurrRegion()");
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadQueries() {
|
public void loadQueries() {
|
||||||
@ -81,14 +75,14 @@ public final class DispatchServer {
|
|||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
query_region_list = new String(FileUtils.read(file));
|
query_region_list = new String(FileUtils.read(file));
|
||||||
} else {
|
} else {
|
||||||
Grasscutter.getLogger().warn("query_region_list not found! Using default region list.");
|
Grasscutter.getLogger().warn("[Dispatch] query_region_list not found! Using default region list.");
|
||||||
}
|
}
|
||||||
|
|
||||||
file = new File(Grasscutter.getConfig().DATA_FOLDER + "query_cur_region.txt");
|
file = new File(Grasscutter.getConfig().DATA_FOLDER + "query_cur_region.txt");
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
query_cur_region = new String(FileUtils.read(file));
|
query_cur_region = new String(FileUtils.read(file));
|
||||||
} else {
|
} else {
|
||||||
Grasscutter.getLogger().warn("query_cur_region not found! Using default current region.");
|
Grasscutter.getLogger().warn("[Dispatch] query_cur_region not found! Using default current region.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,52 +94,79 @@ public final class DispatchServer {
|
|||||||
byte[] decoded2 = Base64.getDecoder().decode(query_cur_region);
|
byte[] decoded2 = Base64.getDecoder().decode(query_cur_region);
|
||||||
QueryCurrRegionHttpRsp regionQuery = QueryCurrRegionHttpRsp.parseFrom(decoded2);
|
QueryCurrRegionHttpRsp regionQuery = QueryCurrRegionHttpRsp.parseFrom(decoded2);
|
||||||
|
|
||||||
|
List<RegionSimpleInfo> servers = new ArrayList<RegionSimpleInfo>();
|
||||||
|
List<String> usedNames = new ArrayList<String>(); // List to check for potential naming conflicts
|
||||||
|
if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("HYBRID")) { // Automatically add the game server if in hybrid mode
|
||||||
RegionSimpleInfo server = RegionSimpleInfo.newBuilder()
|
RegionSimpleInfo server = RegionSimpleInfo.newBuilder()
|
||||||
.setName("os_usa")
|
.setName("os_usa")
|
||||||
.setTitle(Grasscutter.getConfig().GameServerName)
|
.setTitle(Grasscutter.getConfig().getGameServerOptions().Name)
|
||||||
.setType("DEV_PUBLIC")
|
.setType("DEV_PUBLIC")
|
||||||
.setDispatchUrl("https://" + (Grasscutter.getConfig().DispatchServerPublicIp.isEmpty() ? Grasscutter.getConfig().DispatchServerIp : Grasscutter.getConfig().DispatchServerPublicIp) + ":" + getAddress().getPort() + "/query_cur_region")
|
.setDispatchUrl("https://" + (Grasscutter.getConfig().getDispatchOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getDispatchOptions().Ip : Grasscutter.getConfig().getDispatchOptions().PublicIp) + ":" + getAddress().getPort() + "/query_cur_region_" + defaultServerName)
|
||||||
|
.build();
|
||||||
|
usedNames.add(defaultServerName);
|
||||||
|
servers.add(server);
|
||||||
|
|
||||||
|
RegionInfo serverRegion = regionQuery.getRegionInfo().toBuilder()
|
||||||
|
.setIp((Grasscutter.getConfig().getGameServerOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getGameServerOptions().Ip : Grasscutter.getConfig().getGameServerOptions().PublicIp))
|
||||||
|
.setPort(Grasscutter.getConfig().getGameServerOptions().Port)
|
||||||
|
.setSecretKey(ByteString.copyFrom(FileUtils.read(Grasscutter.getConfig().KEY_FOLDER + "dispatchSeed.bin")))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
RegionSimpleInfo serverTest2 = RegionSimpleInfo.newBuilder()
|
QueryCurrRegionHttpRsp parsedRegionQuery = regionQuery.toBuilder().setRegionInfo(serverRegion).build();
|
||||||
.setName("os_euro")
|
regions.put(defaultServerName, new RegionData(parsedRegionQuery, Base64.getEncoder().encodeToString(parsedRegionQuery.toByteString().toByteArray())));
|
||||||
.setTitle("Grasscutter")
|
|
||||||
|
} else {
|
||||||
|
if(Grasscutter.getConfig().getDispatchOptions().getGameServers().length == 0) {
|
||||||
|
Grasscutter.getLogger().error("[Dispatch] There are no game servers available. Exiting due to unplayable state.");
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Config.DispatchServerOptions.RegionInfo regionInfo : Grasscutter.getConfig().getDispatchOptions().getGameServers()) {
|
||||||
|
if(usedNames.contains(regionInfo.Name)) {
|
||||||
|
Grasscutter.getLogger().error("Region name already in use.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
RegionSimpleInfo server = RegionSimpleInfo.newBuilder()
|
||||||
|
.setName(regionInfo.Name)
|
||||||
|
.setTitle(regionInfo.Title)
|
||||||
.setType("DEV_PUBLIC")
|
.setType("DEV_PUBLIC")
|
||||||
.setDispatchUrl("https://" + (Grasscutter.getConfig().DispatchServerPublicIp.isEmpty() ? Grasscutter.getConfig().DispatchServerIp : Grasscutter.getConfig().DispatchServerPublicIp) + ":" + getAddress().getPort() + "/query_cur_region")
|
.setDispatchUrl("https://" + (Grasscutter.getConfig().getDispatchOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getDispatchOptions().Ip : Grasscutter.getConfig().getDispatchOptions().PublicIp) + ":" + getAddress().getPort() + "/query_cur_region_" + regionInfo.Name)
|
||||||
.build();
|
.build();
|
||||||
|
usedNames.add(regionInfo.Name);
|
||||||
|
servers.add(server);
|
||||||
|
|
||||||
|
RegionInfo serverRegion = regionQuery.getRegionInfo().toBuilder()
|
||||||
|
.setIp(regionInfo.Ip)
|
||||||
|
.setPort(regionInfo.Port)
|
||||||
|
.setSecretKey(ByteString.copyFrom(FileUtils.read(Grasscutter.getConfig().KEY_FOLDER + "dispatchSeed.bin")))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
QueryCurrRegionHttpRsp parsedRegionQuery = regionQuery.toBuilder().setRegionInfo(serverRegion).build();
|
||||||
|
regions.put(regionInfo.Name, new RegionData(parsedRegionQuery, Base64.getEncoder().encodeToString(parsedRegionQuery.toByteString().toByteArray())));
|
||||||
|
}
|
||||||
|
|
||||||
QueryRegionListHttpRsp regionList = QueryRegionListHttpRsp.newBuilder()
|
QueryRegionListHttpRsp regionList = QueryRegionListHttpRsp.newBuilder()
|
||||||
.addServers(server)
|
.addAllServers(servers)
|
||||||
.addServers(serverTest2)
|
|
||||||
.setClientSecretKey(rl.getClientSecretKey())
|
.setClientSecretKey(rl.getClientSecretKey())
|
||||||
.setClientCustomConfigEncrypted(rl.getClientCustomConfigEncrypted())
|
.setClientCustomConfigEncrypted(rl.getClientCustomConfigEncrypted())
|
||||||
.setEnableLoginPc(true)
|
.setEnableLoginPc(true)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
RegionInfo currentRegion = regionQuery.getRegionInfo().toBuilder()
|
|
||||||
.setIp((Grasscutter.getConfig().GameServerPublicIp.isEmpty() ? Grasscutter.getConfig().GameServerIp : Grasscutter.getConfig().GameServerPublicIp))
|
|
||||||
.setPort(Grasscutter.getConfig().GameServerPort)
|
|
||||||
.setSecretKey(ByteString.copyFrom(FileUtils.read(Grasscutter.getConfig().KEY_FOLDER + "dispatchSeed.bin")))
|
|
||||||
.build();
|
|
||||||
|
|
||||||
QueryCurrRegionHttpRsp parsedRegionQuery = regionQuery.toBuilder().setRegionInfo(currentRegion).build();
|
|
||||||
|
|
||||||
this.regionListBase64 = Base64.getEncoder().encodeToString(regionList.toByteString().toByteArray());
|
this.regionListBase64 = Base64.getEncoder().encodeToString(regionList.toByteString().toByteArray());
|
||||||
this.regionCurrentBase64 = Base64.getEncoder().encodeToString(parsedRegionQuery.toByteString().toByteArray());
|
|
||||||
this.currRegion = parsedRegionQuery;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Grasscutter.getLogger().error("Error while initializing region info!", e);
|
Grasscutter.getLogger().error("[Dispatch] Error while initializing region info!", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start() throws Exception {
|
public void start() throws Exception {
|
||||||
HttpServer server;
|
HttpServer server;
|
||||||
if(Grasscutter.getConfig().UseSSL) {
|
if (Grasscutter.getConfig().getDispatchOptions().UseSSL) {
|
||||||
HttpsServer httpsServer;
|
HttpsServer httpsServer;
|
||||||
httpsServer = HttpsServer.create(getAddress(), 0);
|
httpsServer = HttpsServer.create(getAddress(), 0);
|
||||||
SSLContext sslContext = SSLContext.getInstance("TLS");
|
SSLContext sslContext = SSLContext.getInstance("TLS");
|
||||||
try (FileInputStream fis = new FileInputStream(Grasscutter.getConfig().DispatchServerKeystorePath)) {
|
try (FileInputStream fis = new FileInputStream(Grasscutter.getConfig().getDispatchOptions().KeystorePath)) {
|
||||||
char[] keystorePassword = Grasscutter.getConfig().DispatchServerKeystorePassword.toCharArray();
|
char[] keystorePassword = Grasscutter.getConfig().getDispatchOptions().KeystorePassword.toCharArray();
|
||||||
KeyStore ks = KeyStore.getInstance("PKCS12");
|
KeyStore ks = KeyStore.getInstance("PKCS12");
|
||||||
ks.load(fis, keystorePassword);
|
ks.load(fis, keystorePassword);
|
||||||
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
|
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
|
||||||
@ -156,56 +177,39 @@ public final class DispatchServer {
|
|||||||
httpsServer.setHttpsConfigurator(new HttpsConfigurator(sslContext));
|
httpsServer.setHttpsConfigurator(new HttpsConfigurator(sslContext));
|
||||||
server = httpsServer;
|
server = httpsServer;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Grasscutter.getLogger().error("No SSL cert found!");
|
Grasscutter.getLogger().warn("[Dispatch] No SSL cert found! Falling back to HTTP server.");
|
||||||
return;
|
Grasscutter.getConfig().getDispatchOptions().UseSSL = false;
|
||||||
|
server = HttpServer.create(getAddress(), 0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
server = HttpServer.create(getAddress(), 0);
|
server = HttpServer.create(getAddress(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
server.createContext("/", t -> {
|
server.createContext("/", t -> responseHTML(t, "Hello"));
|
||||||
//Create a response form the request query parameters
|
|
||||||
String response = "Hello";
|
|
||||||
//Set the response header status and length
|
|
||||||
t.getResponseHeaders().put("Content-Type", Collections.singletonList("text/html; charset=UTF-8"));
|
|
||||||
t.sendResponseHeaders(200, response.getBytes().length);
|
|
||||||
//Write the response string
|
|
||||||
OutputStream os = t.getResponseBody();
|
|
||||||
os.write(response.getBytes());
|
|
||||||
os.close();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Dispatch
|
// Dispatch
|
||||||
server.createContext("/query_region_list", t -> {
|
server.createContext("/query_region_list", t -> {
|
||||||
// Log
|
// Log
|
||||||
Grasscutter.getLogger().info("Client request: query_region_list");
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s request: query_region_list", t.getRemoteAddress()));
|
||||||
// Create a response form the request query parameters
|
|
||||||
String response = regionListBase64;
|
responseHTML(t, regionListBase64);
|
||||||
// Set the response header status and length
|
|
||||||
t.getResponseHeaders().put("Content-Type", Collections.singletonList("text/html; charset=UTF-8"));
|
|
||||||
t.sendResponseHeaders(200, response.getBytes().length);
|
|
||||||
// Write the response string
|
|
||||||
OutputStream os = t.getResponseBody();
|
|
||||||
os.write(response.getBytes());
|
|
||||||
os.close();
|
|
||||||
});
|
});
|
||||||
server.createContext("/query_cur_region", t -> {
|
|
||||||
|
for (String regionName : regions.keySet()) {
|
||||||
|
server.createContext("/query_cur_region_" + regionName, t -> {
|
||||||
|
String regionCurrentBase64 = regions.get(regionName).Base64;
|
||||||
// Log
|
// Log
|
||||||
Grasscutter.getLogger().info("Client request: query_cur_region");
|
Grasscutter.getLogger().info(String.format("Client %s request: query_cur_region_%s", t.getRemoteAddress(), regionName));
|
||||||
// Create a response form the request query parameters
|
// Create a response form the request query parameters
|
||||||
URI uri = t.getRequestURI();
|
URI uri = t.getRequestURI();
|
||||||
String response = "CAESGE5vdCBGb3VuZCB2ZXJzaW9uIGNvbmZpZw==";
|
String response = "CAESGE5vdCBGb3VuZCB2ZXJzaW9uIGNvbmZpZw==";
|
||||||
if (uri.getQuery() != null && uri.getQuery().length() > 0) {
|
if (uri.getQuery() != null && uri.getQuery().length() > 0) {
|
||||||
response = regionCurrentBase64;
|
response = regionCurrentBase64;
|
||||||
}
|
}
|
||||||
// Set the response header status and length
|
responseHTML(t, response);
|
||||||
t.getResponseHeaders().put("Content-Type", Collections.singletonList("text/html; charset=UTF-8"));
|
|
||||||
t.sendResponseHeaders(200, response.getBytes().length);
|
|
||||||
// Write the response string
|
|
||||||
OutputStream os = t.getResponseBody();
|
|
||||||
os.write(response.getBytes());
|
|
||||||
os.close();
|
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Login via account
|
// Login via account
|
||||||
server.createContext("/hk4e_global/mdk/shield/api/login", t -> {
|
server.createContext("/hk4e_global/mdk/shield/api/login", t -> {
|
||||||
// Get post data
|
// Get post data
|
||||||
@ -213,32 +217,44 @@ public final class DispatchServer {
|
|||||||
try {
|
try {
|
||||||
String body = Utils.toString(t.getRequestBody());
|
String body = Utils.toString(t.getRequestBody());
|
||||||
requestData = getGsonFactory().fromJson(body, LoginAccountRequestJson.class);
|
requestData = getGsonFactory().fromJson(body, LoginAccountRequestJson.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception ignored) { }
|
||||||
|
|
||||||
}
|
|
||||||
// Create response json
|
// Create response json
|
||||||
if (requestData == null) {
|
if (requestData == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LoginResultJson responseData = new LoginResultJson();
|
LoginResultJson responseData = new LoginResultJson();
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s is trying to log in", t.getRemoteAddress()));
|
||||||
|
|
||||||
// Login
|
// Login
|
||||||
Account account = DatabaseHelper.getAccountByName(requestData.account);
|
Account account = DatabaseHelper.getAccountByName(requestData.account);
|
||||||
|
|
||||||
// Check if account exists, else create a new one.
|
// Check if account exists, else create a new one.
|
||||||
if (account == null) {
|
if (account == null) {
|
||||||
// Account doesnt exist, so we can either auto create it if the config value is set
|
// Account doesnt exist, so we can either auto create it if the config value is set
|
||||||
if (Grasscutter.getConfig().ServerOptions.AutomaticallyCreateAccounts) {
|
if (Grasscutter.getConfig().getDispatchOptions().AutomaticallyCreateAccounts) {
|
||||||
// This account has been created AUTOMATICALLY. There will be no permissions added.
|
// This account has been created AUTOMATICALLY. There will be no permissions added.
|
||||||
account = DatabaseHelper.createAccountWithId(requestData.account, 0);
|
account = DatabaseHelper.createAccountWithId(requestData.account, 0);
|
||||||
|
|
||||||
|
if (account != null) {
|
||||||
responseData.message = "OK";
|
responseData.message = "OK";
|
||||||
responseData.data.account.uid = account.getId();
|
responseData.data.account.uid = account.getId();
|
||||||
responseData.data.account.token = account.generateSessionKey();
|
responseData.data.account.token = account.generateSessionKey();
|
||||||
responseData.data.account.email = account.getEmail();
|
responseData.data.account.email = account.getEmail();
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s failed to log in: Account %s created", t.getRemoteAddress(), responseData.data.account.uid));
|
||||||
|
} else {
|
||||||
|
responseData.retcode = -201;
|
||||||
|
responseData.message = "Username not found, create failed.";
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s failed to log in: Account create failed", t.getRemoteAddress()));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
responseData.retcode = -201;
|
responseData.retcode = -201;
|
||||||
responseData.message = "Username not found.";
|
responseData.message = "Username not found.";
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s failed to log in: Account no found", t.getRemoteAddress()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Account was found, log the player in
|
// Account was found, log the player in
|
||||||
@ -246,17 +262,11 @@ public final class DispatchServer {
|
|||||||
responseData.data.account.uid = account.getId();
|
responseData.data.account.uid = account.getId();
|
||||||
responseData.data.account.token = account.generateSessionKey();
|
responseData.data.account.token = account.generateSessionKey();
|
||||||
responseData.data.account.email = account.getEmail();
|
responseData.data.account.email = account.getEmail();
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s logged in as %s", t.getRemoteAddress(), responseData.data.account.uid));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a response
|
responseJSON(t, responseData);
|
||||||
String response = getGsonFactory().toJson(responseData);
|
|
||||||
// Set the response header status and length
|
|
||||||
t.getResponseHeaders().put("Content-Type", Collections.singletonList("application/json"));
|
|
||||||
t.sendResponseHeaders(200, response.getBytes().length);
|
|
||||||
// Write the response string
|
|
||||||
OutputStream os = t.getResponseBody();
|
|
||||||
os.write(response.getBytes());
|
|
||||||
os.close();
|
|
||||||
});
|
});
|
||||||
// Login via token
|
// Login via token
|
||||||
server.createContext("/hk4e_global/mdk/shield/api/verify", t -> {
|
server.createContext("/hk4e_global/mdk/shield/api/verify", t -> {
|
||||||
@ -265,14 +275,14 @@ public final class DispatchServer {
|
|||||||
try {
|
try {
|
||||||
String body = Utils.toString(t.getRequestBody());
|
String body = Utils.toString(t.getRequestBody());
|
||||||
requestData = getGsonFactory().fromJson(body, LoginTokenRequestJson.class);
|
requestData = getGsonFactory().fromJson(body, LoginTokenRequestJson.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception ignored) { }
|
||||||
|
|
||||||
}
|
|
||||||
// Create response json
|
// Create response json
|
||||||
if (requestData == null) {
|
if (requestData == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LoginResultJson responseData = new LoginResultJson();
|
LoginResultJson responseData = new LoginResultJson();
|
||||||
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s is trying to log in via token", t.getRemoteAddress()));
|
||||||
|
|
||||||
// Login
|
// Login
|
||||||
Account account = DatabaseHelper.getAccountById(requestData.uid);
|
Account account = DatabaseHelper.getAccountById(requestData.uid);
|
||||||
@ -281,22 +291,18 @@ public final class DispatchServer {
|
|||||||
if (account == null || !account.getSessionKey().equals(requestData.token)) {
|
if (account == null || !account.getSessionKey().equals(requestData.token)) {
|
||||||
responseData.retcode = -111;
|
responseData.retcode = -111;
|
||||||
responseData.message = "Game account cache information error";
|
responseData.message = "Game account cache information error";
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s failed to log in via token", t.getRemoteAddress()));
|
||||||
} else {
|
} else {
|
||||||
responseData.message = "OK";
|
responseData.message = "OK";
|
||||||
responseData.data.account.uid = requestData.uid;
|
responseData.data.account.uid = requestData.uid;
|
||||||
responseData.data.account.token = requestData.token;
|
responseData.data.account.token = requestData.token;
|
||||||
responseData.data.account.email = account.getEmail();
|
responseData.data.account.email = account.getEmail();
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s logged in via token as %s", t.getRemoteAddress(), responseData.data.account.uid));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a response
|
responseJSON(t, responseData);
|
||||||
String response = getGsonFactory().toJson(responseData);
|
|
||||||
// Set the response header status and length
|
|
||||||
t.getResponseHeaders().put("Content-Type", Collections.singletonList("application/json"));
|
|
||||||
t.sendResponseHeaders(200, response.getBytes().length);
|
|
||||||
// Write the response string
|
|
||||||
OutputStream os = t.getResponseBody();
|
|
||||||
os.write(response.getBytes());
|
|
||||||
os.close();
|
|
||||||
});
|
});
|
||||||
// Exchange for combo token
|
// Exchange for combo token
|
||||||
server.createContext("/hk4e_global/combo/granter/login/v2/login", t -> {
|
server.createContext("/hk4e_global/combo/granter/login/v2/login", t -> {
|
||||||
@ -305,9 +311,8 @@ public final class DispatchServer {
|
|||||||
try {
|
try {
|
||||||
String body = Utils.toString(t.getRequestBody());
|
String body = Utils.toString(t.getRequestBody());
|
||||||
requestData = getGsonFactory().fromJson(body, ComboTokenReqJson.class);
|
requestData = getGsonFactory().fromJson(body, ComboTokenReqJson.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception ignored) { }
|
||||||
|
|
||||||
}
|
|
||||||
// Create response json
|
// Create response json
|
||||||
if (requestData == null || requestData.data == null) {
|
if (requestData == null || requestData.data == null) {
|
||||||
return;
|
return;
|
||||||
@ -322,22 +327,18 @@ public final class DispatchServer {
|
|||||||
if (account == null || !account.getSessionKey().equals(loginData.token)) {
|
if (account == null || !account.getSessionKey().equals(loginData.token)) {
|
||||||
responseData.retcode = -201;
|
responseData.retcode = -201;
|
||||||
responseData.message = "Wrong session key.";
|
responseData.message = "Wrong session key.";
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s failed to exchange combo token", t.getRemoteAddress()));
|
||||||
} else {
|
} else {
|
||||||
responseData.message = "OK";
|
responseData.message = "OK";
|
||||||
responseData.data.open_id = loginData.uid;
|
responseData.data.open_id = loginData.uid;
|
||||||
responseData.data.combo_id = "157795300";
|
responseData.data.combo_id = "157795300";
|
||||||
responseData.data.combo_token = account.generateLoginToken();
|
responseData.data.combo_token = account.generateLoginToken();
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info(String.format("[Dispatch] Client %s succeed to exchange combo token", t.getRemoteAddress()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a response
|
responseJSON(t, responseData);
|
||||||
String response = getGsonFactory().toJson(responseData);
|
|
||||||
// Set the response header status and length
|
|
||||||
t.getResponseHeaders().put("Content-Type", Collections.singletonList("application/json"));
|
|
||||||
t.sendResponseHeaders(200, response.getBytes().length);
|
|
||||||
// Write the response string
|
|
||||||
OutputStream os = t.getResponseBody();
|
|
||||||
os.write(response.getBytes());
|
|
||||||
os.close();
|
|
||||||
});
|
});
|
||||||
// Agreement and Protocol
|
// Agreement and Protocol
|
||||||
server.createContext( // hk4e-sdk-os.hoyoverse.com
|
server.createContext( // hk4e-sdk-os.hoyoverse.com
|
||||||
@ -405,57 +406,67 @@ public final class DispatchServer {
|
|||||||
"/perf/config/verify",
|
"/perf/config/verify",
|
||||||
new DispatchHttpJsonHandler("{\"code\":0}")
|
new DispatchHttpJsonHandler("{\"code\":0}")
|
||||||
);
|
);
|
||||||
// Start server
|
|
||||||
server.start();
|
|
||||||
Grasscutter.getLogger().info("Dispatch server started on port " + getAddress().getPort());
|
|
||||||
|
|
||||||
// Logging servers
|
// Logging servers
|
||||||
HttpServer overseaLogServer = HttpServer.create(new InetSocketAddress(Grasscutter.getConfig().DispatchServerIp, 8888), 0);
|
server.createContext( // overseauspider.yuanshen.com
|
||||||
overseaLogServer.createContext( // overseauspider.yuanshen.com
|
|
||||||
"/log",
|
"/log",
|
||||||
new DispatchHttpJsonHandler("{\"code\":0}")
|
new DispatchHttpJsonHandler("{\"code\":0}")
|
||||||
);
|
);
|
||||||
overseaLogServer.start();
|
|
||||||
Grasscutter.getLogger().info("Log server (overseauspider) started on port " + 8888);
|
|
||||||
|
|
||||||
HttpServer uploadLogServer = HttpServer.create(new InetSocketAddress(Grasscutter.getConfig().DispatchServerIp, Grasscutter.getConfig().UploadLogPort), 0);
|
server.createContext( // log-upload-os.mihoyo.com
|
||||||
uploadLogServer.createContext( // log-upload-os.mihoyo.com
|
|
||||||
"/crash/dataUpload",
|
"/crash/dataUpload",
|
||||||
new DispatchHttpJsonHandler("{\"code\":0}")
|
new DispatchHttpJsonHandler("{\"code\":0}")
|
||||||
);
|
);
|
||||||
uploadLogServer.createContext("/gacha", t -> {
|
server.createContext("/gacha", t -> responseHTML(t, "<!doctype html><html lang=\"en\"><head><title>Gacha</title></head><body></body></html>"));
|
||||||
//Create a response form the request query parameters
|
|
||||||
String response = "<!doctype html><html lang=\"en\"><head><title>Gacha</title></head><body></body></html>";
|
// Start server
|
||||||
//Set the response header status and length
|
server.start();
|
||||||
|
Grasscutter.getLogger().info("[Dispatch] Dispatch server started on port " + getAddress().getPort());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void responseJSON(HttpExchange t, Object data) throws IOException {
|
||||||
|
// Create a response
|
||||||
|
String response = getGsonFactory().toJson(data);
|
||||||
|
// Set the response header status and length
|
||||||
|
t.getResponseHeaders().put("Content-Type", Collections.singletonList("application/json"));
|
||||||
|
t.sendResponseHeaders(200, response.getBytes().length);
|
||||||
|
// Write the response string
|
||||||
|
OutputStream os = t.getResponseBody();
|
||||||
|
os.write(response.getBytes());
|
||||||
|
os.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void responseHTML(HttpExchange t, String response) throws IOException {
|
||||||
|
// Set the response header status and length
|
||||||
t.getResponseHeaders().put("Content-Type", Collections.singletonList("text/html; charset=UTF-8"));
|
t.getResponseHeaders().put("Content-Type", Collections.singletonList("text/html; charset=UTF-8"));
|
||||||
t.sendResponseHeaders(200, response.getBytes().length);
|
t.sendResponseHeaders(200, response.getBytes().length);
|
||||||
//Write the response string
|
//Write the response string
|
||||||
OutputStream os = t.getResponseBody();
|
OutputStream os = t.getResponseBody();
|
||||||
os.write(response.getBytes());
|
os.write(response.getBytes());
|
||||||
os.close();
|
os.close();
|
||||||
});
|
|
||||||
uploadLogServer.start();
|
|
||||||
Grasscutter.getLogger().info("Log server (log-upload-os) started on port " + Grasscutter.getConfig().UploadLogPort);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, String> parseQueryString(String qs) {
|
private Map<String, String> parseQueryString(String qs) {
|
||||||
Map<String, String> result = new HashMap<>();
|
Map<String, String> result = new HashMap<>();
|
||||||
if (qs == null)
|
if (qs == null) {
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
int last = 0, next, l = qs.length();
|
int last = 0, next, l = qs.length();
|
||||||
while (last < l) {
|
while (last < l) {
|
||||||
next = qs.indexOf('&', last);
|
next = qs.indexOf('&', last);
|
||||||
if (next == -1)
|
if (next == -1) {
|
||||||
next = l;
|
next = l;
|
||||||
|
}
|
||||||
|
|
||||||
if (next > last) {
|
if (next > last) {
|
||||||
int eqPos = qs.indexOf('=', last);
|
int eqPos = qs.indexOf('=', last);
|
||||||
try {
|
try {
|
||||||
if (eqPos < 0 || eqPos > next)
|
if (eqPos < 0 || eqPos > next) {
|
||||||
result.put(URLDecoder.decode(qs.substring(last, next), "utf-8"), "");
|
result.put(URLDecoder.decode(qs.substring(last, next), "utf-8"), "");
|
||||||
else
|
} else {
|
||||||
result.put(URLDecoder.decode(qs.substring(last, eqPos), "utf-8"), URLDecoder.decode(qs.substring(eqPos + 1, next), "utf-8"));
|
result.put(URLDecoder.decode(qs.substring(last, eqPos), "utf-8"), URLDecoder.decode(qs.substring(eqPos + 1, next), "utf-8"));
|
||||||
|
}
|
||||||
} catch (UnsupportedEncodingException e) {
|
} catch (UnsupportedEncodingException e) {
|
||||||
throw new RuntimeException(e); // will never happen, utf-8 support is mandatory for java
|
throw new RuntimeException(e); // will never happen, utf-8 support is mandatory for java
|
||||||
}
|
}
|
||||||
@ -464,4 +475,15 @@ public final class DispatchServer {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class RegionData {
|
||||||
|
|
||||||
|
QueryCurrRegionHttpRsp parsedRegionQuery;
|
||||||
|
String Base64;
|
||||||
|
|
||||||
|
public RegionData(QueryCurrRegionHttpRsp prq, String b64) {
|
||||||
|
this.parsedRegionQuery = prq;
|
||||||
|
this.Base64 = b64;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ public class ComboTokenReqJson {
|
|||||||
public String device;
|
public String device;
|
||||||
public String sign;
|
public String sign;
|
||||||
|
|
||||||
public class LoginTokenData {
|
public static class LoginTokenData {
|
||||||
public String uid;
|
public String uid;
|
||||||
public String token;
|
public String token;
|
||||||
public boolean guest;
|
public boolean guest;
|
||||||
|
@ -5,7 +5,7 @@ public class ComboTokenResJson {
|
|||||||
public int retcode;
|
public int retcode;
|
||||||
public LoginData data = new LoginData();
|
public LoginData data = new LoginData();
|
||||||
|
|
||||||
public class LoginData {
|
public static class LoginData {
|
||||||
public int account_type = 1;
|
public int account_type = 1;
|
||||||
public boolean heartbeat;
|
public boolean heartbeat;
|
||||||
public String combo_id;
|
public String combo_id;
|
||||||
|
@ -5,7 +5,7 @@ public class LoginResultJson {
|
|||||||
public int retcode;
|
public int retcode;
|
||||||
public VerifyData data = new VerifyData();
|
public VerifyData data = new VerifyData();
|
||||||
|
|
||||||
public class VerifyData {
|
public static class VerifyData {
|
||||||
public VerifyAccountData account = new VerifyAccountData();
|
public VerifyAccountData account = new VerifyAccountData();
|
||||||
public boolean device_grant_required = false;
|
public boolean device_grant_required = false;
|
||||||
public String realname_operation = "NONE";
|
public String realname_operation = "NONE";
|
||||||
@ -13,7 +13,7 @@ public class LoginResultJson {
|
|||||||
public boolean safe_mobile_required = false;
|
public boolean safe_mobile_required = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VerifyAccountData {
|
public static class VerifyAccountData {
|
||||||
public String uid;
|
public String uid;
|
||||||
public String name = "";
|
public String name = "";
|
||||||
public String email;
|
public String email;
|
||||||
|
@ -6,7 +6,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
|
|
||||||
import emu.grasscutter.GenshinConstants;
|
import emu.grasscutter.GenshinConstants;
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.commands.CommandMap;
|
import emu.grasscutter.command.CommandMap;
|
||||||
import emu.grasscutter.database.DatabaseHelper;
|
import emu.grasscutter.database.DatabaseHelper;
|
||||||
import emu.grasscutter.game.Account;
|
import emu.grasscutter.game.Account;
|
||||||
import emu.grasscutter.game.GenshinPlayer;
|
import emu.grasscutter.game.GenshinPlayer;
|
||||||
@ -19,6 +19,7 @@ import emu.grasscutter.game.shop.ShopManager;
|
|||||||
import emu.grasscutter.net.packet.PacketHandler;
|
import emu.grasscutter.net.packet.PacketHandler;
|
||||||
import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail;
|
import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail;
|
||||||
import emu.grasscutter.netty.MihoyoKcpServer;
|
import emu.grasscutter.netty.MihoyoKcpServer;
|
||||||
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
public final class GameServer extends MihoyoKcpServer {
|
public final class GameServer extends MihoyoKcpServer {
|
||||||
private final InetSocketAddress address;
|
private final InetSocketAddress address;
|
||||||
@ -34,9 +35,17 @@ public final class GameServer extends MihoyoKcpServer {
|
|||||||
private final DungeonManager dungeonManager;
|
private final DungeonManager dungeonManager;
|
||||||
private final CommandMap commandMap;
|
private final CommandMap commandMap;
|
||||||
|
|
||||||
|
public EventBus OnGameServerStartFinish;
|
||||||
|
public EventBus OnGameServerTick;
|
||||||
|
public EventBus OnGameServerStop;
|
||||||
|
|
||||||
public GameServer(InetSocketAddress address) {
|
public GameServer(InetSocketAddress address) {
|
||||||
super(address);
|
super(address);
|
||||||
|
|
||||||
|
OnGameServerStartFinish = EventBus.builder().throwSubscriberException(true).logNoSubscriberMessages(false).build();
|
||||||
|
OnGameServerTick = EventBus.builder().throwSubscriberException(true).logNoSubscriberMessages(false).build();
|
||||||
|
OnGameServerStop = EventBus.builder().throwSubscriberException(true).logNoSubscriberMessages(false).build();
|
||||||
|
|
||||||
this.setServerInitializer(new GameServerInitializer(this));
|
this.setServerInitializer(new GameServerInitializer(this));
|
||||||
this.address = address;
|
this.address = address;
|
||||||
this.packetHandler = new GameServerPacketHandler(PacketHandler.class);
|
this.packetHandler = new GameServerPacketHandler(PacketHandler.class);
|
||||||
@ -145,7 +154,7 @@ public final class GameServer extends MihoyoKcpServer {
|
|||||||
|
|
||||||
public Account getAccountByName(String username) {
|
public Account getAccountByName(String username) {
|
||||||
Optional<GenshinPlayer> playerOpt = getPlayers().values().stream().filter(player -> player.getAccount().getUsername().equals(username)).findFirst();
|
Optional<GenshinPlayer> playerOpt = getPlayers().values().stream().filter(player -> player.getAccount().getUsername().equals(username)).findFirst();
|
||||||
if (playerOpt.get() != null) {
|
if (playerOpt.isPresent()) {
|
||||||
return playerOpt.get().getAccount();
|
return playerOpt.get().getAccount();
|
||||||
}
|
}
|
||||||
return DatabaseHelper.getAccountByName(username);
|
return DatabaseHelper.getAccountByName(username);
|
||||||
@ -155,14 +164,20 @@ public final class GameServer extends MihoyoKcpServer {
|
|||||||
for (GenshinPlayer player : this.getPlayers().values()) {
|
for (GenshinPlayer player : this.getPlayers().values()) {
|
||||||
player.onTick();
|
player.onTick();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OnGameServerTick.post(new GameServerTickEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStartFinish() {
|
public void onStartFinish() {
|
||||||
Grasscutter.getLogger().info("Game Server started on port " + address.getPort());
|
Grasscutter.getLogger().info("Game Server started on port " + address.getPort());
|
||||||
|
|
||||||
|
OnGameServerStartFinish.post(new GameServerStartFinishEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onServerShutdown() {
|
public void onServerShutdown() {
|
||||||
|
OnGameServerStop.post(new GameServerStopEvent());
|
||||||
|
|
||||||
// Kick and save all players
|
// Kick and save all players
|
||||||
List<GenshinPlayer> list = new ArrayList<>(this.getPlayers().size());
|
List<GenshinPlayer> list = new ArrayList<>(this.getPlayers().size());
|
||||||
list.addAll(this.getPlayers().values());
|
list.addAll(this.getPlayers().values());
|
||||||
|
@ -87,7 +87,7 @@ public class GameServerPacketHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Log unhandled packets
|
// Log unhandled packets
|
||||||
if (Grasscutter.getConfig().LOG_PACKETS) {
|
if (Grasscutter.getConfig().getGameServerOptions().LOG_PACKETS) {
|
||||||
//Grasscutter.getLogger().info("Unhandled packet (" + opcode + "): " + PacketOpcodesUtil.getOpcodeName(opcode));
|
//Grasscutter.getLogger().info("Unhandled packet (" + opcode + "): " + PacketOpcodesUtil.getOpcodeName(opcode));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
package emu.grasscutter.server.game;
|
||||||
|
|
||||||
|
public class GameServerStartFinishEvent {
|
||||||
|
// Placeholder class for now, probably will get used later
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package emu.grasscutter.server.game;
|
||||||
|
|
||||||
|
public class GameServerStopEvent {
|
||||||
|
// Placeholder class for now, probably will get used later
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package emu.grasscutter.server.game;
|
||||||
|
|
||||||
|
public class GameServerTickEvent {
|
||||||
|
// Placeholder class for now, probably will get used later
|
||||||
|
}
|
@ -165,7 +165,7 @@ public class GameSession extends MihoyoKcpChannel {
|
|||||||
byte[] data = genshinPacket.build();
|
byte[] data = genshinPacket.build();
|
||||||
|
|
||||||
// Log
|
// Log
|
||||||
if (Grasscutter.getConfig().LOG_PACKETS) {
|
if (Grasscutter.getConfig().getGameServerOptions().LOG_PACKETS) {
|
||||||
logPacket(genshinPacket);
|
logPacket(genshinPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,7 +225,7 @@ public class GameSession extends MihoyoKcpChannel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Log packet
|
// Log packet
|
||||||
if (Grasscutter.getConfig().LOG_PACKETS) {
|
if (Grasscutter.getConfig().getGameServerOptions().LOG_PACKETS) {
|
||||||
Grasscutter.getLogger().info("RECV: " + PacketOpcodesUtil.getOpcodeName(opcode) + " (" + opcode + ")");
|
Grasscutter.getLogger().info("RECV: " + PacketOpcodesUtil.getOpcodeName(opcode) + " (" + opcode + ")");
|
||||||
System.out.println(Utils.bytesToHex(payload));
|
System.out.println(Utils.bytesToHex(payload));
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package emu.grasscutter.server.packet.recv;
|
||||||
|
|
||||||
|
import emu.grasscutter.net.packet.Opcodes;
|
||||||
|
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||||
|
import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry;
|
||||||
|
import emu.grasscutter.net.proto.ClientAbilityInitFinishNotifyOuterClass.ClientAbilityInitFinishNotify;
|
||||||
|
import emu.grasscutter.net.packet.PacketHandler;
|
||||||
|
import emu.grasscutter.server.game.GameSession;
|
||||||
|
|
||||||
|
@Opcodes(PacketOpcodes.ClientAbilityInitFinishNotify)
|
||||||
|
public class HandlerClientAbilityInitFinishNotify extends PacketHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||||
|
ClientAbilityInitFinishNotify notif = ClientAbilityInitFinishNotify.parseFrom(payload);
|
||||||
|
|
||||||
|
for (AbilityInvokeEntry entry : notif.getInvokesList()) {
|
||||||
|
session.getPlayer().getClientAbilityInitFinishHandler().addEntry(entry.getForwardType(), entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (notif.getInvokesList().size() > 0) {
|
||||||
|
session.getPlayer().getClientAbilityInitFinishHandler().update(session.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -31,8 +31,11 @@ public class HandlerEnterSceneDoneReq extends PacketHandler {
|
|||||||
|
|
||||||
// Locations
|
// Locations
|
||||||
session.send(new PacketWorldPlayerLocationNotify(session.getPlayer().getWorld()));
|
session.send(new PacketWorldPlayerLocationNotify(session.getPlayer().getWorld()));
|
||||||
session.send(new PacketScenePlayerLocationNotify(session.getPlayer()));
|
session.send(new PacketScenePlayerLocationNotify(session.getPlayer().getScene()));
|
||||||
session.send(new PacketWorldPlayerRTTNotify(session.getPlayer().getWorld()));
|
session.send(new PacketWorldPlayerRTTNotify(session.getPlayer().getWorld()));
|
||||||
|
|
||||||
|
// Reset timer for sending player locations
|
||||||
|
session.getPlayer().resetSendPlayerLocTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -35,15 +35,15 @@ public class HandlerGetPlayerTokenReq extends PacketHandler {
|
|||||||
|
|
||||||
// Has character
|
// Has character
|
||||||
boolean doesPlayerExist = false;
|
boolean doesPlayerExist = false;
|
||||||
if (account.getPlayerId() > 0) {
|
if (account.getPlayerUid() > 0) {
|
||||||
// Set flag for player existing
|
// Set flag for player existing
|
||||||
doesPlayerExist = DatabaseHelper.checkPlayerExists(account.getPlayerId());
|
doesPlayerExist = DatabaseHelper.checkPlayerExists(account.getPlayerUid());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set reserve player id if account doesnt exist
|
// Set reserve player id if account doesnt exist
|
||||||
if (!doesPlayerExist) {
|
if (!doesPlayerExist) {
|
||||||
int id = DatabaseHelper.getNextPlayerId(session.getAccount().getPlayerId());
|
int id = DatabaseHelper.getNextPlayerId(session.getAccount().getPlayerUid());
|
||||||
if (id != session.getAccount().getPlayerId()) {
|
if (id != session.getAccount().getPlayerUid()) {
|
||||||
session.getAccount().setPlayerId(id);
|
session.getAccount().setPlayerId(id);
|
||||||
session.getAccount().save();
|
session.getAccount().save();
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,18 @@ import emu.grasscutter.server.packet.send.PacketSceneEntityAppearNotify;
|
|||||||
@Opcodes(PacketOpcodes.MarkMapReq)
|
@Opcodes(PacketOpcodes.MarkMapReq)
|
||||||
public class HandlerMarkMapReq extends PacketHandler {
|
public class HandlerMarkMapReq extends PacketHandler {
|
||||||
|
|
||||||
|
private static boolean isInt(String str) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
int x = Integer.parseInt(str);
|
||||||
|
return true; // String is an Integer
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
return false; // String is not an Integer
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||||
MarkMapReq req = MarkMapReq.parseFrom(payload);
|
MarkMapReq req = MarkMapReq.parseFrom(payload);
|
||||||
@ -26,15 +38,18 @@ public class HandlerMarkMapReq extends PacketHandler {
|
|||||||
|
|
||||||
session.getPlayer().getPos().setX(req.getMark().getPos().getX());
|
session.getPlayer().getPos().setX(req.getMark().getPos().getX());
|
||||||
session.getPlayer().getPos().setZ(req.getMark().getPos().getZ());
|
session.getPlayer().getPos().setZ(req.getMark().getPos().getZ());
|
||||||
session.getPlayer().getPos().setY(300);
|
|
||||||
|
|
||||||
Grasscutter.getLogger().info("Player [" + session.getPlayer().getUid() + ":" + session.getPlayer().getNickname() + "] tp to " + session.getPlayer().getPos() + " Scene id: " + req.getMark().getSceneId());
|
session.getPlayer().getPos()
|
||||||
|
.setY(isInt(req.getMark().getName()) ? Integer.parseInt(req.getMark().getName()) : 300);
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info("Player [" + session.getPlayer().getUid() + ":" + session.getPlayer().getNickname()
|
||||||
|
+ "] tp to " + session.getPlayer().getPos() + " Scene id: " + req.getMark().getSceneId());
|
||||||
|
|
||||||
if (req.getMark().getSceneId() != session.getPlayer().getSceneId()) {
|
if (req.getMark().getSceneId() != session.getPlayer().getSceneId()) {
|
||||||
session.getPlayer().getWorld().transferPlayerToScene(session.getPlayer(), req.getMark().getSceneId(), session.getPlayer().getPos());
|
session.getPlayer().getWorld().transferPlayerToScene(session.getPlayer(), req.getMark().getSceneId(),
|
||||||
|
session.getPlayer().getPos());
|
||||||
} else {
|
} else {
|
||||||
session.getPlayer().getScene().broadcastPacket(new PacketSceneEntityAppearNotify(session.getPlayer()));
|
session.getPlayer().getScene().broadcastPacket(new PacketSceneEntityAppearNotify(session.getPlayer()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package emu.grasscutter.server.packet.recv;
|
||||||
|
|
||||||
|
import emu.grasscutter.game.inventory.GenshinItem;
|
||||||
|
import emu.grasscutter.net.packet.Opcodes;
|
||||||
|
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||||
|
import emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq;
|
||||||
|
import emu.grasscutter.net.packet.PacketHandler;
|
||||||
|
import emu.grasscutter.server.game.GameSession;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketNpcTalkRsp;
|
||||||
|
|
||||||
|
@Opcodes(PacketOpcodes.NpcTalkReq)
|
||||||
|
public class HandlerNpcTalkReq extends PacketHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||||
|
NpcTalkReq req = NpcTalkReq.parseFrom(payload);
|
||||||
|
|
||||||
|
session.send(new PacketNpcTalkRsp(req.getNpcEntityId(), req.getTalkId(), req.getEntityId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -30,7 +30,7 @@ public class HandlerPlayerLoginReq extends PacketHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Load character from db
|
// Load character from db
|
||||||
GenshinPlayer player = DatabaseHelper.getPlayerById(session.getAccount().getPlayerId());
|
GenshinPlayer player = DatabaseHelper.getPlayerById(session.getAccount().getPlayerUid());
|
||||||
|
|
||||||
if (player == null) {
|
if (player == null) {
|
||||||
// Send packets
|
// Send packets
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package emu.grasscutter.server.packet.recv;
|
||||||
|
|
||||||
|
import emu.grasscutter.data.GenshinData;
|
||||||
|
import emu.grasscutter.data.custom.ScenePointEntry;
|
||||||
|
import emu.grasscutter.net.packet.Opcodes;
|
||||||
|
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||||
|
import emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq;
|
||||||
|
import emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp;
|
||||||
|
import emu.grasscutter.net.packet.PacketHandler;
|
||||||
|
import emu.grasscutter.server.game.GameSession;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketSceneTransToPointRsp;
|
||||||
|
import emu.grasscutter.utils.Position;
|
||||||
|
|
||||||
|
@Opcodes(PacketOpcodes.SceneTransToPointReq)
|
||||||
|
public class HandlerSceneTransToPointReq extends PacketHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||||
|
SceneTransToPointReq req = SceneTransToPointReq.parseFrom(payload);
|
||||||
|
|
||||||
|
String code = req.getSceneId() + "_" + req.getPointId();
|
||||||
|
ScenePointEntry scenePointEntry = GenshinData.getScenePointEntries().get(code);
|
||||||
|
|
||||||
|
if (scenePointEntry != null) {
|
||||||
|
float x = scenePointEntry.getPointData().getTranPos().getX();
|
||||||
|
float y = scenePointEntry.getPointData().getTranPos().getY();
|
||||||
|
float z = scenePointEntry.getPointData().getTranPos().getZ();
|
||||||
|
|
||||||
|
session.getPlayer().getWorld().transferPlayerToScene(session.getPlayer(), req.getSceneId(), new Position(x, y, z));
|
||||||
|
session.send(new PacketSceneTransToPointRsp(session.getPlayer(), req.getPointId(), req.getSceneId()));
|
||||||
|
} else {
|
||||||
|
session.send(new PacketSceneTransToPointRsp());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,7 +1,9 @@
|
|||||||
package emu.grasscutter.server.packet.recv;
|
package emu.grasscutter.server.packet.recv;
|
||||||
|
|
||||||
|
import emu.grasscutter.net.packet.GenshinPacket;
|
||||||
import emu.grasscutter.net.packet.Opcodes;
|
import emu.grasscutter.net.packet.Opcodes;
|
||||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||||
|
import emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify;
|
||||||
import emu.grasscutter.net.packet.PacketHandler;
|
import emu.grasscutter.net.packet.PacketHandler;
|
||||||
import emu.grasscutter.server.game.GameSession;
|
import emu.grasscutter.server.game.GameSession;
|
||||||
|
|
||||||
@ -10,7 +12,18 @@ public class HandlerSetEntityClientDataNotify extends PacketHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||||
// Auto template
|
// Skip if there is no one to broadcast it too
|
||||||
|
if (session.getPlayer().getScene().getPlayerCount() <= 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make sure packet is a valid proto before replaying it to the other players
|
||||||
|
SetEntityClientDataNotify notif = SetEntityClientDataNotify.parseFrom(payload);
|
||||||
|
|
||||||
|
GenshinPacket packet = new GenshinPacket(PacketOpcodes.SetEntityClientDataNotify, true);
|
||||||
|
packet.setData(notif);
|
||||||
|
|
||||||
|
session.getPlayer().getScene().broadcastPacketToOthers(session.getPlayer(), packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ public class HandlerSetPlayerBornDataReq extends PacketHandler {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// Save to db
|
// Save to db
|
||||||
DatabaseHelper.createPlayer(player, session.getAccount().getPlayerId());
|
DatabaseHelper.createPlayer(player, session.getAccount().getPlayerUid());
|
||||||
|
|
||||||
// Create avatar
|
// Create avatar
|
||||||
if (player.getAvatars().getAvatarCount() == 0) {
|
if (player.getAvatars().getAvatarCount() == 0) {
|
||||||
|
@ -8,7 +8,7 @@ import emu.grasscutter.net.proto.AbilityChangeNotifyOuterClass.AbilityChangeNoti
|
|||||||
public class PacketAbilityChangeNotify extends GenshinPacket {
|
public class PacketAbilityChangeNotify extends GenshinPacket {
|
||||||
|
|
||||||
public PacketAbilityChangeNotify(EntityAvatar entity) {
|
public PacketAbilityChangeNotify(EntityAvatar entity) {
|
||||||
super(PacketOpcodes.AbilityChangeNotify);
|
super(PacketOpcodes.AbilityChangeNotify, true);
|
||||||
|
|
||||||
AbilityChangeNotify proto = AbilityChangeNotify.newBuilder()
|
AbilityChangeNotify proto = AbilityChangeNotify.newBuilder()
|
||||||
.setEntityId(entity.getId())
|
.setEntityId(entity.getId())
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user