Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
ziqian zhang
Grasscutter
Commits
219a8508
Commit
219a8508
authored
May 08, 2022
by
Akka
Browse files
Merge remote-tracking branch 'origin/development' into tower
parents
4b6842f0
65861c3c
Changes
66
Hide whitespace changes
Inline
Side-by-side
.github/workflows/build.yml
View file @
219a8508
...
@@ -31,4 +31,4 @@ jobs:
...
@@ -31,4 +31,4 @@ jobs:
uses
:
actions/upload-artifact@v3
uses
:
actions/upload-artifact@v3
with
:
with
:
name
:
Grasscutter
name
:
Grasscutter
path
:
grasscutter-*
-dev
.jar
path
:
grasscutter-*.jar
build.gradle
View file @
219a8508
...
@@ -43,7 +43,7 @@ sourceCompatibility = JavaVersion.VERSION_17
...
@@ -43,7 +43,7 @@ sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility
=
JavaVersion
.
VERSION_17
targetCompatibility
=
JavaVersion
.
VERSION_17
group
=
'xyz.grasscutters'
group
=
'xyz.grasscutters'
version
=
'1.
0.3-dev
'
version
=
'1.
1.0
'
sourceCompatibility
=
17
sourceCompatibility
=
17
targetCompatibility
=
17
targetCompatibility
=
17
...
@@ -228,4 +228,4 @@ javadoc {
...
@@ -228,4 +228,4 @@ javadoc {
processResources
{
processResources
{
dependsOn
"generateProto"
dependsOn
"generateProto"
}
}
\ No newline at end of file
plugin-schema.json
0 → 100644
View file @
219a8508
{
"$schema"
:
"http://json-schema.org/draft-07/schema#"
,
"title"
:
"JSON schema for a Grasscutter Plugin"
,
"type"
:
"object"
,
"additionalProperties"
:
true
,
"definitions"
:
{
"plugin-name"
:
{
"type"
:
"string"
,
"pattern"
:
"^[A-Za-z
\\
d_.-]+$"
}
},
"required"
:
[
"name"
,
"description"
,
"mainClass"
],
"properties"
:
{
"name"
:
{
"description"
:
"The unique name of plugin."
,
"$ref"
:
"#/definitions/plugin-name"
},
"mainClass"
:
{
"description"
:
"The plugin's initial class file."
,
"type"
:
"string"
,
"pattern"
:
"^(?!org
\\
.bukkit
\\
.)([a-zA-Z_$][a-zA-Z
\\
d_$]*
\\
.)*[a-zA-Z_$][a-zA-Z
\\
d_$]*$"
},
"version"
:
{
"description"
:
"A plugin revision identifier."
,
"type"
:
[
"string"
,
"number"
]
},
"description"
:
{
"description"
:
"Human readable plugin summary."
,
"type"
:
"string"
},
"author"
:
{
"description"
:
"The plugin author."
,
"type"
:
"string"
},
"authors"
:
{
"description"
:
"The plugin contributors."
,
"type"
:
"array"
,
"items"
:
{
"type"
:
"string"
}
},
"website"
:
{
"title"
:
"Website"
,
"description"
:
"The URL to the plugin's site"
,
"type"
:
"string"
,
"format"
:
"uri"
}
}
}
\ No newline at end of file
src/main/java/emu/grasscutter/Config.java
View file @
219a8508
...
@@ -23,7 +23,7 @@ public final class Config {
...
@@ -23,7 +23,7 @@ public final class Config {
public
GameServerOptions
GameServer
=
new
GameServerOptions
();
public
GameServerOptions
GameServer
=
new
GameServerOptions
();
public
DispatchServerOptions
DispatchServer
=
new
DispatchServerOptions
();
public
DispatchServerOptions
DispatchServer
=
new
DispatchServerOptions
();
public
Locale
LocaleLanguage
=
Locale
.
getDefault
();
public
Locale
LocaleLanguage
=
Locale
.
getDefault
();
public
Locale
DefaultLanguage
=
Locale
.
US
;
public
Locale
DefaultLanguage
=
Locale
.
ENGLISH
;
public
Boolean
OpenStamina
=
true
;
public
Boolean
OpenStamina
=
true
;
public
GameServerOptions
getGameServerOptions
()
{
public
GameServerOptions
getGameServerOptions
()
{
...
...
src/main/java/emu/grasscutter/Grasscutter.java
View file @
219a8508
...
@@ -149,9 +149,10 @@ public final class Grasscutter {
...
@@ -149,9 +149,10 @@ public final class Grasscutter {
public
static
void
loadLanguage
()
{
public
static
void
loadLanguage
()
{
var
locale
=
config
.
LocaleLanguage
;
var
locale
=
config
.
LocaleLanguage
;
String
languageTag
=
locale
.
toLanguageTag
();
var
languageTag
=
locale
.
toLanguageTag
();
if
(
languageTag
.
equals
(
"und"
))
{
if
(
languageTag
.
equals
(
"und"
))
{
Grasscutter
.
getLogger
().
error
(
"Illegal locale language, using en-US instead."
);
Grasscutter
.
getLogger
().
error
(
"Illegal locale language, using
'
en-US
'
instead."
);
language
=
Language
.
getLanguage
(
"en-US"
);
language
=
Language
.
getLanguage
(
"en-US"
);
}
else
{
}
else
{
language
=
Language
.
getLanguage
(
languageTag
);
language
=
Language
.
getLanguage
(
languageTag
);
...
...
src/main/java/emu/grasscutter/command/Command.java
View file @
219a8508
...
@@ -9,7 +9,7 @@ public @interface Command {
...
@@ -9,7 +9,7 @@ public @interface Command {
String
usage
()
default
"No usage specified"
;
String
usage
()
default
"No usage specified"
;
String
description
()
default
"
No
description
specified"
;
String
description
()
default
"
commands.generic.no_
description
_
specified"
;
String
[]
aliases
()
default
{};
String
[]
aliases
()
default
{};
...
...
src/main/java/emu/grasscutter/command/CommandHandler.java
View file @
219a8508
...
@@ -6,6 +6,7 @@ import emu.grasscutter.game.player.Player;
...
@@ -6,6 +6,7 @@ import emu.grasscutter.game.player.Player;
import
java.util.List
;
import
java.util.List
;
public
interface
CommandHandler
{
public
interface
CommandHandler
{
/**
/**
* Send a message to the target.
* Send a message to the target.
*
*
...
...
src/main/java/emu/grasscutter/command/CommandMap.java
View file @
219a8508
...
@@ -79,6 +79,12 @@ public final class CommandMap {
...
@@ -79,6 +79,12 @@ public final class CommandMap {
return
this
;
return
this
;
}
}
public
List
<
Command
>
getAnnotationsAsList
()
{
return
new
LinkedList
<>(
this
.
annotations
.
values
());
}
public
HashMap
<
String
,
Command
>
getAnnotations
()
{
return
new
LinkedHashMap
<>(
this
.
annotations
);
}
/**
/**
* Returns a list of all registered commands.
* Returns a list of all registered commands.
*
*
...
...
src/main/java/emu/grasscutter/command/commands/AccountCommand.java
View file @
219a8508
...
@@ -9,7 +9,7 @@ import java.util.List;
...
@@ -9,7 +9,7 @@ import java.util.List;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"account"
,
usage
=
"account <create|delete> <username> [uid]"
,
description
=
"
Modify user accounts
"
)
@Command
(
label
=
"account"
,
usage
=
"account <create|delete> <username> [uid]"
,
description
=
"
commands.account.description
"
)
public
final
class
AccountCommand
implements
CommandHandler
{
public
final
class
AccountCommand
implements
CommandHandler
{
@Override
@Override
...
...
src/main/java/emu/grasscutter/command/commands/BroadcastCommand.java
View file @
219a8508
...
@@ -9,8 +9,7 @@ import java.util.List;
...
@@ -9,8 +9,7 @@ import java.util.List;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"broadcast"
,
usage
=
"broadcast <message>"
,
@Command
(
label
=
"broadcast"
,
usage
=
"broadcast <message>"
,
aliases
=
{
"b"
},
permission
=
"server.broadcast"
,
description
=
"commands.broadcast.description"
)
description
=
"Sends a message to all the players"
,
aliases
=
{
"b"
},
permission
=
"server.broadcast"
)
public
final
class
BroadcastCommand
implements
CommandHandler
{
public
final
class
BroadcastCommand
implements
CommandHandler
{
@Override
@Override
...
...
src/main/java/emu/grasscutter/command/commands/ChangeSceneCommand.java
View file @
219a8508
...
@@ -8,9 +8,9 @@ import java.util.List;
...
@@ -8,9 +8,9 @@ import java.util.List;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"changescene"
,
usage
=
"changescene <scene id>"
,
@Command
(
label
=
"changescene"
,
usage
=
"changescene <scene id>"
,
aliases
=
{
"scene"
},
permission
=
"player.changescene"
,
description
=
"commands.changescene.description"
)
description
=
"Changes your scene"
,
aliases
=
{
"scene"
},
permission
=
"player.changescene"
)
public
final
class
ChangeSceneCommand
implements
CommandHandler
{
public
final
class
ChangeSceneCommand
implements
CommandHandler
{
@Override
@Override
public
void
execute
(
Player
sender
,
Player
targetPlayer
,
List
<
String
>
args
)
{
public
void
execute
(
Player
sender
,
Player
targetPlayer
,
List
<
String
>
args
)
{
if
(
targetPlayer
==
null
)
{
if
(
targetPlayer
==
null
)
{
...
...
src/main/java/emu/grasscutter/command/commands/ClearCommand.java
View file @
219a8508
...
@@ -13,7 +13,7 @@ import java.util.List;
...
@@ -13,7 +13,7 @@ import java.util.List;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"clear"
,
usage
=
"clear <all|wp|art|mat>"
,
//Merged /clearartifacts and /clearweapons to /clear <args> [uid]
@Command
(
label
=
"clear"
,
usage
=
"clear <all|wp|art|mat>"
,
//Merged /clearartifacts and /clearweapons to /clear <args> [uid]
description
=
"
Deletes unequipped unlocked items, including yellow rarity ones from your inventory
"
,
description
=
"
commands.clear.description
"
,
aliases
=
{
"clear"
},
permission
=
"player.clearinv"
)
aliases
=
{
"clear"
},
permission
=
"player.clearinv"
)
public
final
class
ClearCommand
implements
CommandHandler
{
public
final
class
ClearCommand
implements
CommandHandler
{
...
...
src/main/java/emu/grasscutter/command/commands/CoopCommand.java
View file @
219a8508
...
@@ -9,9 +9,9 @@ import java.util.List;
...
@@ -9,9 +9,9 @@ import java.util.List;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"coop"
,
usage
=
"coop [host UID]"
,
@Command
(
label
=
"coop"
,
usage
=
"coop [host UID]"
,
permission
=
"server.coop"
,
description
=
"commands.coop.description"
)
description
=
"Forces someone to join the world of others"
,
permission
=
"server.coop"
)
public
final
class
CoopCommand
implements
CommandHandler
{
public
final
class
CoopCommand
implements
CommandHandler
{
@Override
@Override
public
void
execute
(
Player
sender
,
Player
targetPlayer
,
List
<
String
>
args
)
{
public
void
execute
(
Player
sender
,
Player
targetPlayer
,
List
<
String
>
args
)
{
if
(
targetPlayer
==
null
)
{
if
(
targetPlayer
==
null
)
{
...
...
src/main/java/emu/grasscutter/command/commands/DropCommand.java
View file @
219a8508
...
@@ -13,8 +13,7 @@ import java.util.List;
...
@@ -13,8 +13,7 @@ import java.util.List;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"drop"
,
usage
=
"drop <itemId|itemName> [amount]"
,
@Command
(
label
=
"drop"
,
usage
=
"drop <itemId|itemName> [amount]"
,
aliases
=
{
"d"
,
"dropitem"
},
permission
=
"server.drop"
,
description
=
"commands.drop.description"
)
description
=
"Drops an item near you"
,
aliases
=
{
"d"
,
"dropitem"
},
permission
=
"server.drop"
)
public
final
class
DropCommand
implements
CommandHandler
{
public
final
class
DropCommand
implements
CommandHandler
{
@Override
@Override
...
...
src/main/java/emu/grasscutter/command/commands/EnterDungeonCommand.java
View file @
219a8508
...
@@ -8,9 +8,9 @@ import java.util.List;
...
@@ -8,9 +8,9 @@ import java.util.List;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"enterdungeon"
,
usage
=
"enterdungeon <dungeon id>"
,
@Command
(
label
=
"enterdungeon"
,
usage
=
"enterdungeon <dungeon id>"
,
aliases
=
{
"dungeon"
},
permission
=
"player.enterdungeon"
,
description
=
"commands.enter_dungeon.description"
)
description
=
"Enter a dungeon"
,
aliases
=
{
"dungeon"
},
permission
=
"player.enterdungeon"
)
public
final
class
EnterDungeonCommand
implements
CommandHandler
{
public
final
class
EnterDungeonCommand
implements
CommandHandler
{
@Override
@Override
public
void
execute
(
Player
sender
,
Player
targetPlayer
,
List
<
String
>
args
)
{
public
void
execute
(
Player
sender
,
Player
targetPlayer
,
List
<
String
>
args
)
{
if
(
targetPlayer
==
null
)
{
if
(
targetPlayer
==
null
)
{
...
...
src/main/java/emu/grasscutter/command/commands/GiveAllCommand.java
View file @
219a8508
...
@@ -15,8 +15,7 @@ import java.util.*;
...
@@ -15,8 +15,7 @@ import java.util.*;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"giveall"
,
usage
=
"giveall [amount]"
,
@Command
(
label
=
"giveall"
,
usage
=
"giveall [amount]"
,
aliases
=
{
"givea"
},
permission
=
"player.giveall"
,
threading
=
true
,
description
=
"commands.giveAll.description"
)
description
=
"Gives all items"
,
aliases
=
{
"givea"
},
permission
=
"player.giveall"
,
threading
=
true
)
public
final
class
GiveAllCommand
implements
CommandHandler
{
public
final
class
GiveAllCommand
implements
CommandHandler
{
@Override
@Override
...
...
src/main/java/emu/grasscutter/command/commands/GiveArtifactCommand.java
View file @
219a8508
...
@@ -16,8 +16,9 @@ import java.util.List;
...
@@ -16,8 +16,9 @@ import java.util.List;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"giveart"
,
usage
=
"giveart <artifactId> <mainPropId> [<appendPropId>[,<times>]]... [level]"
,
description
=
"Gives the player a specified artifact"
,
aliases
=
{
"gart"
},
permission
=
"player.giveart
"
)
@Command
(
label
=
"giveart"
,
usage
=
"giveart <artifactId> <mainPropId> [<appendPropId>[,<times>]]... [level]"
,
aliases
=
{
"gart"
},
permission
=
"player.giveart"
,
description
=
"commands.giveArtifact.description
"
)
public
final
class
GiveArtifactCommand
implements
CommandHandler
{
public
final
class
GiveArtifactCommand
implements
CommandHandler
{
@Override
@Override
public
void
execute
(
Player
sender
,
Player
targetPlayer
,
List
<
String
>
args
)
{
public
void
execute
(
Player
sender
,
Player
targetPlayer
,
List
<
String
>
args
)
{
if
(
targetPlayer
==
null
)
{
if
(
targetPlayer
==
null
)
{
...
...
src/main/java/emu/grasscutter/command/commands/GiveCharCommand.java
View file @
219a8508
...
@@ -12,8 +12,7 @@ import java.util.List;
...
@@ -12,8 +12,7 @@ import java.util.List;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"givechar"
,
usage
=
"givechar <avatarId> [level]"
,
@Command
(
label
=
"givechar"
,
usage
=
"givechar <avatarId> [level]"
,
aliases
=
{
"givec"
},
permission
=
"player.givechar"
,
description
=
"commands.giveChar.description"
)
description
=
"Gives the player a specified character"
,
aliases
=
{
"givec"
},
permission
=
"player.givechar"
)
public
final
class
GiveCharCommand
implements
CommandHandler
{
public
final
class
GiveCharCommand
implements
CommandHandler
{
@Override
@Override
...
@@ -77,6 +76,6 @@ public final class GiveCharCommand implements CommandHandler {
...
@@ -77,6 +76,6 @@ public final class GiveCharCommand implements CommandHandler {
avatar
.
recalcStats
();
avatar
.
recalcStats
();
targetPlayer
.
addAvatar
(
avatar
);
targetPlayer
.
addAvatar
(
avatar
);
CommandHandler
.
sendMessage
(
sender
,
translate
(
"commands.
execution.
giveChar.given"
,
Integer
.
toString
(
avatarId
),
Integer
.
toString
(
level
),
Integer
.
toString
(
targetPlayer
.
getUid
())));
CommandHandler
.
sendMessage
(
sender
,
translate
(
"commands.giveChar.given"
,
Integer
.
toString
(
avatarId
),
Integer
.
toString
(
level
),
Integer
.
toString
(
targetPlayer
.
getUid
())));
}
}
}
}
src/main/java/emu/grasscutter/command/commands/GiveCommand.java
View file @
219a8508
package
emu.grasscutter.command.commands
;
package
emu.grasscutter.command.commands
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.command.Command
;
import
emu.grasscutter.command.Command
;
import
emu.grasscutter.command.CommandHandler
;
import
emu.grasscutter.command.CommandHandler
;
import
emu.grasscutter.data.GameData
;
import
emu.grasscutter.data.GameData
;
...
@@ -12,13 +11,13 @@ import emu.grasscutter.game.props.ActionReason;
...
@@ -12,13 +11,13 @@ import emu.grasscutter.game.props.ActionReason;
import
java.util.LinkedList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.regex.Pattern
;
import
java.util.regex.Matcher
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"give"
,
usage
=
"give <itemId|itemName> [amount] [level]"
,
description
=
"Gives an item to you or the specified player"
,
aliases
=
{
@Command
(
label
=
"give"
,
usage
=
"give <itemId|itemName> [amount] [level]"
,
aliases
=
{
"g"
,
"item"
,
"giveitem"
},
permission
=
"player.give"
)
"g"
,
"item"
,
"giveitem"
},
permission
=
"player.give"
,
description
=
"commands.give.description"
)
public
final
class
GiveCommand
implements
CommandHandler
{
public
final
class
GiveCommand
implements
CommandHandler
{
Pattern
lvlRegex
=
Pattern
.
compile
(
"l(?:vl?)?(\\d+)"
);
// Java is a joke of a proglang that doesn't have raw string literals
Pattern
lvlRegex
=
Pattern
.
compile
(
"l(?:vl?)?(\\d+)"
);
// Java is a joke of a proglang that doesn't have raw string literals
Pattern
refineRegex
=
Pattern
.
compile
(
"r(\\d+)"
);
Pattern
refineRegex
=
Pattern
.
compile
(
"r(\\d+)"
);
...
...
src/main/java/emu/grasscutter/command/commands/GodModeCommand.java
View file @
219a8508
package
emu.grasscutter.command.commands
;
package
emu.grasscutter.command.commands
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.command.Command
;
import
emu.grasscutter.command.Command
;
import
emu.grasscutter.command.CommandHandler
;
import
emu.grasscutter.command.CommandHandler
;
import
emu.grasscutter.game.player.Player
;
import
emu.grasscutter.game.player.Player
;
...
@@ -9,8 +8,7 @@ import java.util.List;
...
@@ -9,8 +8,7 @@ import java.util.List;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
@Command
(
label
=
"godmode"
,
usage
=
"godmode [on|off|toggle]"
,
@Command
(
label
=
"godmode"
,
usage
=
"godmode [on|off|toggle]"
,
permission
=
"player.godmode"
,
description
=
"commands.godmode.description"
)
description
=
"Prevents you from taking damage. Defaults to toggle."
,
permission
=
"player.godmode"
)
public
final
class
GodModeCommand
implements
CommandHandler
{
public
final
class
GodModeCommand
implements
CommandHandler
{
@Override
@Override
...
...
Prev
1
2
3
4
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment