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
2e19e70f
Commit
2e19e70f
authored
Jul 18, 2022
by
Melledy
Browse files
Refactor game server managers to systems
parent
d20e9d1f
Changes
63
Hide whitespace changes
Inline
Side-by-side
src/main/java/emu/grasscutter/game/quest/QuestManager.java
View file @
2e19e70f
...
...
@@ -153,7 +153,7 @@ public class QuestManager extends BasePlayerManager {
continue
;
}
boolean
result
=
getPlayer
().
getServer
().
getQuest
Handler
().
triggerContent
(
quest
,
condition
,
paramStr
,
params
);
boolean
result
=
getPlayer
().
getServer
().
getQuest
System
().
triggerContent
(
quest
,
condition
,
paramStr
,
params
);
if
(
result
)
{
quest
.
getFinishProgressList
()[
i
]
=
1
;
...
...
src/main/java/emu/grasscutter/game/quest/
ServerQuestHandler
.java
→
src/main/java/emu/grasscutter/game/quest/
QuestSystem
.java
View file @
2e19e70f
...
...
@@ -4,6 +4,9 @@ import java.util.Set;
import
emu.grasscutter.data.excels.QuestData
;
import
emu.grasscutter.game.quest.handlers.QuestExecHandler
;
import
emu.grasscutter.server.game.BaseGameSystem
;
import
emu.grasscutter.server.game.GameServer
;
import
org.reflections.Reflections
;
import
emu.grasscutter.Grasscutter
;
...
...
@@ -13,12 +16,14 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import
it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
;
@SuppressWarnings
(
"unchecked"
)
public
class
ServerQuestHandler
{
public
class
QuestSystem
extends
BaseGameSystem
{
private
final
Int2ObjectMap
<
QuestBaseHandler
>
condHandlers
;
private
final
Int2ObjectMap
<
QuestBaseHandler
>
contHandlers
;
private
final
Int2ObjectMap
<
QuestExecHandler
>
execHandlers
;
public
ServerQuestHandler
()
{
public
QuestSystem
(
GameServer
server
)
{
super
(
server
);
this
.
condHandlers
=
new
Int2ObjectOpenHashMap
<>();
this
.
contHandlers
=
new
Int2ObjectOpenHashMap
<>();
this
.
execHandlers
=
new
Int2ObjectOpenHashMap
<>();
...
...
src/main/java/emu/grasscutter/game/shop/Shop
Manager
.java
→
src/main/java/emu/grasscutter/game/shop/Shop
System
.java
View file @
2e19e70f
...
...
@@ -6,6 +6,7 @@ import emu.grasscutter.data.DataLoader;
import
emu.grasscutter.data.GameData
;
import
emu.grasscutter.data.common.ItemParamData
;
import
emu.grasscutter.data.excels.ShopGoodsData
;
import
emu.grasscutter.server.game.BaseGameSystem
;
import
emu.grasscutter.server.game.GameServer
;
import
emu.grasscutter.utils.Utils
;
import
it.unimi.dsi.fastutil.ints.Int2ObjectMap
;
...
...
@@ -21,35 +22,33 @@ import java.util.List;
import
static
emu
.
grasscutter
.
Configuration
.*;
public
class
ShopManager
{
private
final
GameServer
server
;
public
Int2ObjectMap
<
List
<
ShopInfo
>>
getShopData
()
{
return
shopData
;
}
public
List
<
ShopChestTable
>
getShopChestData
()
{
return
shopChestData
;
}
public
List
<
ShopChestBatchUseTable
>
getShopChestBatchUseData
()
{
return
shopChestBatchUseData
;
}
public
class
ShopSystem
extends
BaseGameSystem
{
private
final
Int2ObjectMap
<
List
<
ShopInfo
>>
shopData
;
private
final
List
<
ShopChestTable
>
shopChestData
;
private
final
List
<
ShopChestBatchUseTable
>
shopChestBatchUseData
;
private
static
final
int
REFRESH_HOUR
=
4
;
// In GMT+8 server
private
static
final
String
TIME_ZONE
=
"Asia/Shanghai"
;
// GMT+8 Timezone
public
Shop
Manager
(
GameServer
server
)
{
this
.
server
=
server
;
public
Shop
System
(
GameServer
server
)
{
super
(
server
)
;
this
.
shopData
=
new
Int2ObjectOpenHashMap
<>();
this
.
shopChestData
=
new
ArrayList
<>();
this
.
shopChestBatchUseData
=
new
ArrayList
<>();
this
.
load
();
}
public
Int2ObjectMap
<
List
<
ShopInfo
>>
getShopData
()
{
return
shopData
;
}
public
List
<
ShopChestTable
>
getShopChestData
()
{
return
shopChestData
;
}
private
static
final
int
REFRESH_HOUR
=
4
;
// In GMT+8 server
private
static
final
String
TIME_ZONE
=
"Asia/Shanghai"
;
// GMT+8 Timezone
public
List
<
ShopChestBatchUseTable
>
getShopChestBatchUseData
()
{
return
shopChestBatchUseData
;
}
public
static
int
getShopNextRefreshTime
(
ShopInfo
shopInfo
)
{
return
switch
(
shopInfo
.
getShopRefreshType
())
{
...
...
src/main/java/emu/grasscutter/game/tower/TowerManager.java
View file @
2e19e70f
...
...
@@ -74,7 +74,7 @@ public class TowerManager extends BasePlayerManager {
notifyCurLevelRecordChange
();
// use team user choose
player
.
getTeamManager
().
useTemporaryTeam
(
0
);
player
.
getServer
().
getDungeon
Manager
().
handoffDungeon
(
player
,
dungeonId
,
player
.
getServer
().
getDungeon
System
().
handoffDungeon
(
player
,
dungeonId
,
towerDungeonSettleListener
);
// make sure user can exit dungeon correctly
...
...
@@ -116,10 +116,10 @@ public class TowerManager extends BasePlayerManager {
return
getTowerData
().
currentLevel
<
3
;
}
public
int
getNextFloorId
()
{
return
player
.
getServer
().
getTowerS
cheduleManager
().
getNextFloorId
(
getTowerData
().
currentFloorId
);
return
player
.
getServer
().
getTowerS
ystem
().
getNextFloorId
(
getTowerData
().
currentFloorId
);
}
public
boolean
hasNextFloor
(){
return
player
.
getServer
().
getTowerS
cheduleManager
().
getNextFloorId
(
getTowerData
().
currentFloorId
)
>
0
;
return
player
.
getServer
().
getTowerS
ystem
().
getNextFloorId
(
getTowerData
().
currentFloorId
)
>
0
;
}
public
void
clearEntry
()
{
...
...
@@ -128,10 +128,10 @@ public class TowerManager extends BasePlayerManager {
public
boolean
canEnterScheduleFloor
(){
Map
<
Integer
,
TowerLevelRecord
>
recordMap
=
getRecordMap
();
if
(!
recordMap
.
containsKey
(
player
.
getServer
().
getTowerS
cheduleManager
().
getLastEntranceFloor
())){
if
(!
recordMap
.
containsKey
(
player
.
getServer
().
getTowerS
ystem
().
getLastEntranceFloor
())){
return
false
;
}
return
recordMap
.
get
(
player
.
getServer
().
getTowerS
cheduleManager
().
getLastEntranceFloor
())
return
recordMap
.
get
(
player
.
getServer
().
getTowerS
ystem
().
getLastEntranceFloor
())
.
getStarCount
()
>=
6
;
}
...
...
src/main/java/emu/grasscutter/game/tower/TowerS
cheduleManager
.java
→
src/main/java/emu/grasscutter/game/tower/TowerS
ystem
.java
View file @
2e19e70f
...
...
@@ -4,6 +4,7 @@ import emu.grasscutter.Grasscutter;
import
emu.grasscutter.data.DataLoader
;
import
emu.grasscutter.data.GameData
;
import
emu.grasscutter.data.excels.TowerScheduleData
;
import
emu.grasscutter.server.game.BaseGameSystem
;
import
emu.grasscutter.server.game.GameServer
;
import
java.io.FileReader
;
...
...
@@ -14,15 +15,10 @@ import java.util.List;
import
static
emu
.
grasscutter
.
Configuration
.*;
public
class
TowerScheduleManager
{
private
final
GameServer
gameServer
;
public
GameServer
getGameServer
()
{
return
gameServer
;
}
public
TowerScheduleManager
(
GameServer
gameServer
)
{
this
.
gameServer
=
gameServer
;
public
class
TowerSystem
extends
BaseGameSystem
{
public
TowerSystem
(
GameServer
server
)
{
super
(
server
);
this
.
load
();
}
...
...
src/main/java/emu/grasscutter/game/world/Scene.java
View file @
2e19e70f
...
...
@@ -399,7 +399,7 @@ public class Scene {
// Reward drop
if
(
target
instanceof
EntityMonster
&&
this
.
getSceneType
()
!=
SceneType
.
SCENE_DUNGEON
)
{
getWorld
().
getServer
().
getDrop
Manager
().
callDrop
((
EntityMonster
)
target
);
getWorld
().
getServer
().
getDrop
System
().
callDrop
((
EntityMonster
)
target
);
}
this
.
removeEntity
(
target
);
...
...
src/main/java/emu/grasscutter/game/world/WorldData
Manager
.java
→
src/main/java/emu/grasscutter/game/world/WorldData
System
.java
View file @
2e19e70f
...
...
@@ -14,6 +14,7 @@ import emu.grasscutter.game.player.Player;
import
emu.grasscutter.net.proto.InvestigationMonsterOuterClass
;
import
emu.grasscutter.scripts.data.SceneGroup
;
import
emu.grasscutter.scripts.data.SceneMonster
;
import
emu.grasscutter.server.game.BaseGameSystem
;
import
emu.grasscutter.server.game.GameServer
;
import
java.io.InputStream
;
...
...
@@ -24,13 +25,12 @@ import java.util.Map;
import
java.util.Objects
;
import
java.util.concurrent.ConcurrentHashMap
;
public
class
WorldDataManager
{
private
final
GameServer
gameServer
;
public
class
WorldDataSystem
extends
BaseGameSystem
{
private
final
Map
<
String
,
ChestInteractHandler
>
chestInteractHandlerMap
;
// chestType-Handler
private
final
Map
<
String
,
SceneGroup
>
sceneInvestigationGroupMap
;
// <sceneId_groupId, Group>
public
WorldData
Manager
(
GameServer
gameS
erver
){
this
.
gameServer
=
gameS
erver
;
public
WorldData
System
(
GameServer
s
erver
){
super
(
s
erver
)
;
this
.
chestInteractHandlerMap
=
new
HashMap
<>();
this
.
sceneInvestigationGroupMap
=
new
ConcurrentHashMap
<>();
...
...
src/main/java/emu/grasscutter/server/game/BaseGameSystem.java
0 → 100644
View file @
2e19e70f
package
emu.grasscutter.server.game
;
public
abstract
class
BaseGameSystem
{
protected
final
GameServer
server
;
public
BaseGameSystem
(
GameServer
server
)
{
this
.
server
=
server
;
}
public
GameServer
getServer
()
{
return
this
.
server
;
}
}
src/main/java/emu/grasscutter/server/game/GameServer.java
View file @
2e19e70f
...
...
@@ -5,27 +5,27 @@ import emu.grasscutter.Grasscutter;
import
emu.grasscutter.command.CommandMap
;
import
emu.grasscutter.database.DatabaseHelper
;
import
emu.grasscutter.game.Account
;
import
emu.grasscutter.game.battlepass.BattlePass
MissionManager
;
import
emu.grasscutter.game.battlepass.BattlePass
System
;
import
emu.grasscutter.game.combine.CombineManger
;
import
emu.grasscutter.game.drop.Drop
Manager
;
import
emu.grasscutter.game.dungeons.Dungeon
Manager
;
import
emu.grasscutter.game.drop.Drop
System
;
import
emu.grasscutter.game.dungeons.Dungeon
System
;
import
emu.grasscutter.game.dungeons.challenge.DungeonChallenge
;
import
emu.grasscutter.game.expedition.Expedition
Manager
;
import
emu.grasscutter.game.gacha.Gacha
Manager
;
import
emu.grasscutter.game.managers.Announcement
Manager
;
import
emu.grasscutter.game.expedition.Expedition
System
;
import
emu.grasscutter.game.gacha.Gacha
System
;
import
emu.grasscutter.game.managers.Announcement
System
;
import
emu.grasscutter.game.managers.CookingManager
;
import
emu.grasscutter.game.managers.Inventory
Manager
;
import
emu.grasscutter.game.managers.Multiplayer
Manager
;
import
emu.grasscutter.game.managers.Inventory
System
;
import
emu.grasscutter.game.managers.Multiplayer
System
;
import
emu.grasscutter.game.managers.chat.ChatManager
;
import
emu.grasscutter.game.managers.chat.ChatManagerHandler
;
import
emu.grasscutter.game.managers.energy.EnergyManager
;
import
emu.grasscutter.game.managers.stamina.StaminaManager
;
import
emu.grasscutter.game.player.Player
;
import
emu.grasscutter.game.quest.
ServerQuestHandler
;
import
emu.grasscutter.game.shop.Shop
Manager
;
import
emu.grasscutter.game.tower.TowerS
cheduleManager
;
import
emu.grasscutter.game.quest.
QuestSystem
;
import
emu.grasscutter.game.shop.Shop
System
;
import
emu.grasscutter.game.tower.TowerS
ystem
;
import
emu.grasscutter.game.world.World
;
import
emu.grasscutter.game.world.WorldData
Manager
;
import
emu.grasscutter.game.world.WorldData
System
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail
;
import
emu.grasscutter.server.event.types.ServerEvent
;
...
...
@@ -47,30 +47,35 @@ import java.util.concurrent.ConcurrentHashMap;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
Configuration
.*;
@Getter
public
final
class
GameServer
extends
KcpServer
{
private
final
InetSocketAddress
address
;
// Game server base
private
final
InetSocketAddress
address
;
private
final
GameServerPacketHandler
packetHandler
;
private
final
ServerQuestHandler
questHandler
;
@Getter
private
final
ServerTaskScheduler
scheduler
;
private
final
Map
<
Integer
,
Player
>
players
;
private
final
Set
<
World
>
worlds
;
private
final
Map
<
Integer
,
Player
>
players
;
private
final
Set
<
World
>
worlds
;
// Server systems
private
final
InventorySystem
inventorySystem
;
private
final
GachaSystem
gachaSystem
;
private
final
ShopSystem
shopSystem
;
private
final
MultiplayerSystem
multiplayerSystem
;
private
final
DungeonSystem
dungeonSystem
;
private
final
ExpeditionSystem
expeditionSystem
;
private
final
DropSystem
dropSystem
;
private
final
WorldDataSystem
worldDataSystem
;
private
final
BattlePassSystem
battlePassSystem
;
private
final
CombineManger
combineSystem
;
private
final
TowerSystem
towerSystem
;
private
final
AnnouncementSystem
announcementSystem
;
private
final
QuestSystem
questSystem
;
// Extra
private
final
ServerTaskScheduler
scheduler
;
private
final
CommandMap
commandMap
;
private
final
TaskMap
taskMap
;
private
ChatManagerHandler
chatManager
;
@Getter
private
final
InventoryManager
inventoryManager
;
@Getter
private
final
GachaManager
gachaManager
;
@Getter
private
final
ShopManager
shopManager
;
@Getter
private
final
MultiplayerManager
multiplayerManager
;
@Getter
private
final
DungeonManager
dungeonManager
;
@Getter
private
final
ExpeditionManager
expeditionManager
;
@Getter
private
final
CommandMap
commandMap
;
@Getter
private
final
TaskMap
taskMap
;
@Getter
private
final
DropManager
dropManager
;
@Getter
private
final
WorldDataManager
worldDataManager
;
@Getter
private
final
BattlePassMissionManager
battlePassMissionManager
;
@Getter
private
final
CombineManger
combineManger
;
@Getter
private
final
TowerScheduleManager
towerScheduleManager
;
@Getter
private
final
AnnouncementManager
announcementManager
;
public
GameServer
()
{
this
(
getAdapterInetSocketAddress
());
...
...
@@ -78,11 +83,11 @@ public final class GameServer extends KcpServer {
public
GameServer
(
InetSocketAddress
address
)
{
ChannelConfig
channelConfig
=
new
ChannelConfig
();
channelConfig
.
nodelay
(
true
,
40
,
2
,
true
);
channelConfig
.
nodelay
(
true
,
40
,
2
,
true
);
channelConfig
.
setMtu
(
1400
);
channelConfig
.
setSndwnd
(
256
);
channelConfig
.
setRcvwnd
(
256
);
channelConfig
.
setTimeoutMillis
(
30
*
1000
);
//30s
channelConfig
.
setTimeoutMillis
(
30
*
1000
);
//30s
channelConfig
.
setUseConvChannel
(
true
);
channelConfig
.
setAckNoDelay
(
false
);
...
...
@@ -94,56 +99,56 @@ public final class GameServer extends KcpServer {
CookingManager
.
initialize
();
CombineManger
.
initialize
();
// Game Server base
this
.
address
=
address
;
this
.
packetHandler
=
new
GameServerPacketHandler
(
PacketHandler
.
class
);
this
.
questHandler
=
new
ServerQuestHandler
();
this
.
scheduler
=
new
ServerTaskScheduler
();
this
.
players
=
new
ConcurrentHashMap
<>();
this
.
worlds
=
Collections
.
synchronizedSet
(
new
HashSet
<>());
this
.
chatManager
=
new
ChatManager
(
this
);
this
.
inventoryManager
=
new
InventoryManager
(
this
);
this
.
gachaManager
=
new
GachaManager
(
this
);
this
.
shopManager
=
new
ShopManager
(
this
);
this
.
multiplayerManager
=
new
MultiplayerManager
(
this
);
this
.
dungeonManager
=
new
DungeonManager
(
this
);
// Extra
this
.
scheduler
=
new
ServerTaskScheduler
();
this
.
commandMap
=
new
CommandMap
(
true
);
this
.
taskMap
=
new
TaskMap
(
true
);
this
.
dropManager
=
new
DropManager
(
this
);
this
.
expeditionManager
=
new
ExpeditionManager
(
this
);
this
.
combineManger
=
new
CombineManger
(
this
);
this
.
towerScheduleManager
=
new
TowerScheduleManager
(
this
);
this
.
worldDataManager
=
new
WorldDataManager
(
this
);
this
.
battlePassMissionManager
=
new
BattlePassMissionManager
(
this
);
this
.
announcementManager
=
new
AnnouncementManager
(
this
);
this
.
taskMap
=
new
TaskMap
(
true
);
// Create game systems
this
.
inventorySystem
=
new
InventorySystem
(
this
);
this
.
gachaSystem
=
new
GachaSystem
(
this
);
this
.
shopSystem
=
new
ShopSystem
(
this
);
this
.
multiplayerSystem
=
new
MultiplayerSystem
(
this
);
this
.
dungeonSystem
=
new
DungeonSystem
(
this
);
this
.
dropSystem
=
new
DropSystem
(
this
);
this
.
expeditionSystem
=
new
ExpeditionSystem
(
this
);
this
.
combineSystem
=
new
CombineManger
(
this
);
this
.
towerSystem
=
new
TowerSystem
(
this
);
this
.
worldDataSystem
=
new
WorldDataSystem
(
this
);
this
.
battlePassSystem
=
new
BattlePassSystem
(
this
);
this
.
announcementSystem
=
new
AnnouncementSystem
(
this
);
this
.
questSystem
=
new
QuestSystem
(
this
);
// Chata manager
this
.
chatManager
=
new
ChatManager
(
this
);
// Hook into shutdown event.
Runtime
.
getRuntime
().
addShutdownHook
(
new
Thread
(
this
::
onServerShutdown
));
}
@Deprecated
public
ChatManagerHandler
getChatManager
()
{
return
chatManager
;
}
@Deprecated
public
void
setChatManager
(
ChatManagerHandler
chatManager
)
{
this
.
chatManager
=
chatManager
;
}
public
ChatManagerHandler
getChatSystem
()
{
return
chatManager
;
}
public
GameServerPacketHandler
getPacketHandler
()
{
return
packetHandler
;
}
public
ServerQuestHandler
getQuestHandler
()
{
return
questHandler
;
}
public
Map
<
Integer
,
Player
>
getPlayers
()
{
return
players
;
}
public
Set
<
World
>
getWorlds
()
{
return
worlds
;
}
public
ChatManagerHandler
getChatManager
()
{
return
chatManager
;
}
public
void
setChatManager
(
ChatManagerHandler
chatManager
)
{
this
.
chatManager
=
chatManager
;
}
public
void
setChatSystem
(
ChatManagerHandler
chatManager
)
{
this
.
chatManager
=
chatManager
;
}
private
static
InetSocketAddress
getAdapterInetSocketAddress
(){
InetSocketAddress
inetSocketAddress
;
...
...
src/main/java/emu/grasscutter/server/http/handlers/GachaHandler.java
View file @
2e19e70f
...
...
@@ -4,7 +4,7 @@ import emu.grasscutter.Grasscutter;
import
emu.grasscutter.database.DatabaseHelper
;
import
emu.grasscutter.game.Account
;
import
emu.grasscutter.game.gacha.GachaBanner
;
import
emu.grasscutter.game.gacha.Gacha
Manager
;
import
emu.grasscutter.game.gacha.Gacha
System
;
import
emu.grasscutter.game.player.Player
;
import
emu.grasscutter.server.http.Router
;
import
emu.grasscutter.tools.Tools
;
...
...
@@ -108,7 +108,7 @@ public final class GachaHandler implements Router {
// Get the banner info for the banner we want.
int
scheduleId
=
Integer
.
parseInt
(
request
.
query
(
"scheduleId"
));
Gacha
Manager
manager
=
Grasscutter
.
getGameServer
().
getGacha
Manager
();
Gacha
System
manager
=
Grasscutter
.
getGameServer
().
getGacha
System
();
GachaBanner
banner
=
manager
.
getGachaBanners
().
get
(
scheduleId
);
// Add 5-star items.
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarExpeditionGetRewardReq.java
View file @
2e19e70f
...
...
@@ -34,8 +34,8 @@ public class HandlerAvatarExpeditionGetRewardReq extends PacketHandler {
List
<
GameItem
>
items
=
new
LinkedList
<>();
if
(
session
.
getServer
().
getExpedition
Manager
().
getExpeditionRewardDataList
().
containsKey
(
expInfo
.
getExpId
()))
{
for
(
ExpeditionRewardDataList
RewardDataList
:
session
.
getServer
().
getExpedition
Manager
().
getExpeditionRewardDataList
().
get
(
expInfo
.
getExpId
()))
{
if
(
session
.
getServer
().
getExpedition
System
().
getExpeditionRewardDataList
().
containsKey
(
expInfo
.
getExpId
()))
{
for
(
ExpeditionRewardDataList
RewardDataList
:
session
.
getServer
().
getExpedition
System
().
getExpeditionRewardDataList
().
get
(
expInfo
.
getExpId
()))
{
if
(
RewardDataList
.
getHourTime
()
==
expInfo
.
getHourTime
()){
if
(!
RewardDataList
.
getExpeditionRewardData
().
isEmpty
()){
for
(
ExpeditionRewardData
RewardData
:
RewardDataList
.
getExpeditionRewardData
())
{
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarPromoteReq.java
View file @
2e19e70f
...
...
@@ -14,7 +14,7 @@ public class HandlerAvatarPromoteReq extends PacketHandler {
AvatarPromoteReq
req
=
AvatarPromoteReq
.
parseFrom
(
payload
);
// Ascend avatar
session
.
getServer
().
getInventory
Manager
().
promoteAvatar
(
session
.
getPlayer
(),
req
.
getGuid
());
session
.
getServer
().
getInventory
System
().
promoteAvatar
(
session
.
getPlayer
(),
req
.
getGuid
());
}
}
src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarSkillUpgradeReq.java
View file @
2e19e70f
...
...
@@ -14,7 +14,7 @@ public class HandlerAvatarSkillUpgradeReq extends PacketHandler {
AvatarSkillUpgradeReq
req
=
AvatarSkillUpgradeReq
.
parseFrom
(
payload
);
// Level up avatar talent
session
.
getServer
().
getInventory
Manager
().
upgradeAvatarSkill
(
session
.
getPlayer
(),
req
.
getAvatarGuid
(),
req
.
getAvatarSkillId
());
session
.
getServer
().
getInventory
System
().
upgradeAvatarSkill
(
session
.
getPlayer
(),
req
.
getAvatarGuid
(),
req
.
getAvatarSkillId
());
}
}
src/main/java/emu/grasscutter/server/packet/recv/HandlerAvatarUpgradeReq.java
View file @
2e19e70f
...
...
@@ -14,7 +14,7 @@ public class HandlerAvatarUpgradeReq extends PacketHandler {
AvatarUpgradeReq
req
=
AvatarUpgradeReq
.
parseFrom
(
payload
);
// Level up avatar
session
.
getServer
().
getInventory
Manager
().
upgradeAvatar
(
session
.
getServer
().
getInventory
System
().
upgradeAvatar
(
session
.
getPlayer
(),
req
.
getAvatarGuid
(),
req
.
getItemId
(),
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerBuyGoodsReq.java
View file @
2e19e70f
...
...
@@ -6,7 +6,7 @@ import emu.grasscutter.game.inventory.GameItem;
import
emu.grasscutter.game.props.ActionReason
;
import
emu.grasscutter.game.shop.ShopInfo
;
import
emu.grasscutter.game.shop.ShopLimit
;
import
emu.grasscutter.game.shop.Shop
Manager
;
import
emu.grasscutter.game.shop.Shop
System
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
...
...
@@ -29,7 +29,7 @@ public class HandlerBuyGoodsReq extends PacketHandler {
@Override
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
BuyGoodsReqOuterClass
.
BuyGoodsReq
buyGoodsReq
=
BuyGoodsReqOuterClass
.
BuyGoodsReq
.
parseFrom
(
payload
);
List
<
ShopInfo
>
configShop
=
session
.
getServer
().
getShop
Manager
().
getShopData
().
get
(
buyGoodsReq
.
getShopType
());
List
<
ShopInfo
>
configShop
=
session
.
getServer
().
getShop
System
().
getShopData
().
get
(
buyGoodsReq
.
getShopType
());
if
(
configShop
==
null
)
return
;
...
...
@@ -46,7 +46,7 @@ public class HandlerBuyGoodsReq extends PacketHandler {
int
bought
=
0
;
if
(
shopLimit
!=
null
)
{
if
(
currentTs
>
shopLimit
.
getNextRefreshTime
())
{
shopLimit
.
setNextRefreshTime
(
Shop
Manager
.
getShopNextRefreshTime
(
sg
));
shopLimit
.
setNextRefreshTime
(
Shop
System
.
getShopNextRefreshTime
(
sg
));
}
else
{
bought
=
shopLimit
.
getHasBoughtInPeriod
();
}
...
...
@@ -65,7 +65,7 @@ public class HandlerBuyGoodsReq extends PacketHandler {
return
;
}
session
.
getPlayer
().
addShopLimit
(
sg
.
getGoodsId
(),
buyGoodsReq
.
getBuyCount
(),
Shop
Manager
.
getShopNextRefreshTime
(
sg
));
session
.
getPlayer
().
addShopLimit
(
sg
.
getGoodsId
(),
buyGoodsReq
.
getBuyCount
(),
Shop
System
.
getShopNextRefreshTime
(
sg
));
GameItem
item
=
new
GameItem
(
GameData
.
getItemDataMap
().
get
(
sg
.
getGoodsItem
().
getId
()));
item
.
setCount
(
buyGoodsReq
.
getBuyCount
()
*
sg
.
getGoodsItem
().
getCount
());
session
.
getPlayer
().
getInventory
().
addItem
(
item
,
ActionReason
.
Shop
,
true
);
// fix: not notify when got virtual item from shop
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerCalcWeaponUpgradeReturnItemsReq.java
View file @
2e19e70f
...
...
@@ -17,7 +17,7 @@ public class HandlerCalcWeaponUpgradeReturnItemsReq extends PacketHandler {
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
CalcWeaponUpgradeReturnItemsReq
req
=
CalcWeaponUpgradeReturnItemsReq
.
parseFrom
(
payload
);
List
<
ItemParam
>
returnOres
=
session
.
getServer
().
getInventory
Manager
().
calcWeaponUpgradeReturnItems
(
List
<
ItemParam
>
returnOres
=
session
.
getServer
().
getInventory
System
().
calcWeaponUpgradeReturnItems
(
session
.
getPlayer
(),
req
.
getTargetWeaponGuid
(),
req
.
getFoodWeaponGuidListList
(),
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerCombineReq.java
View file @
2e19e70f
...
...
@@ -21,7 +21,7 @@ public class HandlerCombineReq extends PacketHandler {
CombineReqOuterClass
.
CombineReq
req
=
CombineReqOuterClass
.
CombineReq
.
parseFrom
(
payload
);
var
result
=
session
.
getServer
().
getCombine
Manger
()
var
result
=
session
.
getServer
().
getCombine
System
()
.
combineItem
(
session
.
getPlayer
(),
req
.
getCombineId
(),
req
.
getCombineCount
());
if
(
result
==
null
){
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerDestroyMaterialReq.java
View file @
2e19e70f
...
...
@@ -13,6 +13,6 @@ public class HandlerDestroyMaterialReq extends PacketHandler {
DestroyMaterialReq
req
=
DestroyMaterialReq
.
parseFrom
(
payload
);
// Delete items
session
.
getServer
().
getInventory
Manager
().
destroyMaterial
(
session
.
getPlayer
(),
req
.
getMaterialListList
());
session
.
getServer
().
getInventory
System
().
destroyMaterial
(
session
.
getPlayer
(),
req
.
getMaterialListList
());
}
}
src/main/java/emu/grasscutter/server/packet/recv/HandlerDoGachaReq.java
View file @
2e19e70f
...
...
@@ -12,6 +12,6 @@ public class HandlerDoGachaReq extends PacketHandler {
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
DoGachaReq
req
=
DoGachaReq
.
parseFrom
(
payload
);
session
.
getServer
().
getGacha
Manager
().
doPulls
(
session
.
getPlayer
(),
req
.
getGachaScheduleId
(),
req
.
getGachaTimes
());
session
.
getServer
().
getGacha
System
().
doPulls
(
session
.
getPlayer
(),
req
.
getGachaScheduleId
(),
req
.
getGachaTimes
());
}
}
src/main/java/emu/grasscutter/server/packet/recv/HandlerDungeonEntryInfoReq.java
View file @
2e19e70f
...
...
@@ -13,7 +13,7 @@ public class HandlerDungeonEntryInfoReq extends PacketHandler {
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
DungeonEntryInfoReq
req
=
DungeonEntryInfoReq
.
parseFrom
(
payload
);
session
.
getServer
().
getDungeon
Manager
().
getEntryInfo
(
session
.
getPlayer
(),
req
.
getPointId
());
session
.
getServer
().
getDungeon
System
().
getEntryInfo
(
session
.
getPlayer
(),
req
.
getPointId
());
}
}
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