9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-29 03:49:19 +00:00

Compare commits

..

186 Commits

Author SHA1 Message Date
lucian929
58ddceb5f1 Fix typo 2022-03-06 17:59:26 -05:00
lucian929
4be4c5fe2a Update help command to add new commands 2022-03-06 17:58:47 -05:00
lucian929
23c1774f37 Bump version number 2022-03-06 17:56:19 -05:00
lucian929
7c911d1247 Updates messages.yml 2022-03-06 17:40:01 -05:00
lucian929
89a32dcd30 Modified some default messages 2022-03-06 17:27:26 -05:00
Fisher2911
badc2f7b87 Fixed invalid token config 2022-03-06 17:16:30 -05:00
Fisher2911
16d516ef18 Removed sout 2022-03-06 17:03:26 -05:00
Fisher2911
1fcbe27d6a Fixed placeholders 2022-03-06 17:02:48 -05:00
Fisher2911
8da9100dd3 Fixed typo 2022-03-06 16:41:22 -05:00
Fisher2911
1888145ee0 Fixed ProtocolLib enum null error on first call 2022-03-06 16:37:48 -05:00
Fisher2911
84864303fc Finished tokens 2022-03-06 16:07:21 -05:00
Fisher2911
960bb97a04 Added tokens 2022-03-06 15:08:30 -05:00
Fisher2911
a55ad14934 Added 2022-03-06 13:45:53 -05:00
Fisher2911
8b345bc56c Fixed balloon movement 2022-03-05 17:45:26 -05:00
lucian929
4e21945bbb Small changes 2022-02-26 12:34:57 -05:00
MasterOfTheFish
b3aa0b942f Fixed teleporting error with player leaving wardrobe 2022-02-26 00:50:15 -05:00
MasterOfTheFish
607d2ea7bd Fixed issue with dye items not running actions 2022-02-26 00:49:10 -05:00
MasterOfTheFish
23bcd56eac BALLOONS?? 2022-02-26 00:23:33 -05:00
MasterOfTheFish
ba7327dd54 Merge remote-tracking branch 'origin/updates' into updates 2022-02-23 19:39:01 -05:00
MasterOfTheFish
35c6b01f34 Start balloon stuff 2022-02-23 19:38:49 -05:00
lucian929
ee86569f22 Bump Version Number
i forgot to last time
2022-02-23 09:41:04 -05:00
MasterOfTheFish
59dbee34ae Fixed placeholders not appearing on items in GUI menu 2022-02-23 08:53:25 -05:00
MasterOfTheFish
d12a5d090f Fixed concurrent error with citizens hook 2022-02-22 17:20:39 -05:00
MasterOfTheFish
5ba03402a0 Fixed double wardrobe message 2022-02-20 23:15:53 -05:00
MasterOfTheFish
b7c80437e2 Fixed double wardrobe message 2022-02-20 23:15:02 -05:00
MasterOfTheFish
e4cba947d3 Fixed citizens entity null error 2022-02-20 22:25:03 -05:00
MasterOfTheFish
e026739b34 Merge remote-tracking branch 'origin/updates' into updates
# Conflicts:
#	common/build.gradle.kts
2022-02-20 12:16:09 -05:00
MasterOfTheFish
440a106534 Bump version number 2022-02-20 12:15:41 -05:00
MasterOfTheFish
068a147e1e Fixed citizens empty cosmetic overriding armor 2022-02-20 12:12:00 -05:00
MasterOfTheFish
f3b780e730 Fixed concurrent error 2022-02-20 12:05:30 -05:00
MasterOfTheFish
8fa606954e Fixed wardrobe leave / join error 2022-02-20 11:51:07 -05:00
lucian929
9d3ca106c9 Bump version number 2022-02-19 22:31:45 -05:00
MasterOfTheFish
98a6528e50 Fixed formatted placeholder 2022-02-19 22:17:17 -05:00
MasterOfTheFish
a3bce9b766 Stopped sending of blank messages 2022-02-19 21:15:50 -05:00
MasterOfTheFish
d10afc3df3 Fixed placeholder cosmetic items 2022-02-19 21:13:50 -05:00
MasterOfTheFish
be7092b422 Fixed remove items not working 2022-02-19 20:10:38 -05:00
MasterOfTheFish
6ccc40798a Fixed item hooks not working 2022-02-19 19:48:27 -05:00
MasterOfTheFish
8503f3cb39 Allow item hook items to override name and lore 2022-02-19 19:42:45 -05:00
MasterOfTheFish
ffd15345d2 Added citizens support 2022-02-19 19:37:38 -05:00
MasterOfTheFish
a42730dc19 change up how user class works 2022-02-19 02:16:02 -05:00
MasterOfTheFish
363c57141c Added remove cosmetic config option 2022-02-18 20:26:12 -05:00
MasterOfTheFish
cc67eff1f7 Added wardrobe spawn delay 2022-02-18 20:16:20 -05:00
MasterOfTheFish
9b7b5ce1ad Removed glowing of selected item 2022-02-18 20:10:04 -05:00
MasterOfTheFish
ed41b71ff3 Allowed setting of other items in cosmetic slots 2022-02-18 20:06:20 -05:00
Fisher2911
54fe2719d1 Excluded snakeyaml dependency 2022-02-17 21:33:34 -05:00
Fisher2911
a7892ce434 Improved GUI 2022-02-17 19:47:03 -05:00
Fisher2911
39583b3685 Fixed wardrobe always active always stuck bug 2022-02-17 17:10:27 -05:00
Fisher2911
eec995a7f3 More placeholders 2022-02-17 17:05:41 -05:00
Fisher2911
c75182d118 Bump version 2022-02-17 00:36:13 -05:00
Fisher2911
268ccff0db Removed debug messages 2022-02-17 00:33:45 -05:00
Fisher2911
deb7806e78 Added skin overlay on wardrobe 2022-02-17 00:02:15 -05:00
Fisher2911
832980f593 Added skin overlay on wardrobe 2022-02-16 23:51:01 -05:00
Fisher2911
f58d328bae update 2022-02-14 22:00:42 -05:00
HeroBrineGoat
2347c5175d Fixed offhand being weird in wardrobe mode 2022-02-06 23:15:40 -05:00
HeroBrineGoat
977b5e388a Added command to open other player's wardrobe 2022-02-06 18:59:55 -05:00
HeroBrineGoat
46c47b0a1f Fixed sound bug 2022-02-06 15:23:34 -05:00
HeroBrineGoat
4b8d2c1517 Added static wardrobe 2022-02-06 14:18:00 -05:00
HeroBrineGoat
4d632c612a Stopped displaying cosmetics if player is hidden 2022-02-06 12:35:45 -05:00
HeroBrineGoat
0b4e2a6966 Stopped displaying of cosmetics if player is hidden 2022-02-06 12:32:57 -05:00
HeroBrineGoat
23a5ffa068 Added PAPI expansion 2022-02-06 12:18:18 -05:00
HeroBrineGoat
56fa927ca6 Fixed needing permissions to view items in wardrobe 2022-02-03 00:01:10 -05:00
HeroBrineGoat
9c16008f29 Forgot to remove debug message 2022-02-02 22:19:35 -05:00
HeroBrineGoat
0dc69241f1 Improved messages 2022-02-02 22:17:43 -05:00
HeroBrineGoat
cf1e94e116 Finished wardrobe 2022-02-02 22:07:20 -05:00
HeroBrineGoat
72f92be6f6 Added wardrobe (Despawning and entity skin not functional) 2022-02-02 18:28:45 -05:00
HeroBrineGoat
39ac2713b7 Merge remote-tracking branch 'origin/master' 2022-02-02 16:12:39 -05:00
HeroBrineGoat
a07eec4ddc Added wardrobe (Need to fix imports) 2022-02-02 16:12:28 -05:00
Skyslycer
231dcc163e bump version 2022-02-02 19:01:49 +01:00
Skyslycer
d22b13fe05 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	build.gradle.kts
#	src/main/java/io/github/fisher2911/hmccosmetics/user/UserManager.java
2022-02-02 18:58:24 +01:00
Skyslycer
0c54f52785 fix async event calling 2022-02-02 18:55:23 +01:00
lucian929
16ede1baab Modify default files 2022-02-02 00:27:47 -05:00
HeroBrineGoat
1ba07b87cf Fixed NPE when not specifying dye 2022-02-01 23:44:59 -05:00
HeroBrineGoat
11baacaa5f Added message config action 2022-02-01 22:35:08 -05:00
HeroBrineGoat
8b231535c9 Improved set cosmetic command to include dye 2022-02-01 22:00:50 -05:00
HeroBrineGoat
b81241a019 Added actions for different click types 2022-02-01 21:51:59 -05:00
HeroBrineGoat
4b64ee1b3e Added sounds to click items (Configs must use new format!) 2022-01-31 22:28:18 -05:00
HeroBrineGoat
d2592809c7 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/main/java/io/github/fisher2911/hmccosmetics/gui/CosmeticsMenu.java
#	src/main/java/io/github/fisher2911/hmccosmetics/user/UserManager.java
2022-01-31 20:50:58 -05:00
HeroBrineGoat
ffae42c5a7 Added support for multiple dye menus 2022-01-31 20:50:12 -05:00
Skyslycer
7e4d9459ba idk 2022-01-31 16:36:37 +01:00
Skyslycer
30f5278ca9 gradle kotlin = best 2022-01-31 16:34:21 +01:00
Skyslycer
6e3de56071 refactor some stuff 2022-01-29 22:59:25 +01:00
HeroBrineGoat
3d9c006310 Bump version number 2022-01-29 16:42:18 -05:00
HeroBrineGoat
3d8b582a8f Bumped version 2022-01-28 22:24:10 -05:00
HeroBrineGoat
311253aed3 Fixed backpack being removed and not respawned on teleport 2022-01-28 22:21:13 -05:00
HeroBrineGoat
8912ab5b94 Removed paper requirement 2022-01-28 19:19:19 -05:00
HeroBrineGoat
136a5679a6 Bumped version number 2022-01-28 18:11:44 -05:00
HeroBrineGoat
e024d6420b Switched to using Spigot API 2022-01-28 18:10:46 -05:00
HeroBrineGoat
7a7ddf09fb Forgot to remove test listener 2022-01-28 17:29:56 -05:00
HeroBrineGoat
412688eebc Merge remote-tracking branch 'origin/master' 2022-01-28 17:29:36 -05:00
HeroBrineGoat
4aa3ecc147 Added API 2022-01-28 17:29:25 -05:00
lucian929
700ff1aa3f Modify main.yml to add baseball hat 2022-01-28 11:41:45 -05:00
lucian929
929fd84a74 Update to version 1.5.0 2022-01-28 11:41:26 -05:00
lucian929
cc768d8186 Modify main.yml for the lantern cosmetic 2022-01-27 23:43:20 -05:00
HeroBrineGoat
85fc9d9056 Added translations and toggling helmet / off hand requiring empty slots 2022-01-27 22:59:59 -05:00
HeroBrineGoat
538690612a Merge remote-tracking branch 'origin/master' 2022-01-25 23:15:53 -05:00
HeroBrineGoat
998cc02edd Fixed registering permissions 2022-01-25 23:15:09 -05:00
HeroBrineGoat
cfadc69a0d Added registering item permissions 2022-01-25 23:12:57 -05:00
HeroBrineGoat
a29d7f20d0 Added custom dye color command and message 2022-01-25 23:11:56 -05:00
lucian929
4460938dc3 Small changes to default files 2022-01-24 00:27:23 -05:00
lucian929
8a0ce58297 Bump Version Number 2022-01-23 21:50:31 -05:00
HeroBrineGoat
20efcb0b36 Fixed issue with hat disappearing when closing the inventory 2022-01-23 20:13:29 -05:00
HeroBrineGoat
af05a83451 Updated menu items 2022-01-23 18:41:16 -05:00
HeroBrineGoat
aed81b4a13 Added cool down of setting items 2022-01-23 16:37:47 -05:00
HeroBrineGoat
eec23ab54b Improved dye menu 2022-01-23 13:59:50 -05:00
HeroBrineGoat
45c51492a3 Fixed database 2022-01-22 01:10:59 -05:00
HeroBrineGoat
80f6e02598 Changed loading of database to be async 2022-01-21 18:39:45 -05:00
HeroBrineGoat
edc8724e90 Changed loading of database to be async 2022-01-21 18:35:03 -05:00
HeroBrineGoat
f7d8a7205f Changed sending packet to broadcast packet 2022-01-21 18:26:30 -05:00
HeroBrineGoat
3551de2cd3 Removed old database classes 2022-01-21 18:23:14 -05:00
HeroBrineGoat
3da27b0bf4 Added database converter 2022-01-21 18:21:51 -05:00
HeroBrineGoat
b63c130730 Off hand works now, and added some database converter stuff 2022-01-21 17:59:59 -05:00
HeroBrineGoat
81db0cab06 Merge remote-tracking branch 'origin/master' 2022-01-21 13:41:31 -05:00
HeroBrineGoat
f02871871c Fixed more gui stuff 2022-01-21 13:39:26 -05:00
HeroBrineGoat
7207974ada Merge branch 'master' into dev
# Conflicts:
#	src/main/java/io/github/fisher2911/hmccosmetics/gui/CosmeticGui.java
#	src/main/java/io/github/fisher2911/hmccosmetics/gui/DyeSelectorGui.java
2022-01-21 13:31:21 -05:00
HeroBrineGoat
7ea5cdcf46 Improved database handling, and added selecting which item to dye in menu 2022-01-21 13:29:29 -05:00
lucian929
512627d1c7 Bump Version Number 2022-01-20 22:38:08 -05:00
HeroBrineGoat
246fd3f9a6 Fixed (extremely) dumb runnable in GUI 2022-01-20 22:33:50 -05:00
HeroBrineGoat
70ee381f48 More database stuff 2022-01-20 19:09:54 -05:00
HeroBrineGoat
d78bf20ca9 Database stuff (incomplete) 2022-01-20 17:25:20 -05:00
HeroBrineGoat
1c7aa2c672 Cleaned up some code 2022-01-20 16:19:09 -05:00
lucian929
f0a046f434 Merge remote-tracking branch 'origin/master' 2022-01-19 23:15:38 -05:00
lucian929
22c4323a16 Bump Version Number 2022-01-19 23:15:21 -05:00
lucian929
77e913257e Merge pull request #5 from HibiscusMC/hooks
ItemsAdder Hook
2022-01-19 23:11:01 -05:00
HeroBrineGoat
2cc4fcc878 Fixed merging error 2022-01-19 21:21:38 -05:00
HeroBrineGoat
e35eee9937 Merge remote-tracking branch 'origin/hooks' into hooks
# Conflicts:
#	src/main/java/io/github/fisher2911/hmccosmetics/hook/item/ItemsAdderHook.java
2022-01-19 21:16:52 -05:00
HeroBrineGoat
941b82de08 Added support for item adder 2022-01-19 21:16:28 -05:00
Fisher
81bea485a5 Added debug messages 2022-01-19 09:54:13 -05:00
Fisher
cfa36dab4b Update DatabaseFactory.java 2022-01-19 09:48:21 -05:00
Fisher
14d1cf5d19 Added test to try to fix startup error 2022-01-19 08:00:11 -05:00
HeroBrineGoat
8455492322 Fix for backpack color not being set 2022-01-18 20:39:41 -05:00
HeroBrineGoat
c4dba6f9a8 Changed how ItemsAdder listener works 2022-01-18 19:53:33 -05:00
HeroBrineGoat
280018fb9f Changed all ItemAdder things to ItemsAdder 2022-01-18 19:45:02 -05:00
HeroBrineGoat
14617fdaff Changed class name to reflect plugin name 2022-01-18 19:43:13 -05:00
HeroBrineGoat
61f13eb3c1 Fixed ItemsAdder identifier 2022-01-18 19:42:34 -05:00
HeroBrineGoat
39b6a8de67 Fixed ItemsAdder support (Previously done directly on GitHub using a school computer) 2022-01-18 19:25:11 -05:00
lucian929
f19b4d359e Fixes for IA 2022-01-18 15:46:27 -05:00
Fisher
0ca9350ce6 Update HMCCosmetics.java 2022-01-18 12:54:51 -05:00
Fisher
d9f12db6dc Create ItemsAdderListener.java 2022-01-18 12:52:51 -05:00
Fisher
3c302e6c4b Update HMCCosmetics.java 2022-01-18 12:46:57 -05:00
Fisher
e22b776d13 Added ItemAdderHook
The format is "itemadder:item"
2022-01-18 12:05:34 -05:00
Fisher
915285c485 Create ItemAdderHook.java 2022-01-18 12:01:43 -05:00
HeroBrineGoat
02a3c96137 Merge remote-tracking branch 'origin/master' 2022-01-17 23:22:54 -05:00
HeroBrineGoat
7bb8fd79c2 Changed location of armor stand spawn 2022-01-17 23:22:30 -05:00
lucian929
27cab1fb4b Bump version number 2022-01-17 18:40:36 -05:00
HeroBrineGoat
3c8c585634 Added oraxen item support 2022-01-17 18:33:29 -05:00
lucian929
b2465c8b13 Bump version number according to Semver standards 2022-01-17 15:12:35 -05:00
HeroBrineGoat
3cc489cac9 Fixed MySQL issues 2022-01-17 14:45:44 -05:00
HeroBrineGoat
328aacb73d Merge remote-tracking branch 'origin/master' 2022-01-17 14:13:03 -05:00
HeroBrineGoat
3e609dac93 Added SQLite and MySQL support 2022-01-17 14:12:45 -05:00
lucian929
14eb7b8edc Update README.md 2022-01-16 20:34:24 -05:00
lucian929
5c9041acfc Update README.md 2022-01-16 20:33:00 -05:00
lucian929
f40c6fc292 Merge remote-tracking branch 'origin/master' 2022-01-16 20:11:48 -05:00
lucian929
f800ceaed6 Updated messages.yml (again) 2022-01-16 20:11:36 -05:00
HeroBrineGoat
a6c5761636 Merge remote-tracking branch 'origin/master' 2022-01-16 20:09:34 -05:00
HeroBrineGoat
bb812a180f Fixed teleport issue 2022-01-16 20:09:22 -05:00
lucian929
d69dd1afef Updated messages.yml 2022-01-16 19:04:44 -05:00
HeroBrineGoat
4a1eb8a85f Added remove cosmetic command 2022-01-16 16:06:10 -05:00
HeroBrineGoat
d6c052294a Merge branch 'dev' 2022-01-16 15:52:37 -05:00
HeroBrineGoat
32afd0d144 Fixed title PAPI placeholder 2022-01-16 15:52:05 -05:00
HeroBrineGoat
66ff99e657 Added placeholder api 2022-01-16 15:32:44 -05:00
HeroBrineGoat
67cf6d3267 Armor stands work now??? 2022-01-16 14:29:38 -05:00
HeroBrineGoat
1d988ed809 Added command to set other players cosmetics 2022-01-15 21:48:11 -05:00
HeroBrineGoat
22f095f236 Current state of trying to use packets (A giant mess) 2022-01-15 21:29:56 -05:00
HeroBrineGoat
cc0b2d75b7 Possible rotation working 2022-01-14 20:36:46 -05:00
HeroBrineGoat
520b9854f5 Potential sitting fix 2022-01-14 20:16:34 -05:00
HeroBrineGoat
f8bc649799 Fixed issue with odd behaviour when interacting with non-cosmetic helmet with a cosmetic applied 2022-01-14 17:42:40 -05:00
HeroBrineGoat
44c99ae6d2 Forgot to commit UserManager class in the previous commit 2022-01-13 21:14:08 -05:00
HeroBrineGoat
63681ab9cf Trying out armor stand packets 2022-01-13 21:12:50 -05:00
HeroBrineGoat
705664441a Merge remote-tracking branch 'origin/master' 2022-01-13 19:28:30 -05:00
HeroBrineGoat
d7a8cac2e2 Fixed color issue in dye menu 2022-01-13 19:28:02 -05:00
lucian929
3cef8dc0e3 Switched "Loaded GUI:" logger level to INFO 2022-01-13 16:40:33 -05:00
lucian929
b054207012 Merge pull request #4 from HibiscusMC/skyslycer/feature-1
Several features
2022-01-13 16:23:03 -05:00
Skyslycer
1bb80e0fcd Merge branch 'master' into skyslycer/feature-1 2022-01-13 22:12:28 +01:00
Skyslycer
e9694e77d7 update messages.yml 2022-01-13 22:11:05 +01:00
Skyslycer
a8ba081975 add different message for no permission for cosmetics and make the chat thing reload too 2022-01-13 22:08:10 +01:00
lucian929
6843373298 Update messages.yml 2022-01-13 13:35:55 -05:00
lucian929
c97c3650ea Added help command 2022-01-12 20:44:55 -05:00
lucian929
dbdc6a5c90 Added help command 2022-01-12 20:44:24 -05:00
lucian929
f507dea3c5 Bumped version number 2022-01-11 22:58:25 -05:00
lucian929
cb9c7fb551 Merge remote-tracking branch 'origin/master' 2022-01-11 22:57:17 -05:00
lucian929
e2406c697c Updated default configuration files 2022-01-11 22:57:03 -05:00
lucian929
0faf05fd61 Update README.md 2022-01-11 01:10:37 -05:00
lucian929
44da234779 Update README.md 2022-01-11 01:10:25 -05:00
lucian929
c7238bb375 Added demo video 2022-01-11 01:09:22 -05:00
lucian929
1ee6fc5f49 Update README.md 2022-01-08 12:13:00 -05:00
lucian929
fa95a6fa33 Update README.md 2022-01-07 21:36:46 -05:00
293 changed files with 10412 additions and 2185 deletions

