Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
G
Grasscutter
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
ziqian zhang
Grasscutter
Commits
bb372011
Commit
bb372011
authored
3 years ago
by
AnimeGitB
Committed by
Melledy
3 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Small putItem refactor
parent
bcc20c2d
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/main/java/emu/grasscutter/game/inventory/Inventory.java
+94
-88
94 additions, 88 deletions
src/main/java/emu/grasscutter/game/inventory/Inventory.java
with
94 additions
and
88 deletions
src/main/java/emu/grasscutter/game/inventory/Inventory.java
+
94
−
88
View file @
bb372011
...
...
@@ -174,22 +174,29 @@ public class Inventory implements Iterable<GameItem> {
InventoryTab
tab
=
getInventoryTab
(
type
);
// Add
if
(
type
==
ItemType
.
ITEM_WEAPON
||
type
==
ItemType
.
ITEM_RELIQUARY
)
{
switch
(
type
)
{
case
ITEM_WEAPON:
case
ITEM_RELIQUARY:
if
(
tab
.
getSize
()
>=
tab
.
getMaxCapacity
())
{
return
null
;
}
// Duplicates cause problems
item
.
setCount
(
Math
.
max
(
item
.
getCount
(),
1
));
// Adds to inventory
putItem
(
item
,
tab
);
}
else
if
(
type
==
ItemType
.
ITEM_VIRTUAL
)
{
this
.
putItem
(
item
,
tab
);
// Set ownership and save to db
item
.
save
();
return
item
;
case
ITEM_VIRTUAL:
// Handle
this
.
addVirtualItem
(
item
.
getItemId
(),
item
.
getCount
());
return
item
;
}
else
if
(
item
.
getItemData
().
getMaterialType
()
==
MaterialType
.
MATERIAL_ADSORBATE
)
{
default
:
switch
(
item
.
getItemData
().
getMaterialType
())
{
case
MATERIAL_ADSORBATE:
this
.
player
.
getEnergyManager
().
handlePickupElemBall
(
item
);
return
null
;
}
else
if
(
item
.
getItemData
().
getMaterialType
()
==
MaterialType
.
MATERIAL_AVATAR
)
{
case
MATERIAL_AVATAR
:
// Get avatar id
int
avatarId
=
(
item
.
getItemId
()
%
1000
)
+
10000000
;
// Dont let people give themselves extra main characters
...
...
@@ -198,56 +205,55 @@ public class Inventory implements Iterable<GameItem> {
}
// Add avatar
AvatarData
avatarData
=
GameData
.
getAvatarDataMap
().
get
(
avatarId
);
if
(
avatarData
!=
null
&&
!
player
.
getAvatars
().
hasAvatar
(
avatarId
))
{
this
.
getP
layer
()
.
addAvatar
(
new
Avatar
(
avatarData
));
if
(
avatarData
!=
null
&&
!
this
.
player
.
getAvatars
().
hasAvatar
(
avatarId
))
{
this
.
p
layer
.
addAvatar
(
new
Avatar
(
avatarData
));
}
return
null
;
}
else
if
(
item
.
getItemData
().
getMaterialType
()
==
MaterialType
.
MATERIAL_FLYCLOAK
)
{
case
MATERIAL_FLYCLOAK
:
AvatarFlycloakData
flycloakData
=
GameData
.
getAvatarFlycloakDataMap
().
get
(
item
.
getItemId
());
if
(
flycloakData
!=
null
&&
!
player
.
getFlyCloakList
().
contains
(
item
.
getItemId
()))
{
getP
layer
()
.
addFlycloak
(
item
.
getItemId
());
if
(
flycloakData
!=
null
&&
!
this
.
player
.
getFlyCloakList
().
contains
(
item
.
getItemId
()))
{
this
.
p
layer
.
addFlycloak
(
item
.
getItemId
());
}
return
null
;
}
else
if
(
item
.
getItemData
().
getMaterialType
()
==
MaterialType
.
MATERIAL_COSTUME
)
{
case
MATERIAL_COSTUME
:
AvatarCostumeData
costumeData
=
GameData
.
getAvatarCostumeDataItemIdMap
().
get
(
item
.
getItemId
());
if
(
costumeData
!=
null
&&
!
player
.
getCostumeList
().
contains
(
costumeData
.
getId
()))
{
getP
layer
()
.
addCostume
(
costumeData
.
getId
());
if
(
costumeData
!=
null
&&
!
this
.
player
.
getCostumeList
().
contains
(
costumeData
.
getId
()))
{
this
.
p
layer
.
addCostume
(
costumeData
.
getId
());
}
return
null
;
}
else
if
(
item
.
getItemData
().
getMaterialType
()
==
MaterialType
.
MATERIAL_NAMECARD
)
{
if
(!
player
.
getNameCardList
().
contains
(
item
.
getItemId
()))
{
getP
layer
()
.
addNameCard
(
item
.
getItemId
());
case
MATERIAL_NAMECARD
:
if
(!
this
.
player
.
getNameCardList
().
contains
(
item
.
getItemId
()))
{
this
.
p
layer
.
addNameCard
(
item
.
getItemId
());
}
return
null
;
}
else
if
(
tab
!=
null
)
{
default
:
if
(
tab
==
null
)
{
return
null
;
}
GameItem
existingItem
=
tab
.
getItemById
(
item
.
getItemId
());
if
(
existingItem
==
null
)
{
// Item type didnt exist before, we will add it to main inventory map if there is enough space
if
(
tab
.
getSize
()
>=
tab
.
getMaxCapacity
())
{
return
null
;
}
putItem
(
item
,
tab
);
this
.
putItem
(
item
,
tab
);
// Set ownership and save to db
item
.
save
();
return
item
;
}
else
{
// Add count
existingItem
.
setCount
(
Math
.
min
(
existingItem
.
getCount
()
+
item
.
getCount
(),
item
.
getItemData
().
getStackLimit
()));
existingItem
.
save
();
return
existingItem
;
}
}
else
{
return
null
;
}
// Set ownership and save to db
if
(
item
.
getItemData
().
getItemType
()
!=
ItemType
.
ITEM_VIRTUAL
)
item
.
save
();
return
item
;
}
}
private
synchronized
void
putItem
(
GameItem
item
,
InventoryTab
tab
)
{
getP
layer
()
.
getCodex
().
checkAddedItem
(
item
);
this
.
p
layer
.
getCodex
().
checkAddedItem
(
item
);
// Set owner and guid FIRST!
item
.
setOwner
(
getP
layer
()
);
item
.
setOwner
(
this
.
p
layer
);
// Put in item store
getItems
().
put
(
item
.
getGuid
(),
item
);
if
(
tab
!=
null
)
{
...
...
@@ -258,36 +264,36 @@ public class Inventory implements Iterable<GameItem> {
private
void
addVirtualItem
(
int
itemId
,
int
count
)
{
switch
(
itemId
)
{
case
101
->
// Character exp
getP
layer
()
.
getServer
().
getInventoryManager
().
upgradeAvatar
(
player
,
getP
layer
()
.
getTeamManager
().
getCurrentAvatarEntity
().
getAvatar
(),
count
);
this
.
p
layer
.
getServer
().
getInventoryManager
().
upgradeAvatar
(
this
.
player
,
this
.
p
layer
.
getTeamManager
().
getCurrentAvatarEntity
().
getAvatar
(),
count
);
case
102
->
// Adventure exp
getP
layer
()
.
addExpDirectly
(
count
);
this
.
p
layer
.
addExpDirectly
(
count
);
case
105
->
// Companionship exp
getP
layer
()
.
getServer
().
getInventoryManager
().
upgradeAvatarFetterLevel
(
player
,
getP
layer
()
.
getTeamManager
().
getCurrentAvatarEntity
().
getAvatar
(),
count
);
this
.
p
layer
.
getServer
().
getInventoryManager
().
upgradeAvatarFetterLevel
(
this
.
player
,
this
.
p
layer
.
getTeamManager
().
getCurrentAvatarEntity
().
getAvatar
(),
count
);
case
106
->
// Resin
getP
layer
()
.
getResinManager
().
addResin
(
count
);
this
.
p
layer
.
getResinManager
().
addResin
(
count
);
case
201
->
// Primogem
getP
layer
()
.
setPrimogems
(
player
.
getPrimogems
()
+
count
);
this
.
p
layer
.
setPrimogems
(
this
.
player
.
getPrimogems
()
+
count
);
case
202
->
// Mora
getP
layer
()
.
setMora
(
player
.
getMora
()
+
count
);
this
.
p
layer
.
setMora
(
this
.
player
.
getMora
()
+
count
);
case
203
->
// Genesis Crystals
getP
layer
()
.
setCrystals
(
player
.
getCrystals
()
+
count
);
this
.
p
layer
.
setCrystals
(
this
.
player
.
getCrystals
()
+
count
);
case
204
->
// Home Coin
getP
layer
()
.
setHomeCoin
(
player
.
getHomeCoin
()
+
count
);
this
.
p
layer
.
setHomeCoin
(
this
.
player
.
getHomeCoin
()
+
count
);
}
}
private
int
getVirtualItemCount
(
int
itemId
)
{
switch
(
itemId
)
{
case
201
:
// Primogem
return
player
.
getPrimogems
();
return
this
.
player
.
getPrimogems
();
case
202
:
// Mora
return
player
.
getMora
();
return
this
.
player
.
getMora
();
case
203
:
// Genesis Crystals
return
player
.
getCrystals
();
return
this
.
player
.
getCrystals
();
case
106
:
// Resin
return
player
.
getProperty
(
PlayerProperty
.
PROP_PLAYER_RESIN
);
return
this
.
player
.
getProperty
(
PlayerProperty
.
PROP_PLAYER_RESIN
);
case
204
:
// Home Coin
return
player
.
getHomeCoin
();
return
this
.
player
.
getHomeCoin
();
default
:
GameItem
item
=
getInventoryTab
(
ItemType
.
ITEM_MATERIAL
).
getItemById
(
itemId
);
// What if we ever want to operate on weapons/relics/furniture? :S
return
(
item
==
null
)
?
0
:
item
.
getCount
();
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment