mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-06-19 22:15:02 +08:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
ad64d71165 | ||
|
e9f5d98466 | ||
|
08f361954a | ||
|
9671a76af2 | ||
|
08fdcf6ed4 | ||
|
21ff749dca | ||
|
070edd263a | ||
|
72c16d7ecb | ||
|
767e598bea | ||
|
57bb747118 | ||
|
d3bf5b585f | ||
|
a9ca80e490 | ||
|
210e9e9732 |
23
.github/workflows/protect_files.yml
vendored
Normal file
23
.github/workflows/protect_files.yml
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
name: Protect write-access files from being PR'd
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
branches:
|
||||
- development
|
||||
paths:
|
||||
- '.github/'
|
||||
- '.editorconfig'
|
||||
- 'CODE_OF_CONDUCT.md'
|
||||
- 'CONTRIBUTING.md'
|
||||
- 'LICENSE'
|
||||
|
||||
jobs:
|
||||
run:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: superbrothers/close-pull-request@v3
|
||||
with:
|
||||
comment: "This PR has been closed for modifying protected files. See `CONTIBUTING.md` for more information."
|
@ -21,3 +21,11 @@ Your code should follow the standards set below:
|
||||
- Dependencies that use a separate language (ex. Kotlin) that can run on a JVM are acceptable.
|
||||
- Dependencies that require the use of native code (ex. JNI) are prohibited.
|
||||
- Directly adding foreign code (other languages, ex. Kotlin) into the main codebase is prohibited.
|
||||
- Certain files and folders are forbidden to modify in Pull Requests and may only be changed by Write-Access members. The current list for this can be found in `.github/workflows/protect_files.yml`.
|
||||
|
||||
## Intellectual Property
|
||||
|
||||
Please avoid adding any direct references to the following, whenever possible:
|
||||
- Game names
|
||||
- Character names
|
||||
- Notable weapon names
|
||||
|
23
README.md
23
README.md
@ -45,28 +45,29 @@
|
||||
|
||||
½. Create an account using [server console command](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
|
||||
|
||||
1. Redirect traffic: (choose one)
|
||||
1. Redirect traffic: (choose one only)
|
||||
- mitmdump: `mitmdump -s proxy.py -k`
|
||||
|
||||
Trust CA certificate:
|
||||
- Trust CA certificate:
|
||||
|
||||
**Note:** The CA certificate is usually stored in `%USERPROFILE%\.mitmproxy`, or you can download it from `http://mitm.it`
|
||||
- The CA certificate is usually stored in `%USERPROFILE%\.mitmproxy`, double click `mitmproxy-ca-cert.cer` to [install](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) or...
|
||||
|
||||
Double click for [install](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) or ...
|
||||
- Via command line *(needs administration privileges)*
|
||||
|
||||
- Via command line (needs administration privileges)
|
||||
```shell
|
||||
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
|
||||
```
|
||||
|
||||
```shell
|
||||
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
|
||||
```
|
||||
|
||||
- Fiddler Classic: Run Fiddler Classic, turn on `Decrypt HTTPS traffic` in (Tools -> Options -> HTTPS) and change the default port in (Tools -> Options -> Connections) to anything other than `8888`, and load [this script](https://github.com/Grasscutters/Grasscutter/wiki/Resources#fiddler-classic-jscript) (copy and paste the script in the `FiddlerScript` tab).
|
||||
- Fiddler Classic: Run Fiddler Classic, turn on `Decrypt HTTPS traffic` in (Tools -> Options -> HTTPS) and change the default port in (Tools -> Options -> Connections) to anything other than `8888`, load [this script](https://github.com/Grasscutters/Grasscutter/wiki/Resources#fiddler-classic-jscript) (copy and paste the script in the `FiddlerScript` tab) and click the `Save Script` button.
|
||||
|
||||
- [Hosts file](https://github.com/Grasscutters/Grasscutter/wiki/Resources#hosts-file)
|
||||
|
||||
2. Set network proxy to `127.0.0.1:8080` or the proxy port you specified.
|
||||
|
||||
**You can also use `start.cmd` to start servers and proxy daemons automatically, but you have to set up JAVA_HOME enviroment and configure the `start_config.cmd` file.**
|
||||
- For mitmproxy: After setting up the network proxy and installing the certificate, check http://mitm.it/ if traffic is passing through mitmproxy.
|
||||
|
||||
**You can also use `start.cmd` to start servers and proxy daemons automatically, but you have to set up `JAVA_HOME` enviroment and configure the `start_config.cmd` file.**
|
||||
|
||||
### Building
|
||||
|
||||
@ -104,4 +105,4 @@ You can find the output jar in the root of the project folder.
|
||||
* If compiling wasn't successful, please check your JDK installation (JDK 17 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
|
||||
* Startup sequence: MongoDB > Grasscutter > Proxy daemon (mitmdump, fiddler, etc.) > Game
|
||||
* Startup sequence: MongoDB > Grasscutter > Proxy Daemon (mitmdump, fiddler, etc.) > Game
|
||||
|
@ -43,7 +43,7 @@ sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
|
||||
group = 'xyz.grasscutters'
|
||||
version = '1.3.1-dev'
|
||||
version = '1.3.1'
|
||||
|
||||
sourceCompatibility = 17
|
||||
targetCompatibility = 17
|
||||
|
@ -0,0 +1,677 @@
|
||||
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
// source: ActivityShopSheetInfo.proto
|
||||
|
||||
package emu.grasscutter.net.proto;
|
||||
|
||||
public final class ActivityShopSheetInfoOuterClass {
|
||||
private ActivityShopSheetInfoOuterClass() {}
|
||||
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 ActivityShopSheetInfoOrBuilder extends
|
||||
// @@protoc_insertion_point(interface_extends:ActivityShopSheetInfo)
|
||||
com.google.protobuf.MessageOrBuilder {
|
||||
|
||||
/**
|
||||
* <code>uint32 end_time = 1;</code>
|
||||
* @return The endTime.
|
||||
*/
|
||||
int getEndTime();
|
||||
|
||||
/**
|
||||
* <code>uint32 begin_time = 12;</code>
|
||||
* @return The beginTime.
|
||||
*/
|
||||
int getBeginTime();
|
||||
|
||||
/**
|
||||
* <code>uint32 sheet_id = 2;</code>
|
||||
* @return The sheetId.
|
||||
*/
|
||||
int getSheetId();
|
||||
}
|
||||
/**
|
||||
* Protobuf type {@code ActivityShopSheetInfo}
|
||||
*/
|
||||
public static final class ActivityShopSheetInfo extends
|
||||
com.google.protobuf.GeneratedMessageV3 implements
|
||||
// @@protoc_insertion_point(message_implements:ActivityShopSheetInfo)
|
||||
ActivityShopSheetInfoOrBuilder {
|
||||
private static final long serialVersionUID = 0L;
|
||||
// Use ActivityShopSheetInfo.newBuilder() to construct.
|
||||
private ActivityShopSheetInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||
super(builder);
|
||||
}
|
||||
private ActivityShopSheetInfo() {
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
@SuppressWarnings({"unused"})
|
||||
protected java.lang.Object newInstance(
|
||||
UnusedPrivateParameter unused) {
|
||||
return new ActivityShopSheetInfo();
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public final com.google.protobuf.UnknownFieldSet
|
||||
getUnknownFields() {
|
||||
return this.unknownFields;
|
||||
}
|
||||
private ActivityShopSheetInfo(
|
||||
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: {
|
||||
|
||||
endTime_ = input.readUInt32();
|
||||
break;
|
||||
}
|
||||
case 16: {
|
||||
|
||||
sheetId_ = input.readUInt32();
|
||||
break;
|
||||
}
|
||||
case 96: {
|
||||
|
||||
beginTime_ = input.readUInt32();
|
||||
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.ActivityShopSheetInfoOuterClass.internal_static_ActivityShopSheetInfo_descriptor;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internalGetFieldAccessorTable() {
|
||||
return emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.internal_static_ActivityShopSheetInfo_fieldAccessorTable
|
||||
.ensureFieldAccessorsInitialized(
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.class, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder.class);
|
||||
}
|
||||
|
||||
public static final int END_TIME_FIELD_NUMBER = 1;
|
||||
private int endTime_;
|
||||
/**
|
||||
* <code>uint32 end_time = 1;</code>
|
||||
* @return The endTime.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getEndTime() {
|
||||
return endTime_;
|
||||
}
|
||||
|
||||
public static final int BEGIN_TIME_FIELD_NUMBER = 12;
|
||||
private int beginTime_;
|
||||
/**
|
||||
* <code>uint32 begin_time = 12;</code>
|
||||
* @return The beginTime.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getBeginTime() {
|
||||
return beginTime_;
|
||||
}
|
||||
|
||||
public static final int SHEET_ID_FIELD_NUMBER = 2;
|
||||
private int sheetId_;
|
||||
/**
|
||||
* <code>uint32 sheet_id = 2;</code>
|
||||
* @return The sheetId.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getSheetId() {
|
||||
return sheetId_;
|
||||
}
|
||||
|
||||
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 (endTime_ != 0) {
|
||||
output.writeUInt32(1, endTime_);
|
||||
}
|
||||
if (sheetId_ != 0) {
|
||||
output.writeUInt32(2, sheetId_);
|
||||
}
|
||||
if (beginTime_ != 0) {
|
||||
output.writeUInt32(12, beginTime_);
|
||||
}
|
||||
unknownFields.writeTo(output);
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public int getSerializedSize() {
|
||||
int size = memoizedSize;
|
||||
if (size != -1) return size;
|
||||
|
||||
size = 0;
|
||||
if (endTime_ != 0) {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeUInt32Size(1, endTime_);
|
||||
}
|
||||
if (sheetId_ != 0) {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeUInt32Size(2, sheetId_);
|
||||
}
|
||||
if (beginTime_ != 0) {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeUInt32Size(12, beginTime_);
|
||||
}
|
||||
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.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo)) {
|
||||
return super.equals(obj);
|
||||
}
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo other = (emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo) obj;
|
||||
|
||||
if (getEndTime()
|
||||
!= other.getEndTime()) return false;
|
||||
if (getBeginTime()
|
||||
!= other.getBeginTime()) return false;
|
||||
if (getSheetId()
|
||||
!= other.getSheetId()) 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) + END_TIME_FIELD_NUMBER;
|
||||
hash = (53 * hash) + getEndTime();
|
||||
hash = (37 * hash) + BEGIN_TIME_FIELD_NUMBER;
|
||||
hash = (53 * hash) + getBeginTime();
|
||||
hash = (37 * hash) + SHEET_ID_FIELD_NUMBER;
|
||||
hash = (53 * hash) + getSheetId();
|
||||
hash = (29 * hash) + unknownFields.hashCode();
|
||||
memoizedHashCode = hash;
|
||||
return hash;
|
||||
}
|
||||
|
||||
public static emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo parseFrom(
|
||||
java.nio.ByteBuffer data)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo 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.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo parseFrom(
|
||||
com.google.protobuf.ByteString data)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo 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.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo parseFrom(byte[] data)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo parseFrom(
|
||||
byte[] data,
|
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data, extensionRegistry);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo parseFrom(java.io.InputStream input)
|
||||
throws java.io.IOException {
|
||||
return com.google.protobuf.GeneratedMessageV3
|
||||
.parseWithIOException(PARSER, input);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo 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.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo parseDelimitedFrom(java.io.InputStream input)
|
||||
throws java.io.IOException {
|
||||
return com.google.protobuf.GeneratedMessageV3
|
||||
.parseDelimitedWithIOException(PARSER, input);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo 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.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo parseFrom(
|
||||
com.google.protobuf.CodedInputStream input)
|
||||
throws java.io.IOException {
|
||||
return com.google.protobuf.GeneratedMessageV3
|
||||
.parseWithIOException(PARSER, input);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo 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.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo 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 ActivityShopSheetInfo}
|
||||
*/
|
||||
public static final class Builder extends
|
||||
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||
// @@protoc_insertion_point(builder_implements:ActivityShopSheetInfo)
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfoOrBuilder {
|
||||
public static final com.google.protobuf.Descriptors.Descriptor
|
||||
getDescriptor() {
|
||||
return emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.internal_static_ActivityShopSheetInfo_descriptor;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internalGetFieldAccessorTable() {
|
||||
return emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.internal_static_ActivityShopSheetInfo_fieldAccessorTable
|
||||
.ensureFieldAccessorsInitialized(
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.class, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder.class);
|
||||
}
|
||||
|
||||
// Construct using emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.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();
|
||||
endTime_ = 0;
|
||||
|
||||
beginTime_ = 0;
|
||||
|
||||
sheetId_ = 0;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public com.google.protobuf.Descriptors.Descriptor
|
||||
getDescriptorForType() {
|
||||
return emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.internal_static_ActivityShopSheetInfo_descriptor;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo getDefaultInstanceForType() {
|
||||
return emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.getDefaultInstance();
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo build() {
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo result = buildPartial();
|
||||
if (!result.isInitialized()) {
|
||||
throw newUninitializedMessageException(result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo buildPartial() {
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo result = new emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo(this);
|
||||
result.endTime_ = endTime_;
|
||||
result.beginTime_ = beginTime_;
|
||||
result.sheetId_ = sheetId_;
|
||||
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.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo) {
|
||||
return mergeFrom((emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo)other);
|
||||
} else {
|
||||
super.mergeFrom(other);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public Builder mergeFrom(emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo other) {
|
||||
if (other == emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.getDefaultInstance()) return this;
|
||||
if (other.getEndTime() != 0) {
|
||||
setEndTime(other.getEndTime());
|
||||
}
|
||||
if (other.getBeginTime() != 0) {
|
||||
setBeginTime(other.getBeginTime());
|
||||
}
|
||||
if (other.getSheetId() != 0) {
|
||||
setSheetId(other.getSheetId());
|
||||
}
|
||||
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.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo parsedMessage = null;
|
||||
try {
|
||||
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||
parsedMessage = (emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo) e.getUnfinishedMessage();
|
||||
throw e.unwrapIOException();
|
||||
} finally {
|
||||
if (parsedMessage != null) {
|
||||
mergeFrom(parsedMessage);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
private int endTime_ ;
|
||||
/**
|
||||
* <code>uint32 end_time = 1;</code>
|
||||
* @return The endTime.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getEndTime() {
|
||||
return endTime_;
|
||||
}
|
||||
/**
|
||||
* <code>uint32 end_time = 1;</code>
|
||||
* @param value The endTime to set.
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder setEndTime(int value) {
|
||||
|
||||
endTime_ = value;
|
||||
onChanged();
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>uint32 end_time = 1;</code>
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder clearEndTime() {
|
||||
|
||||
endTime_ = 0;
|
||||
onChanged();
|
||||
return this;
|
||||
}
|
||||
|
||||
private int beginTime_ ;
|
||||
/**
|
||||
* <code>uint32 begin_time = 12;</code>
|
||||
* @return The beginTime.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getBeginTime() {
|
||||
return beginTime_;
|
||||
}
|
||||
/**
|
||||
* <code>uint32 begin_time = 12;</code>
|
||||
* @param value The beginTime to set.
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder setBeginTime(int value) {
|
||||
|
||||
beginTime_ = value;
|
||||
onChanged();
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>uint32 begin_time = 12;</code>
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder clearBeginTime() {
|
||||
|
||||
beginTime_ = 0;
|
||||
onChanged();
|
||||
return this;
|
||||
}
|
||||
|
||||
private int sheetId_ ;
|
||||
/**
|
||||
* <code>uint32 sheet_id = 2;</code>
|
||||
* @return The sheetId.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getSheetId() {
|
||||
return sheetId_;
|
||||
}
|
||||
/**
|
||||
* <code>uint32 sheet_id = 2;</code>
|
||||
* @param value The sheetId to set.
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder setSheetId(int value) {
|
||||
|
||||
sheetId_ = value;
|
||||
onChanged();
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>uint32 sheet_id = 2;</code>
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder clearSheetId() {
|
||||
|
||||
sheetId_ = 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:ActivityShopSheetInfo)
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(class_scope:ActivityShopSheetInfo)
|
||||
private static final emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo DEFAULT_INSTANCE;
|
||||
static {
|
||||
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo();
|
||||
}
|
||||
|
||||
public static emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo getDefaultInstance() {
|
||||
return DEFAULT_INSTANCE;
|
||||
}
|
||||
|
||||
private static final com.google.protobuf.Parser<ActivityShopSheetInfo>
|
||||
PARSER = new com.google.protobuf.AbstractParser<ActivityShopSheetInfo>() {
|
||||
@java.lang.Override
|
||||
public ActivityShopSheetInfo parsePartialFrom(
|
||||
com.google.protobuf.CodedInputStream input,
|
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return new ActivityShopSheetInfo(input, extensionRegistry);
|
||||
}
|
||||
};
|
||||
|
||||
public static com.google.protobuf.Parser<ActivityShopSheetInfo> parser() {
|
||||
return PARSER;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public com.google.protobuf.Parser<ActivityShopSheetInfo> getParserForType() {
|
||||
return PARSER;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo getDefaultInstanceForType() {
|
||||
return DEFAULT_INSTANCE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static final com.google.protobuf.Descriptors.Descriptor
|
||||
internal_static_ActivityShopSheetInfo_descriptor;
|
||||
private static final
|
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internal_static_ActivityShopSheetInfo_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\033ActivityShopSheetInfo.proto\"O\n\025Activit" +
|
||||
"yShopSheetInfo\022\020\n\010end_time\030\001 \001(\r\022\022\n\nbegi" +
|
||||
"n_time\030\014 \001(\r\022\020\n\010sheet_id\030\002 \001(\rB\033\n\031emu.gr" +
|
||||
"asscutter.net.protob\006proto3"
|
||||
};
|
||||
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||
.internalBuildGeneratedFileFrom(descriptorData,
|
||||
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||
});
|
||||
internal_static_ActivityShopSheetInfo_descriptor =
|
||||
getDescriptor().getMessageTypes().get(0);
|
||||
internal_static_ActivityShopSheetInfo_fieldAccessorTable = new
|
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||
internal_static_ActivityShopSheetInfo_descriptor,
|
||||
new java.lang.String[] { "EndTime", "BeginTime", "SheetId", });
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(outer_class_scope)
|
||||
}
|
@ -0,0 +1,537 @@
|
||||
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
// source: GetActivityShopSheetInfoReq.proto
|
||||
|
||||
package emu.grasscutter.net.proto;
|
||||
|
||||
public final class GetActivityShopSheetInfoReqOuterClass {
|
||||
private GetActivityShopSheetInfoReqOuterClass() {}
|
||||
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 GetActivityShopSheetInfoReqOrBuilder extends
|
||||
// @@protoc_insertion_point(interface_extends:GetActivityShopSheetInfoReq)
|
||||
com.google.protobuf.MessageOrBuilder {
|
||||
|
||||
/**
|
||||
* <code>uint32 shop_type = 7;</code>
|
||||
* @return The shopType.
|
||||
*/
|
||||
int getShopType();
|
||||
}
|
||||
/**
|
||||
* Protobuf type {@code GetActivityShopSheetInfoReq}
|
||||
*/
|
||||
public static final class GetActivityShopSheetInfoReq extends
|
||||
com.google.protobuf.GeneratedMessageV3 implements
|
||||
// @@protoc_insertion_point(message_implements:GetActivityShopSheetInfoReq)
|
||||
GetActivityShopSheetInfoReqOrBuilder {
|
||||
private static final long serialVersionUID = 0L;
|
||||
// Use GetActivityShopSheetInfoReq.newBuilder() to construct.
|
||||
private GetActivityShopSheetInfoReq(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||
super(builder);
|
||||
}
|
||||
private GetActivityShopSheetInfoReq() {
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
@SuppressWarnings({"unused"})
|
||||
protected java.lang.Object newInstance(
|
||||
UnusedPrivateParameter unused) {
|
||||
return new GetActivityShopSheetInfoReq();
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public final com.google.protobuf.UnknownFieldSet
|
||||
getUnknownFields() {
|
||||
return this.unknownFields;
|
||||
}
|
||||
private GetActivityShopSheetInfoReq(
|
||||
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 56: {
|
||||
|
||||
shopType_ = input.readUInt32();
|
||||
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.GetActivityShopSheetInfoReqOuterClass.internal_static_GetActivityShopSheetInfoReq_descriptor;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internalGetFieldAccessorTable() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.internal_static_GetActivityShopSheetInfoReq_fieldAccessorTable
|
||||
.ensureFieldAccessorsInitialized(
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq.class, emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq.Builder.class);
|
||||
}
|
||||
|
||||
public static final int SHOP_TYPE_FIELD_NUMBER = 7;
|
||||
private int shopType_;
|
||||
/**
|
||||
* <code>uint32 shop_type = 7;</code>
|
||||
* @return The shopType.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getShopType() {
|
||||
return shopType_;
|
||||
}
|
||||
|
||||
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 (shopType_ != 0) {
|
||||
output.writeUInt32(7, shopType_);
|
||||
}
|
||||
unknownFields.writeTo(output);
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public int getSerializedSize() {
|
||||
int size = memoizedSize;
|
||||
if (size != -1) return size;
|
||||
|
||||
size = 0;
|
||||
if (shopType_ != 0) {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeUInt32Size(7, shopType_);
|
||||
}
|
||||
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.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq)) {
|
||||
return super.equals(obj);
|
||||
}
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq other = (emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq) obj;
|
||||
|
||||
if (getShopType()
|
||||
!= other.getShopType()) 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) + SHOP_TYPE_FIELD_NUMBER;
|
||||
hash = (53 * hash) + getShopType();
|
||||
hash = (29 * hash) + unknownFields.hashCode();
|
||||
memoizedHashCode = hash;
|
||||
return hash;
|
||||
}
|
||||
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq parseFrom(
|
||||
java.nio.ByteBuffer data)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq 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.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq parseFrom(
|
||||
com.google.protobuf.ByteString data)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq 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.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq parseFrom(byte[] data)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq parseFrom(
|
||||
byte[] data,
|
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data, extensionRegistry);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq parseFrom(java.io.InputStream input)
|
||||
throws java.io.IOException {
|
||||
return com.google.protobuf.GeneratedMessageV3
|
||||
.parseWithIOException(PARSER, input);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq 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.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq parseDelimitedFrom(java.io.InputStream input)
|
||||
throws java.io.IOException {
|
||||
return com.google.protobuf.GeneratedMessageV3
|
||||
.parseDelimitedWithIOException(PARSER, input);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq 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.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq parseFrom(
|
||||
com.google.protobuf.CodedInputStream input)
|
||||
throws java.io.IOException {
|
||||
return com.google.protobuf.GeneratedMessageV3
|
||||
.parseWithIOException(PARSER, input);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq 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.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq 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 GetActivityShopSheetInfoReq}
|
||||
*/
|
||||
public static final class Builder extends
|
||||
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||
// @@protoc_insertion_point(builder_implements:GetActivityShopSheetInfoReq)
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReqOrBuilder {
|
||||
public static final com.google.protobuf.Descriptors.Descriptor
|
||||
getDescriptor() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.internal_static_GetActivityShopSheetInfoReq_descriptor;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internalGetFieldAccessorTable() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.internal_static_GetActivityShopSheetInfoReq_fieldAccessorTable
|
||||
.ensureFieldAccessorsInitialized(
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq.class, emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq.Builder.class);
|
||||
}
|
||||
|
||||
// Construct using emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq.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();
|
||||
shopType_ = 0;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public com.google.protobuf.Descriptors.Descriptor
|
||||
getDescriptorForType() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.internal_static_GetActivityShopSheetInfoReq_descriptor;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq getDefaultInstanceForType() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq.getDefaultInstance();
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq build() {
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq result = buildPartial();
|
||||
if (!result.isInitialized()) {
|
||||
throw newUninitializedMessageException(result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq buildPartial() {
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq result = new emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq(this);
|
||||
result.shopType_ = shopType_;
|
||||
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.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq) {
|
||||
return mergeFrom((emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq)other);
|
||||
} else {
|
||||
super.mergeFrom(other);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public Builder mergeFrom(emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq other) {
|
||||
if (other == emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq.getDefaultInstance()) return this;
|
||||
if (other.getShopType() != 0) {
|
||||
setShopType(other.getShopType());
|
||||
}
|
||||
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.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq parsedMessage = null;
|
||||
try {
|
||||
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||
parsedMessage = (emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq) e.getUnfinishedMessage();
|
||||
throw e.unwrapIOException();
|
||||
} finally {
|
||||
if (parsedMessage != null) {
|
||||
mergeFrom(parsedMessage);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
private int shopType_ ;
|
||||
/**
|
||||
* <code>uint32 shop_type = 7;</code>
|
||||
* @return The shopType.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getShopType() {
|
||||
return shopType_;
|
||||
}
|
||||
/**
|
||||
* <code>uint32 shop_type = 7;</code>
|
||||
* @param value The shopType to set.
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder setShopType(int value) {
|
||||
|
||||
shopType_ = value;
|
||||
onChanged();
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>uint32 shop_type = 7;</code>
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder clearShopType() {
|
||||
|
||||
shopType_ = 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:GetActivityShopSheetInfoReq)
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(class_scope:GetActivityShopSheetInfoReq)
|
||||
private static final emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq DEFAULT_INSTANCE;
|
||||
static {
|
||||
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq();
|
||||
}
|
||||
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq getDefaultInstance() {
|
||||
return DEFAULT_INSTANCE;
|
||||
}
|
||||
|
||||
private static final com.google.protobuf.Parser<GetActivityShopSheetInfoReq>
|
||||
PARSER = new com.google.protobuf.AbstractParser<GetActivityShopSheetInfoReq>() {
|
||||
@java.lang.Override
|
||||
public GetActivityShopSheetInfoReq parsePartialFrom(
|
||||
com.google.protobuf.CodedInputStream input,
|
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return new GetActivityShopSheetInfoReq(input, extensionRegistry);
|
||||
}
|
||||
};
|
||||
|
||||
public static com.google.protobuf.Parser<GetActivityShopSheetInfoReq> parser() {
|
||||
return PARSER;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public com.google.protobuf.Parser<GetActivityShopSheetInfoReq> getParserForType() {
|
||||
return PARSER;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq getDefaultInstanceForType() {
|
||||
return DEFAULT_INSTANCE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static final com.google.protobuf.Descriptors.Descriptor
|
||||
internal_static_GetActivityShopSheetInfoReq_descriptor;
|
||||
private static final
|
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internal_static_GetActivityShopSheetInfoReq_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!GetActivityShopSheetInfoReq.proto\"0\n\033G" +
|
||||
"etActivityShopSheetInfoReq\022\021\n\tshop_type\030" +
|
||||
"\007 \001(\rB\033\n\031emu.grasscutter.net.protob\006prot" +
|
||||
"o3"
|
||||
};
|
||||
descriptor = com.google.protobuf.Descriptors.FileDescriptor
|
||||
.internalBuildGeneratedFileFrom(descriptorData,
|
||||
new com.google.protobuf.Descriptors.FileDescriptor[] {
|
||||
});
|
||||
internal_static_GetActivityShopSheetInfoReq_descriptor =
|
||||
getDescriptor().getMessageTypes().get(0);
|
||||
internal_static_GetActivityShopSheetInfoReq_fieldAccessorTable = new
|
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||
internal_static_GetActivityShopSheetInfoReq_descriptor,
|
||||
new java.lang.String[] { "ShopType", });
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(outer_class_scope)
|
||||
}
|
@ -0,0 +1,986 @@
|
||||
// Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
// source: GetActivityShopSheetInfoRsp.proto
|
||||
|
||||
package emu.grasscutter.net.proto;
|
||||
|
||||
public final class GetActivityShopSheetInfoRspOuterClass {
|
||||
private GetActivityShopSheetInfoRspOuterClass() {}
|
||||
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 GetActivityShopSheetInfoRspOrBuilder extends
|
||||
// @@protoc_insertion_point(interface_extends:GetActivityShopSheetInfoRsp)
|
||||
com.google.protobuf.MessageOrBuilder {
|
||||
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
java.util.List<emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo>
|
||||
getSheetInfoListList();
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo getSheetInfoList(int index);
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
int getSheetInfoListCount();
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
java.util.List<? extends emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfoOrBuilder>
|
||||
getSheetInfoListOrBuilderList();
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfoOrBuilder getSheetInfoListOrBuilder(
|
||||
int index);
|
||||
|
||||
/**
|
||||
* <code>uint32 shop_type = 8;</code>
|
||||
* @return The shopType.
|
||||
*/
|
||||
int getShopType();
|
||||
|
||||
/**
|
||||
* <code>int32 retcode = 13;</code>
|
||||
* @return The retcode.
|
||||
*/
|
||||
int getRetcode();
|
||||
}
|
||||
/**
|
||||
* Protobuf type {@code GetActivityShopSheetInfoRsp}
|
||||
*/
|
||||
public static final class GetActivityShopSheetInfoRsp extends
|
||||
com.google.protobuf.GeneratedMessageV3 implements
|
||||
// @@protoc_insertion_point(message_implements:GetActivityShopSheetInfoRsp)
|
||||
GetActivityShopSheetInfoRspOrBuilder {
|
||||
private static final long serialVersionUID = 0L;
|
||||
// Use GetActivityShopSheetInfoRsp.newBuilder() to construct.
|
||||
private GetActivityShopSheetInfoRsp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
|
||||
super(builder);
|
||||
}
|
||||
private GetActivityShopSheetInfoRsp() {
|
||||
sheetInfoList_ = java.util.Collections.emptyList();
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
@SuppressWarnings({"unused"})
|
||||
protected java.lang.Object newInstance(
|
||||
UnusedPrivateParameter unused) {
|
||||
return new GetActivityShopSheetInfoRsp();
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public final com.google.protobuf.UnknownFieldSet
|
||||
getUnknownFields() {
|
||||
return this.unknownFields;
|
||||
}
|
||||
private GetActivityShopSheetInfoRsp(
|
||||
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 50: {
|
||||
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
|
||||
sheetInfoList_ = new java.util.ArrayList<emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo>();
|
||||
mutable_bitField0_ |= 0x00000001;
|
||||
}
|
||||
sheetInfoList_.add(
|
||||
input.readMessage(emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.parser(), extensionRegistry));
|
||||
break;
|
||||
}
|
||||
case 64: {
|
||||
|
||||
shopType_ = input.readUInt32();
|
||||
break;
|
||||
}
|
||||
case 104: {
|
||||
|
||||
retcode_ = input.readInt32();
|
||||
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 {
|
||||
if (((mutable_bitField0_ & 0x00000001) != 0)) {
|
||||
sheetInfoList_ = java.util.Collections.unmodifiableList(sheetInfoList_);
|
||||
}
|
||||
this.unknownFields = unknownFields.build();
|
||||
makeExtensionsImmutable();
|
||||
}
|
||||
}
|
||||
public static final com.google.protobuf.Descriptors.Descriptor
|
||||
getDescriptor() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.internal_static_GetActivityShopSheetInfoRsp_descriptor;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internalGetFieldAccessorTable() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.internal_static_GetActivityShopSheetInfoRsp_fieldAccessorTable
|
||||
.ensureFieldAccessorsInitialized(
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp.class, emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp.Builder.class);
|
||||
}
|
||||
|
||||
public static final int SHEET_INFO_LIST_FIELD_NUMBER = 6;
|
||||
private java.util.List<emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo> sheetInfoList_;
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
@java.lang.Override
|
||||
public java.util.List<emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo> getSheetInfoListList() {
|
||||
return sheetInfoList_;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
@java.lang.Override
|
||||
public java.util.List<? extends emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfoOrBuilder>
|
||||
getSheetInfoListOrBuilderList() {
|
||||
return sheetInfoList_;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getSheetInfoListCount() {
|
||||
return sheetInfoList_.size();
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo getSheetInfoList(int index) {
|
||||
return sheetInfoList_.get(index);
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfoOrBuilder getSheetInfoListOrBuilder(
|
||||
int index) {
|
||||
return sheetInfoList_.get(index);
|
||||
}
|
||||
|
||||
public static final int SHOP_TYPE_FIELD_NUMBER = 8;
|
||||
private int shopType_;
|
||||
/**
|
||||
* <code>uint32 shop_type = 8;</code>
|
||||
* @return The shopType.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getShopType() {
|
||||
return shopType_;
|
||||
}
|
||||
|
||||
public static final int RETCODE_FIELD_NUMBER = 13;
|
||||
private int retcode_;
|
||||
/**
|
||||
* <code>int32 retcode = 13;</code>
|
||||
* @return The retcode.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getRetcode() {
|
||||
return retcode_;
|
||||
}
|
||||
|
||||
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 {
|
||||
for (int i = 0; i < sheetInfoList_.size(); i++) {
|
||||
output.writeMessage(6, sheetInfoList_.get(i));
|
||||
}
|
||||
if (shopType_ != 0) {
|
||||
output.writeUInt32(8, shopType_);
|
||||
}
|
||||
if (retcode_ != 0) {
|
||||
output.writeInt32(13, retcode_);
|
||||
}
|
||||
unknownFields.writeTo(output);
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public int getSerializedSize() {
|
||||
int size = memoizedSize;
|
||||
if (size != -1) return size;
|
||||
|
||||
size = 0;
|
||||
for (int i = 0; i < sheetInfoList_.size(); i++) {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeMessageSize(6, sheetInfoList_.get(i));
|
||||
}
|
||||
if (shopType_ != 0) {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeUInt32Size(8, shopType_);
|
||||
}
|
||||
if (retcode_ != 0) {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeInt32Size(13, retcode_);
|
||||
}
|
||||
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.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp)) {
|
||||
return super.equals(obj);
|
||||
}
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp other = (emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp) obj;
|
||||
|
||||
if (!getSheetInfoListList()
|
||||
.equals(other.getSheetInfoListList())) return false;
|
||||
if (getShopType()
|
||||
!= other.getShopType()) return false;
|
||||
if (getRetcode()
|
||||
!= other.getRetcode()) 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 (getSheetInfoListCount() > 0) {
|
||||
hash = (37 * hash) + SHEET_INFO_LIST_FIELD_NUMBER;
|
||||
hash = (53 * hash) + getSheetInfoListList().hashCode();
|
||||
}
|
||||
hash = (37 * hash) + SHOP_TYPE_FIELD_NUMBER;
|
||||
hash = (53 * hash) + getShopType();
|
||||
hash = (37 * hash) + RETCODE_FIELD_NUMBER;
|
||||
hash = (53 * hash) + getRetcode();
|
||||
hash = (29 * hash) + unknownFields.hashCode();
|
||||
memoizedHashCode = hash;
|
||||
return hash;
|
||||
}
|
||||
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp parseFrom(
|
||||
java.nio.ByteBuffer data)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp 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.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp parseFrom(
|
||||
com.google.protobuf.ByteString data)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp 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.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp parseFrom(byte[] data)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp parseFrom(
|
||||
byte[] data,
|
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return PARSER.parseFrom(data, extensionRegistry);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp parseFrom(java.io.InputStream input)
|
||||
throws java.io.IOException {
|
||||
return com.google.protobuf.GeneratedMessageV3
|
||||
.parseWithIOException(PARSER, input);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp 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.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp parseDelimitedFrom(java.io.InputStream input)
|
||||
throws java.io.IOException {
|
||||
return com.google.protobuf.GeneratedMessageV3
|
||||
.parseDelimitedWithIOException(PARSER, input);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp 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.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp parseFrom(
|
||||
com.google.protobuf.CodedInputStream input)
|
||||
throws java.io.IOException {
|
||||
return com.google.protobuf.GeneratedMessageV3
|
||||
.parseWithIOException(PARSER, input);
|
||||
}
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp 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.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp 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 GetActivityShopSheetInfoRsp}
|
||||
*/
|
||||
public static final class Builder extends
|
||||
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
|
||||
// @@protoc_insertion_point(builder_implements:GetActivityShopSheetInfoRsp)
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRspOrBuilder {
|
||||
public static final com.google.protobuf.Descriptors.Descriptor
|
||||
getDescriptor() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.internal_static_GetActivityShopSheetInfoRsp_descriptor;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internalGetFieldAccessorTable() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.internal_static_GetActivityShopSheetInfoRsp_fieldAccessorTable
|
||||
.ensureFieldAccessorsInitialized(
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp.class, emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp.Builder.class);
|
||||
}
|
||||
|
||||
// Construct using emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp.newBuilder()
|
||||
private Builder() {
|
||||
maybeForceBuilderInitialization();
|
||||
}
|
||||
|
||||
private Builder(
|
||||
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
|
||||
super(parent);
|
||||
maybeForceBuilderInitialization();
|
||||
}
|
||||
private void maybeForceBuilderInitialization() {
|
||||
if (com.google.protobuf.GeneratedMessageV3
|
||||
.alwaysUseFieldBuilders) {
|
||||
getSheetInfoListFieldBuilder();
|
||||
}
|
||||
}
|
||||
@java.lang.Override
|
||||
public Builder clear() {
|
||||
super.clear();
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
sheetInfoList_ = java.util.Collections.emptyList();
|
||||
bitField0_ = (bitField0_ & ~0x00000001);
|
||||
} else {
|
||||
sheetInfoListBuilder_.clear();
|
||||
}
|
||||
shopType_ = 0;
|
||||
|
||||
retcode_ = 0;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public com.google.protobuf.Descriptors.Descriptor
|
||||
getDescriptorForType() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.internal_static_GetActivityShopSheetInfoRsp_descriptor;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp getDefaultInstanceForType() {
|
||||
return emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp.getDefaultInstance();
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp build() {
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp result = buildPartial();
|
||||
if (!result.isInitialized()) {
|
||||
throw newUninitializedMessageException(result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp buildPartial() {
|
||||
emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp result = new emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp(this);
|
||||
int from_bitField0_ = bitField0_;
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
if (((bitField0_ & 0x00000001) != 0)) {
|
||||
sheetInfoList_ = java.util.Collections.unmodifiableList(sheetInfoList_);
|
||||
bitField0_ = (bitField0_ & ~0x00000001);
|
||||
}
|
||||
result.sheetInfoList_ = sheetInfoList_;
|
||||
} else {
|
||||
result.sheetInfoList_ = sheetInfoListBuilder_.build();
|
||||
}
|
||||
result.shopType_ = shopType_;
|
||||
result.retcode_ = retcode_;
|
||||
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.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp) {
|
||||
return mergeFrom((emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp)other);
|
||||
} else {
|
||||
super.mergeFrom(other);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public Builder mergeFrom(emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp other) {
|
||||
if (other == emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp.getDefaultInstance()) return this;
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
if (!other.sheetInfoList_.isEmpty()) {
|
||||
if (sheetInfoList_.isEmpty()) {
|
||||
sheetInfoList_ = other.sheetInfoList_;
|
||||
bitField0_ = (bitField0_ & ~0x00000001);
|
||||
} else {
|
||||
ensureSheetInfoListIsMutable();
|
||||
sheetInfoList_.addAll(other.sheetInfoList_);
|
||||
}
|
||||
onChanged();
|
||||
}
|
||||
} else {
|
||||
if (!other.sheetInfoList_.isEmpty()) {
|
||||
if (sheetInfoListBuilder_.isEmpty()) {
|
||||
sheetInfoListBuilder_.dispose();
|
||||
sheetInfoListBuilder_ = null;
|
||||
sheetInfoList_ = other.sheetInfoList_;
|
||||
bitField0_ = (bitField0_ & ~0x00000001);
|
||||
sheetInfoListBuilder_ =
|
||||
com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
|
||||
getSheetInfoListFieldBuilder() : null;
|
||||
} else {
|
||||
sheetInfoListBuilder_.addAllMessages(other.sheetInfoList_);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (other.getShopType() != 0) {
|
||||
setShopType(other.getShopType());
|
||||
}
|
||||
if (other.getRetcode() != 0) {
|
||||
setRetcode(other.getRetcode());
|
||||
}
|
||||
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.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp parsedMessage = null;
|
||||
try {
|
||||
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
|
||||
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
|
||||
parsedMessage = (emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp) e.getUnfinishedMessage();
|
||||
throw e.unwrapIOException();
|
||||
} finally {
|
||||
if (parsedMessage != null) {
|
||||
mergeFrom(parsedMessage);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
private int bitField0_;
|
||||
|
||||
private java.util.List<emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo> sheetInfoList_ =
|
||||
java.util.Collections.emptyList();
|
||||
private void ensureSheetInfoListIsMutable() {
|
||||
if (!((bitField0_ & 0x00000001) != 0)) {
|
||||
sheetInfoList_ = new java.util.ArrayList<emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo>(sheetInfoList_);
|
||||
bitField0_ |= 0x00000001;
|
||||
}
|
||||
}
|
||||
|
||||
private com.google.protobuf.RepeatedFieldBuilderV3<
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfoOrBuilder> sheetInfoListBuilder_;
|
||||
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public java.util.List<emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo> getSheetInfoListList() {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
return java.util.Collections.unmodifiableList(sheetInfoList_);
|
||||
} else {
|
||||
return sheetInfoListBuilder_.getMessageList();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public int getSheetInfoListCount() {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
return sheetInfoList_.size();
|
||||
} else {
|
||||
return sheetInfoListBuilder_.getCount();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo getSheetInfoList(int index) {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
return sheetInfoList_.get(index);
|
||||
} else {
|
||||
return sheetInfoListBuilder_.getMessage(index);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public Builder setSheetInfoList(
|
||||
int index, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo value) {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
if (value == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
ensureSheetInfoListIsMutable();
|
||||
sheetInfoList_.set(index, value);
|
||||
onChanged();
|
||||
} else {
|
||||
sheetInfoListBuilder_.setMessage(index, value);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public Builder setSheetInfoList(
|
||||
int index, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder builderForValue) {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
ensureSheetInfoListIsMutable();
|
||||
sheetInfoList_.set(index, builderForValue.build());
|
||||
onChanged();
|
||||
} else {
|
||||
sheetInfoListBuilder_.setMessage(index, builderForValue.build());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public Builder addSheetInfoList(emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo value) {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
if (value == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
ensureSheetInfoListIsMutable();
|
||||
sheetInfoList_.add(value);
|
||||
onChanged();
|
||||
} else {
|
||||
sheetInfoListBuilder_.addMessage(value);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public Builder addSheetInfoList(
|
||||
int index, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo value) {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
if (value == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
ensureSheetInfoListIsMutable();
|
||||
sheetInfoList_.add(index, value);
|
||||
onChanged();
|
||||
} else {
|
||||
sheetInfoListBuilder_.addMessage(index, value);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public Builder addSheetInfoList(
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder builderForValue) {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
ensureSheetInfoListIsMutable();
|
||||
sheetInfoList_.add(builderForValue.build());
|
||||
onChanged();
|
||||
} else {
|
||||
sheetInfoListBuilder_.addMessage(builderForValue.build());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public Builder addSheetInfoList(
|
||||
int index, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder builderForValue) {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
ensureSheetInfoListIsMutable();
|
||||
sheetInfoList_.add(index, builderForValue.build());
|
||||
onChanged();
|
||||
} else {
|
||||
sheetInfoListBuilder_.addMessage(index, builderForValue.build());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public Builder addAllSheetInfoList(
|
||||
java.lang.Iterable<? extends emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo> values) {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
ensureSheetInfoListIsMutable();
|
||||
com.google.protobuf.AbstractMessageLite.Builder.addAll(
|
||||
values, sheetInfoList_);
|
||||
onChanged();
|
||||
} else {
|
||||
sheetInfoListBuilder_.addAllMessages(values);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public Builder clearSheetInfoList() {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
sheetInfoList_ = java.util.Collections.emptyList();
|
||||
bitField0_ = (bitField0_ & ~0x00000001);
|
||||
onChanged();
|
||||
} else {
|
||||
sheetInfoListBuilder_.clear();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public Builder removeSheetInfoList(int index) {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
ensureSheetInfoListIsMutable();
|
||||
sheetInfoList_.remove(index);
|
||||
onChanged();
|
||||
} else {
|
||||
sheetInfoListBuilder_.remove(index);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder getSheetInfoListBuilder(
|
||||
int index) {
|
||||
return getSheetInfoListFieldBuilder().getBuilder(index);
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfoOrBuilder getSheetInfoListOrBuilder(
|
||||
int index) {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
return sheetInfoList_.get(index); } else {
|
||||
return sheetInfoListBuilder_.getMessageOrBuilder(index);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public java.util.List<? extends emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfoOrBuilder>
|
||||
getSheetInfoListOrBuilderList() {
|
||||
if (sheetInfoListBuilder_ != null) {
|
||||
return sheetInfoListBuilder_.getMessageOrBuilderList();
|
||||
} else {
|
||||
return java.util.Collections.unmodifiableList(sheetInfoList_);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder addSheetInfoListBuilder() {
|
||||
return getSheetInfoListFieldBuilder().addBuilder(
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.getDefaultInstance());
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder addSheetInfoListBuilder(
|
||||
int index) {
|
||||
return getSheetInfoListFieldBuilder().addBuilder(
|
||||
index, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.getDefaultInstance());
|
||||
}
|
||||
/**
|
||||
* <code>repeated .ActivityShopSheetInfo sheet_info_list = 6;</code>
|
||||
*/
|
||||
public java.util.List<emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder>
|
||||
getSheetInfoListBuilderList() {
|
||||
return getSheetInfoListFieldBuilder().getBuilderList();
|
||||
}
|
||||
private com.google.protobuf.RepeatedFieldBuilderV3<
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfoOrBuilder>
|
||||
getSheetInfoListFieldBuilder() {
|
||||
if (sheetInfoListBuilder_ == null) {
|
||||
sheetInfoListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo.Builder, emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfoOrBuilder>(
|
||||
sheetInfoList_,
|
||||
((bitField0_ & 0x00000001) != 0),
|
||||
getParentForChildren(),
|
||||
isClean());
|
||||
sheetInfoList_ = null;
|
||||
}
|
||||
return sheetInfoListBuilder_;
|
||||
}
|
||||
|
||||
private int shopType_ ;
|
||||
/**
|
||||
* <code>uint32 shop_type = 8;</code>
|
||||
* @return The shopType.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getShopType() {
|
||||
return shopType_;
|
||||
}
|
||||
/**
|
||||
* <code>uint32 shop_type = 8;</code>
|
||||
* @param value The shopType to set.
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder setShopType(int value) {
|
||||
|
||||
shopType_ = value;
|
||||
onChanged();
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* <code>uint32 shop_type = 8;</code>
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder clearShopType() {
|
||||
|
||||
shopType_ = 0;
|
||||
onChanged();
|
||||
return this;
|
||||
}
|
||||
|
||||
private int retcode_ ;
|
||||
/**
|
||||
* <code>int32 retcode = 13;</code>
|
||||
* @return The retcode.
|
||||
*/
|
||||
@java.lang.Override
|
||||
public int getRetcode() {
|
||||
return retcode_;
|
||||
}
|
||||
/**
|
||||
* <code>int32 retcode = 13;</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 = 13;</code>
|
||||
* @return This builder for chaining.
|
||||
*/
|
||||
public Builder clearRetcode() {
|
||||
|
||||
retcode_ = 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:GetActivityShopSheetInfoRsp)
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(class_scope:GetActivityShopSheetInfoRsp)
|
||||
private static final emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp DEFAULT_INSTANCE;
|
||||
static {
|
||||
DEFAULT_INSTANCE = new emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp();
|
||||
}
|
||||
|
||||
public static emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp getDefaultInstance() {
|
||||
return DEFAULT_INSTANCE;
|
||||
}
|
||||
|
||||
private static final com.google.protobuf.Parser<GetActivityShopSheetInfoRsp>
|
||||
PARSER = new com.google.protobuf.AbstractParser<GetActivityShopSheetInfoRsp>() {
|
||||
@java.lang.Override
|
||||
public GetActivityShopSheetInfoRsp parsePartialFrom(
|
||||
com.google.protobuf.CodedInputStream input,
|
||||
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
|
||||
throws com.google.protobuf.InvalidProtocolBufferException {
|
||||
return new GetActivityShopSheetInfoRsp(input, extensionRegistry);
|
||||
}
|
||||
};
|
||||
|
||||
public static com.google.protobuf.Parser<GetActivityShopSheetInfoRsp> parser() {
|
||||
return PARSER;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public com.google.protobuf.Parser<GetActivityShopSheetInfoRsp> getParserForType() {
|
||||
return PARSER;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
public emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp getDefaultInstanceForType() {
|
||||
return DEFAULT_INSTANCE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static final com.google.protobuf.Descriptors.Descriptor
|
||||
internal_static_GetActivityShopSheetInfoRsp_descriptor;
|
||||
private static final
|
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
|
||||
internal_static_GetActivityShopSheetInfoRsp_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!GetActivityShopSheetInfoRsp.proto\032\033Act" +
|
||||
"ivityShopSheetInfo.proto\"r\n\033GetActivityS" +
|
||||
"hopSheetInfoRsp\022/\n\017sheet_info_list\030\006 \003(\013" +
|
||||
"2\026.ActivityShopSheetInfo\022\021\n\tshop_type\030\010 " +
|
||||
"\001(\r\022\017\n\007retcode\030\r \001(\005B\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.ActivityShopSheetInfoOuterClass.getDescriptor(),
|
||||
});
|
||||
internal_static_GetActivityShopSheetInfoRsp_descriptor =
|
||||
getDescriptor().getMessageTypes().get(0);
|
||||
internal_static_GetActivityShopSheetInfoRsp_fieldAccessorTable = new
|
||||
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
|
||||
internal_static_GetActivityShopSheetInfoRsp_descriptor,
|
||||
new java.lang.String[] { "SheetInfoList", "ShopType", "Retcode", });
|
||||
emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.getDescriptor();
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(outer_class_scope)
|
||||
}
|
52
src/main/java/emu/grasscutter/command/CommandHelpers.java
Normal file
52
src/main/java/emu/grasscutter/command/CommandHelpers.java
Normal file
@ -0,0 +1,52 @@
|
||||
package emu.grasscutter.command;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class CommandHelpers {
|
||||
public static final Pattern lvlRegex = Pattern.compile("l(?:vl?)?(\\d+)"); // Java doesn't have raw string literals :(
|
||||
public static final Pattern amountRegex = Pattern.compile("((?<=x)\\d+|\\d+(?=x)(?!x\\d))");
|
||||
public static final Pattern refineRegex = Pattern.compile("r(\\d+)");
|
||||
public static final Pattern rankRegex = Pattern.compile("(\\d+)\\*");
|
||||
public static final Pattern constellationRegex = Pattern.compile("c(\\d+)");
|
||||
public static final Pattern stateRegex = Pattern.compile("state(\\d+)");
|
||||
public static final Pattern blockRegex = Pattern.compile("blk(\\d+)");
|
||||
public static final Pattern groupRegex = Pattern.compile("grp(\\d+)");
|
||||
public static final Pattern configRegex = Pattern.compile("cfg(\\d+)");
|
||||
public static final Pattern hpRegex = Pattern.compile("hp(\\d+)");
|
||||
public static final Pattern maxHPRegex = Pattern.compile("maxhp(\\d+)");
|
||||
public static final Pattern atkRegex = Pattern.compile("atk(\\d+)");
|
||||
public static final Pattern defRegex = Pattern.compile("def(\\d+)");
|
||||
public static final Pattern aiRegex = Pattern.compile("ai(\\d+)");
|
||||
|
||||
public static int matchIntOrNeg(Pattern pattern, String arg) {
|
||||
Matcher match = pattern.matcher(arg);
|
||||
if (match.find()) {
|
||||
return Integer.parseInt(match.group(1)); // This should be exception-safe as only \d+ can be passed to it (i.e. non-empty string of pure digits)
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static <T> List<String> parseIntParameters(List<String> args, @Nonnull T params, Map<Pattern, BiConsumer<T, Integer>> map) {
|
||||
for (int i = args.size() - 1; i >= 0; i--) {
|
||||
String arg = args.get(i).toLowerCase();
|
||||
boolean deleteArg = false;
|
||||
int argNum;
|
||||
for (var entry : map.entrySet()) {
|
||||
if ((argNum = matchIntOrNeg(entry.getKey(), arg)) != -1) {
|
||||
entry.getValue().accept(params, argNum);
|
||||
deleteArg = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (deleteArg) {
|
||||
args.remove(i);
|
||||
}
|
||||
}
|
||||
return args;
|
||||
}
|
||||
}
|
@ -6,35 +6,34 @@ import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.inventory.Inventory;
|
||||
import emu.grasscutter.game.inventory.ItemType;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static emu.grasscutter.command.CommandHelpers.*;
|
||||
|
||||
@Command(
|
||||
label = "clear",
|
||||
usage = {"(all|wp|art|mat) [lv<max level>] [r<max refinement>] [<max rarity>*]"},
|
||||
permission = "player.clearinv",
|
||||
permissionTargeted = "player.clearinv.others")
|
||||
public final class ClearCommand implements CommandHandler {
|
||||
private static Pattern lvlRegex = Pattern.compile("l(?:vl?)?(\\d+)"); // Java doesn't have raw string literals :(
|
||||
private static Pattern refineRegex = Pattern.compile("r(\\d+)");
|
||||
private static Pattern rankRegex = Pattern.compile("(\\d+)\\*");
|
||||
|
||||
private static int matchIntOrNeg(Pattern pattern, String arg) {
|
||||
Matcher match = pattern.matcher(arg);
|
||||
if (match.find()) {
|
||||
return Integer.parseInt(match.group(1)); // This should be exception-safe as only \d+ can be passed to it (i.e. non-empty string of pure digits)
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
private static final Map<Pattern, BiConsumer<ClearItemParameters, Integer>> intCommandHandlers = Map.ofEntries(
|
||||
Map.entry(lvlRegex, ClearItemParameters::setLvl),
|
||||
Map.entry(refineRegex, ClearItemParameters::setRefinement),
|
||||
Map.entry(rankRegex, ClearItemParameters::setRank)
|
||||
);
|
||||
|
||||
private static class ClearItemParameters {
|
||||
public int lvl = 1;
|
||||
public int refinement = 1;
|
||||
public int rank = 4;
|
||||
};
|
||||
@Setter public int lvl = 1;
|
||||
@Setter public int refinement = 1;
|
||||
@Setter public int rank = 4;
|
||||
}
|
||||
|
||||
private Stream<GameItem> getOther(ItemType type, Inventory playerInventory, ClearItemParameters param) {
|
||||
return playerInventory.getItems().values().stream()
|
||||
@ -59,28 +58,8 @@ public final class ClearCommand implements CommandHandler {
|
||||
Inventory playerInventory = targetPlayer.getInventory();
|
||||
ClearItemParameters param = new ClearItemParameters();
|
||||
|
||||
// Extract any tagged arguments (e.g. "lv90", "x100", "r5")
|
||||
for (int i = args.size() - 1; i >= 0; i--) { // Reverse iteration as we are deleting elements
|
||||
String arg = args.get(i).toLowerCase();
|
||||
boolean deleteArg = false;
|
||||
int argNum;
|
||||
// Note that a single argument can actually match all of these, e.g. "lv90r5*"
|
||||
if ((argNum = matchIntOrNeg(lvlRegex, arg)) != -1) {
|
||||
param.lvl = argNum;
|
||||
deleteArg = true;
|
||||
}
|
||||
if ((argNum = matchIntOrNeg(refineRegex, arg)) != -1) {
|
||||
param.refinement = argNum;
|
||||
deleteArg = true;
|
||||
}
|
||||
if ((argNum = matchIntOrNeg(rankRegex, arg)) != -1) {
|
||||
param.rank = argNum;
|
||||
deleteArg = true;
|
||||
}
|
||||
if (deleteArg) {
|
||||
args.remove(i);
|
||||
}
|
||||
}
|
||||
// Extract any tagged int arguments (e.g. "lv90", "x100", "r5")
|
||||
parseIntParameters(args, param, intCommandHandlers);
|
||||
|
||||
if (args.size() < 1) {
|
||||
sendUsageMessage(sender);
|
||||
|
@ -1,6 +1,5 @@
|
||||
package emu.grasscutter.command.commands;
|
||||
|
||||
import emu.grasscutter.GameConstants;
|
||||
import emu.grasscutter.command.Command;
|
||||
import emu.grasscutter.command.CommandHandler;
|
||||
import emu.grasscutter.data.GameData;
|
||||
@ -16,13 +15,16 @@ import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.game.props.FightProperty;
|
||||
import emu.grasscutter.utils.SparseSet;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static emu.grasscutter.command.CommandHelpers.*;
|
||||
|
||||
@Command(
|
||||
label = "give",
|
||||
aliases = {"g", "item", "giveitem"},
|
||||
@ -33,20 +35,7 @@ import java.util.regex.Pattern;
|
||||
permissionTargeted = "player.give.others",
|
||||
threading = true)
|
||||
public final class GiveCommand implements CommandHandler {
|
||||
private static Pattern lvlRegex = Pattern.compile("l(?:vl?)?(\\d+)"); // Java doesn't have raw string literals :(
|
||||
private static Pattern refineRegex = Pattern.compile("r(\\d+)");
|
||||
private static Pattern constellationRegex = Pattern.compile("c(\\d+)");
|
||||
private static Pattern amountRegex = Pattern.compile("((?<=x)\\d+|\\d+(?=x)(?!x\\d))");
|
||||
|
||||
private static int matchIntOrNeg(Pattern pattern, String arg) {
|
||||
Matcher match = pattern.matcher(arg);
|
||||
if (match.find()) {
|
||||
return Integer.parseInt(match.group(1)); // This should be exception-safe as only \d+ can be passed to it (i.e. non-empty string of pure digits)
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
private static enum GiveAllType {
|
||||
private enum GiveAllType {
|
||||
NONE,
|
||||
ALL,
|
||||
WEAPONS,
|
||||
@ -54,48 +43,31 @@ public final class GiveCommand implements CommandHandler {
|
||||
AVATARS
|
||||
}
|
||||
|
||||
private static final Map<Pattern, BiConsumer<GiveItemParameters, Integer>> intCommandHandlers = Map.ofEntries(
|
||||
Map.entry(lvlRegex, GiveItemParameters::setLvl),
|
||||
Map.entry(refineRegex, GiveItemParameters::setRefinement),
|
||||
Map.entry(amountRegex, GiveItemParameters::setAmount),
|
||||
Map.entry(constellationRegex, GiveItemParameters::setConstellation)
|
||||
);
|
||||
|
||||
private static class GiveItemParameters {
|
||||
public int id;
|
||||
public int lvl = 0;
|
||||
public int amount = 1;
|
||||
public int refinement = 1;
|
||||
public int constellation = -1;
|
||||
@Setter public int lvl = 0;
|
||||
@Setter public int amount = 1;
|
||||
@Setter public int refinement = 1;
|
||||
@Setter public int constellation = -1;
|
||||
public int mainPropId = -1;
|
||||
public List<Integer> appendPropIdList;
|
||||
public ItemData data;
|
||||
public AvatarData avatarData;
|
||||
public GiveAllType giveAllType = GiveAllType.NONE;
|
||||
};
|
||||
}
|
||||
|
||||
private GiveItemParameters parseArgs(Player sender, List<String> args) throws IllegalArgumentException {
|
||||
GiveItemParameters param = new GiveItemParameters();
|
||||
|
||||
// Extract any tagged arguments (e.g. "lv90", "x100", "r5")
|
||||
for (int i = args.size() - 1; i >= 0; i--) { // Reverse iteration as we are deleting elements
|
||||
String arg = args.get(i).toLowerCase();
|
||||
boolean deleteArg = false;
|
||||
int argNum;
|
||||
// Note that a single argument can actually match all of these, e.g. "lv90r5x100"
|
||||
if ((argNum = matchIntOrNeg(lvlRegex, arg)) != -1) {
|
||||
param.lvl = argNum;
|
||||
deleteArg = true;
|
||||
}
|
||||
if ((argNum = matchIntOrNeg(refineRegex, arg)) != -1) {
|
||||
param.refinement = argNum;
|
||||
deleteArg = true;
|
||||
}
|
||||
if ((argNum = matchIntOrNeg(constellationRegex, arg)) != -1) {
|
||||
param.constellation = argNum;
|
||||
deleteArg = true;
|
||||
}
|
||||
if ((argNum = matchIntOrNeg(amountRegex, arg)) != -1) {
|
||||
param.amount = argNum;
|
||||
deleteArg = true;
|
||||
}
|
||||
if (deleteArg) {
|
||||
args.remove(i);
|
||||
}
|
||||
}
|
||||
parseIntParameters(args, param, intCommandHandlers);
|
||||
|
||||
// At this point, first remaining argument MUST be itemId/avatarId
|
||||
if (args.size() < 1) {
|
||||
|
@ -13,7 +13,8 @@ public final class PositionCommand implements CommandHandler {
|
||||
@Override
|
||||
public void execute(Player sender, Player targetPlayer, List<String> args) {
|
||||
Position pos = targetPlayer.getPosition();
|
||||
Position rot = targetPlayer.getRotation();
|
||||
CommandHandler.sendTranslatedMessage(sender, "commands.position.success",
|
||||
pos.getX(), pos.getY(), pos.getZ(), targetPlayer.getSceneId());
|
||||
pos.getX(), pos.getY(), pos.getZ(), rot.getX(), rot.getY(), rot.getZ(), targetPlayer.getSceneId());
|
||||
}
|
||||
}
|
||||
|
@ -8,53 +8,70 @@ import emu.grasscutter.data.excels.ItemData;
|
||||
import emu.grasscutter.data.excels.MonsterData;
|
||||
import emu.grasscutter.game.entity.*;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.EntityType;
|
||||
import emu.grasscutter.game.props.FightProperty;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static emu.grasscutter.config.Configuration.*;
|
||||
import static emu.grasscutter.command.CommandHelpers.*;
|
||||
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
|
||||
import static emu.grasscutter.utils.Language.translate;
|
||||
|
||||
@Command(
|
||||
label = "spawn",
|
||||
usage = {"spawn <entityId> [amount] [level(monster only)] [<x> <y> <z>(monster only)]"},
|
||||
aliases = {"drop"},
|
||||
usage = {
|
||||
"<itemId> [x<amount>] [blk<blockId>] [grp<groupId>] [cfg<configId>] <x> <y> <z>",
|
||||
"<gadgetId> [x<amount>] [state<state>] [maxhp<maxhp>] [hp<hp>(0 for infinite)] [atk<atk>] [def<def>] [blk<blockId>] [grp<groupId>] [cfg<configId>] <x> <y> <z>",
|
||||
"<monsterId> [x<amount>] [lv<level>] [ai<aiId>] [maxhp<maxhp>] [hp<hp>(0 for infinite)] [atk<atk>] [def<def>] [blk<blockId>] [grp<groupId>] [cfg<configId>] <x> <y> <z>"},
|
||||
permission = "server.spawn",
|
||||
permissionTargeted = "server.spawn.others")
|
||||
public final class SpawnCommand implements CommandHandler {
|
||||
private static final Map<Pattern, BiConsumer<SpawnParameters, Integer>> intCommandHandlers = Map.ofEntries(
|
||||
Map.entry(lvlRegex, SpawnParameters::setLvl),
|
||||
Map.entry(amountRegex, SpawnParameters::setAmount),
|
||||
Map.entry(stateRegex, SpawnParameters::setState),
|
||||
Map.entry(blockRegex, SpawnParameters::setBlockId),
|
||||
Map.entry(groupRegex, SpawnParameters::setGroupId),
|
||||
Map.entry(configRegex, SpawnParameters::setConfigId),
|
||||
Map.entry(maxHPRegex, SpawnParameters::setMaxHP),
|
||||
Map.entry(hpRegex, SpawnParameters::setHp),
|
||||
Map.entry(defRegex, SpawnParameters::setDef),
|
||||
Map.entry(atkRegex, SpawnParameters::setAtk),
|
||||
Map.entry(aiRegex, SpawnParameters::setAi)
|
||||
);
|
||||
|
||||
@Override
|
||||
public void execute(Player sender, Player targetPlayer, List<String> args) {
|
||||
int id = 0; // This is just to shut up the linter, it's not a real default
|
||||
int amount = 1;
|
||||
int level = 1;
|
||||
float x = 0, y = 0, z = 0;
|
||||
SpawnParameters param = new SpawnParameters();
|
||||
|
||||
parseIntParameters(args, param, intCommandHandlers);
|
||||
|
||||
// At this point, first remaining argument MUST be the id and the rest the pos
|
||||
if (args.size() < 1) {
|
||||
sendUsageMessage(sender); // Reachable if someone does `/give lv90` or similar
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
switch (args.size()) {
|
||||
case 6:
|
||||
case 4:
|
||||
try {
|
||||
x = Float.parseFloat(args.get(3));
|
||||
y = Float.parseFloat(args.get(4));
|
||||
z = Float.parseFloat(args.get(5));
|
||||
float x, y, z;
|
||||
x = Float.parseFloat(args.get(1));
|
||||
y = Float.parseFloat(args.get(2));
|
||||
z = Float.parseFloat(args.get(3));
|
||||
param.pos = new Position(x, y, z);
|
||||
} catch (NumberFormatException ignored) {
|
||||
CommandHandler.sendMessage(sender, translate(sender, "commands.execution.argument_error"));
|
||||
} // Fallthrough
|
||||
case 3:
|
||||
try {
|
||||
level = Integer.parseInt(args.get(2));
|
||||
} catch (NumberFormatException ignored) {
|
||||
CommandHandler.sendMessage(sender, translate(sender, "commands.execution.argument_error"));
|
||||
} // Fallthrough
|
||||
case 2:
|
||||
try {
|
||||
amount = Integer.parseInt(args.get(1));
|
||||
} catch (NumberFormatException ignored) {
|
||||
CommandHandler.sendMessage(sender, translate(sender, "commands.generic.invalid.amount"));
|
||||
} // Fallthrough
|
||||
case 1:
|
||||
try {
|
||||
id = Integer.parseInt(args.get(0));
|
||||
param.id = Integer.parseInt(args.get(0));
|
||||
} catch (NumberFormatException ignored) {
|
||||
CommandHandler.sendMessage(sender, translate(sender, "commands.generic.invalid.entityId"));
|
||||
}
|
||||
@ -64,45 +81,102 @@ public final class SpawnCommand implements CommandHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
MonsterData monsterData = GameData.getMonsterDataMap().get(id);
|
||||
GadgetData gadgetData = GameData.getGadgetDataMap().get(id);
|
||||
ItemData itemData = GameData.getItemDataMap().get(id);
|
||||
MonsterData monsterData = GameData.getMonsterDataMap().get(param.id);
|
||||
GadgetData gadgetData = GameData.getGadgetDataMap().get(param.id);
|
||||
ItemData itemData = GameData.getItemDataMap().get(param.id);
|
||||
if (monsterData == null && gadgetData == null && itemData == null) {
|
||||
CommandHandler.sendMessage(sender, translate(sender, "commands.generic.invalid.entityId"));
|
||||
return;
|
||||
}
|
||||
|
||||
Scene scene = targetPlayer.getScene();
|
||||
param.scene = targetPlayer.getScene();
|
||||
|
||||
if (scene.getEntities().size() + amount > GAME_OPTIONS.sceneEntityLimit) {
|
||||
amount = Math.max(Math.min(GAME_OPTIONS.sceneEntityLimit - scene.getEntities().size(), amount), 0);
|
||||
CommandHandler.sendMessage(sender, translate(sender, "commands.spawn.limit_reached", amount));
|
||||
if (amount <= 0) {
|
||||
if (param.scene.getEntities().size() + param.amount > GAME_OPTIONS.sceneEntityLimit) {
|
||||
param.amount = Math.max(Math.min(GAME_OPTIONS.sceneEntityLimit - param.scene.getEntities().size(), param.amount), 0);
|
||||
CommandHandler.sendMessage(sender, translate(sender, "commands.spawn.limit_reached", param.amount));
|
||||
if (param.amount <= 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
double maxRadius = Math.sqrt(amount * 0.2 / Math.PI);
|
||||
Position center = (x != 0 && y != 0 && z != 0)
|
||||
? (new Position(x, y, z))
|
||||
: (targetPlayer.getPosition());
|
||||
for (int i = 0; i < amount; i++) {
|
||||
Position pos = GetRandomPositionInCircle(center, maxRadius).addY(3);
|
||||
double maxRadius = Math.sqrt(param.amount * 0.2 / Math.PI);
|
||||
if (param.pos == null) {
|
||||
param.pos = targetPlayer.getPosition();
|
||||
}
|
||||
|
||||
for (int i = 0; i < param.amount; i++) {
|
||||
Position pos = GetRandomPositionInCircle(param.pos, maxRadius).addY(3);
|
||||
GameEntity entity = null;
|
||||
if (itemData != null) {
|
||||
entity = new EntityItem(scene, null, itemData, pos, 1, true);
|
||||
entity = createItem(itemData, param, pos);
|
||||
}
|
||||
if (gadgetData != null) {
|
||||
pos.addY(-3);
|
||||
entity = new EntityVehicle(scene, targetPlayer, id, 0, pos, targetPlayer.getRotation());
|
||||
entity = createGadget(gadgetData, param, pos, targetPlayer);
|
||||
}
|
||||
if (monsterData != null) {
|
||||
entity = new EntityMonster(scene, monsterData, pos, level);
|
||||
entity = createMonster(monsterData, param, pos);
|
||||
}
|
||||
applyCommonParameters(entity, param);
|
||||
|
||||
scene.addEntity(entity);
|
||||
param.scene.addEntity(entity);
|
||||
}
|
||||
CommandHandler.sendMessage(sender, translate(sender, "commands.spawn.success", param.amount, param.id));
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
private EntityItem createItem(ItemData itemData, SpawnParameters param, Position pos) {
|
||||
return new EntityItem(param.scene, null, itemData, pos, 1, true);
|
||||
}
|
||||
|
||||
private EntityMonster createMonster(MonsterData monsterData, SpawnParameters param, Position pos) {
|
||||
var entity = new EntityMonster(param.scene, monsterData, pos, param.lvl);
|
||||
if (param.ai != -1) {
|
||||
entity.setAiId(param.ai);
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
private EntityBaseGadget createGadget(GadgetData gadgetData, SpawnParameters param, Position pos, Player targetPlayer) {
|
||||
EntityBaseGadget entity;
|
||||
if (gadgetData.getType() == EntityType.Vehicle) {
|
||||
entity = new EntityVehicle(param.scene, targetPlayer, param.id, 0, pos, targetPlayer.getRotation());
|
||||
} else {
|
||||
entity = new EntityGadget(param.scene, param.id, pos, targetPlayer.getRotation());
|
||||
if (param.state != -1) {
|
||||
((EntityGadget) entity).setState(param.state);
|
||||
}
|
||||
}
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
private void applyCommonParameters(GameEntity entity, SpawnParameters param) {
|
||||
if (param.blockId != -1) {
|
||||
entity.setBlockId(param.blockId);
|
||||
}
|
||||
if (param.groupId != -1) {
|
||||
entity.setGroupId(param.groupId);
|
||||
}
|
||||
if (param.configId != -1) {
|
||||
entity.setConfigId(param.configId);
|
||||
}
|
||||
if (param.maxHP != -1) {
|
||||
entity.setFightProperty(FightProperty.FIGHT_PROP_MAX_HP, param.maxHP);
|
||||
entity.setFightProperty(FightProperty.FIGHT_PROP_BASE_HP, param.maxHP);
|
||||
}
|
||||
if (param.hp != -1) {
|
||||
entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, param.hp == 0 ? Float.MAX_VALUE : param.hp);
|
||||
}
|
||||
if (param.atk != -1) {
|
||||
entity.setFightProperty(FightProperty.FIGHT_PROP_ATTACK, param.atk);
|
||||
entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK, param.atk);
|
||||
}
|
||||
if (param.def != -1) {
|
||||
entity.setFightProperty(FightProperty.FIGHT_PROP_DEFENSE, param.def);
|
||||
entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE, param.def);
|
||||
}
|
||||
CommandHandler.sendMessage(sender, translate(sender, "commands.spawn.success", amount, id));
|
||||
}
|
||||
|
||||
private Position GetRandomPositionInCircle(Position origin, double radius) {
|
||||
@ -112,4 +186,21 @@ public final class SpawnCommand implements CommandHandler {
|
||||
target.addX((float) (r * Math.cos(angle))).addZ((float) (r * Math.sin(angle)));
|
||||
return target;
|
||||
}
|
||||
|
||||
private static class SpawnParameters {
|
||||
@Setter public int id;
|
||||
@Setter public int lvl = 1;
|
||||
@Setter public int amount = 1;
|
||||
@Setter public int blockId = -1;
|
||||
@Setter public int groupId = -1;
|
||||
@Setter public int configId = -1;
|
||||
@Setter public int state = -1;
|
||||
@Setter public int hp = -1;
|
||||
@Setter public int maxHP = -1;
|
||||
@Setter public int atk = -1;
|
||||
@Setter public int def = -1;
|
||||
@Setter public int ai = -1;
|
||||
@Setter public Position pos = null;
|
||||
public Scene scene = null;
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ public class GameData {
|
||||
private static final Int2ObjectMap<QuestEncryptionKey> questsKeys = new Int2ObjectOpenHashMap<>();
|
||||
private static final Int2ObjectMap<HomeworldDefaultSaveData> homeworldDefaultSaveData = new Int2ObjectOpenHashMap<>();
|
||||
private static final Int2ObjectMap<SceneNpcBornData> npcBornData = new Int2ObjectOpenHashMap<>();
|
||||
@Getter private static final Map<String, ConfigGadget> gadgetConfigData = new HashMap<>();
|
||||
|
||||
// ExcelConfigs
|
||||
private static final Int2ObjectMap<PlayerLevelData> playerLevelDataMap = new Int2ObjectOpenHashMap<>();
|
||||
@ -106,6 +107,7 @@ public class GameData {
|
||||
private static final Int2ObjectMap<CookBonusData> cookBonusDataMap = new Int2ObjectOpenHashMap<>();
|
||||
|
||||
@Getter private static final Int2ObjectMap<ActivityData> activityDataMap = new Int2ObjectOpenHashMap<>();
|
||||
@Getter private static final Int2ObjectMap<ActivityShopData> activityShopDataMap = new Int2ObjectOpenHashMap<>();
|
||||
@Getter private static final Int2ObjectMap<ActivityWatcherData> activityWatcherDataMap = new Int2ObjectOpenHashMap<>();
|
||||
@Getter private static final Int2ObjectMap<MusicGameBasicData> musicGameBasicDataMap = new Int2ObjectOpenHashMap<>();
|
||||
@Getter private static final Int2ObjectMap<PersonalLineData> personalLineDataMap = new Int2ObjectOpenHashMap<>();
|
||||
|
@ -68,6 +68,7 @@ public class ResourceLoader {
|
||||
// Process into depots
|
||||
GameDepot.load();
|
||||
// Load spawn data and quests
|
||||
loadGadgetConfigData();
|
||||
loadSpawnData();
|
||||
loadQuests();
|
||||
loadScriptSceneData();
|
||||
@ -493,6 +494,31 @@ public class ResourceLoader {
|
||||
Grasscutter.getLogger().debug("Loaded " + GameData.getSceneNpcBornData().size() + " SceneNpcBornDatas.");
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
private static void loadGadgetConfigData() {
|
||||
Files.list(Path.of(RESOURCE("BinOutput/Gadget/"))).forEach(filePath -> {
|
||||
var file = filePath.toFile();
|
||||
if (file.isDirectory() || !file.getName().endsWith("json")) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, ConfigGadget> config;
|
||||
|
||||
try {
|
||||
config = JsonUtils.loadToMap(filePath.toString(), String.class, ConfigGadget.class);
|
||||
} catch (Exception e) {
|
||||
Grasscutter.getLogger().error("failed to load ConfigGadget entries for "+filePath, e);
|
||||
return;
|
||||
}
|
||||
|
||||
for (Entry<String, ConfigGadget> e : config.entrySet()) {
|
||||
GameData.getGadgetConfigData().put(e.getKey(), e.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
Grasscutter.getLogger().debug("Loaded {} ConfigGadget entries.", GameData.getGadgetConfigData().size());
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
private static void loadBlossomResources() {
|
||||
GameDepot.setBlossomConfig(DataLoader.loadClass("BlossomConfig.json", BlossomConfig.class));
|
||||
|
15
src/main/java/emu/grasscutter/data/binout/ConfigGadget.java
Normal file
15
src/main/java/emu/grasscutter/data/binout/ConfigGadget.java
Normal file
@ -0,0 +1,15 @@
|
||||
package emu.grasscutter.data.binout;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@Data
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
public class ConfigGadget {
|
||||
// There are more values that can be added that might be useful in the json
|
||||
@Nullable
|
||||
ConfigGadgetCombat combat;
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package emu.grasscutter.data.binout;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
@Data
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
public class ConfigGadgetCombat {
|
||||
// There are more values that can be added that might be useful in the json
|
||||
ConfigGadgetCombatProperty property;
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.data.binout;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
@Data
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
public class ConfigGadgetCombatProperty {
|
||||
float HP;
|
||||
boolean isLockHP;
|
||||
boolean isInvincible;
|
||||
boolean isGhostToAllied;
|
||||
float attack;
|
||||
float defence;
|
||||
float weight;
|
||||
boolean useCreatorProperty;
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.game.shop.ShopType;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ResourceType(name = "ActivityShopOverallExcelConfigData.json")
|
||||
public class ActivityShopData extends GameResource {
|
||||
@Getter
|
||||
private int scheduleId;
|
||||
@Getter
|
||||
private ShopType shopType;
|
||||
@Getter
|
||||
private List<Integer> sheetList;
|
||||
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return getShopTypeId();
|
||||
}
|
||||
|
||||
public int getShopTypeId() {
|
||||
if (this.shopType == null)
|
||||
this.shopType = ShopType.SHOP_TYPE_NONE;
|
||||
return shopType.shopTypeId;
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
@ -24,6 +25,7 @@ public class ShopGoodsData extends GameResource {
|
||||
private int maxPlayerLevel;
|
||||
|
||||
private int buyLimit;
|
||||
@SerializedName(value="subTabId", alternate={"secondarySheetId"})
|
||||
private int subTabId;
|
||||
|
||||
private String refreshType;
|
||||
|
@ -19,10 +19,12 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
@Getter
|
||||
public class ActivityManager extends BasePlayerManager {
|
||||
private static final Map<Integer, ActivityConfigItem> activityConfigItemMap;
|
||||
@Getter private static final Map<Integer, ActivityConfigItem> scheduleActivityConfigMap;
|
||||
private final Map<Integer, PlayerActivityData> playerActivityDataMap;
|
||||
|
||||
static {
|
||||
activityConfigItemMap = new HashMap<>();
|
||||
scheduleActivityConfigMap = new HashMap<>();
|
||||
loadActivityConfigData();
|
||||
}
|
||||
|
||||
@ -61,6 +63,7 @@ public class ActivityManager extends BasePlayerManager {
|
||||
item.setActivityHandler(activityHandler);
|
||||
|
||||
activityConfigItemMap.putIfAbsent(item.getActivityId(), item);
|
||||
scheduleActivityConfigMap.putIfAbsent(item.getScheduleId(), item);
|
||||
});
|
||||
|
||||
Grasscutter.getLogger().info("Enable {} activities.", activityConfigItemMap.size());
|
||||
|
@ -1,5 +1,7 @@
|
||||
package emu.grasscutter.game.entity;
|
||||
|
||||
import emu.grasscutter.data.binout.ConfigGadget;
|
||||
import emu.grasscutter.game.props.FightProperty;
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
|
||||
public abstract class EntityBaseGadget extends GameEntity {
|
||||
@ -14,4 +16,30 @@ public abstract class EntityBaseGadget extends GameEntity {
|
||||
public void onDeath(int killerId) {
|
||||
super.onDeath(killerId); // Invoke super class's onDeath() method.
|
||||
}
|
||||
|
||||
protected void fillFightProps(ConfigGadget configGadget) {
|
||||
if (configGadget == null || configGadget.getCombat() == null) {
|
||||
return;
|
||||
}
|
||||
var combatData = configGadget.getCombat();
|
||||
var combatProperties = combatData.getProperty();
|
||||
|
||||
var targetHp = combatProperties.getHP();
|
||||
setFightProperty(FightProperty.FIGHT_PROP_MAX_HP, targetHp);
|
||||
setFightProperty(FightProperty.FIGHT_PROP_BASE_HP, targetHp);
|
||||
if (combatProperties.isInvincible()) {
|
||||
targetHp = Float.POSITIVE_INFINITY;
|
||||
}
|
||||
setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, targetHp);
|
||||
|
||||
var atk = combatProperties.getAttack();
|
||||
setFightProperty(FightProperty.FIGHT_PROP_BASE_ATTACK, atk);
|
||||
setFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK, atk);
|
||||
|
||||
var def = combatProperties.getDefence();
|
||||
setFightProperty(FightProperty.FIGHT_PROP_BASE_DEFENSE, def);
|
||||
setFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE, def);
|
||||
|
||||
setLockHP(combatProperties.isLockHP());
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,20 @@
|
||||
package emu.grasscutter.game.entity;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.binout.ConfigGadget;
|
||||
import emu.grasscutter.data.excels.GadgetData;
|
||||
import emu.grasscutter.game.entity.gadget.*;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.EntityIdType;
|
||||
import emu.grasscutter.game.props.EntityType;
|
||||
import emu.grasscutter.game.props.LifeState;
|
||||
import emu.grasscutter.game.props.FightProperty;
|
||||
import emu.grasscutter.game.props.PlayerProperty;
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.game.world.SpawnDataEntry;
|
||||
import emu.grasscutter.net.proto.AbilitySyncStateInfoOuterClass.AbilitySyncStateInfo;
|
||||
import emu.grasscutter.net.proto.AnimatorParameterValueInfoPairOuterClass.AnimatorParameterValueInfoPair;
|
||||
import emu.grasscutter.net.proto.EntityAuthorityInfoOuterClass.EntityAuthorityInfo;
|
||||
import emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData;
|
||||
import emu.grasscutter.net.proto.EntityRendererChangedInfoOuterClass.EntityRendererChangedInfo;
|
||||
import emu.grasscutter.net.proto.FightPropPairOuterClass.FightPropPair;
|
||||
import emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq;
|
||||
import emu.grasscutter.net.proto.MotionInfoOuterClass.MotionInfo;
|
||||
import emu.grasscutter.net.proto.PropPairOuterClass.PropPair;
|
||||
@ -24,18 +23,18 @@ import emu.grasscutter.net.proto.SceneEntityAiInfoOuterClass.SceneEntityAiInfo;
|
||||
import emu.grasscutter.net.proto.SceneEntityInfoOuterClass.SceneEntityInfo;
|
||||
import emu.grasscutter.net.proto.SceneGadgetInfoOuterClass.SceneGadgetInfo;
|
||||
import emu.grasscutter.net.proto.VectorOuterClass.Vector;
|
||||
import emu.grasscutter.net.proto.VisionTypeOuterClass.VisionType;
|
||||
import emu.grasscutter.scripts.constants.EventType;
|
||||
import emu.grasscutter.scripts.data.SceneGadget;
|
||||
import emu.grasscutter.scripts.data.ScriptArgs;
|
||||
import emu.grasscutter.server.packet.send.PacketGadgetStateNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketLifeStateChangeNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import emu.grasscutter.utils.ProtoHelper;
|
||||
import it.unimi.dsi.fastutil.ints.Int2FloatMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@ToString(callSuper = true)
|
||||
public class EntityGadget extends EntityBaseGadget {
|
||||
private final GadgetData data;
|
||||
@ -48,14 +47,20 @@ public class EntityGadget extends EntityBaseGadget {
|
||||
private GadgetContent content;
|
||||
private Int2FloatOpenHashMap fightProp;
|
||||
private SceneGadget metaGadget;
|
||||
@Nullable @Getter
|
||||
private ConfigGadget configGadget;
|
||||
|
||||
public EntityGadget(Scene scene, int gadgetId, Position pos, Position rot) {
|
||||
super(scene);
|
||||
this.data = GameData.getGadgetDataMap().get(gadgetId);
|
||||
if (data!=null && data.getJsonName()!=null) {
|
||||
this.configGadget = GameData.getGadgetConfigData().get(data.getJsonName());
|
||||
}
|
||||
this.id = getScene().getWorld().getNextEntityId(EntityIdType.GADGET);
|
||||
this.gadgetId = gadgetId;
|
||||
this.pos = pos.clone();
|
||||
this.rot = rot != null ? rot.clone() : new Position();
|
||||
fillFightProps(configGadget);
|
||||
}
|
||||
|
||||
public EntityGadget(Scene scene, int gadgetId, Position pos) {
|
||||
|
@ -37,6 +37,8 @@ import emu.grasscutter.utils.Position;
|
||||
import emu.grasscutter.utils.ProtoHelper;
|
||||
import it.unimi.dsi.fastutil.ints.Int2FloatMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
public class EntityMonster extends GameEntity {
|
||||
private final MonsterData monsterData;
|
||||
@ -48,6 +50,8 @@ public class EntityMonster extends GameEntity {
|
||||
private final int level;
|
||||
private int weaponEntityId;
|
||||
private int poseId;
|
||||
@Getter @Setter
|
||||
private int aiId=-1;
|
||||
|
||||
public EntityMonster(Scene scene, MonsterData monsterData, Position pos, int level) {
|
||||
super(scene);
|
||||
@ -289,6 +293,9 @@ public class EntityMonster extends GameEntity {
|
||||
|
||||
monsterInfo.addWeaponList(weaponInfo);
|
||||
}
|
||||
if (this.aiId!=-1) {
|
||||
monsterInfo.setAiConfigId(aiId);
|
||||
}
|
||||
|
||||
entityInfo.setMonster(monsterInfo);
|
||||
|
||||
|
@ -1,16 +1,18 @@
|
||||
package emu.grasscutter.game.entity;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.binout.ConfigGadget;
|
||||
import emu.grasscutter.data.excels.GadgetData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.EntityIdType;
|
||||
import emu.grasscutter.game.props.FightProperty;
|
||||
import emu.grasscutter.game.props.PlayerProperty;
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
|
||||
import emu.grasscutter.net.proto.AbilitySyncStateInfoOuterClass.AbilitySyncStateInfo;
|
||||
import emu.grasscutter.net.proto.AnimatorParameterValueInfoPairOuterClass.AnimatorParameterValueInfoPair;
|
||||
import emu.grasscutter.net.proto.EntityAuthorityInfoOuterClass.EntityAuthorityInfo;
|
||||
import emu.grasscutter.net.proto.EntityRendererChangedInfoOuterClass.EntityRendererChangedInfo;
|
||||
import emu.grasscutter.net.proto.FightPropPairOuterClass.*;
|
||||
import emu.grasscutter.net.proto.FightPropPairOuterClass.FightPropPair;
|
||||
import emu.grasscutter.net.proto.MotionInfoOuterClass.MotionInfo;
|
||||
import emu.grasscutter.net.proto.PropPairOuterClass.PropPair;
|
||||
import emu.grasscutter.net.proto.ProtEntityTypeOuterClass.ProtEntityType;
|
||||
@ -18,18 +20,18 @@ import emu.grasscutter.net.proto.SceneEntityAiInfoOuterClass.SceneEntityAiInfo;
|
||||
import emu.grasscutter.net.proto.SceneEntityInfoOuterClass.SceneEntityInfo;
|
||||
import emu.grasscutter.net.proto.SceneGadgetInfoOuterClass.SceneGadgetInfo;
|
||||
import emu.grasscutter.net.proto.VectorOuterClass.Vector;
|
||||
import emu.grasscutter.net.proto.VehicleInfoOuterClass.*;
|
||||
import emu.grasscutter.net.proto.VehicleMemberOuterClass.*;
|
||||
import emu.grasscutter.net.proto.VehicleInfoOuterClass.VehicleInfo;
|
||||
import emu.grasscutter.net.proto.VehicleMemberOuterClass.VehicleMember;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import emu.grasscutter.utils.ProtoHelper;
|
||||
|
||||
import it.unimi.dsi.fastutil.ints.Int2FloatMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class EntityVehicle extends EntityBaseGadget {
|
||||
|
||||
@ -44,6 +46,7 @@ public class EntityVehicle extends EntityBaseGadget {
|
||||
|
||||
@Getter @Setter private float curStamina;
|
||||
@Getter private List<VehicleMember> vehicleMembers;
|
||||
@Nullable @Getter private ConfigGadget configGadget;
|
||||
|
||||
public EntityVehicle(Scene scene, Player player, int gadgetId, int pointId, Position pos, Position rot) {
|
||||
super(scene);
|
||||
@ -54,21 +57,21 @@ public class EntityVehicle extends EntityBaseGadget {
|
||||
this.rot = new Position(rot);
|
||||
this.gadgetId = gadgetId;
|
||||
this.pointId = pointId;
|
||||
this.curStamina = 240;
|
||||
this.vehicleMembers = new ArrayList<VehicleMember>();
|
||||
|
||||
switch (gadgetId) {
|
||||
case 45001001,45001002 -> { // TODO: Not hardcode this. Waverider (skiff)
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_BASE_HP, 10000);
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_BASE_ATTACK, 100);
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK, 100);
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_CUR_HP, 10000);
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE, 0);
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_CUR_SPEED, 0);
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_CHARGE_EFFICIENCY, 0);
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_MAX_HP, 10000);
|
||||
}
|
||||
this.curStamina = 240; // might be in configGadget.GCALKECLLLP.JBAKBEFIMBN.ANBMPHPOALP
|
||||
this.vehicleMembers = new ArrayList<>();
|
||||
GadgetData data = GameData.getGadgetDataMap().get(gadgetId);
|
||||
if (data != null && data.getJsonName() != null) {
|
||||
this.configGadget = GameData.getGadgetConfigData().get(data.getJsonName());
|
||||
}
|
||||
|
||||
fillFightProps(configGadget);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fillFightProps(ConfigGadget configGadget) {
|
||||
super.fillFightProps(configGadget);
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_CUR_SPEED, 0);
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_CHARGE_EFFICIENCY, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -37,6 +37,8 @@ public abstract class GameEntity {
|
||||
@Getter @Setter private int lastMoveSceneTimeMs;
|
||||
@Getter @Setter private int lastMoveReliableSeq;
|
||||
|
||||
@Getter @Setter private boolean lockHP;
|
||||
|
||||
// Abilities
|
||||
private Object2FloatMap<String> metaOverrideMap;
|
||||
private Int2ObjectMap<String> metaModifiers;
|
||||
@ -106,6 +108,10 @@ public abstract class GameEntity {
|
||||
return this.getFightProperties().getOrDefault(prop.getId(), 0f);
|
||||
}
|
||||
|
||||
public boolean hasFightProperty(FightProperty prop) {
|
||||
return this.getFightProperties().containsKey(prop.getId());
|
||||
}
|
||||
|
||||
public void addAllFightPropsToEntityInfo(SceneEntityInfo.Builder entityInfo) {
|
||||
for (Int2FloatMap.Entry entry : this.getFightProperties().int2FloatEntrySet()) {
|
||||
if (entry.getIntKey() == 0) {
|
||||
@ -153,7 +159,7 @@ public abstract class GameEntity {
|
||||
|
||||
public void damage(float amount, int killerId) {
|
||||
// Check if the entity has properties.
|
||||
if (this.getFightProperties() == null) {
|
||||
if (this.getFightProperties() == null || !hasFightProperty(FightProperty.FIGHT_PROP_CUR_HP)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -164,9 +170,10 @@ public abstract class GameEntity {
|
||||
return; // If the event is canceled, do not damage the entity.
|
||||
}
|
||||
|
||||
if (getFightProperty(FightProperty.FIGHT_PROP_CUR_HP) != Float.POSITIVE_INFINITY) {
|
||||
// Add negative HP to the current HP property.
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_CUR_HP, -(event.getDamage()));
|
||||
float curHp = getFightProperty(FightProperty.FIGHT_PROP_CUR_HP);
|
||||
if (curHp != Float.POSITIVE_INFINITY && !lockHP || lockHP && curHp <= event.getDamage()) {
|
||||
// Add negative HP to the current HP property.
|
||||
this.addFightProperty(FightProperty.FIGHT_PROP_CUR_HP, -(event.getDamage()));
|
||||
}
|
||||
|
||||
// Check if dead
|
||||
|
@ -13,7 +13,7 @@ public class GachaBanner {
|
||||
@Getter private int gachaType;
|
||||
@Getter private int scheduleId;
|
||||
@Getter private String prefabPath;
|
||||
@Getter private String previewPrefabPath;
|
||||
private String previewPrefabPath;
|
||||
@Getter private String titlePath;
|
||||
private int costItemId = 0;
|
||||
private int costItemAmount = 1;
|
||||
@ -47,6 +47,12 @@ public class GachaBanner {
|
||||
private int costItem = 0;
|
||||
@Getter private int wishMaxProgress = 2;
|
||||
|
||||
public String getPreviewPrefabPath() {
|
||||
if (this.previewPrefabPath != null && !this.previewPrefabPath.isEmpty())
|
||||
return this.previewPrefabPath;
|
||||
return "UI_Tab_" + this.prefabPath;
|
||||
}
|
||||
|
||||
public ItemParamData getCost(int numRolls) {
|
||||
return switch (numRolls) {
|
||||
case 10 -> new ItemParamData((costItemId10 > 0) ? costItemId10 : getCostItem(), costItemAmount10);
|
||||
|
@ -273,11 +273,15 @@ public class Inventory extends BasePlayerManager implements Iterable<GameItem> {
|
||||
private void addVirtualItem(int itemId, int count) {
|
||||
switch (itemId) {
|
||||
case 101 -> // Character exp
|
||||
this.player.getServer().getInventorySystem().upgradeAvatar(this.player, this.player.getTeamManager().getCurrentAvatarEntity().getAvatar(), count);
|
||||
this.player.getTeamManager().getActiveTeam().stream().map(e -> e.getAvatar()).forEach(
|
||||
avatar -> this.player.getServer().getInventorySystem().upgradeAvatar(this.player, avatar, count)
|
||||
);
|
||||
case 102 -> // Adventure exp
|
||||
this.player.addExpDirectly(count);
|
||||
case 105 -> // Companionship exp
|
||||
this.player.getServer().getInventorySystem().upgradeAvatarFetterLevel(this.player, this.player.getTeamManager().getCurrentAvatarEntity().getAvatar(), count);
|
||||
this.player.getTeamManager().getActiveTeam().stream().map(e -> e.getAvatar()).forEach(
|
||||
avatar -> this.player.getServer().getInventorySystem().upgradeAvatarFetterLevel(this.player, avatar, count * (this.player.isInMultiplayer() ? 2 : 1))
|
||||
);
|
||||
case 106 -> // Resin
|
||||
this.player.getResinManager().addResin(count);
|
||||
case 107 -> // Legendary Key
|
||||
|
@ -3,10 +3,10 @@ package emu.grasscutter.game.player;
|
||||
import static emu.grasscutter.config.Configuration.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import dev.morphia.annotations.Entity;
|
||||
import dev.morphia.annotations.Transient;
|
||||
import emu.grasscutter.GameConstants;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.AvatarSkillDepotData;
|
||||
import emu.grasscutter.game.avatar.Avatar;
|
||||
import emu.grasscutter.game.entity.EntityAvatar;
|
||||
@ -37,6 +37,8 @@ import emu.grasscutter.server.packet.send.PacketRemoveCustomTeamRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketSceneTeamUpdateNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketSetUpAvatarTeamRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketWorldPlayerDieNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
|
||||
@ -114,7 +116,7 @@ public class TeamManager extends BasePlayerDataManager {
|
||||
|
||||
public TeamInfo getCurrentTeamInfo() {
|
||||
if (useTemporarilyTeamIndex >= 0 &&
|
||||
useTemporarilyTeamIndex < temporaryTeam.size()) {
|
||||
useTemporarilyTeamIndex < temporaryTeam.size()) {
|
||||
return temporaryTeam.get(useTemporarilyTeamIndex);
|
||||
}
|
||||
if (this.getPlayer().isInMultiplayer()) {
|
||||
@ -275,8 +277,8 @@ public class TeamManager extends BasePlayerDataManager {
|
||||
.map(e -> e.getKey())
|
||||
.filter(elementType -> elementType.getTeamResonanceId() != 0)
|
||||
.forEach(elementType -> {
|
||||
this.teamResonances.add(elementType.getTeamResonanceId());
|
||||
this.teamResonancesConfig.add(elementType.getConfigHash());
|
||||
this.teamResonances.add(elementType.getTeamResonanceId());
|
||||
this.teamResonancesConfig.add(elementType.getConfigHash());
|
||||
});
|
||||
|
||||
// Four element resonance
|
||||
@ -410,30 +412,30 @@ public class TeamManager extends BasePlayerDataManager {
|
||||
|
||||
public void setupTemporaryTeam(List<List<Long>> guidList) {
|
||||
this.temporaryTeam = guidList.stream().map(list -> {
|
||||
// Sanity checks
|
||||
if (list.size() == 0 || list.size() > this.getMaxTeamSize()) {
|
||||
// Sanity checks
|
||||
if (list.size() == 0 || list.size() > this.getMaxTeamSize()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Set team data
|
||||
LinkedHashSet<Avatar> newTeam = new LinkedHashSet<>();
|
||||
for (Long aLong : list) {
|
||||
Avatar avatar = this.getPlayer().getAvatars().getAvatarByGuid(aLong);
|
||||
if (avatar == null || newTeam.contains(avatar)) {
|
||||
// Should never happen
|
||||
return null;
|
||||
}
|
||||
newTeam.add(avatar);
|
||||
}
|
||||
|
||||
// Set team data
|
||||
LinkedHashSet<Avatar> newTeam = new LinkedHashSet<>();
|
||||
for (Long aLong : list) {
|
||||
Avatar avatar = this.getPlayer().getAvatars().getAvatarByGuid(aLong);
|
||||
if (avatar == null || newTeam.contains(avatar)) {
|
||||
// Should never happen
|
||||
return null;
|
||||
}
|
||||
newTeam.add(avatar);
|
||||
}
|
||||
|
||||
// convert to avatar ids
|
||||
return newTeam.stream()
|
||||
.map(Avatar::getAvatarId)
|
||||
.toList();
|
||||
})
|
||||
.filter(Objects::nonNull)
|
||||
.map(TeamInfo::new)
|
||||
.toList();
|
||||
// convert to avatar ids
|
||||
return newTeam.stream()
|
||||
.map(Avatar::getAvatarId)
|
||||
.toList();
|
||||
})
|
||||
.filter(Objects::nonNull)
|
||||
.map(TeamInfo::new)
|
||||
.toList();
|
||||
}
|
||||
|
||||
public void useTemporaryTeam(int index) {
|
||||
@ -567,8 +569,8 @@ public class TeamManager extends BasePlayerDataManager {
|
||||
}
|
||||
|
||||
entity.setFightProperty(
|
||||
FightProperty.FIGHT_PROP_CUR_HP,
|
||||
entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) * .1f
|
||||
FightProperty.FIGHT_PROP_CUR_HP,
|
||||
entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) * .1f
|
||||
);
|
||||
this.getPlayer().sendPacket(new PacketAvatarFightPropUpdateNotify(entity.getAvatar(), FightProperty.FIGHT_PROP_CUR_HP));
|
||||
this.getPlayer().sendPacket(new PacketAvatarLifeStateChangeNotify(entity.getAvatar()));
|
||||
@ -587,13 +589,13 @@ public class TeamManager extends BasePlayerDataManager {
|
||||
}
|
||||
|
||||
entity.setFightProperty(
|
||||
FightProperty.FIGHT_PROP_CUR_HP,
|
||||
(float) Math.min(
|
||||
(entity.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP) +
|
||||
entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) * (float) healRate / 100.0 +
|
||||
(float) healAmount / 100.0),
|
||||
entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP)
|
||||
)
|
||||
FightProperty.FIGHT_PROP_CUR_HP,
|
||||
(float) Math.min(
|
||||
(entity.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP) +
|
||||
entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) * (float) healRate / 100.0 +
|
||||
(float) healAmount / 100.0),
|
||||
entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP)
|
||||
)
|
||||
);
|
||||
this.getPlayer().sendPacket(new PacketAvatarFightPropUpdateNotify(entity.getAvatar(), FightProperty.FIGHT_PROP_CUR_HP));
|
||||
this.getPlayer().sendPacket(new PacketAvatarLifeStateChangeNotify(entity.getAvatar()));
|
||||
@ -616,24 +618,37 @@ public class TeamManager extends BasePlayerDataManager {
|
||||
// Revive all team members
|
||||
for (EntityAvatar entity : this.getActiveTeam()) {
|
||||
entity.setFightProperty(
|
||||
FightProperty.FIGHT_PROP_CUR_HP,
|
||||
entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) * .4f
|
||||
FightProperty.FIGHT_PROP_CUR_HP,
|
||||
entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) * .4f
|
||||
);
|
||||
this.getPlayer().sendPacket(new PacketAvatarFightPropUpdateNotify(entity.getAvatar(), FightProperty.FIGHT_PROP_CUR_HP));
|
||||
this.getPlayer().sendPacket(new PacketAvatarLifeStateChangeNotify(entity.getAvatar()));
|
||||
}
|
||||
|
||||
// Teleport player
|
||||
this.getPlayer().sendPacket(new PacketPlayerEnterSceneNotify(this.getPlayer(), EnterType.ENTER_TYPE_SELF, EnterReason.Revival, 3, GameConstants.START_POSITION));
|
||||
|
||||
// Set player position
|
||||
player.setSceneId(3);
|
||||
player.getPosition().set(GameConstants.START_POSITION);
|
||||
// Teleport player and set player position
|
||||
try {
|
||||
this.getPlayer().sendPacket(new PacketPlayerEnterSceneNotify(this.getPlayer(), EnterType.ENTER_TYPE_SELF, EnterReason.Revival, player.getSceneId(), getRespawnPosition()));
|
||||
player.getPosition().set(getRespawnPosition());
|
||||
}catch (Exception e) {
|
||||
this.getPlayer().sendPacket(new PacketPlayerEnterSceneNotify(this.getPlayer(), EnterType.ENTER_TYPE_SELF, EnterReason.Revival, 3, GameConstants.START_POSITION));
|
||||
player.getPosition().set(GameConstants.START_POSITION); // If something goes wrong, the resurrection is here
|
||||
}
|
||||
|
||||
// Packets
|
||||
this.getPlayer().sendPacket(new BasePacket(PacketOpcodes.WorldPlayerReviveRsp));
|
||||
}
|
||||
public Position getRespawnPosition() {
|
||||
var deathPos = this.getPlayer().getPosition();
|
||||
int sceneId = this.getPlayer().getSceneId();
|
||||
|
||||
// Get the closest trans point to where the player died.
|
||||
var respawnPoint = this.getPlayer().getUnlockedScenePoints(sceneId).stream()
|
||||
.map(pointId -> GameData.getScenePointEntryById(sceneId, pointId))
|
||||
.filter(point -> point.getPointData().getType().equals("SceneTransPoint"))
|
||||
.min((Comparator.comparingDouble(pos -> Utils.getDist(pos.getPointData().getTranPos(), deathPos))));
|
||||
|
||||
return respawnPoint.get().getPointData().getTranPos();
|
||||
}
|
||||
public void saveAvatars() {
|
||||
// Save all avatars from active team
|
||||
for (EntityAvatar entity : this.getActiveTeam()) {
|
||||
|
@ -8,86 +8,99 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
|
||||
public enum EntityType {
|
||||
None (0),
|
||||
Avatar (1),
|
||||
Monster (2),
|
||||
Bullet (3),
|
||||
AttackPhyisicalUnit (4),
|
||||
AOE (5),
|
||||
Camera (6),
|
||||
EnviroArea (7),
|
||||
Equip (8),
|
||||
MonsterEquip (9),
|
||||
Grass (10),
|
||||
Level (11),
|
||||
NPC (12),
|
||||
TransPointFirst (13),
|
||||
TransPointFirstGadget (14),
|
||||
TransPointSecond (15),
|
||||
TransPointSecondGadget (16),
|
||||
DropItem (17),
|
||||
Field (18),
|
||||
Gadget (19),
|
||||
Water (20),
|
||||
GatherPoint (21),
|
||||
GatherObject (22),
|
||||
AirflowField (23),
|
||||
SpeedupField (24),
|
||||
Gear (25),
|
||||
Chest (26),
|
||||
EnergyBall (27),
|
||||
ElemCrystal (28),
|
||||
Timeline (29),
|
||||
Worktop (30),
|
||||
Team (31),
|
||||
Platform (32),
|
||||
AmberWind (33),
|
||||
EnvAnimal (34),
|
||||
SealGadget (35),
|
||||
Tree (36),
|
||||
Bush (37),
|
||||
QuestGadget (38),
|
||||
Lightning (39),
|
||||
RewardPoint (40),
|
||||
RewardStatue (41),
|
||||
MPLevel (42),
|
||||
WindSeed (43),
|
||||
MpPlayRewardPoint (44),
|
||||
ViewPoint (45),
|
||||
RemoteAvatar (46),
|
||||
GeneralRewardPoint (47),
|
||||
PlayTeam (48),
|
||||
OfferingGadget (49),
|
||||
EyePoint (50),
|
||||
MiracleRing (51),
|
||||
Foundation (52),
|
||||
WidgetGadget (53),
|
||||
PlaceHolder (99);
|
||||
None (0),
|
||||
Avatar (1),
|
||||
Monster (2),
|
||||
Bullet (3),
|
||||
AttackPhyisicalUnit (4),
|
||||
AOE (5),
|
||||
Camera (6),
|
||||
EnviroArea (7),
|
||||
Equip (8),
|
||||
MonsterEquip (9),
|
||||
Grass (10),
|
||||
Level (11),
|
||||
NPC (12),
|
||||
TransPointFirst (13),
|
||||
TransPointFirstGadget (14),
|
||||
TransPointSecond (15),
|
||||
TransPointSecondGadget (16),
|
||||
DropItem (17),
|
||||
Field (18),
|
||||
Gadget (19),
|
||||
Water (20),
|
||||
GatherPoint (21),
|
||||
GatherObject (22),
|
||||
AirflowField (23),
|
||||
SpeedupField (24),
|
||||
Gear (25),
|
||||
Chest (26),
|
||||
EnergyBall (27),
|
||||
ElemCrystal (28),
|
||||
Timeline (29),
|
||||
Worktop (30),
|
||||
Team (31),
|
||||
Platform (32),
|
||||
AmberWind (33),
|
||||
EnvAnimal (34),
|
||||
SealGadget (35),
|
||||
Tree (36),
|
||||
Bush (37),
|
||||
QuestGadget (38),
|
||||
Lightning (39),
|
||||
RewardPoint (40),
|
||||
RewardStatue (41),
|
||||
MPLevel (42),
|
||||
WindSeed (43),
|
||||
MpPlayRewardPoint (44),
|
||||
ViewPoint (45),
|
||||
RemoteAvatar (46),
|
||||
GeneralRewardPoint (47),
|
||||
PlayTeam (48),
|
||||
OfferingGadget (49),
|
||||
EyePoint (50),
|
||||
MiracleRing (51),
|
||||
Foundation (52),
|
||||
WidgetGadget (53),
|
||||
Vehicle (54),
|
||||
SubEquip (55),
|
||||
FishRod (56),
|
||||
CustomTile (57),
|
||||
FishPool (58),
|
||||
CustomGadget (59),
|
||||
BlackMud (60),
|
||||
RoguelikeOperatorGadget (61),
|
||||
NightCrowGadget (62),
|
||||
Projector (63),
|
||||
Screen (64),
|
||||
EchoShell (65),
|
||||
UIInteractGadget (66),
|
||||
PlaceHolder (99);
|
||||
|
||||
private final int value;
|
||||
private static final Int2ObjectMap<EntityType> map = new Int2ObjectOpenHashMap<>();
|
||||
private static final Map<String, EntityType> stringMap = new HashMap<>();
|
||||
private final int value;
|
||||
private static final Int2ObjectMap<EntityType> map = new Int2ObjectOpenHashMap<>();
|
||||
private static final Map<String, EntityType> stringMap = new HashMap<>();
|
||||
|
||||
static {
|
||||
Stream.of(values()).forEach(e -> {
|
||||
map.put(e.getValue(), e);
|
||||
stringMap.put(e.name(), e);
|
||||
});
|
||||
}
|
||||
static {
|
||||
Stream.of(values()).forEach(e -> {
|
||||
map.put(e.getValue(), e);
|
||||
stringMap.put(e.name(), e);
|
||||
});
|
||||
}
|
||||
|
||||
private EntityType(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
private EntityType(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static EntityType getTypeByValue(int value) {
|
||||
return map.getOrDefault(value, None);
|
||||
}
|
||||
public static EntityType getTypeByValue(int value) {
|
||||
return map.getOrDefault(value, None);
|
||||
}
|
||||
|
||||
public static EntityType getTypeByName(String name) {
|
||||
return stringMap.getOrDefault(name, None);
|
||||
}
|
||||
public static EntityType getTypeByName(String name) {
|
||||
return stringMap.getOrDefault(name, None);
|
||||
}
|
||||
}
|
||||
|
107
src/main/java/emu/grasscutter/game/shop/ShopType.java
Normal file
107
src/main/java/emu/grasscutter/game/shop/ShopType.java
Normal file
@ -0,0 +1,107 @@
|
||||
package emu.grasscutter.game.shop;
|
||||
|
||||
/**
|
||||
* ShopTypes 0-1010 based on `ActivityShopOverallExcelConfigData.json`
|
||||
* ShopTypes for activities are partially guessed on the version, and partially tested
|
||||
* ShopTypes 1011-1070 are mostly based of `BinOutput/InterAction/Shop`
|
||||
*/
|
||||
public enum ShopType {
|
||||
SHOP_TYPE_NONE(0),
|
||||
SHOP_TYPE_PAIMON(900),
|
||||
SHOP_TYPE_PACKAGE(902),
|
||||
SHOP_TYPE_MCOIN(903),
|
||||
SHOP_TYPE_RECOMMEND(1001),
|
||||
SHOP_TYPE_CITY(1002),
|
||||
SHOP_TYPE_BLACKSMITH(1003),
|
||||
SHOP_TYPE_GROCERY(1004),
|
||||
SHOP_TYPE_FOOD(1005),
|
||||
SHOP_TYPE_SEA_LAMP(1006),
|
||||
SHOP_TYPE_VIRTUAL_SHOP(1007),
|
||||
SHOP_TYPE_LIYUE_GROCERY(1008),
|
||||
SHOP_TYPE_LIYUE_SOUVENIR(1009),
|
||||
SHOP_TYPE_LIYUE_RESTAURANT(1010),
|
||||
SHOP_TYPE_NPC_Flora(1011),
|
||||
SHOP_TYPE_NPC_Charles(1012),
|
||||
SHOP_TYPE_NPC_Shiliu(1013),
|
||||
SHOP_TYPE_NPC_Schulz(1014),
|
||||
SHOP_TYPE_NPC_Brook(1015),
|
||||
SHOP_TYPE_NPC_Hopkins(1016),
|
||||
SHOP_TYPE_NPC_Draff(1017),
|
||||
SHOP_TYPE_NPC_Chloris(1018),
|
||||
SHOP_TYPE_NPC_Licai(1019),
|
||||
SHOP_TYPE_NPC_Yueshu(1020),
|
||||
SHOP_TYPE_NPC_Gui(1021),
|
||||
SHOP_TYPE_NPC_Gao(1022),
|
||||
SHOP_TYPE_NPC_Sun(1023),
|
||||
SHOP_TYPE_NPC_Qiming(1024),
|
||||
SHOP_TYPE_NPC_Zhangshun(1025),
|
||||
SHOP_TYPE_NPC_Chen(1026),
|
||||
SHOP_TYPE_NPC_ErNiang(1027),
|
||||
SHOP_TYPE_NPC_Shitou(1028),
|
||||
SHOP_TYPE_NPC_Jifang(1029),
|
||||
SHOP_TYPE_NPC_Zhu(1030),
|
||||
SHOP_TYPE_NPC_Bai(1031),
|
||||
SHOP_TYPE_NPC_Kai(1032),
|
||||
SHOP_TYPE_NPC_Linglang(1033),
|
||||
SHOP_TYPE_NPC_VerrGoldet(1034),
|
||||
SHOP_TYPE_NPC_Zhou(1035),
|
||||
SHOP_TYPE_TASK_Ekaterina(1036),
|
||||
SHOP_TYPE_ACTIVITY_ASTER(1037),
|
||||
SHOP_TYPE_TASK_Tartaglia(1038),
|
||||
SHOP_TYPE_NPC_Harris(1039),
|
||||
SHOP_TYPE_ACTIVITY_DRAGON_SPINE(1040),
|
||||
SHOP_TYPE_ACTIVITY_TREASURE_MAP(1041),
|
||||
SHOP_TYPE_NPC_Yinian(1042),
|
||||
SHOP_TYPE_ACTIVITY_SEA_LAMP(1043), //event guess
|
||||
SHOP_TYPE_ACTIVITY_FLEUR_FAIR(1044),
|
||||
SHOP_TYPE_NPC_Changshun(1045),
|
||||
SHOP_TYPE_NPC_Bolai(1046),
|
||||
SHOP_TYPE_NPC_Ashanpo(1047),
|
||||
SHOP_TYPE_HOME(1048),
|
||||
SHOP_TYPE_HOME_LIMIT(1049),
|
||||
SHOP_TYPE_NPC_MasterLu(1050),
|
||||
SHOP_TYPE_NPC_Goth(1051),
|
||||
SHOP_TYPE_COSTUME(1052),
|
||||
SHOP_TYPE_NPC_Obata(1053),
|
||||
SHOP_TYPE_NPC_Qiuyue(1054),
|
||||
SHOP_TYPE_NPC_Ryouko(1055),
|
||||
SHOP_TYPE_INAZUMA_GROCERY(1056),
|
||||
SHOP_TYPE_INAZUMA_SOUVENIR(1057),
|
||||
SHOP_TYPE_INAZUMA_RESTAURANT(1058),
|
||||
SHOP_TYPE_NPC_Kuroda(1059),
|
||||
SHOP_TYPE_NPC_KiminamiAnna(1060),
|
||||
SHOP_TYPE_NPC_Tomoki(1061),
|
||||
SHOP_TYPE_NPC_Karpillia(1062),
|
||||
SHOP_TYPE_BLACKSMITH_INAZUMA(1063),
|
||||
SHOP_TYPE_FISH(1064),
|
||||
SHOP_TYPE_FISH_LIYUE(1065),
|
||||
SHOP_TYPE_FISH_INAZUMA(1066),
|
||||
SHOP_TYPE_NPC_Kiyoko(1067),
|
||||
SHOP_TYPE_EXPIRED_WIDGET_MENGDE(1068),
|
||||
SHOP_TYPE_CAPTURE_ANIMAL_SHOP(1069),
|
||||
SHOP_TYPE_NPC_YamashiroKenta(1070),
|
||||
SHOP_TYPE_ACTIVITY_CHANNELLER_SLAB(15001), //prob
|
||||
SHOP_TYPE_ACTIVITY_SUMMER_TIME(16001),
|
||||
SHOP_TYPE_ACTIVITY_BOUNCE_CONJURING(16002),
|
||||
SHOP_TYPE_ACTIVITY_BLITZ_RUSH(20001),// guess
|
||||
SHOP_TYPE_ACTIVITY_CHESS(20002),// guess
|
||||
SHOP_TYPE_ACTIVITY_WINTER_CAMP(20004),
|
||||
SHOP_TYPE_ACTIVITY_LANTERN_RITE(20005),// guess
|
||||
SHOP_TYPE_ACTIVITY_ROGUELIKE_DUNGEON(22001),// guess
|
||||
SHOP_TYPE_ACTIVITY_ROGUE_DIARY(27001),// guess
|
||||
SHOP_TYPE_ACTIVITY_SUMMER_TIME_V2(28001), // guess
|
||||
SHOP_TYPE_ACTIVITY_GRAVEN_INNOCENCE(30001); // guess
|
||||
|
||||
public final int shopTypeId;
|
||||
|
||||
ShopType(int shopTypeId) {
|
||||
this.shopTypeId = shopTypeId;
|
||||
}
|
||||
|
||||
public static ShopType getById(int shopTypeId) {
|
||||
for (ShopType type : ShopType.values()) {
|
||||
if (type.shopTypeId == shopTypeId) return type;
|
||||
}
|
||||
return SHOP_TYPE_NONE;
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetActivityShopSheetInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetActivityShopSheetInfoReq)
|
||||
public class HandlerGetActivityShopSheetInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetActivityShopSheetInfoReq req = GetActivityShopSheetInfoReq.parseFrom(payload);
|
||||
session.getPlayer().sendPacket(new PacketGetActivityShopSheetInfoRsp(req.getShopType()));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.game.activity.ActivityConfigItem;
|
||||
import emu.grasscutter.game.activity.ActivityManager;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo;
|
||||
import emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PacketGetActivityShopSheetInfoRsp extends BasePacket {
|
||||
|
||||
|
||||
public PacketGetActivityShopSheetInfoRsp(int shopType) {
|
||||
super(PacketOpcodes.GetActivityShopSheetInfoRsp);
|
||||
|
||||
var sheetInfo = GameData.getActivityShopDataMap().get(shopType);
|
||||
ActivityConfigItem activityConfigItem = null;
|
||||
|
||||
if (sheetInfo != null) {
|
||||
activityConfigItem = ActivityManager.getScheduleActivityConfigMap().get(sheetInfo.getScheduleId());
|
||||
}
|
||||
|
||||
if (sheetInfo == null || activityConfigItem == null) {
|
||||
setData(GetActivityShopSheetInfoRsp.newBuilder()
|
||||
.setShopType(shopType)
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SHOP_NOT_OPEN_VALUE)
|
||||
.build());
|
||||
return;
|
||||
}
|
||||
|
||||
List<ActivityShopSheetInfo> sheetInfos = new ArrayList<>(sheetInfo.getSheetList().size());
|
||||
for (int id : sheetInfo.getSheetList()) {
|
||||
sheetInfos.add(ActivityShopSheetInfo.newBuilder()
|
||||
.setSheetId(id)
|
||||
.setBeginTime((int) activityConfigItem.getBeginTime().getTime())
|
||||
.setEndTime((int) activityConfigItem.getEndTime().getTime())
|
||||
.build());
|
||||
}
|
||||
|
||||
setData(GetActivityShopSheetInfoRsp.newBuilder()
|
||||
.setShopType(shopType)
|
||||
.addAllSheetInfoList(sheetInfos)
|
||||
.build());
|
||||
}
|
||||
}
|
@ -97,7 +97,9 @@ public final class Tools {
|
||||
|
||||
// Write txt files
|
||||
for (int i = 0; i < TextStrings.NUM_LANGUAGES; i++) {
|
||||
final String fileName = "./GM Handbook - %s.txt".formatted(TextStrings.ARR_LANGUAGES[i]);
|
||||
File GMHandbookOutputpath=new File("./GM Handbook");
|
||||
GMHandbookOutputpath.mkdir();
|
||||
final String fileName = "./GM Handbook/GM Handbook - %s.txt".formatted(TextStrings.ARR_LANGUAGES[i]);
|
||||
try (PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(fileName), StandardCharsets.UTF_8), false)) {
|
||||
writer.write(handbookBuilders.get(i).toString());
|
||||
}
|
||||
|
@ -5,7 +5,6 @@
|
||||
"scheduleId": 803,
|
||||
"bannerType": "EVENT",
|
||||
"prefabPath": "GachaShowPanel_A016",
|
||||
"previewPrefabPath": "UI_Tab_GachaShowPanel_A016",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A016_TITLE",
|
||||
"costItemId": 224,
|
||||
"costItemAmount10": 8,
|
||||
@ -22,7 +21,6 @@
|
||||
"scheduleId": 893,
|
||||
"bannerType": "STANDARD",
|
||||
"prefabPath": "GachaShowPanel_A022",
|
||||
"previewPrefabPath": "UI_Tab_GachaShowPanel_A022",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A022_TITLE",
|
||||
"costItemId": 224,
|
||||
"beginTime": 0,
|
||||
@ -36,15 +34,14 @@
|
||||
"gachaType": 301,
|
||||
"scheduleId": 903,
|
||||
"bannerType": "EVENT",
|
||||
"prefabPath": "GachaShowPanel_A091",
|
||||
"previewPrefabPath": "UI_Tab_GachaShowPanel_A091",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A045_TITLE",
|
||||
"prefabPath": "GachaShowPanel_A094",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A028_TITLE",
|
||||
"costItemId": 223,
|
||||
"beginTime": 0,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 9998,
|
||||
"rateUpItems4": [1067, 1039, 1031],
|
||||
"rateUpItems5": [1069],
|
||||
"rateUpItems4": [1025, 1043, 1068],
|
||||
"rateUpItems5": [1037],
|
||||
"weights5": [[1,80], [73,80], [90,10000]]
|
||||
},
|
||||
{
|
||||
@ -52,15 +49,14 @@
|
||||
"gachaType": 400,
|
||||
"scheduleId": 923,
|
||||
"bannerType": "EVENT",
|
||||
"prefabPath": "GachaShowPanel_A092",
|
||||
"previewPrefabPath": "UI_Tab_GachaShowPanel_A092",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A018_TITLE",
|
||||
"prefabPath": "GachaShowPanel_A095",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A053_TITLE",
|
||||
"costItemId": 223,
|
||||
"beginTime": 0,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 9998,
|
||||
"rateUpItems4": [1067, 1039, 1031],
|
||||
"rateUpItems5": [1030],
|
||||
"rateUpItems4": [1025, 1043, 1068],
|
||||
"rateUpItems5": [1054],
|
||||
"fallbackItems5Pool2": [],
|
||||
"weights5": [[1,80], [73,80], [90,10000]]
|
||||
},
|
||||
@ -69,15 +65,14 @@
|
||||
"gachaType": 302,
|
||||
"scheduleId": 913,
|
||||
"bannerType": "WEAPON",
|
||||
"prefabPath": "GachaShowPanel_A093",
|
||||
"previewPrefabPath": "UI_Tab_GachaShowPanel_A093",
|
||||
"prefabPath": "GachaShowPanel_A096",
|
||||
"titlePath": "UI_GACHA_SHOW_PANEL_A013_TITLE",
|
||||
"costItemId": 223,
|
||||
"beginTime": 0,
|
||||
"endTime": 1924992000,
|
||||
"sortId": 9997,
|
||||
"rateUpItems4":[15402, 11401, 13407, 14401, 12402],
|
||||
"rateUpItems5": [15511, 13504],
|
||||
"rateUpItems4":[11403, 15405, 13401, 14409, 12401],
|
||||
"rateUpItems5": [15502, 14506],
|
||||
"fallbackItems5Pool1": [],
|
||||
"weights4": [[1,600], [7,600], [8,6600], [10,12600]],
|
||||
"weights5": [[1,100], [62,100], [73,7800], [80,10000]],
|
||||
|
@ -207,8 +207,8 @@
|
||||
"description": "Grants or removes a permission for a user"
|
||||
},
|
||||
"position": {
|
||||
"success": "Coordinates: %s, %s, %s\nScene ID: %s",
|
||||
"description": "Get coordinates"
|
||||
"success": "Coordinates: %s, %s, %s\nRotation:%s, %s, %s\nScene ID: %s",
|
||||
"description": "Gets position and rotation information"
|
||||
},
|
||||
"quest": {
|
||||
"added": "Quest %s added.",
|
||||
|
@ -207,8 +207,8 @@
|
||||
"description": "Da o quita un permiso a un jugador"
|
||||
},
|
||||
"position": {
|
||||
"success": "Coordenadas: %s, %s, %s\nID del escenario: %s",
|
||||
"description": "Da las coordenadas en el escenario actual"
|
||||
"success": "Coordenadas: %s, %s, %s\nRotación: %s, %s, %s\nID del escenario: %s",
|
||||
"description": "Obtener información sobre ubicación y rotación"
|
||||
},
|
||||
"quest": {
|
||||
"added": "Misión %s añadida.",
|
||||
|
@ -207,8 +207,8 @@
|
||||
"description": "Accorde ou retire une permission a un utilisateur"
|
||||
},
|
||||
"position": {
|
||||
"success": "Coordonées: %s, %s, %s\nID de la scène: %s",
|
||||
"description": "Obtenir vos coordonnées"
|
||||
"success": "Coordonées: %s, %s, %s\nRotatifs:%s, %s, %s\nID de la scène: %s",
|
||||
"description": "Obtient des informations de position et de rotation"
|
||||
},
|
||||
"quest": {
|
||||
"added": "Quête %s ajoutée.",
|
||||
|
@ -207,8 +207,8 @@
|
||||
"description": "ユーザーの権限を付与または削除します"
|
||||
},
|
||||
"position": {
|
||||
"success": "座標: %s、%s、%s\nシーンID: %s",
|
||||
"description": "座標を取得する"
|
||||
"success": "座標:%s、%s、%s\n回転:%s、%s、%s\nシーンID: %s",
|
||||
"description": "位置と回転情報を取得します"
|
||||
},
|
||||
"quest": {
|
||||
"added": "クエスト %s が追加されました。",
|
||||
|
@ -207,8 +207,8 @@
|
||||
"description": "사용자에게 권한을 부여하거나 제거합니다."
|
||||
},
|
||||
"position": {
|
||||
"success": "좌표: %s, %s, %s\nScene ID: %s",
|
||||
"description": "좌표를 출력합니다"
|
||||
"success": "좌표: %s, %s, %s\n회전:%s, %s, %s\nScene ID: %s",
|
||||
"description": "위치 및 회전 정보를 가져옵니다"
|
||||
},
|
||||
"quest": {
|
||||
"added": "%s 퀘스트가 추가되었습니다.",
|
||||
|
@ -207,8 +207,8 @@
|
||||
"description": "Dodaj lub usuń uprawnienia podanego gracza."
|
||||
},
|
||||
"position": {
|
||||
"success": "Koordynaty: (%s, %s, %s).\nID sceny: %s.",
|
||||
"description": "Pokaż gdzie znajduje się dany gracz."
|
||||
"success": "Koordynaty: (%s, %s, %s).\nKrążyć:%s, %s, %s\nID sceny: %s.",
|
||||
"description": "Pobiera informacje o pozycji i obrocie"
|
||||
},
|
||||
"quest": {
|
||||
"added": "Zadanie %s zostało dodane.",
|
||||
|
@ -207,8 +207,8 @@
|
||||
"description": "Acordă sau elimină o permisiune de la un utilizator."
|
||||
},
|
||||
"position": {
|
||||
"success": "Coordonate: %s, %s, %s\nScene ID: %s",
|
||||
"description": "Obțineți coordonatele"
|
||||
"success": "Coordonate: %s, %s, %s\nGravitează:%s, %s, %s\nScene ID: %s",
|
||||
"description": "Obține informații despre poziție și rotație"
|
||||
},
|
||||
"quest": {
|
||||
"added": "Misiunea %s adăugată.",
|
||||
|
@ -207,7 +207,7 @@
|
||||
"description": "Добавляет (add) или удаляет (remove) разрешения у пользователя"
|
||||
},
|
||||
"position": {
|
||||
"success": "Координаты: %s, %s, %s\nID сцены: %s",
|
||||
"success": "Координаты: %s, %s, %s\nПоворот:%s, %s, %s\nID сцены: %s",
|
||||
"description": "Позволяет получить координаты"
|
||||
},
|
||||
"quest": {
|
||||
|
@ -181,7 +181,7 @@
|
||||
},
|
||||
"killall": {
|
||||
"scene_not_found_in_player_world": "未在玩家世界中找到此场景。",
|
||||
"kill_monsters_in_scene": "已杀死场景 %s 中的 %s 个怪物。",
|
||||
"kill_monsters_in_scene": "已杀死 %s 个怪物。 [场景ID: %s ]",
|
||||
"description": "杀死所有怪物"
|
||||
},
|
||||
"killCharacter": {
|
||||
@ -207,8 +207,8 @@
|
||||
"description": "添加或移除指定玩家的权限"
|
||||
},
|
||||
"position": {
|
||||
"success": "坐标:%s, %s, %s\n场景ID:%s",
|
||||
"description": "获取所在位置"
|
||||
"success": "坐标:%s, %s, %s\n旋转:%s, %s, %s\n场景ID:%s",
|
||||
"description": "获取所在位置和旋转信息"
|
||||
},
|
||||
"quest": {
|
||||
"added": "已添加任务 %s。",
|
||||
@ -330,7 +330,7 @@
|
||||
"weather": {
|
||||
"success": "已设置天气ID 为 %s,气候类型为 %s。",
|
||||
"status": "当前天气ID 为 %s,气候类型为 %s。",
|
||||
"description": "更改天气ID和气候类型。天气ID可以在 ./Resources/ExcelBinOutput/WeatherExcelConfigData.json 中找到。\n\t气候类型:sunny(晴天), cloudy(多云), rain(雨), thunderstorm(雷雨), snow(雪), mist(雾)"
|
||||
"description": "更改天气ID和气候类型。\n\t天气ID可以在 ./Resources/ExcelBinOutput/WeatherExcelConfigData.json 中找到。\n\t气候类型:sunny(晴天), cloudy(多云), rain(雨), thunderstorm(雷雨), snow(雪), mist(雾)"
|
||||
},
|
||||
"ban": {
|
||||
"success": "成功封禁玩家。",
|
||||
@ -384,19 +384,19 @@
|
||||
}
|
||||
},
|
||||
"plugin": {
|
||||
"directory_failed": "🇺🇸Failed to create plugins directory: ",
|
||||
"unable_to_load": "🇺🇸Unable to load plugin.",
|
||||
"invalid_config": "🇺🇸Plugin %s has an invalid config file.",
|
||||
"invalid_main_class": "🇺🇸Plugin %s has an invalid main class.",
|
||||
"missing_config": "🇺🇸Plugin %s lacks a valid config file.",
|
||||
"failed_to_load_plugin": "🇺🇸Failed to load plugin: %s",
|
||||
"failed_to_load": "🇺🇸Failed to load a plugin.",
|
||||
"failed_to_load_dependencies": "🇺🇸Failed to load plugins with dependencies.",
|
||||
"loading_plugin": "🇺🇸Loading plugin: %s",
|
||||
"failed_add_id": "🇺🇸Failed to add plugin identifier: %s",
|
||||
"enabling_plugin": "🇺🇸Enabling plugin: %s",
|
||||
"enabling_failed": "🇺🇸Failed to enable plugin: %s",
|
||||
"disabling_plugin": "🇺🇸Disabling plugin: %s",
|
||||
"disabling_failed": "🇺🇸Failed to disable plugin: %s"
|
||||
"directory_failed": "无法创建插件目录:",
|
||||
"unable_to_load": "无法加载插件。",
|
||||
"invalid_config": "插件:%s 的配置文件无效。",
|
||||
"invalid_main_class": "插件:%s 的主类无效。",
|
||||
"missing_config": "插件:%s 缺少有效的配置文件。",
|
||||
"failed_to_load_plugin": "无法加载插件:%s",
|
||||
"failed_to_load": "无法加载插件。",
|
||||
"failed_to_load_dependencies": "无法加载插件依赖。",
|
||||
"loading_plugin": "正在加载插件:%s",
|
||||
"failed_add_id": "无法添加插件标识符:%s",
|
||||
"enabling_plugin": "启用插件:%s",
|
||||
"enabling_failed": "无法启用插件:%s",
|
||||
"disabling_plugin": "正在禁用插件:%s",
|
||||
"disabling_failed": "无法禁用插件:%s"
|
||||
}
|
||||
}
|
||||
|
@ -207,8 +207,8 @@
|
||||
"description": "指派或移除指定玩家的權限。"
|
||||
},
|
||||
"position": {
|
||||
"success": "座標:%s, %s, %s\n場景ID:%s",
|
||||
"description": "獲取目前所在位置的座標。"
|
||||
"success": "坐標:%s, %s, %s\n旋轉:%s, %s, %s\n場景ID:%s",
|
||||
"description": "獲取所在坐標和旋轉信息"
|
||||
},
|
||||
"quest": {
|
||||
"added": "已添加任務 %s",
|
||||
|
Loading…
x
Reference in New Issue
Block a user