9
.gitignore vendored
View File

@@ -1,4 +1,11 @@
# Project exclude paths
/.gradle/
/gradle/
/.idea/
/build/
/build/classes/java/main/
/build/classes/java/main/
/common/build/
/1.16/build/
/1.17/build/
/1.18/build/
/nms/build/

36
.idea/codeStyles/Project.xml generated Normal file
View File

@@ -0,0 +1,36 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="FORMATTER_TAGS_ENABLED" value="true" />
<JavaCodeStyleSettings>
<option name="GENERATE_FINAL_LOCALS" value="true" />
<option name="GENERATE_FINAL_PARAMETERS" value="true" />
<option name="REPLACE_NULL_CHECK" value="false" />
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999999999" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999999" />
</JavaCodeStyleSettings>
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="JAVA">
<arrangement>
<groups>
<group>
<type>GETTERS_AND_SETTERS</type>
<order>KEEP</order>
</group>
<group>
<type>OVERRIDDEN_METHODS</type>
<order>KEEP</order>
</group>
<group>
<type>DEPENDENT_METHODS</type>
<order>BREADTH_FIRST</order>
</group>
</groups>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</codeStyleSettings>
</code_scheme>
</component>

6
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
<option name="PREFERRED_PROJECT_CODE_STYLE" value="GoogleStyle" />
</state>
</component>

