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
1c36f078
Commit
1c36f078
authored
Apr 26, 2022
by
Melledy
Browse files
Renamed all references to a certain game
parent
6b8902be
Changes
270
Hide whitespace changes
Inline
Side-by-side
src/main/java/emu/grasscutter/netty/
Mihoyo
KcpChannel.java
→
src/main/java/emu/grasscutter/netty/KcpChannel.java
View file @
1c36f078
...
@@ -8,7 +8,7 @@ import io.netty.buffer.Unpooled;
...
@@ -8,7 +8,7 @@ import io.netty.buffer.Unpooled;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.channel.ChannelInboundHandlerAdapter
;
import
io.netty.channel.ChannelInboundHandlerAdapter
;
public
abstract
class
Mihoyo
KcpChannel
extends
ChannelInboundHandlerAdapter
{
public
abstract
class
KcpChannel
extends
ChannelInboundHandlerAdapter
{
private
UkcpChannel
kcpChannel
;
private
UkcpChannel
kcpChannel
;
private
ChannelHandlerContext
ctx
;
private
ChannelHandlerContext
ctx
;
private
boolean
isActive
;
private
boolean
isActive
;
...
...
src/main/java/emu/grasscutter/netty/
Mihoyo
KcpHandshaker.java
→
src/main/java/emu/grasscutter/netty/KcpHandshaker.java
View file @
1c36f078
...
@@ -10,9 +10,9 @@ import io.netty.channel.ChannelMetadata;
...
@@ -10,9 +10,9 @@ import io.netty.channel.ChannelMetadata;
import
io.netty.channel.ChannelOutboundBuffer
;
import
io.netty.channel.ChannelOutboundBuffer
;
import
io.netty.channel.nio.AbstractNioMessageChannel
;
import
io.netty.channel.nio.AbstractNioMessageChannel
;
public
class
Mihoyo
KcpHandshaker
extends
AbstractNioMessageChannel
{
public
class
KcpHandshaker
extends
AbstractNioMessageChannel
{
protected
Mihoyo
KcpHandshaker
(
Channel
parent
,
SelectableChannel
ch
,
int
readInterestOp
)
{
protected
KcpHandshaker
(
Channel
parent
,
SelectableChannel
ch
,
int
readInterestOp
)
{
super
(
parent
,
ch
,
readInterestOp
);
super
(
parent
,
ch
,
readInterestOp
);
}
}
...
...
src/main/java/emu/grasscutter/netty/
Mihoyo
KcpServer.java
→
src/main/java/emu/grasscutter/netty/KcpServer.java
View file @
1c36f078
...
@@ -13,14 +13,14 @@ import io.netty.channel.EventLoopGroup;
...
@@ -13,14 +13,14 @@ import io.netty.channel.EventLoopGroup;
import
io.netty.channel.nio.NioEventLoopGroup
;
import
io.netty.channel.nio.NioEventLoopGroup
;
@SuppressWarnings
(
"rawtypes"
)
@SuppressWarnings
(
"rawtypes"
)
public
class
Mihoyo
KcpServer
extends
Thread
{
public
class
KcpServer
extends
Thread
{
private
EventLoopGroup
group
;
private
EventLoopGroup
group
;
private
UkcpServerBootstrap
bootstrap
;
private
UkcpServerBootstrap
bootstrap
;
private
ChannelInitializer
serverInitializer
;
private
ChannelInitializer
serverInitializer
;
private
InetSocketAddress
address
;
private
InetSocketAddress
address
;
public
Mihoyo
KcpServer
(
InetSocketAddress
address
)
{
public
KcpServer
(
InetSocketAddress
address
)
{
this
.
address
=
address
;
this
.
address
=
address
;
this
.
setName
(
"Netty Server Thread"
);
this
.
setName
(
"Netty Server Thread"
);
}
}
...
@@ -40,7 +40,7 @@ public class MihoyoKcpServer extends Thread {
...
@@ -40,7 +40,7 @@ public class MihoyoKcpServer extends Thread {
@Override
@Override
public
void
run
()
{
public
void
run
()
{
if
(
getServerInitializer
()
==
null
)
{
if
(
getServerInitializer
()
==
null
)
{
this
.
setServerInitializer
(
new
Mihoyo
KcpServerInitializer
());
this
.
setServerInitializer
(
new
KcpServerInitializer
());
}
}
try
{
try
{
...
...
src/main/java/emu/grasscutter/netty/
Mihoyo
KcpServerInitializer.java
→
src/main/java/emu/grasscutter/netty/KcpServerInitializer.java
View file @
1c36f078
...
@@ -5,7 +5,7 @@ import io.netty.channel.ChannelInitializer;
...
@@ -5,7 +5,7 @@ import io.netty.channel.ChannelInitializer;
import
io.netty.channel.ChannelPipeline
;
import
io.netty.channel.ChannelPipeline
;
@SuppressWarnings
(
"unused"
)
@SuppressWarnings
(
"unused"
)
public
class
Mihoyo
KcpServerInitializer
extends
ChannelInitializer
<
UkcpChannel
>
{
public
class
KcpServerInitializer
extends
ChannelInitializer
<
UkcpChannel
>
{
@Override
@Override
protected
void
initChannel
(
UkcpChannel
ch
)
throws
Exception
{
protected
void
initChannel
(
UkcpChannel
ch
)
throws
Exception
{
...
...
src/main/java/emu/grasscutter/plugin/api/PlayerHook.java
View file @
1c36f078
package
emu.grasscutter.plugin.api
;
package
emu.grasscutter.plugin.api
;
import
emu.grasscutter.game.
Genshin
Player
;
import
emu.grasscutter.game.Player
;
import
emu.grasscutter.game.avatar.
Genshin
Avatar
;
import
emu.grasscutter.game.avatar.Avatar
;
import
emu.grasscutter.game.entity.EntityAvatar
;
import
emu.grasscutter.game.entity.EntityAvatar
;
import
emu.grasscutter.game.props.EnterReason
;
import
emu.grasscutter.game.props.EnterReason
;
import
emu.grasscutter.game.props.FightProperty
;
import
emu.grasscutter.game.props.FightProperty
;
import
emu.grasscutter.net.packet.
Genshin
Packet
;
import
emu.grasscutter.net.packet.
Base
Packet
;
import
emu.grasscutter.net.proto.EnterTypeOuterClass.EnterType
;
import
emu.grasscutter.net.proto.EnterTypeOuterClass.EnterType
;
import
emu.grasscutter.server.packet.send.PacketAvatarFightPropUpdateNotify
;
import
emu.grasscutter.server.packet.send.PacketAvatarFightPropUpdateNotify
;
import
emu.grasscutter.server.packet.send.PacketAvatarLifeStateChangeNotify
;
import
emu.grasscutter.server.packet.send.PacketAvatarLifeStateChangeNotify
;
...
@@ -13,16 +13,16 @@ import emu.grasscutter.server.packet.send.PacketPlayerEnterSceneNotify;
...
@@ -13,16 +13,16 @@ import emu.grasscutter.server.packet.send.PacketPlayerEnterSceneNotify;
import
emu.grasscutter.utils.Position
;
import
emu.grasscutter.utils.Position
;
/**
/**
* Hooks into the {@link
Genshin
Player} class, adding convenient ways to do certain things.
* Hooks into the {@link Player} class, adding convenient ways to do certain things.
*/
*/
public
final
class
PlayerHook
{
public
final
class
PlayerHook
{
private
final
Genshin
Player
player
;
private
final
Player
player
;
/**
/**
* Hooks into the player.
* Hooks into the player.
* @param player The player to hook into.
* @param player The player to hook into.
*/
*/
public
PlayerHook
(
Genshin
Player
player
)
{
public
PlayerHook
(
Player
player
)
{
this
.
player
=
player
;
this
.
player
=
player
;
}
}
...
@@ -53,7 +53,7 @@ public final class PlayerHook {
...
@@ -53,7 +53,7 @@ public final class PlayerHook {
* Broadcasts the packet sent to all world players.
* Broadcasts the packet sent to all world players.
* @param packet The packet to send.
* @param packet The packet to send.
*/
*/
public
void
broadcastPacketToWorld
(
Genshin
Packet
packet
)
{
public
void
broadcastPacketToWorld
(
Base
Packet
packet
)
{
this
.
player
.
getWorld
().
broadcastPacket
(
packet
);
this
.
player
.
getWorld
().
broadcastPacket
(
packet
);
}
}
...
@@ -70,7 +70,7 @@ public final class PlayerHook {
...
@@ -70,7 +70,7 @@ public final class PlayerHook {
* Revives the specified avatar.
* Revives the specified avatar.
* @param avatar The avatar to revive.
* @param avatar The avatar to revive.
*/
*/
public
void
reviveAvatar
(
Genshin
Avatar
avatar
)
{
public
void
reviveAvatar
(
Avatar
avatar
)
{
this
.
broadcastPacketToWorld
(
new
PacketAvatarLifeStateChangeNotify
(
avatar
));
this
.
broadcastPacketToWorld
(
new
PacketAvatarLifeStateChangeNotify
(
avatar
));
}
}
...
@@ -105,9 +105,9 @@ public final class PlayerHook {
...
@@ -105,9 +105,9 @@ public final class PlayerHook {
/**
/**
* Gets the currently selected avatar.
* Gets the currently selected avatar.
* @return The avatar as an {@link
Genshin
Avatar}.
* @return The avatar as an {@link Avatar}.
*/
*/
public
Genshin
Avatar
getCurrentAvatar
()
{
public
Avatar
getCurrentAvatar
()
{
return
this
.
getCurrentAvatarEntity
().
getAvatar
();
return
this
.
getCurrentAvatarEntity
().
getAvatar
();
}
}
}
}
\ No newline at end of file
src/main/java/emu/grasscutter/plugin/api/ServerHook.java
View file @
1c36f078
package
emu.grasscutter.plugin.api
;
package
emu.grasscutter.plugin.api
;
import
emu.grasscutter.game.
Genshin
Player
;
import
emu.grasscutter.game.Player
;
import
emu.grasscutter.server.game.GameServer
;
import
emu.grasscutter.server.game.GameServer
;
import
java.util.LinkedList
;
import
java.util.LinkedList
;
...
@@ -35,7 +35,7 @@ public final class ServerHook {
...
@@ -35,7 +35,7 @@ public final class ServerHook {
* Gets all online players.
* Gets all online players.
* @return Players connected to the server.
* @return Players connected to the server.
*/
*/
public
List
<
Genshin
Player
>
getOnlinePlayers
()
{
public
List
<
Player
>
getOnlinePlayers
()
{
return
new
LinkedList
<>(
this
.
server
.
getPlayers
().
values
());
return
new
LinkedList
<>(
this
.
server
.
getPlayers
().
values
());
}
}
}
}
\ No newline at end of file
src/main/java/emu/grasscutter/server/dispatch/DispatchServer.java
View file @
1c36f078
...
@@ -55,6 +55,7 @@ public final class DispatchServer {
...
@@ -55,6 +55,7 @@ public final class DispatchServer {
this
.
initRegion
();
this
.
initRegion
();
}
}
@Deprecated
public
HttpServer
getServer
()
{
public
HttpServer
getServer
()
{
return
server
;
return
server
;
}
}
...
...
src/main/java/emu/grasscutter/server/event/game/SendPacketEvent.java
View file @
1c36f078
package
emu.grasscutter.server.event.game
;
package
emu.grasscutter.server.event.game
;
import
emu.grasscutter.net.packet.
Genshin
Packet
;
import
emu.grasscutter.net.packet.
Base
Packet
;
import
emu.grasscutter.server.event.Cancellable
;
import
emu.grasscutter.server.event.Cancellable
;
import
emu.grasscutter.server.event.ServerEvent
;
import
emu.grasscutter.server.event.ServerEvent
;
import
emu.grasscutter.server.game.GameSession
;
import
emu.grasscutter.server.game.GameSession
;
public
final
class
SendPacketEvent
extends
ServerEvent
implements
Cancellable
{
public
final
class
SendPacketEvent
extends
ServerEvent
implements
Cancellable
{
private
final
GameSession
gameSession
;
private
final
GameSession
gameSession
;
private
Genshin
Packet
packet
;
private
Base
Packet
packet
;
public
SendPacketEvent
(
GameSession
gameSession
,
Genshin
Packet
packet
)
{
public
SendPacketEvent
(
GameSession
gameSession
,
Base
Packet
packet
)
{
super
(
Type
.
GAME
);
super
(
Type
.
GAME
);
this
.
gameSession
=
gameSession
;
this
.
gameSession
=
gameSession
;
...
@@ -20,11 +20,11 @@ public final class SendPacketEvent extends ServerEvent implements Cancellable {
...
@@ -20,11 +20,11 @@ public final class SendPacketEvent extends ServerEvent implements Cancellable {
return
this
.
gameSession
;
return
this
.
gameSession
;
}
}
public
void
setPacket
(
Genshin
Packet
packet
)
{
public
void
setPacket
(
Base
Packet
packet
)
{
this
.
packet
=
packet
;
this
.
packet
=
packet
;
}
}
public
Genshin
Packet
getPacket
()
{
public
Base
Packet
getPacket
()
{
return
this
.
packet
;
return
this
.
packet
;
}
}
}
}
src/main/java/emu/grasscutter/server/game/GameServer.java
View file @
1c36f078
...
@@ -5,12 +5,12 @@ import java.time.OffsetDateTime;
...
@@ -5,12 +5,12 @@ import java.time.OffsetDateTime;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentHashMap
;
import
emu.grasscutter.G
enshin
Constants
;
import
emu.grasscutter.G
ame
Constants
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.command.CommandMap
;
import
emu.grasscutter.command.CommandMap
;
import
emu.grasscutter.database.DatabaseHelper
;
import
emu.grasscutter.database.DatabaseHelper
;
import
emu.grasscutter.game.Account
;
import
emu.grasscutter.game.Account
;
import
emu.grasscutter.game.
Genshin
Player
;
import
emu.grasscutter.game.Player
;
import
emu.grasscutter.game.World
;
import
emu.grasscutter.game.World
;
import
emu.grasscutter.game.dungeons.DungeonManager
;
import
emu.grasscutter.game.dungeons.DungeonManager
;
import
emu.grasscutter.game.gacha.GachaManager
;
import
emu.grasscutter.game.gacha.GachaManager
;
...
@@ -20,18 +20,18 @@ import emu.grasscutter.game.managers.MultiplayerManager;
...
@@ -20,18 +20,18 @@ import emu.grasscutter.game.managers.MultiplayerManager;
import
emu.grasscutter.game.shop.ShopManager
;
import
emu.grasscutter.game.shop.ShopManager
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail
;
import
emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail
;
import
emu.grasscutter.netty.
Mihoyo
KcpServer
;
import
emu.grasscutter.netty.KcpServer
;
import
emu.grasscutter.server.event.ServerEvent
;
import
emu.grasscutter.server.event.ServerEvent
;
import
emu.grasscutter.server.event.game.ServerTickEvent
;
import
emu.grasscutter.server.event.game.ServerTickEvent
;
import
emu.grasscutter.server.event.internal.ServerStartEvent
;
import
emu.grasscutter.server.event.internal.ServerStartEvent
;
import
emu.grasscutter.server.event.internal.ServerStopEvent
;
import
emu.grasscutter.server.event.internal.ServerStopEvent
;
import
emu.grasscutter.task.TaskMap
;
import
emu.grasscutter.task.TaskMap
;
public
final
class
GameServer
extends
Mihoyo
KcpServer
{
public
final
class
GameServer
extends
KcpServer
{
private
final
InetSocketAddress
address
;
private
final
InetSocketAddress
address
;
private
final
GameServerPacketHandler
packetHandler
;
private
final
GameServerPacketHandler
packetHandler
;
private
final
Map
<
Integer
,
Genshin
Player
>
players
;
private
final
Map
<
Integer
,
Player
>
players
;
private
final
Set
<
World
>
worlds
;
private
final
Set
<
World
>
worlds
;
private
final
ChatManager
chatManager
;
private
final
ChatManager
chatManager
;
...
@@ -82,7 +82,7 @@ public final class GameServer extends MihoyoKcpServer {
...
@@ -82,7 +82,7 @@ public final class GameServer extends MihoyoKcpServer {
return
packetHandler
;
return
packetHandler
;
}
}
public
Map
<
Integer
,
Genshin
Player
>
getPlayers
()
{
public
Map
<
Integer
,
Player
>
getPlayers
()
{
return
players
;
return
players
;
}
}
...
@@ -122,22 +122,22 @@ public final class GameServer extends MihoyoKcpServer {
...
@@ -122,22 +122,22 @@ public final class GameServer extends MihoyoKcpServer {
return
this
.
taskMap
;
return
this
.
taskMap
;
}
}
public
void
registerPlayer
(
Genshin
Player
player
)
{
public
void
registerPlayer
(
Player
player
)
{
getPlayers
().
put
(
player
.
getUid
(),
player
);
getPlayers
().
put
(
player
.
getUid
(),
player
);
}
}
public
Genshin
Player
getPlayerByUid
(
int
id
)
{
public
Player
getPlayerByUid
(
int
id
)
{
return
this
.
getPlayerByUid
(
id
,
false
);
return
this
.
getPlayerByUid
(
id
,
false
);
}
}
public
Genshin
Player
getPlayerByUid
(
int
id
,
boolean
allowOfflinePlayers
)
{
public
Player
getPlayerByUid
(
int
id
,
boolean
allowOfflinePlayers
)
{
// Console check
// Console check
if
(
id
==
G
enshin
Constants
.
SERVER_CONSOLE_UID
)
{
if
(
id
==
G
ame
Constants
.
SERVER_CONSOLE_UID
)
{
return
null
;
return
null
;
}
}
// Get from online players
// Get from online players
Genshin
Player
player
=
this
.
getPlayers
().
get
(
id
);
Player
player
=
this
.
getPlayers
().
get
(
id
);
if
(!
allowOfflinePlayers
)
{
if
(!
allowOfflinePlayers
)
{
return
player
;
return
player
;
...
@@ -153,7 +153,7 @@ public final class GameServer extends MihoyoKcpServer {
...
@@ -153,7 +153,7 @@ public final class GameServer extends MihoyoKcpServer {
public
SocialDetail
.
Builder
getSocialDetailByUid
(
int
id
)
{
public
SocialDetail
.
Builder
getSocialDetailByUid
(
int
id
)
{
// Get from online players
// Get from online players
Genshin
Player
player
=
this
.
getPlayerByUid
(
id
,
true
);
Player
player
=
this
.
getPlayerByUid
(
id
,
true
);
if
(
player
==
null
)
{
if
(
player
==
null
)
{
return
null
;
return
null
;
...
@@ -163,7 +163,7 @@ public final class GameServer extends MihoyoKcpServer {
...
@@ -163,7 +163,7 @@ public final class GameServer extends MihoyoKcpServer {
}
}
public
Account
getAccountByName
(
String
username
)
{
public
Account
getAccountByName
(
String
username
)
{
Optional
<
Genshin
Player
>
playerOpt
=
getPlayers
().
values
().
stream
().
filter
(
player
->
player
.
getAccount
().
getUsername
().
equals
(
username
)).
findFirst
();
Optional
<
Player
>
playerOpt
=
getPlayers
().
values
().
stream
().
filter
(
player
->
player
.
getAccount
().
getUsername
().
equals
(
username
)).
findFirst
();
if
(
playerOpt
.
isPresent
())
{
if
(
playerOpt
.
isPresent
())
{
return
playerOpt
.
get
().
getAccount
();
return
playerOpt
.
get
().
getAccount
();
}
}
...
@@ -204,10 +204,10 @@ public final class GameServer extends MihoyoKcpServer {
...
@@ -204,10 +204,10 @@ public final class GameServer extends MihoyoKcpServer {
ServerStopEvent
event
=
new
ServerStopEvent
(
ServerEvent
.
Type
.
GAME
,
OffsetDateTime
.
now
());
event
.
call
();
ServerStopEvent
event
=
new
ServerStopEvent
(
ServerEvent
.
Type
.
GAME
,
OffsetDateTime
.
now
());
event
.
call
();
// Kick and save all players
// Kick and save all players
List
<
Genshin
Player
>
list
=
new
ArrayList
<>(
this
.
getPlayers
().
size
());
List
<
Player
>
list
=
new
ArrayList
<>(
this
.
getPlayers
().
size
());
list
.
addAll
(
this
.
getPlayers
().
values
());
list
.
addAll
(
this
.
getPlayers
().
values
());
for
(
Genshin
Player
player
:
list
)
{
for
(
Player
player
:
list
)
{
player
.
getSession
().
close
();
player
.
getSession
().
close
();
}
}
}
}
...
...
src/main/java/emu/grasscutter/server/game/GameServerInitializer.java
View file @
1c36f078
package
emu.grasscutter.server.game
;
package
emu.grasscutter.server.game
;
import
emu.grasscutter.netty.
Mihoyo
KcpServerInitializer
;
import
emu.grasscutter.netty.KcpServerInitializer
;
import
io.jpower.kcp.netty.UkcpChannel
;
import
io.jpower.kcp.netty.UkcpChannel
;
import
io.netty.channel.ChannelPipeline
;
import
io.netty.channel.ChannelPipeline
;
public
class
GameServerInitializer
extends
Mihoyo
KcpServerInitializer
{
public
class
GameServerInitializer
extends
KcpServerInitializer
{
private
GameServer
server
;
private
GameServer
server
;
public
GameServerInitializer
(
GameServer
server
)
{
public
GameServerInitializer
(
GameServer
server
)
{
...
...
src/main/java/emu/grasscutter/server/game/GameSession.java
View file @
1c36f078
...
@@ -8,11 +8,11 @@ import java.util.Set;
...
@@ -8,11 +8,11 @@ import java.util.Set;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.game.Account
;
import
emu.grasscutter.game.Account
;
import
emu.grasscutter.game.
Genshin
Player
;
import
emu.grasscutter.game.Player
;
import
emu.grasscutter.net.packet.
Genshin
Packet
;
import
emu.grasscutter.net.packet.
Base
Packet
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodesUtil
;
import
emu.grasscutter.net.packet.PacketOpcodesUtil
;
import
emu.grasscutter.netty.
Mihoyo
KcpChannel
;
import
emu.grasscutter.netty.KcpChannel
;
import
emu.grasscutter.server.event.game.SendPacketEvent
;
import
emu.grasscutter.server.event.game.SendPacketEvent
;
import
emu.grasscutter.utils.Crypto
;
import
emu.grasscutter.utils.Crypto
;
import
emu.grasscutter.utils.FileUtils
;
import
emu.grasscutter.utils.FileUtils
;
...
@@ -21,11 +21,11 @@ import io.netty.buffer.ByteBuf;
...
@@ -21,11 +21,11 @@ import io.netty.buffer.ByteBuf;
import
io.netty.buffer.Unpooled
;
import
io.netty.buffer.Unpooled
;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.channel.ChannelHandlerContext
;
public
class
GameSession
extends
Mihoyo
KcpChannel
{
public
class
GameSession
extends
KcpChannel
{
private
GameServer
server
;
private
GameServer
server
;
private
Account
account
;
private
Account
account
;
private
Genshin
Player
player
;
private
Player
player
;
private
boolean
useSecretKey
;
private
boolean
useSecretKey
;
private
SessionState
state
;
private
SessionState
state
;
...
@@ -67,11 +67,11 @@ public class GameSession extends MihoyoKcpChannel {
...
@@ -67,11 +67,11 @@ public class GameSession extends MihoyoKcpChannel {
return
this
.
getAccount
().
getId
();
return
this
.
getAccount
().
getId
();
}
}
public
Genshin
Player
getPlayer
()
{
public
Player
getPlayer
()
{
return
player
;
return
player
;
}
}
public
synchronized
void
setPlayer
(
Genshin
Player
player
)
{
public
synchronized
void
setPlayer
(
Player
player
)
{
this
.
player
=
player
;
this
.
player
=
player
;
this
.
player
.
setSession
(
this
);
this
.
player
.
setSession
(
this
);
this
.
player
.
setAccount
(
this
.
getAccount
());
this
.
player
.
setAccount
(
this
.
getAccount
());
...
@@ -144,43 +144,35 @@ public class GameSession extends MihoyoKcpChannel {
...
@@ -144,43 +144,35 @@ public class GameSession extends MihoyoKcpChannel {
byte
[]
packet
=
FileUtils
.
read
(
p
);
byte
[]
packet
=
FileUtils
.
read
(
p
);
GenshinPacket
genshin
Packet
=
new
Genshin
Packet
(
opcode
);
BasePacket
base
Packet
=
new
Base
Packet
(
opcode
);
genshin
Packet
.
setData
(
packet
);
base
Packet
.
setData
(
packet
);
// Log
send
(
basePacket
);
logPacket
(
genshinPacket
.
getOpcode
());
send
(
genshinPacket
);
}
}
public
void
send
(
GenshinPacket
genshinP
acket
)
{
public
void
send
(
BasePacket
p
acket
)
{
// Test
// Test
if
(
genshinP
acket
.
getOpcode
()
<=
0
)
{
if
(
p
acket
.
getOpcode
()
<=
0
)
{
Grasscutter
.
getLogger
().
warn
(
"Tried to send packet with missing cmd id!"
);
Grasscutter
.
getLogger
().
warn
(
"Tried to send packet with missing cmd id!"
);
return
;
return
;
}
}
// Header
// Header
if
(
genshinP
acket
.
shouldBuildHeader
())
{
if
(
p
acket
.
shouldBuildHeader
())
{
genshinP
acket
.
buildHeader
(
this
.
getNextClientSequence
());
p
acket
.
buildHeader
(
this
.
getNextClientSequence
());
}
}
// Log
// Log
if
(
Grasscutter
.
getConfig
().
getGameServerOptions
().
LOG_PACKETS
)
{
if
(
Grasscutter
.
getConfig
().
getGameServerOptions
().
LOG_PACKETS
)
{
logPacket
(
genshinP
acket
);
logPacket
(
p
acket
);
}
}
// Invoke event.
// Invoke event.
SendPacketEvent
event
=
new
SendPacketEvent
(
this
,
genshinP
acket
);
event
.
call
();
SendPacketEvent
event
=
new
SendPacketEvent
(
this
,
p
acket
);
event
.
call
();
if
(!
event
.
isCanceled
())
// If event is not cancelled, continue.
if
(!
event
.
isCanceled
())
// If event is not cancelled, continue.
this
.
send
(
event
.
getPacket
().
build
());
this
.
send
(
event
.
getPacket
().
build
());
}
}
private
void
logPacket
(
int
opcode
)
{
//Grasscutter.getLogger().info("SEND: " + PacketOpcodesUtil.getOpcodeName(opcode));
//System.out.println(Utils.bytesToHex(genshinPacket.getData()));
}
private
static
final
Set
<
Integer
>
loopPacket
=
Set
.
of
(
private
static
final
Set
<
Integer
>
loopPacket
=
Set
.
of
(
PacketOpcodes
.
PingReq
,
PacketOpcodes
.
PingReq
,
PacketOpcodes
.
PingRsp
,
PacketOpcodes
.
PingRsp
,
...
@@ -189,10 +181,10 @@ public class GameSession extends MihoyoKcpChannel {
...
@@ -189,10 +181,10 @@ public class GameSession extends MihoyoKcpChannel {
PacketOpcodes
.
QueryPathReq
PacketOpcodes
.
QueryPathReq
);
);
private
void
logPacket
(
GenshinPacket
genshinP
acket
)
{
private
void
logPacket
(
BasePacket
p
acket
)
{
if
(!
loopPacket
.
contains
(
genshinP
acket
.
getOpcode
()))
{
if
(!
loopPacket
.
contains
(
p
acket
.
getOpcode
()))
{
Grasscutter
.
getLogger
().
info
(
"SEND: "
+
PacketOpcodesUtil
.
getOpcodeName
(
genshinP
acket
.
getOpcode
())
+
" ("
+
genshinP
acket
.
getOpcode
()
+
")"
);
Grasscutter
.
getLogger
().
info
(
"SEND: "
+
PacketOpcodesUtil
.
getOpcodeName
(
p
acket
.
getOpcode
())
+
" ("
+
p
acket
.
getOpcode
()
+
")"
);
System
.
out
.
println
(
Utils
.
bytesToHex
(
genshinP
acket
.
getData
()));
System
.
out
.
println
(
Utils
.
bytesToHex
(
p
acket
.
getData
()));
}
}
}
}
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarFetterLevelRewardReq.java
View file @
1c36f078
package
emu.grasscutter.server.packet.recv
;
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.data.G
enshin
Data
;
import
emu.grasscutter.data.G
ame
Data
;
import
emu.grasscutter.data.def.RewardData
;
import
emu.grasscutter.data.def.RewardData
;
import
emu.grasscutter.game.avatar.
Genshin
Avatar
;
import
emu.grasscutter.game.avatar.Avatar
;
import
emu.grasscutter.game.inventory.G
enshin
Item
;
import
emu.grasscutter.game.inventory.G
ame
Item
;
import
emu.grasscutter.game.props.ActionReason
;
import
emu.grasscutter.game.props.ActionReason
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
...
@@ -27,14 +27,14 @@ public class HandlerAvatarFetterLevelRewardReq extends PacketHandler {
...
@@ -27,14 +27,14 @@ public class HandlerAvatarFetterLevelRewardReq extends PacketHandler {
}
else
{
}
else
{
long
avatarGuid
=
req
.
getAvatarGuid
();
long
avatarGuid
=
req
.
getAvatarGuid
();
Genshin
Avatar
avatar
=
session
Avatar
avatar
=
session
.
getPlayer
()
.
getPlayer
()
.
getAvatars
()
.
getAvatars
()
.
getAvatarByGuid
(
avatarGuid
);
.
getAvatarByGuid
(
avatarGuid
);
int
rewardId
=
avatar
.
getNameCardRewardId
();
int
rewardId
=
avatar
.
getNameCardRewardId
();
RewardData
card
=
G
enshin
Data
.
getRewardDataMap
().
get
(
rewardId
);
RewardData
card
=
G
ame
Data
.
getRewardDataMap
().
get
(
rewardId
);
int
cardId
=
card
.
getRewardItemList
().
get
(
0
).
getItemId
();
int
cardId
=
card
.
getRewardItemList
().
get
(
0
).
getItemId
();
if
(
session
.
getPlayer
().
getNameCardList
().
contains
(
cardId
))
{
if
(
session
.
getPlayer
().
getNameCardList
().
contains
(
cardId
))
{
...
@@ -43,7 +43,7 @@ public class HandlerAvatarFetterLevelRewardReq extends PacketHandler {
...
@@ -43,7 +43,7 @@ public class HandlerAvatarFetterLevelRewardReq extends PacketHandler {
return
;
return
;
}
}
G
enshin
Item
item
=
new
G
enshin
Item
(
cardId
);
G
ame
Item
item
=
new
G
ame
Item
(
cardId
);
session
.
getPlayer
().
getInventory
().
addItem
(
item
,
ActionReason
.
FetterLevelReward
);
session
.
getPlayer
().
getInventory
().
addItem
(
item
,
ActionReason
.
FetterLevelReward
);
session
.
getPlayer
().
sendPacket
(
new
PacketUnlockNameCardNotify
(
cardId
));
session
.
getPlayer
().
sendPacket
(
new
PacketUnlockNameCardNotify
(
cardId
));
session
.
send
(
new
PacketAvatarFetterDataNotify
(
avatar
));
session
.
send
(
new
PacketAvatarFetterDataNotify
(
avatar
));
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerCombatInvocationsNotify.java
View file @
1c36f078
package
emu.grasscutter.server.packet.recv
;
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.game.entity.G
enshin
Entity
;
import
emu.grasscutter.game.entity.G
ame
Entity
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.CombatInvocationsNotifyOuterClass.CombatInvocationsNotify
;
import
emu.grasscutter.net.proto.CombatInvocationsNotifyOuterClass.CombatInvocationsNotify
;
...
@@ -27,7 +27,7 @@ public class HandlerCombatInvocationsNotify extends PacketHandler {
...
@@ -27,7 +27,7 @@ public class HandlerCombatInvocationsNotify extends PacketHandler {
case
ENTITY_MOVE:
case
ENTITY_MOVE:
// Handle movement
// Handle movement
EntityMoveInfo
moveInfo
=
EntityMoveInfo
.
parseFrom
(
entry
.
getCombatData
());
EntityMoveInfo
moveInfo
=
EntityMoveInfo
.
parseFrom
(
entry
.
getCombatData
());
G
enshin
Entity
entity
=
session
.
getPlayer
().
getScene
().
getEntityById
(
moveInfo
.
getEntityId
());
G
ame
Entity
entity
=
session
.
getPlayer
().
getScene
().
getEntityById
(
moveInfo
.
getEntityId
());
if
(
entity
!=
null
)
{
if
(
entity
!=
null
)
{
entity
.
getPosition
().
set
(
moveInfo
.
getMotionInfo
().
getPos
());
entity
.
getPosition
().
set
(
moveInfo
.
getMotionInfo
().
getPos
());
entity
.
getRotation
().
set
(
moveInfo
.
getMotionInfo
().
getRot
());
entity
.
getRotation
().
set
(
moveInfo
.
getMotionInfo
().
getRot
());
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneDoneReq.java
View file @
1c36f078
package
emu.grasscutter.server.packet.recv
;
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.game.
Genshin
Player.SceneLoadState
;
import
emu.grasscutter.game.Player.SceneLoadState
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.packet.PacketHandler
;
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerBlacklistReq.java
View file @
1c36f078
package
emu.grasscutter.server.packet.recv
;
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.net.packet.
Genshin
Packet
;
import
emu.grasscutter.net.packet.
Base
Packet
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.packet.PacketHandler
;
...
@@ -11,7 +11,7 @@ public class HandlerGetPlayerBlacklistReq extends PacketHandler {
...
@@ -11,7 +11,7 @@ public class HandlerGetPlayerBlacklistReq extends PacketHandler {
@Override
@Override
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
session
.
send
(
new
Genshin
Packet
(
PacketOpcodes
.
GetPlayerBlacklistRsp
).
buildHeader
(
3
));
session
.
send
(
new
Base
Packet
(
PacketOpcodes
.
GetPlayerBlacklistRsp
).
buildHeader
(
3
));
}
}
}
}
src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java
View file @
1c36f078
package
emu.grasscutter.server.packet.recv
;
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.game.inventory.G
enshin
Item
;
import
emu.grasscutter.game.inventory.G
ame
Item
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq
;
import
emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq
;
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerLoginReq.java
View file @
1c36f078
package
emu.grasscutter.server.packet.recv
;
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.database.DatabaseHelper
;
import
emu.grasscutter.database.DatabaseHelper
;
import
emu.grasscutter.game.
Genshin
Player
;
import
emu.grasscutter.game.Player
;
import
emu.grasscutter.net.packet.
Genshin
Packet
;
import
emu.grasscutter.net.packet.
Base
Packet
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.PlayerLoginReqOuterClass.PlayerLoginReq
;
import
emu.grasscutter.net.proto.PlayerLoginReqOuterClass.PlayerLoginReq
;
...
@@ -30,12 +30,12 @@ public class HandlerPlayerLoginReq extends PacketHandler {
...
@@ -30,12 +30,12 @@ public class HandlerPlayerLoginReq extends PacketHandler {
}
}
// Load character from db
// Load character from db
Genshin
Player
player
=
DatabaseHelper
.
getPlayerById
(
session
.
getAccount
().
getPlayerUid
());
Player
player
=
DatabaseHelper
.
getPlayerById
(
session
.
getAccount
().
getPlayerUid
());
if
(
player
==
null
)
{
if
(
player
==
null
)
{
// Send packets
// Send packets
session
.
setState
(
SessionState
.
PICKING_CHARACTER
);
session
.
setState
(
SessionState
.
PICKING_CHARACTER
);
session
.
send
(
new
Genshin
Packet
(
PacketOpcodes
.
DoSetPlayerBornDataNotify
));
session
.
send
(
new
Base
Packet
(
PacketOpcodes
.
DoSetPlayerBornDataNotify
));
}
else
{
}
else
{
// Set character
// Set character
session
.
setPlayer
(
player
);
session
.
setPlayer
(
player
);
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerPrivateChatReq.java
View file @
1c36f078
...
@@ -19,8 +19,6 @@ public class HandlerPrivateChatReq extends PacketHandler {
...
@@ -19,8 +19,6 @@ public class HandlerPrivateChatReq extends PacketHandler {
}
else
if
(
content
==
PrivateChatReq
.
ContentCase
.
ICON
)
{
}
else
if
(
content
==
PrivateChatReq
.
ContentCase
.
ICON
)
{
session
.
getServer
().
getChatManager
().
sendPrivateMessage
(
session
.
getPlayer
(),
req
.
getTargetUid
(),
req
.
getIcon
());
session
.
getServer
().
getChatManager
().
sendPrivateMessage
(
session
.
getPlayer
(),
req
.
getTargetUid
(),
req
.
getIcon
());
}
}
//session.send(new GenshinPacket(PacketOpcodes.PrivateChatRsp)); // Unused by server
}
}
}
}
src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneEntityDrownReq.java
View file @
1c36f078
...
@@ -2,7 +2,7 @@ package emu.grasscutter.server.packet.recv;
...
@@ -2,7 +2,7 @@ package emu.grasscutter.server.packet.recv;
import
emu.grasscutter.game.entity.EntityAvatar
;
import
emu.grasscutter.game.entity.EntityAvatar
;
import
emu.grasscutter.game.entity.EntityMonster
;
import
emu.grasscutter.game.entity.EntityMonster
;
import
emu.grasscutter.game.entity.G
enshin
Entity
;
import
emu.grasscutter.game.entity.G
ame
Entity
;
import
emu.grasscutter.game.props.FightProperty
;
import
emu.grasscutter.game.props.FightProperty
;
import
emu.grasscutter.game.props.LifeState
;
import
emu.grasscutter.game.props.LifeState
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.Opcodes
;
...
@@ -19,7 +19,7 @@ public class HandlerSceneEntityDrownReq extends PacketHandler {
...
@@ -19,7 +19,7 @@ public class HandlerSceneEntityDrownReq extends PacketHandler {
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
SceneEntityDrownReq
req
=
SceneEntityDrownReq
.
parseFrom
(
payload
);
SceneEntityDrownReq
req
=
SceneEntityDrownReq
.
parseFrom
(
payload
);
G
enshin
Entity
entity
=
session
.
getPlayer
().
getScene
().
getEntityById
(
req
.
getEntityId
());
G
ame
Entity
entity
=
session
.
getPlayer
().
getScene
().
getEntityById
(
req
.
getEntityId
());
if
(
entity
==
null
||
!(
entity
instanceof
EntityMonster
||
entity
instanceof
EntityAvatar
))
{
if
(
entity
==
null
||
!(
entity
instanceof
EntityMonster
||
entity
instanceof
EntityAvatar
))
{
return
;
return
;
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneInitFinishReq.java
View file @
1c36f078
package
emu.grasscutter.server.packet.recv
;
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.game.
Genshin
Player.SceneLoadState
;
import
emu.grasscutter.game.Player.SceneLoadState
;
import
emu.grasscutter.net.packet.
Genshin
Packet
;
import
emu.grasscutter.net.packet.
Base
Packet
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.packet.PacketHandler
;
...
@@ -31,7 +31,7 @@ public class HandlerSceneInitFinishReq extends PacketHandler {
...
@@ -31,7 +31,7 @@ public class HandlerSceneInitFinishReq extends PacketHandler {
session
.
send
(
new
PacketWorldPlayerInfoNotify
(
session
.
getPlayer
().
getWorld
()));
session
.
send
(
new
PacketWorldPlayerInfoNotify
(
session
.
getPlayer
().
getWorld
()));
session
.
send
(
new
PacketWorldDataNotify
(
session
.
getPlayer
().
getWorld
()));
session
.
send
(
new
PacketWorldDataNotify
(
session
.
getPlayer
().
getWorld
()));
session
.
send
(
new
PacketSceneUnlockInfoNotify
());
session
.
send
(
new
PacketSceneUnlockInfoNotify
());
session
.
send
(
new
Genshin
Packet
(
PacketOpcodes
.
SceneForceUnlockNotify
));
session
.
send
(
new
Base
Packet
(
PacketOpcodes
.
SceneForceUnlockNotify
));
session
.
send
(
new
PacketHostPlayerNotify
(
session
.
getPlayer
().
getWorld
()));
session
.
send
(
new
PacketHostPlayerNotify
(
session
.
getPlayer
().
getWorld
()));
session
.
send
(
new
PacketSceneTimeNotify
(
session
.
getPlayer
()));
session
.
send
(
new
PacketSceneTimeNotify
(
session
.
getPlayer
()));
...
...
Prev
1
2
3
4
5
6
7
8
9
10
…
14
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