Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
MythicCraft
MythicCosmetics
Commits
32d7bc28
Commit
32d7bc28
authored
3 years ago
by
Ashijin
Browse files
Options
Download
Email Patches
Plain Diff
aaaaaa
parent
e19c09c3
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
174 additions
and
61 deletions
+174
-61
api/src/main/java/io/lumine/cosmetics/api/cosmetics/Cosmetic.java
...main/java/io/lumine/cosmetics/api/cosmetics/Cosmetic.java
+19
-1
api/src/main/java/io/lumine/cosmetics/api/players/CosmeticInventory.java
...va/io/lumine/cosmetics/api/players/CosmeticInventory.java
+12
-0
api/src/main/java/io/lumine/cosmetics/api/players/CosmeticProfile.java
...java/io/lumine/cosmetics/api/players/CosmeticProfile.java
+2
-0
plugin/src/main/java/io/lumine/cosmetics/MCCosmeticsPlugin.java
.../src/main/java/io/lumine/cosmetics/MCCosmeticsPlugin.java
+7
-0
plugin/src/main/java/io/lumine/cosmetics/managers/CosmeticsExecutor.java
.../java/io/lumine/cosmetics/managers/CosmeticsExecutor.java
+46
-0
plugin/src/main/java/io/lumine/cosmetics/managers/MCCosmeticsManager.java
...java/io/lumine/cosmetics/managers/MCCosmeticsManager.java
+1
-0
plugin/src/main/java/io/lumine/cosmetics/menus/CosmeticMenu.java
...src/main/java/io/lumine/cosmetics/menus/CosmeticMenu.java
+7
-7
plugin/src/main/java/io/lumine/cosmetics/menus/CustomizeMenu.java
...rc/main/java/io/lumine/cosmetics/menus/CustomizeMenu.java
+16
-4
plugin/src/main/java/io/lumine/cosmetics/menus/MenuManager.java
.../src/main/java/io/lumine/cosmetics/menus/MenuManager.java
+3
-40
plugin/src/main/java/io/lumine/cosmetics/menus/SelectionMenu.java
...rc/main/java/io/lumine/cosmetics/menus/SelectionMenu.java
+19
-0
plugin/src/main/java/io/lumine/cosmetics/players/Profile.java
...in/src/main/java/io/lumine/cosmetics/players/Profile.java
+5
-7
plugin/src/main/java/io/lumine/cosmetics/players/inventory/DigitalInventory.java
.../lumine/cosmetics/players/inventory/DigitalInventory.java
+37
-2
No files found.
api/src/main/java/io/lumine/cosmetics/api/cosmetics/Cosmetic.java
View file @
32d7bc28
package
io.lumine.cosmetics.api.cosmetics
;
import
io.lumine.cosmetics.api.players.CosmeticInventory
;
import
io.lumine.cosmetics.api.players.CosmeticProfile
;
import
io.lumine.utils.config.properties.PropertyHolder
;
import
io.lumine.utils.menu.MenuData
;
...
...
@@ -16,15 +17,32 @@ public abstract class Cosmetic implements PropertyHolder,MenuData<CosmeticProfil
}
public
boolean
has
(
CosmeticProfile
profile
)
{
return
profile
.
has
(
this
);
return
has
(
profile
.
getCosmeticInventory
()
);
}
public
boolean
has
(
CosmeticInventory
inventory
)
{
return
inventory
.
getUnlocked
(
type
).
contains
(
key
);
}
public
void
equip
(
CosmeticProfile
profile
)
{
profile
.
equip
(
this
);
}
public
void
equip
(
CosmeticInventory
inventory
)
{
inventory
.
equip
(
this
);
}
public
boolean
isEquipped
(
CosmeticProfile
profile
)
{
return
profile
.
isEquipped
(
this
);
}
public
boolean
isEquipped
(
CosmeticInventory
inventory
)
{
var
maybeCosmetic
=
inventory
.
getCustomEquipped
(
type
);
if
(
maybeCosmetic
.
isEmpty
())
{
return
false
;
}
return
maybeCosmetic
.
get
().
equals
(
this
);
}
}
This diff is collapsed.
Click to expand it.
api/src/main/java/io/lumine/cosmetics/api/players/CosmeticInventory.java
View file @
32d7bc28
package
io.lumine.cosmetics.api.players
;
import
java.util.Collection
;
import
java.util.Optional
;
import
io.lumine.cosmetics.api.cosmetics.Cosmetic
;
public
interface
CosmeticInventory
{
public
void
initialize
();
public
Collection
<
String
>
getUnlocked
(
String
type
);
public
Optional
<
Cosmetic
>
getCustomEquipped
(
String
type
);
public
Optional
<
Cosmetic
>
getEquippedHat
();
public
void
equip
(
Cosmetic
cosmetic
);
}
This diff is collapsed.
Click to expand it.
api/src/main/java/io/lumine/cosmetics/api/players/CosmeticProfile.java
View file @
32d7bc28
...
...
@@ -14,6 +14,8 @@ public interface CosmeticProfile {
public
Player
getPlayer
();
public
CosmeticInventory
getCosmeticInventory
();
public
boolean
has
(
Cosmetic
cosmetic
);
public
void
equip
(
Cosmetic
cosmetic
);
...
...
This diff is collapsed.
Click to expand it.
plugin/src/main/java/io/lumine/cosmetics/MCCosmeticsPlugin.java
View file @
32d7bc28
...
...
@@ -9,6 +9,7 @@ import io.lumine.cosmetics.commands.admin.AdminCommand;
import
io.lumine.cosmetics.compat.CompatibilityManager
;
import
io.lumine.cosmetics.config.Configuration
;
import
io.lumine.cosmetics.logging.MCLogger
;
import
io.lumine.cosmetics.managers.CosmeticsExecutor
;
import
io.lumine.cosmetics.managers.MCCosmeticsManager
;
import
io.lumine.cosmetics.managers.hats.HatManager
;
import
io.lumine.cosmetics.menus.MenuManager
;
...
...
@@ -35,6 +36,8 @@ public class MCCosmeticsPlugin extends LuminePlugin {
@Getter
private
BaseCommand
baseCommand
;
@Getter
private
AdminCommand
adminCommand
;
@Getter
private
CosmeticsExecutor
cosmetics
;
@Getter
private
HatManager
hatManager
;
@Getter
private
BackManager
backManager
;
...
...
@@ -78,6 +81,10 @@ public class MCCosmeticsPlugin extends LuminePlugin {
volatileCodeHandler
=
getVolatileCodeHandler
();
compatibility
=
new
CompatibilityManager
(
this
);
cosmetics
=
new
CosmeticsExecutor
(
this
);
hatManager
=
new
HatManager
(
this
);
profiles
=
new
ProfileManager
(
this
);
getConfiguration
().
load
(
this
);
...
...
This diff is collapsed.
Click to expand it.
plugin/src/main/java/io/lumine/cosmetics/managers/CosmeticsExecutor.java
0 → 100644
View file @
32d7bc28
package
io.lumine.cosmetics.managers
;
import
java.util.Collection
;
import
java.util.Map
;
import
java.util.Optional
;
import
com.google.common.collect.Maps
;
import
io.lumine.cosmetics.MCCosmeticsPlugin
;
import
io.lumine.utils.plugin.ReloadableModule
;
import
lombok.Getter
;
public
class
CosmeticsExecutor
extends
ReloadableModule
<
MCCosmeticsPlugin
>
{
@Getter
private
final
Map
<
String
,
MCCosmeticsManager
>
cosmeticManagers
=
Maps
.
newConcurrentMap
();
public
CosmeticsExecutor
(
MCCosmeticsPlugin
plugin
)
{
super
(
plugin
);
}
@Override
public
void
load
(
MCCosmeticsPlugin
plugin
)
{}
@Override
public
void
unload
()
{
cosmeticManagers
.
clear
();
}
public
Optional
<
MCCosmeticsManager
>
getManager
(
String
type
)
{
return
Optional
.
ofNullable
(
cosmeticManagers
.
getOrDefault
(
type
,
null
));
}
public
<
T
extends
MCCosmeticsManager
>
void
registerCosmeticManager
(
String
type
,
T
manager
)
{
type
=
type
.
toUpperCase
();
if
(
cosmeticManagers
.
containsKey
(
type
))
{
throw
new
IllegalStateException
(
"Multiple managers cannot be created for the same cosmetic type"
);
}
cosmeticManagers
.
put
(
type
,
manager
);
}
public
Collection
<
String
>
getRegisteredTypes
()
{
return
cosmeticManagers
.
keySet
();
}
}
This diff is collapsed.
Click to expand it.
plugin/src/main/java/io/lumine/cosmetics/managers/MCCosmeticsManager.java
View file @
32d7bc28
...
...
@@ -48,6 +48,7 @@ public abstract class MCCosmeticsManager<T extends Cosmetic> extends ReloadableM
}
}
plugin
.
getCosmetics
().
registerCosmeticManager
(
CosmeticType
.
type
(
tClass
),
this
);
Log
.
info
(
"Loaded "
+
cosmetics
.
size
()
+
" "
+
type
+
"."
);
}
...
...
This diff is collapsed.
Click to expand it.
plugin/src/main/java/io/lumine/cosmetics/menus/CosmeticMenu.java
View file @
32d7bc28
...
...
@@ -12,29 +12,29 @@ import lombok.Getter;
public
abstract
class
CosmeticMenu
<
T
>
extends
ReloadableMenu
<
T
>
{
@Getter
protected
MCCosmeticsPlugin
loungeCore
;
@Getter
protected
MCCosmeticsPlugin
plugin
;
@Getter
protected
MenuManager
menuManager
;
public
CosmeticMenu
(
MCCosmeticsPlugin
core
,
MenuManager
manager
,
MenuProp
menu
)
{
super
(
menu
);
this
.
loungeCore
=
core
;
this
.
plugin
=
core
;
this
.
menuManager
=
manager
;
}
public
CosmeticMenu
(
MCCosmeticsPlugin
core
,
MenuManager
manager
,
MenuProp
menu
,
boolean
buildOnOpen
)
{
super
(
menu
,
buildOnOpen
);
this
.
loungeCore
=
core
;
this
.
plugin
=
core
;
this
.
menuManager
=
manager
;
}
public
void
openMenu
(
Player
player
,
CosmeticMenu
menu
,
Object
state
)
{
Profile
profile
=
loungeCore
.
getProfiles
().
getProfile
(
player
);
public
void
openMenu
(
Player
player
)
{
Profile
profile
=
plugin
.
getProfiles
().
getProfile
(
player
);
//boolean b = profile.getHatIsActive();
//profile.setHatIsActive(false);
//MainMenu.playMenuClick(player);
menu
.
open
(
player
,
state
);
//
menu.open(player, state);
//profile.setHatIsActive(b);
}
...
...
This diff is collapsed.
Click to expand it.
plugin/src/main/java/io/lumine/cosmetics/menus/CustomizeMenu.java
View file @
32d7bc28
package
io.lumine.cosmetics.menus
;
import
java.util.List
;
import
com.google.common.collect.Lists
;
import
io.lumine.cosmetics.MCCosmeticsPlugin
;
import
io.lumine.cosmetics.api.cosmetics.Cosmetic
;
import
io.lumine.cosmetics.players.Profile
;
import
io.lumine.utils.config.properties.types.MenuProp
;
import
io.lumine.utils.menu.EditableMenuBuilder
;
...
...
@@ -14,11 +19,18 @@ public class CustomizeMenu extends CosmeticMenu<Profile> {
@Override
public
EditableMenuBuilder
<
Profile
>
build
(
EditableMenuBuilder
<
Profile
>
builder
)
{
builder
.
getIcon
(
"BUTTON_HATS"
).
ifPresent
(
icon
->
{
icon
.
getBuilder
().
click
((
profile
,
player
)
->
{
player
.
performCommand
(
"hats"
);
for
(
var
entry
:
getPlugin
().
getCosmetics
().
getCosmeticManagers
().
entrySet
())
{
final
var
type
=
entry
.
getKey
();
final
var
manager
=
entry
.
getValue
();
builder
.
getIcon
(
"BUTTON_"
+
type
).
ifPresent
(
icon
->
{
icon
.
getBuilder
().
click
((
profile
,
player
)
->
{
// TODO: sorting
List
<
Cosmetic
>
cosmetics
=
Lists
.
newArrayList
(
manager
.
getAllCosmetics
());
getMenuManager
().
getSelectionMenu
().
open
(
player
,
profile
,
cosmetics
);
});
});
}
);
}
return
builder
;
}
...
...
This diff is collapsed.
Click to expand it.
plugin/src/main/java/io/lumine/cosmetics/menus/MenuManager.java
View file @
32d7bc28
...
...
@@ -7,21 +7,8 @@ import lombok.Getter;
public
class
MenuManager
extends
ReloadableModule
<
MCCosmeticsPlugin
>
{
@Getter
private
CustomizeMenu
customizeMenu
;
@Getter
private
SelectionMenu
selectionMenu
;
//@Getter private ColorsMenu colorsMenu;
//@Getter private ChatColorsMenu chatColorsMenu;
//@Getter private ChatShoutColorsMenu chatShoutColorsMenu;
//@Getter private GadgetsMenu gadgetsMenu;
//@Getter private HatsMenu hatsMenu;
//@Getter private NameColorsMenu nameColorsMenu;
//@Getter private PetsMenu petsMenu;
//@Getter private TagsMenu chatTagsMenu;
//@Getter private SpeedBoostersMenu speedBoostersMenu;
//@Getter private SpraysMenu spraysMenu;
//@Getter private TitlesMenu titlesMenu;
private
boolean
firstLoad
=
true
;
public
MenuManager
(
MCCosmeticsPlugin
plugin
)
{
super
(
plugin
);
}
...
...
@@ -30,35 +17,11 @@ public class MenuManager extends ReloadableModule<MCCosmeticsPlugin> {
public
void
load
(
MCCosmeticsPlugin
plugin
)
{
if
(
customizeMenu
==
null
)
{
customizeMenu
=
new
CustomizeMenu
(
plugin
,
this
);
//colorsMenu = new ColorsMenu(plugin,this);
//chatColorsMenu = new ChatColorsMenu(plugin,this);
//chatShoutColorsMenu = new ChatShoutColorsMenu(plugin,this);
//hatsMenu = new HatsMenu(plugin,this);
//chatTagsMenu = new TagsMenu(plugin,this);
//nameColorsMenu = new NameColorsMenu(plugin,this);
//petsMenu = new PetsMenu(plugin,this);
//gadgetsMenu = new GadgetsMenu(plugin,this);
//speedBoostersMenu = new SpeedBoostersMenu(plugin,this);
//spraysMenu = new SpraysMenu(plugin,this);
//titlesMenu = new TitlesMenu(plugin,this);
firstLoad
=
false
;
selectionMenu
=
new
SelectionMenu
(
plugin
,
this
);
}
customizeMenu
.
reload
();
//colorsMenu.reload();
//chatColorsMenu.reload();
//chatShoutColorsMenu.reload();
//hatsMenu.reload();
//gadgetsMenu.reload();
//nameColorsMenu.reload();
//petsMenu.reload();
//chatTagsMenu.reload();
//speedBoostersMenu.reload();
//spraysMenu.reload();
//titlesMenu.reload();
selectionMenu
.
reload
();
}
@Override
...
...
This diff is collapsed.
Click to expand it.
plugin/src/main/java/io/lumine/cosmetics/menus/SelectionMenu.java
0 → 100644
View file @
32d7bc28
package
io.lumine.cosmetics.menus
;
import
io.lumine.cosmetics.MCCosmeticsPlugin
;
import
io.lumine.cosmetics.players.Profile
;
import
io.lumine.utils.config.properties.types.MenuProp
;
import
io.lumine.utils.menu.EditableMenuBuilder
;
public
class
SelectionMenu
extends
CosmeticMenu
<
Profile
>
{
public
SelectionMenu
(
MCCosmeticsPlugin
core
,
MenuManager
manager
)
{
super
(
core
,
manager
,
new
MenuProp
(
core
,
"menus/selection"
,
"Menu"
,
null
));
}
@Override
public
EditableMenuBuilder
<
Profile
>
build
(
EditableMenuBuilder
<
Profile
>
builder
)
{
return
builder
;
}
}
This diff is collapsed.
Click to expand it.
plugin/src/main/java/io/lumine/cosmetics/players/Profile.java
View file @
32d7bc28
...
...
@@ -12,6 +12,7 @@ import com.google.common.collect.Maps;
import
io.lumine.cosmetics.api.cosmetics.Cosmetic
;
import
io.lumine.cosmetics.api.players.CosmeticInventory
;
import
io.lumine.cosmetics.api.players.CosmeticProfile
;
import
io.lumine.cosmetics.players.inventory.DigitalInventory
;
import
lombok.Getter
;
public
class
Profile
implements
CosmeticProfile
,
io
.
lumine
.
utils
.
storage
.
players
.
Profile
{
...
...
@@ -20,7 +21,7 @@ public class Profile implements CosmeticProfile,io.lumine.utils.storage.players.
@Getter
private
String
name
;
@Getter
private
long
timestamp
=
System
.
currentTimeMillis
();
@Getter
private
Cosmetic
Inventory
cosmeticInventory
;
@Getter
private
Digital
Inventory
cosmeticInventory
=
new
DigitalInventory
()
;
@Getter
private
transient
Player
player
;
...
...
@@ -33,24 +34,21 @@ public class Profile implements CosmeticProfile,io.lumine.utils.storage.players.
public
void
initialize
(
final
Player
player
)
{
this
.
player
=
player
;
//this.equippedCosmetics = new EquippedCosmetics(this);
}
@Override
public
boolean
has
(
Cosmetic
cosmetic
)
{
return
true
;
//return unlockedCosmetics.getOrDefault(cosmetic.getType(), Collections.emptyList()).contains(cosmetic.getKey()
);
return
cosmeticInventory
.
hasUnlocked
(
cosmetic
);
}
@Override
public
void
equip
(
Cosmetic
cosmetic
)
{
//if(this)
cosmeticInventory
.
equip
(
cosmetic
);
}
@Override
public
boolean
isEquipped
(
Cosmetic
cosmetic
)
{
// TODO Auto-generated method stub
return
false
;
return
cosmeticInventory
.
isEquipped
(
cosmetic
);
}
}
This diff is collapsed.
Click to expand it.
plugin/src/main/java/io/lumine/cosmetics/players/inventory/DigitalInventory.java
View file @
32d7bc28
package
io.lumine.cosmetics.players.inventory
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
io.lumine.cosmetics.api.cosmetics.Cosmetic
;
import
io.lumine.cosmetics.api.players.CosmeticInventory
;
import
io.lumine.cosmetics.managers.hats.Hat
;
import
io.lumine.utils.serialize.Optl
;
...
...
@@ -15,9 +19,9 @@ public class DigitalInventory implements CosmeticInventory {
@Getter
private
Map
<
String
,
List
<
String
>>
unlockedCosmetics
=
Maps
.
newConcurrentMap
();
@Getter
private
Map
<
String
,
String
>
equippedCosmetics
=
Maps
.
newConcurrentMap
();
private
Optl
<
Hat
>
h
at
;
private
Optl
<
Hat
>
equippedH
at
;
private
final
Map
<
String
,
String
>
c
ustom
=
Maps
.
newConcurrentMap
();
private
final
Map
<
String
,
Cosmetic
>
equippedC
ustom
=
Maps
.
newConcurrentMap
();
@Override
public
void
initialize
()
{
...
...
@@ -26,4 +30,35 @@ public class DigitalInventory implements CosmeticInventory {
}
}
public
boolean
hasUnlocked
(
Cosmetic
cosmetic
)
{
return
cosmetic
.
has
(
this
);
}
public
void
equip
(
Cosmetic
cosmetic
)
{
if
(
cosmetic
instanceof
Hat
hat
)
{
equippedHat
=
Optl
.
of
(
hat
);
}
else
{
}
}
public
boolean
isEquipped
(
Cosmetic
cosmetic
)
{
return
cosmetic
.
isEquipped
(
this
);
}
@Override
public
Optional
<
Cosmetic
>
getCustomEquipped
(
String
type
)
{
return
Optional
.
ofNullable
(
equippedCustom
.
getOrDefault
(
type
,
null
));
}
@Override
public
Optional
<
Cosmetic
>
getEquippedHat
()
{
return
Optional
.
ofNullable
(
equippedHat
.
orElseGet
(
null
));
}
@Override
public
Collection
<
String
>
getUnlocked
(
String
type
)
{
return
unlockedCosmetics
.
getOrDefault
(
type
,
Lists
.
newArrayList
());
}
}
This diff is collapsed.
Click to expand it.
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