4
.idea/compiler.xml generated
View File

@@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="16" />
<bytecodeTargetLevel target="16">
<module name="common" target="1.8" />
</bytecodeTargetLevel>
</component>
</project>

7
.idea/encodings.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/src/main/resources" charset="UTF-8" />
</component>
</project>

8
.idea/gradle.xml generated
View File

@@ -4,11 +4,19 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="delegatedBuild" value="true" />
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="openjdk-16" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/1.16" />
<option value="$PROJECT_DIR$/1.17" />
<option value="$PROJECT_DIR$/1.18" />
<option value="$PROJECT_DIR$/common" />
<option value="$PROJECT_DIR$/nms" />
</set>
</option>
</GradleProjectSettings>

View File

@@ -1,15 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="maven2" />
<option name="name" value="maven2" />
<option name="url" value="https://repo.mattstudios.me/artifactory/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="maven7" />
<option name="name" value="maven7" />
<option name="url" value="https://oss.sonatype.org/content/repositories/snapshots/" />
</remote-repository>
<remote-repository>
<option name="id" value="paperweightDecompilerRepository" />
<option name="name" value="paperweightDecompilerRepository" />
<option name="url" value="https://files.minecraftforge.net/maven/" />
</remote-repository>
<remote-repository>
<option name="id" value="sonatype" />
<option name="name" value="sonatype" />
<option name="url" value="https://oss.sonatype.org/content/groups/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="paperweightParamMappingsRepository" />
<option name="name" value="paperweightParamMappingsRepository" />
<option name="url" value="https://maven.fabricmc.net/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
<option name="id" value="maven6" />
<option name="name" value="maven6" />
<option name="url" value="https://jitpack.io" />
</remote-repository>
<remote-repository>
<option name="id" value="maven7" />
<option name="name" value="maven7" />
<option name="url" value="https://repo.jeff-media.de/maven2/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven8" />
<option name="name" value="maven8" />
<option name="url" value="https://maven.pkg.github.com/LoneDev6/API-ItemsAdder" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="https://papermc.io/repo/repository/maven-public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven5" />
<option name="name" value="maven5" />
<option name="url" value="https://repo.leonardobishop.com/releases/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven6" />
<option name="name" value="maven6" />
<option name="url" value="https://mvnrepository.com/artifact/com.zaxxer/HikariCP" />
</remote-repository>
<remote-repository>
<option name="id" value="maven8" />
<option name="name" value="maven8" />
<option name="url" value="https://oss.sonatype.org/content/repositories/snapshots" />
</remote-repository>
<remote-repository>
<option name="id" value="maven4" />
@@ -21,35 +81,45 @@
<option name="name" value="MavenRepo" />
<option name="url" value="https://repo.maven.apache.org/maven2/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="https://papermc.io/repo/repository/maven-public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven6" />
<option name="name" value="maven6" />
<option name="url" value="https://jitpack.io" />
</remote-repository>
<remote-repository>
<option name="id" value="maven2" />
<option name="name" value="maven2" />
<option name="url" value="https://repo.mattstudios.me/artifactory/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven5" />
<option name="name" value="maven5" />
<option name="url" value="https://repo.leonardobishop.com/releases/" />
</remote-repository>
<remote-repository>
<option name="id" value="MavenLocal" />
<option name="name" value="MavenLocal" />
<option name="url" value="file:/$MAVEN_REPOSITORY$/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven11" />
<option name="name" value="maven11" />
<option name="url" value="https://libraries.minecraft.net/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven7" />
<option name="name" value="maven7" />
<option name="url" value="https://repo.dmulloy2.net/repository/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="spigotmc-repo" />
<option name="name" value="spigotmc-repo" />
<option name="url" value="https://hub.spigotmc.org/nexus/content/repositories/snapshots/" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven9" />
<option name="name" value="maven9" />
<option name="url" value="https://repo.citizensnpcs.co/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven9" />
<option name="name" value="maven9" />
<option name="url" value="https://repo.citizensnpcs.co" />
</remote-repository>
<remote-repository>
<option name="id" value="maven10" />
<option name="name" value="maven10" />
<option name="url" value="https://mvn.lumine.io/repository/maven-public" />
</remote-repository>
</component>
</project>

6
.idea/kotlinScripting.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinScriptingSettings">
<option name="suppressDefinitionsCheck" value="true" />
</component>
</project>

7
.idea/misc.xml generated
View File

@@ -1,10 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EntryPointsManager">
<list size="1">
<item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" />
</list>
</component>
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_16" default="true" project-jdk-name="16" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_16" project-jdk-name="openjdk-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>SPIGOT</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
</module>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>SPIGOT</platformType>
<platformType>MCP</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
<component name="McpModuleSettings">
<option name="srgType" value="SRG" />
</component>
</module>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>ADVENTURE</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
</module>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>SPIGOT</platformType>
<platformType>MCP</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
<component name="McpModuleSettings">
<option name="srgType" value="SRG" />
</component>
</module>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>ADVENTURE</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
</module>

View File

@@ -4,7 +4,7 @@
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>MCP</platformType>
<platformType>SPIGOT</platformType>
<platformType>ADVENTURE</platformType>
</autoDetectTypes>
</configuration>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>ADVENTURE</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
</module>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>SPIGOT</platformType>
<platformType>MCP</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
<component name="McpModuleSettings">
<option name="srgType" value="SRG" />
</component>
</module>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
</set>
</option>
</component>
</project>

19
1.16/build.gradle.kts Normal file
View File

@@ -0,0 +1,19 @@
plugins {
id("java")
}
repositories {
mavenCentral()
maven("https://papermc.io/repo/repository/maven-public/")
maven("https://oss.sonatype.org/content/repositories/snapshots")
maven("https://jitpack.io")
maven("https://repo.dmulloy2.net/repository/public/")
}
dependencies {
implementation(project(":nms"))
compileOnly("com.mojang:authlib:1.5.25")
compileOnly("org.spigotmc:spigot:1.16.5-R0.1-SNAPSHOT")
compileOnly("org.jetbrains:annotations:22.0.0")
compileOnly("com.comphenix.protocol:ProtocolLib:4.7.0")
}

BIN
1.16/build/libs/1.16.jar Normal file

Binary file not shown.

View File

@@ -0,0 +1,2 @@
Manifest-Version: 1.0

View File

@@ -0,0 +1,9 @@
package io.github.fisher2911.nms;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
public class ArmorStandPackets_1_16_R3 {
}

View File

@@ -0,0 +1,8 @@
package io.github.fisher2911.nms;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
public class DestroyPacket_1_16_R3 {
}

View File

@@ -0,0 +1,139 @@
package io.github.fisher2911.nms;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.reflect.StructureModifier;
import com.comphenix.protocol.wrappers.EnumWrappers;
import com.comphenix.protocol.wrappers.PlayerInfoData;
import com.comphenix.protocol.wrappers.WrappedChatComponent;
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
import com.comphenix.protocol.wrappers.WrappedGameProfile;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class PacketHelper_1_16_R3 implements PacketHelper {
@Override
public PacketContainer getPlayerSpawnPacket(final Location location, UUID uuid, final int entityId) {
final PacketContainer spawnPacket = new PacketContainer(PacketType.Play.Server.NAMED_ENTITY_SPAWN);
spawnPacket.getUUIDs().write(0, uuid);
spawnPacket.getIntegers().write(0, entityId);
spawnPacket.getDoubles().
write(0, location.getX()).
write(1, location.getY()).
write(2, location.getZ());
spawnPacket.getBytes().write(0, (byte)(((location.getYaw() * 256.0F) / 360.0F)));
return spawnPacket;
}
@Override
public PacketContainer getPlayerInfoPacket(final Player player, final UUID uuid) {
final GameProfile profile = this.getCopyProfile(player, uuid);
final PacketContainer playerInfoPacket = new PacketContainer(PacketType.Play.Server.PLAYER_INFO);
final StructureModifier<EnumWrappers.PlayerInfoAction> action = playerInfoPacket.getPlayerInfoAction();
final StructureModifier<List<PlayerInfoData>> infoData = playerInfoPacket.getPlayerInfoDataLists();
final List<PlayerInfoData> playerInfoData = new ArrayList<>();
playerInfoData.add(new PlayerInfoData(WrappedGameProfile
.fromHandle(profile),
0,
EnumWrappers.NativeGameMode.fromBukkit(GameMode.CREATIVE),
WrappedChatComponent.fromText(profile.getName())));
action.write(0, EnumWrappers.PlayerInfoAction.ADD_PLAYER);
infoData.write(0, playerInfoData);
return playerInfoPacket;
}
@Override
public PacketContainer getPlayerRemovePacket(final Player player, final UUID uuid, final int entityId) {
final PacketContainer playerPacket = new PacketContainer(PacketType.Play.Server.PLAYER_INFO);
final StructureModifier<EnumWrappers.PlayerInfoAction> action = playerPacket.getPlayerInfoAction();
final StructureModifier<List<PlayerInfoData>> infoData = playerPacket.getPlayerInfoDataLists();
final List<PlayerInfoData> playerInfoData = new ArrayList<>();
final GameProfile profile = this.getCopyProfile(player, uuid);
playerInfoData.add(new PlayerInfoData(WrappedGameProfile
.fromHandle(profile),
0,
EnumWrappers.NativeGameMode.fromBukkit(GameMode.CREATIVE),
WrappedChatComponent.fromText("")));
action.write(0, EnumWrappers.PlayerInfoAction.REMOVE_PLAYER);
infoData.write(0, playerInfoData);
return playerPacket;
}
@Override
public PacketContainer getPlayerOverlayPacket(final int entityId) {
final PacketContainer metaContainer = new PacketContainer(PacketType.Play.Server.ENTITY_METADATA);
WrappedDataWatcher metaData = new WrappedDataWatcher();
final WrappedDataWatcher.Serializer byteSerializer = WrappedDataWatcher.Registry.get(Byte.class);
final byte mask = 0x01 | 0x02 | 0x04 | 0x08 | 0x010 | 0x020 | 0x40;
metaData.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(16, byteSerializer), mask);
metaContainer.getIntegers().write(0, entityId);
metaContainer.getWatchableCollectionModifier().write(0, metaData.getWatchableObjects());
return metaContainer;
}
private GameProfile getCopyProfile(final Player player, final UUID uuid) {
final GameProfile playerProfile = ((CraftPlayer) player).getProfile();
final GameProfile profile = new GameProfile(
uuid,
player.getDisplayName()
);
profile.getProperties().removeAll("textures");
Property textureProperty = playerProfile.getProperties().get("textures").iterator().next();
String texture = textureProperty.getValue();
String signature = textureProperty.getSignature();
profile.getProperties().put("textures", new Property("textures", texture, signature));
return profile;
}
@Override
public PacketContainer getArmorStandMeta(final int armorStandId) {
final PacketContainer metaContainer = new PacketContainer(PacketType.Play.Server.ENTITY_METADATA);
WrappedDataWatcher metaData = new WrappedDataWatcher();
final WrappedDataWatcher.Serializer byteSerializer = WrappedDataWatcher.Registry.get(Byte.class);
metaData.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(0, byteSerializer), (byte) (0x20));
metaData.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(14, byteSerializer), (byte) (0x10));
metaContainer.getIntegers().write(0, armorStandId);
metaContainer.getWatchableCollectionModifier().write(0, metaData.getWatchableObjects());
return metaContainer;
}
@Override
public PacketContainer getDestroyPacket(final int entityId) {
final PacketContainer destroyPacket = new PacketContainer(
PacketType.Play.Server.ENTITY_DESTROY);
destroyPacket.getIntegerArrays().write(0, new int[]{entityId});
return destroyPacket;
}
}

23
1.17/build.gradle.kts Normal file
View File

@@ -0,0 +1,23 @@
plugins {
id("java")
}
//group = "io.github.fisher2911"
//version = "1.7.1"
//description = "Intuitive, easy-to-use cosmetics plugin, designed for servers using resource packs.\n"
repositories {
mavenCentral()
maven("https://papermc.io/repo/repository/maven-public/")
maven("https://oss.sonatype.org/content/repositories/snapshots")
maven("https://jitpack.io")
maven("https://repo.dmulloy2.net/repository/public/")
}
dependencies {
implementation(project(":nms"))
compileOnly("com.mojang:authlib:1.5.25")
compileOnly("org.spigotmc:spigot:1.17-R0.1-SNAPSHOT")
compileOnly("org.jetbrains:annotations:22.0.0")
compileOnly("com.comphenix.protocol:ProtocolLib:4.7.0")
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
1.17/build/libs/1.17.jar Normal file

Binary file not shown.

View File

@@ -0,0 +1,2 @@
Manifest-Version: 1.0

View File

@@ -0,0 +1,2 @@
Manifest-Version: 1.0

View File

@@ -0,0 +1,140 @@
package io.github.fisher2911.nms;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.reflect.StructureModifier;
import com.comphenix.protocol.wrappers.EnumWrappers;
import com.comphenix.protocol.wrappers.PlayerInfoData;
import com.comphenix.protocol.wrappers.WrappedChatComponent;
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
import com.comphenix.protocol.wrappers.WrappedGameProfile;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.craftbukkit.libs.it.unimi.dsi.fastutil.ints.IntArrayList;
import org.bukkit.craftbukkit.v1_17_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class PacketHelper_1_17_R1 implements PacketHelper {
@Override
public PacketContainer getPlayerSpawnPacket(final Location location, UUID uuid, final int entityId) {
final PacketContainer spawnPacket = new PacketContainer(PacketType.Play.Server.NAMED_ENTITY_SPAWN);
spawnPacket.getUUIDs().write(0, uuid);
spawnPacket.getIntegers().write(0, entityId);
spawnPacket.getDoubles().
write(0, location.getX()).
write(1, location.getY()).
write(2, location.getZ());
spawnPacket.getBytes().write(0, (byte)(((location.getYaw() * 256.0F) / 360.0F)));
return spawnPacket;
}
@Override
public PacketContainer getPlayerInfoPacket(final Player player, final UUID uuid) {
final GameProfile profile = this.getCopyProfile(player, uuid);
final PacketContainer playerInfoPacket = new PacketContainer(PacketType.Play.Server.PLAYER_INFO);
final StructureModifier<EnumWrappers.PlayerInfoAction> action = playerInfoPacket.getPlayerInfoAction();
final StructureModifier<List<PlayerInfoData>> infoData = playerInfoPacket.getPlayerInfoDataLists();
final List<PlayerInfoData> playerInfoData = new ArrayList<>();
playerInfoData.add(new PlayerInfoData(WrappedGameProfile
.fromHandle(profile),
0,
EnumWrappers.NativeGameMode.fromBukkit(GameMode.CREATIVE),
WrappedChatComponent.fromText(profile.getName())));
action.write(0, EnumWrappers.PlayerInfoAction.ADD_PLAYER);
infoData.write(0, playerInfoData);
return playerInfoPacket;
}
@Override
public PacketContainer getPlayerRemovePacket(final Player player, final UUID uuid, final int entityId) {
final PacketContainer playerPacket = new PacketContainer(PacketType.Play.Server.PLAYER_INFO);
final StructureModifier<EnumWrappers.PlayerInfoAction> action = playerPacket.getPlayerInfoAction();
final StructureModifier<List<PlayerInfoData>> infoData = playerPacket.getPlayerInfoDataLists();
final List<PlayerInfoData> playerInfoData = new ArrayList<>();
final GameProfile profile = this.getCopyProfile(player, uuid);
playerInfoData.add(new PlayerInfoData(WrappedGameProfile
.fromHandle(profile),
0,
EnumWrappers.NativeGameMode.fromBukkit(GameMode.CREATIVE),
WrappedChatComponent.fromText("")));
action.write(0, EnumWrappers.PlayerInfoAction.REMOVE_PLAYER);
infoData.write(0, playerInfoData);
return playerPacket;
}
@Override
public PacketContainer getPlayerOverlayPacket(final int entityId) {
final PacketContainer metaContainer = new PacketContainer(PacketType.Play.Server.ENTITY_METADATA);
WrappedDataWatcher metaData = new WrappedDataWatcher();
final WrappedDataWatcher.Serializer byteSerializer = WrappedDataWatcher.Registry.get(Byte.class);
final byte mask = 0x01 | 0x02 | 0x04 | 0x08 | 0x010 | 0x020 | 0x40;
metaData.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(17, byteSerializer), mask);
metaContainer.getIntegers().write(0, entityId);
metaContainer.getWatchableCollectionModifier().write(0, metaData.getWatchableObjects());
return metaContainer;
}
private GameProfile getCopyProfile(final Player player, final UUID uuid) {
final GameProfile playerProfile = ((CraftPlayer) player).getProfile();
final GameProfile profile = new GameProfile(
uuid,
player.getDisplayName()
);
profile.getProperties().removeAll("textures");
Property textureProperty = playerProfile.getProperties().get("textures").iterator().next();
String texture = textureProperty.getValue();
String signature = textureProperty.getSignature();
profile.getProperties().put("textures", new Property("textures", texture, signature));
return profile;
}
@Override
public PacketContainer getArmorStandMeta(final int armorStandId) {
final PacketContainer metaContainer = new PacketContainer(PacketType.Play.Server.ENTITY_METADATA);
WrappedDataWatcher metaData = new WrappedDataWatcher();
final WrappedDataWatcher.Serializer byteSerializer = WrappedDataWatcher.Registry.get(Byte.class);
metaData.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(0, byteSerializer), (byte) (0x20));
metaData.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(15, byteSerializer), (byte) (0x10));
metaContainer.getIntegers().write(0, armorStandId);
metaContainer.getWatchableCollectionModifier().write(0, metaData.getWatchableObjects());
return metaContainer;
}
@Override
public PacketContainer getDestroyPacket(final int entityId) {
final PacketContainer destroyPacket = new PacketContainer(
PacketType.Play.Server.ENTITY_DESTROY);
destroyPacket.getModifier().write(0, new IntArrayList(new int[]{entityId}));
return destroyPacket;
}
}

23
1.18/build.gradle.kts Normal file
View File

@@ -0,0 +1,23 @@
plugins {
id("java")
}
//group = "io.github.fisher2911"
//version = "1.7.1"
//description = "Intuitive, easy-to-use cosmetics plugin, designed for servers using resource packs.\n"
repositories {
mavenCentral()
maven("https://papermc.io/repo/repository/maven-public/")
maven("https://oss.sonatype.org/content/repositories/snapshots")
maven("https://jitpack.io")
maven("https://repo.dmulloy2.net/repository/public/")
}
dependencies {
implementation(project(":nms"))
compileOnly("com.mojang:authlib:1.5.25")
compileOnly("org.spigotmc:spigot:1.18-R0.1-SNAPSHOT")
compileOnly("org.jetbrains:annotations:22.0.0")
compileOnly("com.comphenix.protocol:ProtocolLib:4.7.0")
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
1.18/build/libs/1.18.jar Normal file

Binary file not shown.

View File

@@ -0,0 +1,2 @@
Manifest-Version: 1.0

View File

@@ -0,0 +1,2 @@
Manifest-Version: 1.0

View File

@@ -0,0 +1,139 @@
package io.github.fisher2911.nms;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.reflect.StructureModifier;
import com.comphenix.protocol.wrappers.EnumWrappers;
import com.comphenix.protocol.wrappers.PlayerInfoData;
import com.comphenix.protocol.wrappers.WrappedChatComponent;
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
import com.comphenix.protocol.wrappers.WrappedGameProfile;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_18_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class PacketHelper_1_18_R1 implements PacketHelper {
@Override
public PacketContainer getPlayerSpawnPacket(final Location location, UUID uuid, final int entityId) {
final PacketContainer spawnPacket = new PacketContainer(PacketType.Play.Server.NAMED_ENTITY_SPAWN);
spawnPacket.getUUIDs().write(0, uuid);
spawnPacket.getIntegers().write(0, entityId);
spawnPacket.getDoubles().
write(0, location.getX()).
write(1, location.getY()).
write(2, location.getZ());
spawnPacket.getBytes().write(0, (byte)(((location.getYaw() * 256.0F) / 360.0F)));
return spawnPacket;
}
@Override
public PacketContainer getPlayerInfoPacket(final Player player, final UUID uuid) {
final GameProfile profile = this.getCopyProfile(player, uuid);
final PacketContainer playerInfoPacket = new PacketContainer(PacketType.Play.Server.PLAYER_INFO);
final StructureModifier<EnumWrappers.PlayerInfoAction> action = playerInfoPacket.getPlayerInfoAction();
final StructureModifier<List<PlayerInfoData>> infoData = playerInfoPacket.getPlayerInfoDataLists();
final List<PlayerInfoData> playerInfoData = new ArrayList<>();
playerInfoData.add(new PlayerInfoData(WrappedGameProfile
.fromHandle(profile),
0,
EnumWrappers.NativeGameMode.fromBukkit(GameMode.SURVIVAL),
WrappedChatComponent.fromText(profile.getName())));
action.write(0, EnumWrappers.PlayerInfoAction.ADD_PLAYER);
infoData.write(0, playerInfoData);
return playerInfoPacket;
}
@Override
public PacketContainer getPlayerRemovePacket(final Player player, final UUID uuid, final int entityId) {
final PacketContainer playerPacket = new PacketContainer(PacketType.Play.Server.PLAYER_INFO);
final StructureModifier<EnumWrappers.PlayerInfoAction> action = playerPacket.getPlayerInfoAction();
final StructureModifier<List<PlayerInfoData>> infoData = playerPacket.getPlayerInfoDataLists();
final List<PlayerInfoData> playerInfoData = new ArrayList<>();
final GameProfile profile = this.getCopyProfile(player, uuid);
playerInfoData.add(new PlayerInfoData(WrappedGameProfile
.fromHandle(profile),
0,
EnumWrappers.NativeGameMode.fromBukkit(GameMode.CREATIVE),
WrappedChatComponent.fromText("")));
action.write(0, EnumWrappers.PlayerInfoAction.REMOVE_PLAYER);
infoData.write(0, playerInfoData);
return playerPacket;
}
@Override
public PacketContainer getPlayerOverlayPacket(final int entityId) {
final PacketContainer metaContainer = new PacketContainer(PacketType.Play.Server.ENTITY_METADATA);
WrappedDataWatcher metaData = new WrappedDataWatcher();
final WrappedDataWatcher.Serializer byteSerializer = WrappedDataWatcher.Registry.get(Byte.class);
final byte mask = 0x01 | 0x02 | 0x04 | 0x08 | 0x010 | 0x020 | 0x40;
metaData.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(17, byteSerializer), mask);
metaContainer.getIntegers().write(0, entityId);
metaContainer.getWatchableCollectionModifier().write(0, metaData.getWatchableObjects());
return metaContainer;
}
private GameProfile getCopyProfile(final Player player, final UUID uuid) {
final GameProfile playerProfile = ((CraftPlayer) player).getProfile();
final GameProfile profile = new GameProfile(
uuid,
player.getDisplayName()
);
profile.getProperties().removeAll("textures");
Property textureProperty = playerProfile.getProperties().get("textures").iterator().next();
String texture = textureProperty.getValue();
String signature = textureProperty.getSignature();
profile.getProperties().put("textures", new Property("textures", texture, signature));
return profile;
}
@Override
public PacketContainer getArmorStandMeta(final int armorStandId) {
final PacketContainer metaContainer = new PacketContainer(PacketType.Play.Server.ENTITY_METADATA);
WrappedDataWatcher metaData = new WrappedDataWatcher();
final WrappedDataWatcher.Serializer byteSerializer = WrappedDataWatcher.Registry.get(Byte.class);
metaData.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(0, byteSerializer), (byte) (0x20));
metaData.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(15, byteSerializer), (byte) (0x10));
metaContainer.getIntegers().write(0, armorStandId);
metaContainer.getWatchableCollectionModifier().write(0, metaData.getWatchableObjects());
return metaContainer;
}
@Override
public PacketContainer getDestroyPacket(final int entityId) {
final PacketContainer destroyPacket = new PacketContainer(
PacketType.Play.Server.ENTITY_DESTROY);
destroyPacket.getModifier().write(0, new IntArrayList(new int[]{entityId}));
return destroyPacket;
}
}

View File

@@ -6,16 +6,19 @@
## Table of Contents
- [Description](#description)
- [Installation](#installation)
- [Contact Information](#contact-information)
- [Download](#download)
### Description
HMCCosmetics is a free, open source cosmetics plugin which allows you to easily give players backpack and hat type cosmetics.
HMCCosmetics is an intuitive, easy-to-use cosmetics plugin, designed for servers using resource packs.
### Requirements
- Server running PaperMC (or a fork of PaperMC)
- ProtocolLib
### Download
If you would like to support the development of our plugin, please purchase it on [Polymart](https://polymart.org/resource/hmccosmetics.1879)

View File

@@ -1,51 +0,0 @@
plugins {
id 'java'
id 'com.github.johnrengelman.shadow' version '6.1.0'
}
group 'io.github.fisher2911'
version '1.0.0'
repositories {
mavenCentral()
mavenLocal()
maven { url = 'https://papermc.io/repo/repository/maven-public/' }
maven { url = 'https://repo.mattstudios.me/artifactory/public/' }
maven { url = 'https://jitpack.io' }
maven { url = 'https://repo.leonardobishop.com/releases/' }
maven { url = 'https://repo.dmulloy2.net/repository/public/' }
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
compileOnly 'io.papermc.paper:paper:1.17.1-R0.1-SNAPSHOT'
compileOnly 'org.jetbrains:annotations:22.0.0'
compileOnly 'com.comphenix.protocol:ProtocolLib:4.7.0'
compileOnly 'net.kyori:adventure-api:4.9.3'
implementation 'net.kyori:adventure-text-minimessage:4.2.0-SNAPSHOT'
implementation 'net.kyori:adventure-platform-bukkit:4.0.0'
implementation 'dev.triumphteam:triumph-gui:3.0.3'
implementation 'me.mattstudios.utils:matt-framework:1.4.6'
implementation 'org.spongepowered:configurate-yaml:4.1.2'
implementation 'org.bstats:bstats-bukkit:2.2.1'
}
test {
useJUnitPlatform()
}
shadowJar {
relocate 'dev.triumphteam.gui', 'io.github.fisher2911.hmccosmetics.gui'
relocate 'me.mattstudios.mf', 'io.github.fisher2911.hmccosmetics.mf'
relocate 'net.kyori.adventure.text.minimessage', 'io.github.fisher2911.hmccosmetics.adventure.minimessage'
relocate 'net.kyori.adventure.platform', 'io.github.fisher2911.hmccosmetics.adventure.platform'
relocate 'org.spongepowered.configurate', 'io.github.fisher2911.hmccosmetics.configurate'
relocate 'org.bstats', 'io.github.fisher2911.hmccosmetics.bstats'
}
shadowJar {
archiveBaseName.set('HMCCosmetics')
archiveClassifier.set('')
archiveVersion.set('')
}

112
build.gradle.kts Normal file
View File

@@ -0,0 +1,112 @@
//import net.minecrell.pluginyml.bukkit.BukkitPluginDescription
//
plugins {
id("java")
}
// id("com.github.johnrengelman.shadow") version "7.1.1"
// id("net.minecrell.plugin-yml.bukkit") version "0.5.1"
//}
//
//group = "io.github.fisher2911"
//version = "1.7.1"
//description = "Intuitive, easy-to-use cosmetics plugin, designed for servers using resource packs.\n"
//
//repositories {
// mavenCentral()
// maven("https://papermc.io/repo/repository/maven-public/")
// maven("https://repo.mattstudios.me/artifactory/public/")
// maven("https://jitpack.io")
// maven("https://repo.dmulloy2.net/repository/public/")
// maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
// maven("https://mvnrepository.com/artifact/com.zaxxer/HikariCP")
// maven("https://repo.jeff-media.de/maven2/")
// maven("https://oss.sonatype.org/content/repositories/snapshots")
//}
//
//dependencies {
// compileOnly("com.mojang:authlib:1.5.25")
// compileOnly("org.spigotmc:spigot:1.17-R0.1-SNAPSHOT")
// compileOnly("org.jetbrains:annotations:22.0.0")
// compileOnly("com.comphenix.protocol:ProtocolLib:4.7.0")
// compileOnly("me.clip:placeholderapi:2.11.1")
// compileOnly("com.github.oraxen:oraxen:-SNAPSHOT")
// compileOnly("com.github.LoneDev6:API-ItemsAdder:2.5.4")
// implementation("net.kyori:adventure-api:4.9.3")
// implementation("net.kyori:adventure-text-minimessage:4.10.0-SNAPSHOT")
// implementation("net.kyori:adventure-platform-bukkit:4.0.1")
// implementation("dev.triumphteam:triumph-gui:3.1.1")
// implementation("me.mattstudios.utils:matt-framework:1.4.6")
// implementation("org.spongepowered:configurate-yaml:4.1.2")
// implementation("org.bstats:bstats-bukkit:2.2.1")
// implementation("com.zaxxer:HikariCP:5.0.0")
// implementation("com.j256.ormlite:ormlite-jdbc:6.1")
// implementation("com.j256.ormlite:ormlite-core:6.1")
//}
//
//tasks {
// build {
// dependsOn(shadowJar)
// }
//
// compileJava {
// options.encoding = Charsets.UTF_8.name()
// options.release.set(16)
// }
//
// shadowJar {
// relocate("dev.triumphteam.gui", "io.github.fisher2911.hmccosmetics.gui")
// relocate("me.mattstudios.mf", "io.github.fisher2911.hmccosmetics.mf")
// relocate("net.kyori.adventure.text.minimessage", "io.github.fisher2911.hmccosmetics.adventure.minimessage")
// relocate("net.kyori.adventure.platform", "io.github.fisher2911.hmccosmetics.adventure.platform")
// relocate("org.spongepowered.configurate", "io.github.fisher2911.hmccosmetics.configurate")
// relocate("org.bstats", "io.github.fisher2911.hmccosmetics.bstats")
// relocate("com.zaxxer.hikaricp", "io.github.fisher2911.hmccosmetics.hikaricp")
// relocate("com.j256.ormlite", "io.github.fisher2911.hmccosmetics.ormlite")
// archiveFileName.set("HMCCosmetics.jar")
// }
//
// javadoc {
// options.encoding = Charsets.UTF_8.name()
// }
//
// processResources {
// filteringCharset = Charsets.UTF_8.name()
// }
//}
//
//java {
// toolchain.languageVersion.set(JavaLanguageVersion.of(16))
//}
//
//bukkit {
// load = BukkitPluginDescription.PluginLoadOrder.STARTUP
// main = "io.github.fisher2911.hmccosmetics.HMCCosmetics"
// apiVersion = "1.17"
// name = "HMCCosmetics"
// authors = listOf("MasterOfTheFish")
// softDepend = listOf("Multiverse", "PlaceholderAPI", "Oraxen", "ItemsAdder")
// depend = listOf("ProtocolLib")
// permissions {
// register("hmccosmetics.cmd.default") {
// default = BukkitPluginDescription.Permission.Default.OP
// description = "Permission to execute the default command."
// }
// register("hmccosmetics.cmd.dye") {
// default = BukkitPluginDescription.Permission.Default.OP
// description = "Permission to dye armor."
// }
// register("hmccosmetics.cmd.reload") {
// default = BukkitPluginDescription.Permission.Default.OP
// description = "Permission to use the reload command."
// }
// register("hmccosmetics.cmd.set") {
// default = BukkitPluginDescription.Permission.Default.OP
// description = "Permission to set other users' cosmetics."
// }
// register("hmccosmetics.cmd.wardrobe") {
// default = BukkitPluginDescription.Permission.Default.OP
// description = "Permission to view the wardrobe"
// }
// }
//}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

View File

@@ -0,0 +1,2 @@
#Wed Feb 02 16:44:24 EST 2022
gradle.version=7.3.3

Binary file not shown.

Binary file not shown.

View File

134
common/build.gradle.kts Normal file
View File

@@ -0,0 +1,134 @@
import net.minecrell.pluginyml.bukkit.BukkitPluginDescription
plugins {
id("java")
id("com.github.johnrengelman.shadow") version "7.1.1"
id("net.minecrell.plugin-yml.bukkit") version "0.5.1"
}
group = "io.github.fisher2911"
version = "1.10.0"
description = "Intuitive, easy-to-use cosmetics plugin, designed for servers using resource packs.\n"
repositories {
mavenCentral()
maven("https://papermc.io/repo/repository/maven-public/")
maven("https://oss.sonatype.org/content/repositories/snapshots")
maven("https://repo.mattstudios.me/artifactory/public/")
maven("https://jitpack.io")
maven("https://repo.dmulloy2.net/repository/public/")
maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
maven("https://mvnrepository.com/artifact/com.zaxxer/HikariCP")
maven("https://repo.jeff-media.de/maven2/")
maven("https://repo.citizensnpcs.co")
maven("https://mvn.lumine.io/repository/maven-public")
}
dependencies {
implementation(project(":1.16"))
implementation(project(":1.17"))
implementation(project(":1.18"))
implementation(project(":nms"))
compileOnly("com.mojang:authlib:1.5.25")
compileOnly("org.spigotmc:spigot:1.16.5-R0.1-SNAPSHOT")
compileOnly("org.jetbrains:annotations:22.0.0")
compileOnly("com.comphenix.protocol:ProtocolLib:4.7.0")
compileOnly("me.clip:placeholderapi:2.11.1")
compileOnly("com.github.oraxen:oraxen:-SNAPSHOT")
compileOnly("com.github.LoneDev6:API-ItemsAdder:2.5.4")
compileOnly("net.citizensnpcs:citizens-main:2.0.29-SNAPSHOT")
compileOnly("com.ticxo.modelengine:api:R2.4.1:")
implementation("net.kyori:adventure-api:4.10.0")
implementation ("net.kyori:adventure-text-minimessage:4.10.0-SNAPSHOT")
implementation("net.kyori:adventure-platform-bukkit:4.0.1")
implementation("dev.triumphteam:triumph-gui:3.1.2")
implementation("me.mattstudios.utils:matt-framework:1.4.6")
implementation("org.spongepowered:configurate-yaml:4.1.2")
implementation("org.bstats:bstats-bukkit:2.2.1")
implementation("com.zaxxer:HikariCP:5.0.0")
implementation("com.j256.ormlite:ormlite-jdbc:6.1")
implementation("com.j256.ormlite:ormlite-core:6.1")
}
tasks {
build {
dependsOn(shadowJar)
}
compileJava {
options.encoding = Charsets.UTF_8.name()
options.release.set(17)
}
shadowJar {
relocate("dev.triumphteam.gui", "io.github.fisher2911.hmccosmetics.gui")
relocate("me.mattstudios.mf", "io.github.fisher2911.hmccosmetics.mf")
relocate("net.kyori.adventure", "io.github.fisher2911.hmccosmetics.adventure")
relocate("org.spongepowered.configurate", "io.github.fisher2911.hmccosmetics.configurate")
relocate("org.bstats", "io.github.fisher2911.hmccosmetics.bstats")
relocate("com.zaxxer.hikaricp", "io.github.fisher2911.hmccosmetics.hikaricp")
relocate("com.j256.ormlite", "io.github.fisher2911.hmccosmetics.ormlite")
archiveFileName.set("HMCCosmetics.jar")
dependencies {
exclude(dependency("org.yaml:snakeyaml"))
}
}
javadoc {
options.encoding = Charsets.UTF_8.name()
}
processResources {
duplicatesStrategy = DuplicatesStrategy.INCLUDE
filteringCharset = Charsets.UTF_8.name()
}
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
}
bukkit {
load = BukkitPluginDescription.PluginLoadOrder.STARTUP
main = "io.github.fisher2911.hmccosmetics.HMCCosmetics"
apiVersion = "1.16"
name = "HMCCosmetics"
authors = listOf("MasterOfTheFish")
softDepend = listOf("Multiverse", "PlaceholderAPI", "Oraxen", "ItemsAdder", "Citizens", "ModelEngine")
depend = listOf("ProtocolLib")
permissions {
register("hmccosmetics.cmd.default") {
default = BukkitPluginDescription.Permission.Default.OP
description = "Permission to execute the default command."
}
register("hmccosmetics.cmd.dye") {
default = BukkitPluginDescription.Permission.Default.OP
description = "Permission to dye armor."
}
register("hmccosmetics.cmd.reload") {
default = BukkitPluginDescription.Permission.Default.OP
description = "Permission to use the reload command."
}
register("hmccosmetics.cmd.set") {
default = BukkitPluginDescription.Permission.Default.OP
description = "Permission to set other users' cosmetics."
}
register("hmccosmetics.cmd.wardrobe.portable") {
default = BukkitPluginDescription.Permission.Default.OP
description = "Permission to use a portable wardrobe"
}
register("hmccosmetics.cmd.wardrobe") {
default = BukkitPluginDescription.Permission.Default.OP
description = "Permission to view the wardrobe"
}
register("hmccosmetics.cmd.wardrobe.other") {
default = BukkitPluginDescription.Permission.Default.OP
description = "Permission to open another player's wardrobe"
}
register("hmccosmetics.cmd.token.give") {
default = BukkitPluginDescription.Permission.Default.OP
description = "Permission to give other players tokens"
}
}
}

Some files were not shown because too many files have changed in this diff Show More