Commits vergleichen

...

698 Commits

Autor SHA1 Nachricht Datum
yoyosource
30ddf671ae Fix messages for clear command
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-05-18 11:08:41 +02:00
yoyosource
2829706d6b Fix DesignEndStone
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Fix DevServer kicking every member not added
Fix WarpListener for 1.20+
2024-05-16 16:36:59 +02:00
yoyosource
ab6c762323 Fix DesignEndStone
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-05-16 15:47:30 +02:00
yoyosource
d5acfa3f5c Fix DesignEndStone
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-05-16 15:42:34 +02:00
yoyosource
3370e211f9 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-05-16 15:31:00 +02:00
yoyosource
29c7732166 Potential fix for weird starting behaviour 2024-05-16 15:30:53 +02:00
ec3a8a1421 Merge pull request 'Improved Advanced-Flag to backtrack instead of going forward' (#252) from tracer/advanced-flag-improvemnt into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #252
Reviewed-by: Lixfel <lixfel@steamwar.de>
2024-05-12 09:14:35 +02:00
D4rkr34lm
f054710a95 Improved Advanced-Flag to backtrack instead of going forward
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-05-10 18:34:50 +02:00
67f6363852 Merge pull request 'Fixed build-destory-only not working' (#251) from tracer/fixed-only-destroy-flags into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #251
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-05-09 17:49:24 +02:00
7182635558 Merge pull request 'Added advanced logging for trace read EOF' (#250) from tracer/debug-corrupted-records-save-files into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #250
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-05-09 17:49:08 +02:00
D4rkr34lm
7d01ebf4ed Fixed build-destory-only not working
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-05-09 12:18:27 +02:00
D4rkr34lm
595c45bb54 Added advanced logging for trace read EOF
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-05-09 11:44:50 +02:00
45a61e554f Merge pull request 'Fixed clear nullpointer' (#249) from tracer/fix-clear-nullpointer into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #249
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-05-04 15:53:21 +02:00
D4rkr34lm
a43e141340 Fixed clear nullpointer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-05-04 13:56:10 +02:00
4a334d8693 Merge pull request 'Made Trace Records loading syncronized' (#247) from tracer/made-records-loading-syncronized into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #247
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-05-02 21:06:29 +02:00
D4rkr34lm
6a6833a0e0 Made Trace Records loading syncronized
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-05-02 20:49:28 +02:00
daedbb26a7 Merge pull request 'Fixed laufbau first tnt bug' (#246) from fix-laufbau into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #246
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-05-01 13:44:46 +02:00
D4rkr34lm
d5ab11addd Fixed laufbau first tnt bug
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-05-01 13:42:44 +02:00
aa22ccf5b4 Merge pull request 'tracer/simulator-autotrace-fix' (#245) from tracer/simulator-autotrace-fix into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #245
Reviewed-by: Chaoscaot <chaoscaot@zohomail.eu>
2024-04-29 21:43:19 +02:00
D4rkr34lm
723b86b955 Removed debugstatement
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-29 20:18:44 +02:00
D4rkr34lm
a116f7e4b1 Fixed fuse 80 subtick calc order problem with failsafe
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-29 20:16:27 +02:00
680f9d8b3f Merge pull request 'hotfix flag autocomplete' (#244) from tracer/hotfix-flag-autocomplete into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #244
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-28 15:12:11 +02:00
D4rkr34lm
00dcb10451 hotfix flag autocomplete
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-28 15:05:50 +02:00
c815cd52fb Merge pull request 'Hotfixed failsafe' (#243) from tracer/hotfix-failsafe into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #243
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-28 12:31:06 +02:00
D4rkr34lm
ddb701cbd6 Hotfixed failsafe
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-28 12:30:07 +02:00
929400b4d9 Merge pull request 'tracer/bug-354-Fix-smaller-trace-issues' (#242) from tracer/bug-354-Fix-smaller-trace-issues into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #242
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-28 12:15:17 +02:00
D4rkr34lm
e9ff8a7dc5 Merge master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-28 12:14:08 +02:00
D4rkr34lm
a36bae3a8d ...
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-28 12:11:22 +02:00
D4rkr34lm
7502270b96 Fixed killall interaction
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-04-28 12:10:33 +02:00
D4rkr34lm
0c91261d55 Inlined failsave 2024-04-28 12:09:14 +02:00
D4rkr34lm
add259788d Fixed stop message
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-28 12:02:03 +02:00
D4rkr34lm
4568ceee36 Changed auto trace toggle to setable
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-28 11:59:42 +02:00
106a13bd13 Merge pull request 'Fix' (#240) from tracer/fix-historyMap-nullpointer into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #240
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-28 11:49:38 +02:00
D4rkr34lm
2aec97304d Made -- to -
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-28 11:18:41 +02:00
D4rkr34lm
7fa31704f4 Added non toggle methods for auto tracer to recorder
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-28 11:17:09 +02:00
D4rkr34lm
95132a17d3 Fixed tnt point tss wrong
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-28 11:01:37 +02:00
D4rkr34lm
e08e53a554 Fix
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-25 20:32:05 +02:00
5ab6b8832b Merge pull request 'trace/trace-del-and-trace-share-fix' (#239) from trace/trace-del-and-trace-share-fix into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #239
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-22 22:57:11 +02:00
D4rkr34lm
2861a4e19b fixed help messag
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-22 22:56:14 +02:00
D4rkr34lm
18430e13fe Renamed trace share to trace broadcast
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-22 22:51:28 +02:00
D4rkr34lm
e8eeeb729a Changed behavior of trace deletion while being recorded
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-22 22:49:13 +02:00
792b089e4f Merge pull request 'Fix trace Rserver null error ?' (#237) from trace/server-nullpointer-fix into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #237
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-22 21:17:47 +02:00
D4rkr34lm
b602fb06d0 Used Compute if absent
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-22 20:27:34 +02:00
18769a6931 Merge pull request 'Trace now closes on being deleted' (#238) from trace/trace-clear-not-stopping-trace-fix into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #238
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-22 20:20:09 +02:00
D4rkr34lm
f1b3b27c14 Trace now closes on being deleted
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-22 20:15:05 +02:00
D4rkr34lm
fd17b8315f Fix trace Rserver null error ?
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-22 19:58:34 +02:00
2ed6008aea Merge pull request 'Final fix' (#236) from trace/exeption-fix-3 into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #236
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-22 19:00:44 +02:00
D4rkr34lm
a5b90be2db Final fix
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-22 18:37:04 +02:00
yoyosource
c278b1cfe1 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-22 17:36:08 +02:00
yoyosource
486d04dd66 Hotfix BauSystem.properties for InfoCommand 2024-04-22 17:36:02 +02:00
f1d929e33b Merge pull request 'Fix trace is added two times to manager' (#235) from trace-2times-in-manager-bug into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #235
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-22 17:28:22 +02:00
6f6b61b310 Merge pull request 'Added alias for trace clear' (#234) from trace-clear-alias into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #234
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-22 17:28:09 +02:00
yoyosource
f50d887da5 Hotfix TraceEntity 2.0?
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-22 15:21:47 +02:00
D4rkr34lm
5d2886c0a5 Fix trace is added two times to manager
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 22:13:27 +02:00
D4rkr34lm
9d96d5a2a8 Added alias for trace clear
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 21:57:00 +02:00
yoyosource
07cd605d2c Hotfix TraceEntity
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 19:42:13 +02:00
aeb5ebfc12 Merge pull request 'Trace Refactor' (#233) from TracerGUI into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #233
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-21 16:03:24 +02:00
yoyosource
7e96d1c846 Fix TraceRecordingWrapper.startTick
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 16:00:34 +02:00
yoyosource
5595f3177c Remove redundancy in data storage
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 15:55:26 +02:00
yoyosource
e931d7157e Rewrite ViewFlag.filter with Stream API to reduce copies of lists
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 15:47:18 +02:00
yoyosource
b64e06479f Disable IsolateFlag if no isolation is active
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 15:36:12 +02:00
yoyosource
86cf7e8ca5 Fix messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 15:31:45 +02:00
yoyosource
69b629d72e Fix messages 2024-04-21 15:30:12 +02:00
D4rkr34lm
143ba020ed Add message
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 15:27:14 +02:00
D4rkr34lm
d0a08bc331 Fix isolate click message
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 15:21:12 +02:00
D4rkr34lm
d81fb4e020 Merge remote-tracking branch 'origin/TracerGUI' into TracerGUI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
# Conflicts:
#	BauSystem_Main/src/BauSystem.properties
#	BauSystem_Main/src/BauSystem_de.properties
2024-04-21 15:02:53 +02:00
D4rkr34lm
7ddfcb83ec Added isolate on trace entity 2024-04-21 14:57:44 +02:00
yoyosource
09aa662171 Add messages to TraceCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 14:46:47 +02:00
yoyosource
56a72b1e83 Add TraceCommand.share
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 14:36:15 +02:00
yoyosource
295eb82fe9 Add TraceCommand.share
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 14:29:26 +02:00
yoyosource
f7727eb01c Add TraceScoreboardElement
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 13:23:15 +02:00
yoyosource
4e56760eea Merge remote-tracking branch 'origin/TracerGUI' into TracerGUI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-21 13:17:36 +02:00
yoyosource
f69cbd2724 Add TraceScoreboardElement 2024-04-21 13:17:28 +02:00
D4rkr34lm
0d09db2284 Docs at 90 Percent
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-20 00:51:51 +02:00
yoyosource
47772ad23d Update ViewFlag.TIME
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 18:08:11 +02:00
yoyosource
83e5324986 Update ViewFlag.FUSE
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 18:06:05 +02:00
D4rkr34lm
8512a7bec5 Merge remote-tracking branch 'origin/TracerGUI' into TracerGUI
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-04-18 17:56:50 +02:00
D4rkr34lm
35988bfcd3 Made name consistent with old naming
Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-18 17:56:45 +02:00
yoyosource
67a34ee5ca Fix bundle counting entity twice
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 17:54:20 +02:00
yoyosource
5af9cfcaad Fix Trace.bundleRecords
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 17:42:40 +02:00
yoyosource
8b07e93a70 Fix Trace.bundleRecords
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 17:25:47 +02:00
D4rkr34lm
4d9aacfc3e Merge remote-tracking branch 'origin/TracerGUI' into TracerGUI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 17:13:00 +02:00
D4rkr34lm
6a3f3f8b0a fixed filters
Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-18 17:12:53 +02:00
yoyosource
4e6755033a Fix some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 17:08:39 +02:00
D4rkr34lm
4422c249dc Made loose filter more loose
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-18 17:07:16 +02:00
D4rkr34lm
1a3850600c Merge branch 'TracerGUI' of https://steamwar.de/devlabs/SteamWar/BauSystem2.0 into TracerGUI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 16:48:48 +02:00
yoyosource
33d687b216 Add gzip compression to trace data
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 16:19:23 +02:00
D4rkr34lm
2eab79cf69 Merge branch 'TracerGUI' of https://steamwar.de/devlabs/SteamWar/BauSystem2.0 into TracerGUI 2024-04-18 16:17:58 +02:00
D4rkr34lm
1bcf415186 Closed recource leak
Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-18 16:14:49 +02:00
yoyosource
27dc30619b Merge remote-tracking branch 'origin/TracerGUI' into TracerGUI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 16:11:53 +02:00
yoyosource
17a8389703 Add Loader.single 2024-04-18 16:11:46 +02:00
D4rkr34lm
d170e96542 Made trace clear region wise
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-18 16:10:15 +02:00
yoyosource
356b14d49c Fix some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-18 15:52:30 +02:00
D4rkr34lm
7a9a2283a9 Merge remote-tracking branch 'origin/TracerGUI' into TracerGUI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-17 21:50:04 +02:00
D4rkr34lm
d5d8c52862 Fixed Ignite Flag
Fixed Formating

Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-17 21:49:47 +02:00
yoyosource
163967483f Remove accidental committed stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-17 21:41:56 +02:00
yoyosource
ed799b2937 Fix some things maybe!
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-17 16:31:36 +02:00
D4rkr34lm
d13c415565 Added savind and loading for traces
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-16 22:35:07 +02:00
yoyosource
39d2205b85 Fix TraceCommand.delete
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-12 17:58:20 +02:00
yoyosource
c4296a3781 Fix performance stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-12 17:18:39 +02:00
yoyosource
31e0a0172f Fix some stuff and make it more ugly
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-12 17:13:27 +02:00
yoyosource
bcdad382c7 Update tracer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-12 16:24:32 +02:00
yoyosource
597c968463 Update tracer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-12 16:18:30 +02:00
D4rkr34lm
43a04a68bf Renamed TNTRecord sec
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-11 17:49:23 +02:00
D4rkr34lm
80967ab4e7 Add date to Trace
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-09 23:10:49 +02:00
D4rkr34lm
e06d612a0e Renamed TNTRecord
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-09 22:46:00 +02:00
yoyosource
224127eac6 Update tracer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-09 18:10:18 +02:00
yoyosource
1aa63255e7 Update tracer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-09 14:59:19 +02:00
yoyosource
7f4834412d Remove legacy materials if there were any
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-08 17:27:34 +02:00
yoyosource
e01ac8ac58 Fix TPSSystem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-08 17:20:23 +02:00
yoyosource
7ece12de47 Update materials of KillcheckerVisualizer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-08 14:23:59 +02:00
yoyosource
af19931946 Optimize ProcessingTracesState
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-08 13:25:13 +02:00
yoyosource
b8e79f9c55 Update Trace and TraceManager
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-08 11:56:52 +02:00
yoyosource
c7b8b5d2da Hotfix RegionCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-08 08:28:52 +02:00
yoyosource
41d4ce2472 Fix build errors
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-07 17:22:37 +02:00
yoyosource
4ed5f40fed Fix build errors
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-07 17:21:05 +02:00
yoyosource
a6867cb4f9 Fix SimulatorExecutor
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-04-07 17:19:13 +02:00
yoyosource
7cd61fd9a4 Add ViewFlagHolder
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-04-07 17:15:54 +02:00
yoyosource
3f9f3341a3 Fix AtFlag
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-04-07 16:51:24 +02:00
yoyosource
e7438029b0 Add /rgc and /rgp and /region copy and /region paste
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-07 16:39:00 +02:00
3755395eab Integrated TraceRecorder with Simulator
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: D4rkr34lm <darth.m.frohn@gmail.com>
2024-04-07 15:20:58 +02:00
yoyosource
e64c50b566 Reformat many things
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-04-07 13:38:36 +02:00
yoyosource
207826ae8a Optimize BundleFilter
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-04-07 13:29:30 +02:00
9b70f2b365 Merge pull request 'Close #226 and #227' (#230) from SmallSimFixes into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #230
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-04-07 13:07:57 +02:00
D4rkr34lm
ae470ffadd Fixed spelling
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-07 13:06:58 +02:00
D4rkr34lm
4a0cd6c51e Add subpixel alignment to storage
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-07 13:05:25 +02:00
D4rkr34lm
3b53926195 Updated ui name
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-07 12:57:50 +02:00
D4rkr34lm
687cb4451e Made text input move of group relativ
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-07 12:56:26 +02:00
D4rkr34lm
41fab57e1a Fixed Sub_Pixel to big
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-07 12:46:39 +02:00
yoyosource
d8d049d5d9 Merge remote-tracking branch 'origin/TracerGUI' into TracerGUI
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-04-07 12:32:43 +02:00
yoyosource
e8db5d86c2 Merge branch 'master' into TracerGUI
# Conflicts:
#	BauSystem_Main/src/BauSystem.properties
#	BauSystem_Main/src/BauSystem_de.properties
#	BauSystem_Main/src/de/steamwar/bausystem/features/simulator/TNTSimulator.java
#	BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java
#	BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TracerBauGuiItem.java
#	BauSystem_Main/src/de/steamwar/bausystem/features/tracer/record/Recorder.java
#	BauSystem_Main/src/de/steamwar/bausystem/features/tracer/record/SingleTraceRecorder.java
#	BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/TraceShowManager.java
2024-04-07 12:32:13 +02:00
D4rkr34lm
1fc9a43604 Added trace follow
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-04-03 00:14:37 +02:00
D4rkr34lm
488866cee6 Added comand for trace at
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-04-02 23:52:18 +02:00
D4rkr34lm
eefe92309d Fixed #226
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Added text input for simulator group
2024-04-02 22:59:40 +02:00
D4rkr34lm
c369662a28 Fixed #227 and made subpixelalignment more user friendly
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-04-02 22:35:27 +02:00
D4rkr34lm
870578dcf9 Added at-Flag
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-30 16:09:06 +01:00
D4rkr34lm
987a00ae51 Added proper info print to chat
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Refactored Isolate
2024-03-26 22:11:08 +01:00
D4rkr34lm
c0dcb99f7b Changes by jojo
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-21 16:30:10 +01:00
D4rkr34lm
d80e4cf3e0 Fixed inverse x required flags
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Fixed exeption handeling in record ClassMapper
Fixed advanced flag
Added flag aliasses
2024-03-21 16:29:51 +01:00
D4rkr34lm
2d7ae67335 Added required Flags
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-21 15:04:09 +01:00
D4rkr34lm
be25b71cb8 added render call to isolate
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-21 14:45:10 +01:00
D4rkr34lm
a94f5747a0 Implemented trace isolate
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-21 14:03:20 +01:00
D4rkr34lm
5a59578a66 Changed Record id from uuid to incremental int
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-19 16:09:32 +01:00
D4rkr34lm
10a63f1876 Fixed build destroy and testblock destroy flags
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-18 22:47:16 +01:00
D4rkr34lm
5ec9fbb6e0 Fixed Trace id assignment
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Fixed trace recording of source tnt
2024-03-18 22:40:41 +01:00
719b38f5af Merge pull request 'Fix BucketEntityEvent on 1.15 (and 1.19 Build servers)' (#225) from fixBucketEntityEvent into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #225
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-03-15 16:34:19 +01:00
aa8d2bfcd0 Fix BucketEntityEvent on 1.15 (and 1.19 Build servers)
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-15 16:27:43 +01:00
yoyosource
cf329f4236 Fix TPSScoreboardElement
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-14 21:53:10 +01:00
yoyosource
6abeed0b02 Fix ShieldPrinting setting air on click on block
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-14 17:01:56 +01:00
D4rkr34lm
45cc3abd0a Fixed Advanced flag having gravity
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-14 12:31:17 +01:00
D4rkr34lm
2cd3c3527e Added Micromotion view Flag
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-14 12:25:54 +01:00
5a835acb80 Fix Techhider
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-14 11:50:52 +01:00
5a991de55a Fix Techhider
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-14 11:49:04 +01:00
D4rkr34lm
827929382a Added source, build-destroy, testblock-destroy
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-13 23:59:17 +01:00
D4rkr34lm
1282f6066c Added count, fuse and time flags
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-13 23:18:57 +01:00
D4rkr34lm
8a78dcbc78 Added Advanced flag
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-13 23:14:27 +01:00
D4rkr34lm
04b49fe827 Added Ignite Flag
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Added inverse flags
2024-03-12 22:28:33 +01:00
D4rkr34lm
8a3d8a9c33 Expanded Command with delete option
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-12 20:31:20 +01:00
D4rkr34lm
dfd20f03b6 Fixed auto trace
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-12 15:20:38 +01:00
yoyosource
234f476672 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-11 20:42:00 +01:00
yoyosource
b7cb909986 Add interactAt to documentation 2024-03-11 20:41:52 +01:00
5b8d7bc28f Merge pull request 'Type zum BlockInteract Event im Scriptsystem hinzugefügt' (#224) from ScriptEventDataExpansion into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #224
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-03-09 13:58:29 +01:00
D4rkr34lm
f1db3c2047 Updated doc
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-08 22:23:13 +01:00
D4rkr34lm
2d5bedc63a Added block type to playerInteract event in script api
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-08 22:10:41 +01:00
D4rkr34lm
8781da6a3d Added hide command
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-08 22:06:07 +01:00
yoyosource
a91c352b15 Update pos definition and some other stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-07 22:20:35 +01:00
yoyosource
f7481bfa0f Add server.onlinePlayerCount to Script System
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-07 15:40:52 +01:00
yoyosource
2ccc7920d5 Fix BauScoreboard
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-05 12:21:11 +01:00
yoyosource
3ecd31e80c Update ScoreboardLib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-05 12:13:30 +01:00
yoyosource
1da5b65460 Add ScoreboardLib and TpsLib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-05 11:06:31 +01:00
D4rkr34lm
1cbe614171 Fixed nullpointer in auto trace finish check
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-03 22:18:31 +01:00
D4rkr34lm
4620e83a82 Reintroduced id return on trace recording start
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-02 22:18:04 +01:00
D4rkr34lm
6ec62d9720 Reintroduced trace id
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-02 22:14:56 +01:00
D4rkr34lm
335e2cc437 Added docs
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-02 22:11:46 +01:00
D4rkr34lm
75edfc8375 Made for easier interfacing with api by allowing to toggle
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
show from manager
2024-03-02 22:10:36 +01:00
D4rkr34lm
ccf155d500 Fixed flag static init order leading to null pointer exeption
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-02 21:51:49 +01:00
D4rkr34lm
e4346a36e1 Temporarily removed trace from lua api
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-02 21:35:51 +01:00
D4rkr34lm
8aa0ee4d9d Updated simulator fo new trace api
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-02 21:35:09 +01:00
D4rkr34lm
fccdcb2519 Made auto-traces finish
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-02 21:19:52 +01:00
yoyosource
b47d85ebe9 Fix Config.save
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-03-02 11:34:22 +01:00
D4rkr34lm
0c37cfc3bb Readded auto-trace
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-01 23:48:53 +01:00
D4rkr34lm
1094f4a979 Readded Explosion Flag
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-01 23:19:11 +01:00
D4rkr34lm
c03fbb65e6 Refactored view flag to be abstract class
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-01 23:06:36 +01:00
D4rkr34lm
48175de8d8 Addapted laufbau for new trace api
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-01 22:08:34 +01:00
D4rkr34lm
eeb47f1d08 Added id to filter for records of same tnt
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-01 11:46:30 +01:00
D4rkr34lm
e71ccc3160 Replaced doubly linked list structure with ArrayList refrence, for tnt history
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-03-01 11:40:24 +01:00
D4rkr34lm
40f4af2a06 Started adapting laufbau
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-02-29 21:27:21 +01:00
D4rkr34lm
3c22840278 Removed old trace
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-02-29 11:03:59 +01:00
D4rkr34lm
c621048014 Removed old iterators
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-02-29 11:00:56 +01:00
D4rkr34lm
1644b96886 Moved Classes
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Reimplemented basic command
2024-02-22 20:29:10 +01:00
D4rkr34lm
f62d9e626b Added live rendering
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-02-21 13:34:25 +01:00
D4rkr34lm
3a3c4819f9 Removed null returns
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-02-20 23:22:34 +01:00
D4rkr34lm
5c96da9acd Fixed bugs with trace rendering
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Added toString
2024-02-20 23:11:58 +01:00
yoyosource
5a03623b14 Fix ScriptSystem in 1.15?
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-18 12:15:00 +01:00
yoyosource
f837b37b50 Fix ClipboardListener.onLogin loading copy schem for builder
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 18:13:25 +01:00
yoyosource
fd603f3c7f Fix Config
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 16:27:23 +01:00
yoyosource
280b5b2613 Recolor Players in InfoCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 16:19:57 +01:00
yoyosource
7f62ad8005 Update InfoCommand output
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 15:22:48 +01:00
yoyosource
d1196c6e4e Add AutostartListener Bedrock autostarter
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 13:37:17 +01:00
yoyosource
009a1f3fa4 Fix PanzernCommand for glass blocks
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 13:12:10 +01:00
yoyosource
a05116a16c Fix SpectatorListener.resendChunks
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 12:22:56 +01:00
yoyosource
cc15781b44 Hotfix Config
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 09:32:26 +01:00
yoyosource
8053796341 Update permission of BackupCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 09:15:43 +01:00
yoyosource
9466a8c981 Fix AntiBauAddMemberFix
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 08:55:47 +01:00
yoyosource
338980f0d3 Fix AntiBauAddMemberFix 2024-02-17 08:55:33 +01:00
e4dc05ce02 Merge pull request 'Update Permission' (#220) from PermissionUpdate into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #220
Reviewed-by: Lixfel <lixfel@steamwar.de>
2024-02-17 08:53:30 +01:00
yoyosource
de08488371 Fix AxiomPermissionCheck
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-17 08:36:51 +01:00
yoyosource
21e7bd89af Fix BindCommand and SteamWarLuaPlugin
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-16 08:24:42 +01:00
yoyosource
953db69425 Fix BackupCommand
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-02-16 08:09:40 +01:00
yoyosource
1d49a6981b Merge branch 'master' into PermissionUpdate
# Conflicts:
#	BauSystem_Main/src/de/steamwar/bausystem/features/script/lua/libs/ServerLib.java
#	BauSystem_Main/src/de/steamwar/bausystem/features/tpslimit/TPSSystem.java
#	BauSystem_Main/src/de/steamwar/bausystem/features/world/AxiomPermissionCheck.java
2024-02-16 08:09:13 +01:00
d9dd64271e Merge pull request 'Potential WE axe fix' (#223) from potentialWEAxeFix into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #223
Reviewed-by: Chaoscaot <chaoscaot@zohomail.eu>
2024-02-13 10:51:46 +01:00
yoyosource
c2c686319d Fix ServerLib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-11 15:17:07 +01:00
7ded9eefa4 Potential WE axe fix
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-06 22:39:33 +01:00
yoyosource
b211f9cf79 Hot Hot Hot-fix Players on Bauserver without add
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-04 01:18:50 +01:00
yoyosource
2ba51e66e0 Fix BindCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-01 21:48:14 +01:00
yoyosource
f83ba6ab96 Fix AxiomPermissionCheck
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-02-01 20:02:43 +01:00
yoyosource
b891c5adf1 Fix TPSSystem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-01-30 19:48:43 +01:00
yoyosource
78c0bc51b9 Fix SimulatorSaver
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-01-30 16:10:50 +01:00
yoyosource
d1afb344d9 Fix SimulatorSaver
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-01-30 16:06:53 +01:00
yoyosource
e77680d25a Fix AxiomPermissionCheck
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-01-23 10:11:19 +01:00
yoyosource
94bf2f3ae6 Hotfix SpectatorListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-01-20 20:35:19 +01:00
yoyosource
775d428671 Fix SpectatorListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-01-19 20:33:27 +01:00
yoyosource
ea5df6cee3 Fix SteamWarLuaPlugin
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-01-19 17:08:11 +01:00
yoyosource
da1ea27f61 Remove Permission.SPECTATOR
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-01-19 17:02:57 +01:00
yoyosource
2bf0b0c6e8 Merge branch 'master' into PermissionUpdate
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-01-19 16:51:09 +01:00
85e6aab9e6 Merge pull request 'Fix freeze order.' (#222) from checkpoint into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #222
2024-01-19 15:53:03 +01:00
ad9b0aeab0 Fix freeze order.
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-01-19 15:52:06 +01:00
016a2a3469 Merge pull request 'Checkpoint idle server' (#221) from checkpoint into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #221
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-01-18 01:23:41 +01:00
c2bec98063 Checkpoint idle server
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-01-17 16:20:24 +01:00
yoyosource
ada8fefd62 Fix SimulatorSaver
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-01-14 11:52:20 +01:00
yoyosource
21aa22d75f Fix SteamWarLuaPlugin WE permission for WorldEdit commands
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-27 17:34:00 +01:00
yoyosource
a3f5098137 Merge branch 'master' into PermissionUpdate
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-25 11:41:44 +01:00
yoyosource
cdac4235f5 Fix SimulatorTNTPhaseSettingsGui
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-25 11:38:20 +01:00
yoyosource
b166d8ff6b Merge branch 'master' into PermissionUpdate
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
# Conflicts:
#	BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorCursor.java
2023-12-25 11:31:44 +01:00
yoyosource
2c5a50bff3 Update BauMemberUpdate
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-23 17:54:54 +01:00
D4rkr34lm
beb49cdcd1 Added option for bundeling to trace rendering
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-23 17:43:34 +01:00
yoyosource
96b84a798b Update BauMemberUpdate
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-23 16:45:48 +01:00
yoyosource
6e9693d838 Update Techhider of Spectators
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-23 15:06:49 +01:00
yoyosource
2a55f607d3 Add dynamic spectator disable
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-23 14:18:32 +01:00
yoyosource
0ac735c30f Add ForceSpectatorCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add TechHiderCommand.toggleHider for spectators
2023-12-23 13:02:44 +01:00
yoyosource
b00babdcbd Fix permission messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-23 08:01:38 +01:00
yoyosource
f5e4d725fe Add BauMemberUpdate and BauMemberUpdateEvent
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-22 16:55:41 +01:00
yoyosource
ca8a916042 Optimize imports
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-22 15:16:28 +01:00
yoyosource
8da1fdac58 Fix SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-22 14:57:54 +01:00
yoyosource
927ce1f495 Fix SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-22 11:48:55 +01:00
yoyosource
0bf27db398 Fix SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-22 10:19:40 +01:00
yoyosource
202e03c957 Fix SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-22 10:03:24 +01:00
yoyosource
2cfed8b84d Fix CancelPacketHandleException in SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-22 09:24:49 +01:00
yoyosource
ec10b0fe71 Add Observer to Simulator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-22 09:01:54 +01:00
yoyosource
bff63482ef Add BauLockStateScoreboard
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-22 08:44:54 +01:00
yoyosource
4f266a30ab Fix StorageLib in 1.15
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-20 20:39:23 +01:00
D4rkr34lm
85512be3a8 Added methode to hide trail
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-19 16:22:54 +01:00
yoyosource
67c9f66d13 Fix AutostartListener for specific GameMode configs 2023-12-19 16:22:54 +01:00
yoyosource
f2a957c88f Hotfix AntiCursorReCentering 2023-12-19 16:22:54 +01:00
yoyosource
d1ff80b9dc Hotfix AntiCursorReCentering 2023-12-19 16:22:54 +01:00
yoyosource
41ed83dfe0 Add AntiCursorReCentering 2023-12-19 16:22:54 +01:00
D4rkr34lm
2bf3cfbb1d Reimplemented trace rendering
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-19 16:17:14 +01:00
yoyosource
19bb7cc733 Fix synchronized errors
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-17 13:07:48 +01:00
yoyosource
17c03f629a Fix SimulatorBaseGui open
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-17 12:48:05 +01:00
yoyosource
f6644d8ad8 Fix Gui not populated on tpslimit 0
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-17 12:24:01 +01:00
yoyosource
4ff706e1ef Fix Gui
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-17 12:20:36 +01:00
yoyosource
3d0ebbe743 Fix TNTPhase spawning in frozen Region
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-16 22:22:53 +01:00
yoyosource
5556bd7875 Update SimulatorBauGuiItem Permission
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-16 21:39:25 +01:00
yoyosource
5fe0079e30 Merge branch 'master' into PermissionUpdate 2023-12-16 21:38:01 +01:00
yoyosource
006a0edef6 Add SimulatorBauGuiItem back
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-16 21:36:13 +01:00
yoyosource
6305453e15 Fix Permission for SignEdit and other stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-16 21:34:29 +01:00
yoyosource
a61f1e2c8c Fix Permission for ServerLib.getBlockAt and setBlockAt and exec
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-16 18:08:48 +01:00
yoyosource
78f7e42629 Fix Permission
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-16 16:52:59 +01:00
D4rkr34lm
3dddb48d0c Adjusted more permissions
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-16 15:53:02 +01:00
yoyosource
37e6628aaa Fix SpectatorListener
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-16 15:12:16 +01:00
yoyosource
bcb8b31ba9 Add Permission.MEMBER
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-16 14:51:24 +01:00
D4rkr34lm
832484c2a2 Merge branch 'PermissionUpdate' of https://steamwar.de/devlabs/SteamWar/BauSystem2.0 into PermissionUpdate
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-16 14:49:01 +01:00
D4rkr34lm
7802a03f48 Addjusted permissions 2023-12-16 14:47:33 +01:00
yoyosource
20af36a4a2 Add SpectatorListener
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-16 14:42:01 +01:00
yoyosource
0cec90c55c Add validator for player and commandsender for checking build Permission
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-16 14:19:30 +01:00
yoyosource
0b70bdfe97 Fix Permission.SPECTATOR
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-16 14:05:58 +01:00
yoyosource
ec93dfd8ec Add Permission.SPECTATOR
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-16 14:04:46 +01:00
yoyosource
1a6c0de502 Update Permission
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-12-16 14:01:42 +01:00
yoyosource
b73af3e2ec Hotfix SimulatorStorage
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-16 12:48:52 +01:00
27627c3b41 Merge pull request 'SimRework2.0' (#216) from SimRework2.0 into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #216
2023-12-16 12:30:56 +01:00
4f592e754c Merge branch 'master' into SimRework2.0
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-16 12:29:50 +01:00
yoyosource
52fcb69e1e Optimize imports
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-16 12:27:33 +01:00
yoyosource
a0ff726fb4 Add several Anvil Guis
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Fix some lifetime and offset contraints for RedstonePhases
2023-12-15 19:56:59 +01:00
yoyosource
61282c0f84 Fix MaterialCommand triggering WorldEditListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-03 15:19:19 +01:00
yoyosource
1ed10c8c86 Fix SmartPlaceListener click on Comparator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-12-02 12:58:31 +01:00
D4rkr34lm
f94aeeda01 Added next link in tnt record
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-11-26 17:00:02 +01:00
yoyosource
4c7f56be7c Fix ColorCodes
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-11-18 20:29:41 +01:00
yoyosource
36e0c4c910 Fix NPE for Point convertion to Pos
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-11-17 18:18:55 +01:00
yoyosource
bdeb7da4c6 Add a few RegionLib getters
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add storage saving and loading
2023-11-17 18:14:16 +01:00
b58e418ea4 Changed Data Structure for TNTRecords and TNT tracking, to record update order properly 2023-11-10 15:49:12 +01:00
D4rkr34lm
979428d493 Added methods to record tnt to Recorder 2023-11-06 02:05:17 +01:00
D4rkr34lm
84150aadd2 Added getters to TraceManager 2023-11-06 01:20:59 +01:00
D4rkr34lm
32fb859764 Finished data part of Trace class 2023-11-06 00:56:02 +01:00
D4rkr34lm
b886745113 Finished data class for a tnt record 2023-11-06 00:45:32 +01:00
D4rkr34lm
27a542590c Started Trace Refactoring
Laid out basic class structure
2023-11-06 00:11:03 +01:00
yoyosource
fdc201e99d Add only similar elements inside of groups
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add delete to group gui and redstone and tnt
Rework SimulatorRedstoneGui
Add 'Make Group' option to SimulatorTNTGui
Fix Player Join server crash
Add 'Create Sim' to Select Simulator Gui
2023-10-28 23:14:35 +02:00
yoyosource
06a68a7004 Fix lore of sim item
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-28 09:56:24 +02:00
yoyosource
11fdd08f79 Fix some stuff and layout
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-27 21:08:02 +02:00
yoyosource
8fb4a4669a Fix source/target compatibility
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-27 17:55:13 +02:00
yoyosource
5686b6bc40 Fix source/target compatibility
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-27 17:50:33 +02:00
yoyosource
98455a29ce Fix source/target compatibility
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-27 17:48:02 +02:00
yoyosource
08839343c3 Fix SimulatorSettingsGui click on XYZ
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-27 17:43:59 +02:00
yoyosource
a0859923f0 Add SimulatorAnvilGui and add anvil gui's to everything
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-27 17:41:29 +02:00
yoyosource
b379f8457d Fix simulator double activation while tnt still present
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-27 16:46:56 +02:00
yoyosource
402de21c47 Add order to SimulatorRedstonePhaseSettingsGui
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-27 16:43:03 +02:00
yoyosource
c05724efda Update SimulatorExecutor and fix many bugs
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-27 16:34:54 +02:00
yoyosource
c050046820 Remove old and move new
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-27 11:55:47 +02:00
yoyosource
b49c75d6bd Add storage api and implement SimulatorStorage
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-26 22:31:30 +02:00
yoyosource
61d1f0bd45 Add loading and saving methods and fix many QOL things
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-26 18:08:03 +02:00
yoyosource
61f7218fc0 Add some QOL Simulator changes
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-25 23:03:59 +02:00
yoyosource
4ee93b59dd Fix AutostartListener for specific GameMode configs
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-25 14:35:15 +02:00
yoyosource
21ec66b4e2 Fix many things
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-10-25 14:13:45 +02:00
yoyosource
20b116f228 Update many GUI's
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Add SimulatorCursor.onPlayerInteract
2023-10-24 23:05:16 +02:00
yoyosource
d09c3548a7 Add SimulatorStorage
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Add SimulatorCursor showing highlighted entity
2023-10-24 18:23:29 +02:00
yoyosource
c0551c0cf8 Fix SimulatorWatcher for non watched Simulator 2023-10-24 18:23:29 +02:00
yoyosource
648482183a Move some stuff and add SimulatorCursor 2023-10-24 18:23:29 +02:00
yoyosource
4e6ee3b95b Add SimulatorWatcher.show, SimulatorWatcher.hide 2023-10-24 18:23:29 +02:00
yoyosource
3506083416 Add SimulatorExecutor 2023-10-24 18:23:29 +02:00
yoyosource
834039c4d4 Consolidate Item Generation
Fix Back arrow in element gui
2023-10-24 18:23:29 +02:00
yoyosource
327dded73b Consolidate Item Generation
Fix Back arrow in element gui
2023-10-24 18:23:29 +02:00
D4rkr34lm
933e4fe7d9 Removed parent group from group chooser menu 2023-10-24 18:23:29 +02:00
yoyosource
f6ee55c44f Optimize SimulatorBaseGui 2023-10-24 18:23:29 +02:00
yoyosource
9ceb8b40ae Fix useless reopening in old versions 2023-10-24 18:23:29 +02:00
D4rkr34lm
647ef97bfb Add group chooser fix 2023-10-24 18:23:29 +02:00
aef8edca07 Add group choosing and creation 2023-10-24 18:23:29 +02:00
yoyosource
b090b31503 Finalize GUI 2023-10-24 18:23:29 +02:00
yoyosource
e47cf80d60 Finalize GUI 2023-10-24 18:23:29 +02:00
4eb3a310a7 Add sorting of phases 2023-10-24 18:23:29 +02:00
68f81c8c3e Add last Phase and option for adding phase
Refactored for coherent naming sceme
2023-10-24 18:23:29 +02:00
0f7c19da5a Add quick delete fo phases 2023-10-24 18:23:29 +02:00
b5a81eb6db Add rmoval of empty group 2023-10-24 18:23:29 +02:00
D4rkr34lm
6e39f3e92a Made some fixes 2023-10-24 18:23:28 +02:00
D4rkr34lm
1b2d19c31d Add call to tnt phase menu 2023-10-24 18:23:28 +02:00
D4rkr34lm
f067e55d1f Refactored PhaseGuis 2023-10-24 18:23:28 +02:00
D4rkr34lm
273fba879e Add Phase order upper limit 2023-10-24 18:23:28 +02:00
D4rkr34lm
420cf4a5b8 Finalize first gui version 2023-10-24 18:23:28 +02:00
D4rkr34lm
148761fa63 Add Subpixel alignment to SimTNTSettingGui 2023-10-24 18:23:28 +02:00
yoyosource
fbe4f00ac0 Add basic GUI's
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-10-24 18:23:28 +02:00
D4rkr34lm
7980f49dfa Add Licence header 2023-10-24 18:23:28 +02:00
D4rkr34lm
0f1a8f5531 Add final DataStructure 2023-10-24 18:23:28 +02:00
D4rkr34lm
077a9854a5 Add class Hierarchy 2023-10-24 18:23:28 +02:00
D4rkr34lm
44f6d1c15d Added new sim data structure 2023-10-24 18:23:28 +02:00
yoyosource
0be117c001 Hotfix AntiCursorReCentering
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-24 18:23:12 +02:00
yoyosource
758c32e353 Hotfix AntiCursorReCentering
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-24 18:12:03 +02:00
yoyosource
8f1cac6f1f Add AntiCursorReCentering
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-22 12:20:29 +02:00
yoyosource
5de070c90e Update Tracer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-22 12:07:52 +02:00
yoyosource
c330fdcc1d Fix PistonCalculator for normal Pistons
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-17 08:15:04 +02:00
yoyosource
40dcee6eee Fix Warp and Compass a bit
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-16 17:45:18 +02:00
yoyosource
04e7c5f565 Fix Simulator with tpslimit 0
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-16 17:10:13 +02:00
yoyosource
89e8148158 Fix Trace Show consolidating too early
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-16 17:04:18 +02:00
yoyosource
d281860b81 Fix SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-16 14:25:24 +02:00
yoyosource
05c01e25e2 Fix SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-16 14:12:33 +02:00
yoyosource
f0741dbc19 Hotfix BEEHIVE sound for SmartPlace
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-15 21:14:27 +02:00
yoyosource
e18b2622eb Fix SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-15 18:37:31 +02:00
yoyosource
2b3f2a72d7 Fix SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-14 13:09:57 +02:00
yoyosource
8128aa7324 Fix PacketCache growing uncontrollably
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-10-14 12:27:14 +02:00
yoyosource
83a281b278 Update TPSLimit system to TPSSystem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Cleanup some mess from before
2023-10-11 15:35:02 +02:00
yoyosource
6197fd81c1 Hotfix PlaceItemUtils for Slab/Stairs/Trapdoor
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-10-08 12:07:27 +02:00
yoyosource
fcb1ce4e4b Hotfix PlaceItemUtils and Blackstone placing Walls in 1.19
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-10-07 21:05:01 +02:00
yoyosource
f82d5815ee Hotfix PlaceItemUtils
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Fix TraceCommand not having messages

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-10-07 08:34:22 +02:00
yoyosource
71f1a1244e Hotfix PlaceItemWrapper15
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-10-06 15:46:23 +02:00
yoyosource
3183d71478 Fix PlaceItemUtils in 1.19
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-10-06 15:26:47 +02:00
cf569d6e76 Merge pull request 'QOL' (#203) from QOL into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #203
2023-10-06 14:59:47 +02:00
yoyosource
cc8c6ba61d Fix SmartPlaceListener sound on force place
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-10-06 14:40:09 +02:00
yoyosource
b8c74db0f3 Fix PlaceItemUtils
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-10-05 21:21:24 +02:00
yoyosource
643486cfe5 Fix Depth
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-10-05 21:10:55 +02:00
yoyosource
1a93f2fc41 Add -water as for /trace show in WarShip regions
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-10-03 11:32:20 +02:00
yoyosource
8217e9645b Add TraceCommand.showAtCommand, TraceCommand.showFromCommand and TraceCommand.showFromToCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-27 11:44:01 +02:00
yoyosource
925ba19ff3 Fix PlaceItemUtils and SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-27 11:41:44 +02:00
yoyosource
c0b40d00a5 Fix PlaceItemUtils
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-27 11:19:20 +02:00
yoyosource
b1cd4604eb Fix -ignite -micro enable -water by default
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-26 12:39:42 +02:00
yoyosource
2f5eb080cf Fix PistonCalculator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-26 10:23:13 +02:00
yoyosource
910762126f Fix Off-Hand Item in Double Swap Hand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-26 09:52:54 +02:00
yoyosource
207953cb98 Add Material GUI click item to get into inv
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-26 09:42:54 +02:00
yoyosource
9982804a20 Update SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Fix PlaceItemUtils

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-26 09:27:30 +02:00
yoyosource
898d6269e5 Fix SignEditFrom20
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add PlaceItemUtils

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-25 22:27:42 +02:00
yoyosource
8da3c7bcf7 Hotfix SignEditFrom20
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-24 18:10:09 +02:00
yoyosource
71c8b7c062 Add SignEditFrom20 for 1.20+
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Change SignEdit to SignEditUntil19 for <=1.19

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-24 18:05:01 +02:00
yoyosource
a0c7f024ad Fix Testblock paste
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-24 16:54:11 +02:00
yoyosource
cbe41f7e7f Fix DoubleF for Script System on higher TPS
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-24 15:36:10 +02:00
yoyosource
06cc2bb35b Fix testblock pasting
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-24 15:32:55 +02:00
yoyosource
b956f34a7e Show unmovable Blocks in PistonCalculator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-24 13:16:08 +02:00
yoyosource
c08bb9d702 Simplify tracer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-23 15:45:42 +02:00
yoyosource
33e070bc43 Finalize BindCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-23 14:39:56 +02:00
yoyosource
22334ab15a Finalize BindCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-23 14:35:23 +02:00
yoyosource
438010a7fb Fix ItemBindCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-22 23:18:24 +02:00
yoyosource
c0880fc62a Fix ItemBindCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-22 15:08:39 +02:00
D4rkr34lm
d810d50d22 Added Item Bind Command
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-09-21 21:42:53 +02:00
yoyosource
451c47d3ed Add TraceRecordAutoDeletion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-20 17:14:34 +02:00
yoyosource
5abd29056b Fix BossbarLib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-19 17:26:54 +02:00
yoyosource
b47210a5ae Hotfix PasteBuilder.removeWater
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-19 16:35:58 +02:00
yoyosource
110172a98a Fix Tracer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Fix BossbarLib

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-18 21:14:01 +02:00
yoyosource
292907b735 Fix TestblockCommand permission
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Fix XrayCommand destroy block on right click

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-18 17:26:44 +02:00
yoyosource
a59bf7345f Fix ShowModeParameterType exclusions
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-18 17:19:42 +02:00
yoyosource
952d2f03dc Add -testblockdestroy and -testblockdestroyonly as Trace Show options
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-18 17:18:27 +02:00
yoyosource
7cd8d40e11 Add /loader speed and /loader wait
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-18 16:36:33 +02:00
yoyosource
c20eb8c331 Add Last Wait in Loader to be 120 ticks
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-18 16:26:05 +02:00
yoyosource
f7cfe5d2bd Translate LoaderComparator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-18 16:22:18 +02:00
b59a4a637e
Fixes and BossbarLib draft
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-09-18 09:02:24 +02:00
yoyosource
23fba7074d Add TNTMode.ONLY_BUILD
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-17 16:37:20 +02:00
yoyosource
42e8df6b53 Remove Redstonetester since nobody uses it
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-17 16:20:27 +02:00
yoyosource
91960f501b Fix LoaderRecorder messages on BlockBreakEvent
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-17 16:14:52 +02:00
yoyosource
9c9d7bc533 Update AutoStart time since start now shown as game ticks
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-17 16:11:19 +02:00
yoyosource
adc394e660 Add LoaderTNT editing
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add more filter options
Add remove loader element on break block

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-17 16:03:51 +02:00
yoyosource
13afc55b1f Fix LoaderLectern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-17 13:56:03 +02:00
yoyosource
8ecb6e173f Update Loader usage and add copy
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-17 13:52:58 +02:00
yoyosource
bf2de904dc Fix AttributeRemoveCommand showing whole attribute instead of name
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add AutostartListener Chest capability
Update InfoCommand coloring
Add DesignEndStone recalc
Fix KillcheckerVisualizer area for double kills

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-16 22:55:14 +02:00
yoyosource
f2978a16c0 Fix Event priority of EntityExplodeEvent
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-15 17:37:43 +02:00
yoyosource
9e9c653aba Fix EventListener for TNT explosions in Build Region
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-15 17:32:09 +02:00
1da569c41b
Fix NoClip
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-09-10 20:56:14 +02:00
yoyosource
ce6c101df3 Remove color replace on BackupCommand.backupLoad
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-10 15:54:14 +02:00
c6a045fe94 Fix 30 Minute shutdown for empty server
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-09-08 08:55:03 +02:00
yoyosource
e2779ba107 Remove /arceon command
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-07 20:22:58 +02:00
yoyosource
ce1de0dfdf Add AxiomPermissionCheck
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-06 19:54:12 +02:00
yoyosource
6096d48a05 Add AxiomPermissionCheck
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-06 19:41:43 +02:00
yoyosource
db349c2a05 Optimize Laufbau performance
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-02 15:30:48 +02:00
yoyosource
6400e20bbb Fix Record lastVelocity calculation
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-02 12:11:22 +02:00
yoyosource
a8aa431210 Update AFKStopperListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-09-01 16:33:10 +02:00
yoyosource
85b383c596 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-08-31 17:15:06 +02:00
yoyosource
b434a406e0 Hotfix LoaderLever
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-31 17:01:41 +02:00
4ec83673cf Merge pull request 'UserPerm' (#201) from userPerm into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #201
Reviewed-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-08-30 12:09:05 +02:00
d3a49bbeb0 UserPerm
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-08-29 21:46:49 +02:00
yoyosource
0c6b1b7f68 Fix Simulator still shown after removing item from inventory
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-27 13:07:27 +02:00
yoyosource
ecc24470f6 Fix TNTSimulator still shown after removing from inventory
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-27 13:02:30 +02:00
yoyosource
56f7fddb0e Fix Loader convenience with creating NOOP's
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-27 12:54:04 +02:00
yoyosource
8e4b383655 Fix ShieldPrinting with Powerable, Openable, ... BlockData
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-27 12:23:44 +02:00
yoyosource
a0fe836616 Fix ItemsCommand in Local Region if Global is not enabled
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-26 11:56:56 +02:00
yoyosource
213667541c Remove LockSchemCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-25 21:50:02 +02:00
5897b1da75 Fix Noclip
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-08-25 21:07:56 +02:00
yoyosource
9af09f5863 Hotfix ShieldPrinting
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-24 17:23:03 +02:00
yoyosource
59caeca6f7 Add 1.20 support
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-20 15:57:02 +02:00
yoyosource
f6e71a03c1 Hotfix die letzte
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-20 15:37:46 +02:00
yoyosource
88e772896c Hotfix TNTPrimedIterator18
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-20 15:30:18 +02:00
yoyosource
11ce513ec2 Add TNTPrimedIterator 1.20 support
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-20 15:18:59 +02:00
yoyosource
4afaec91bb Hotfix WorldEditListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-19 23:50:03 +02:00
yoyosource
98b5b8605e Fix RegionLib in Gloal scripts
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-19 23:30:20 +02:00
dce679afa2 Merge pull request 'TestBlockPaste-Without-Water' (#146) from TestBlockPaste-Without-Water into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #146
2023-08-19 23:29:19 +02:00
eec5e97842 Merge branch 'master' into TestBlockPaste-Without-Water
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-08-19 23:29:10 +02:00
yoyosource
ed862ba6b2 Fix paste problems
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-19 23:25:52 +02:00
yoyosource
ca907a7478 Remove unused api and cleanup rest
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-08-16 21:19:12 +02:00
00dcfe3a49
Fix catches
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-08-02 12:51:01 +02:00
02c095a946
Fix Error Messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-08-02 12:42:55 +02:00
yoyosource
7f3c0d2fd0 Fix stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-30 21:14:12 +02:00
yoyosource
fc03ba67e5 Hotfix ResetCommand
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-30 21:04:07 +02:00
yoyosource
3e27a0b366 Update PasteBuilder and usages
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-30 21:02:33 +02:00
yoyosource
c398ad239d Merge branch 'master' into TestBlockPaste-Without-Water
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-30 17:39:30 +02:00
yoyosource
82b385e5ff Hotfix ScriptGUI removing script on pressing escape when naming
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-30 14:22:36 +02:00
yoyosource
a1c45b86af Update StorageLib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-30 14:10:28 +02:00
yoyosource
b5e67bc576 Hotfix SCRIPT.md
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-30 14:04:33 +02:00
yoyosource
9ca83f02d9 Update StorageLib and add some utility functions
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-30 14:02:36 +02:00
yoyosource
13ec64a4fa Hotfix NPE in StorageLib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-30 12:08:47 +02:00
yoyosource
bae39e2921 Hotfix punishments for ResetCommand and TestblockCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-30 11:55:51 +02:00
yoyosource
814a5f4364 Add PasteBuilder as the new alternative to pasting via region.reset
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-29 12:47:48 +02:00
yoyosource
b02eda9fe8 Fix TestblockCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-28 22:54:19 +02:00
yoyosource
ad55b25cf0 Fix TestblockCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-28 22:16:55 +02:00
zOnlyKroks
8a01394092 Make things actually build
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-28 21:52:07 +02:00
zOnlyKroks
86df9ceef6 Merge branch 'master' into TestBlockPaste-Without-Water
# Conflicts:
#	BauSystem_Main/src/de/steamwar/bausystem/features/region/TestblockCommand.java
2023-07-28 21:47:57 +02:00
zOnlyKroks
d8b93e976f Implement Testblock Command
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-07-28 21:41:56 +02:00
6ab820ad71
Fix docs
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-28 14:59:36 +02:00
c3f75cdc2a
Fix typo
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-28 14:57:48 +02:00
bdd437eebd
Add Inventory notice and fix region.get
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-28 14:57:32 +02:00
531fb013aa
Add List
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-28 14:50:03 +02:00
b1e376d47f
Add region.get()
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-28 14:41:42 +02:00
3584b83b28 „SCRIPT.md“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-28 10:52:32 +02:00
yoyosource
3c30f57e08 Hotfix Exceptions in InventoryLib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-28 10:46:09 +02:00
zOnlyKroks
edfc331d03 Use parameters
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-07-27 15:43:55 +02:00
zOnlyKroks
9ad455ea2d fix logic flaw
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-07-27 01:09:52 +02:00
zOnlyKroks
1fe2394e01 Add option for tnt less pasting
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-07-27 01:08:55 +02:00
9003884dad
Schei¿ Encoding
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-26 23:12:19 +02:00
8ebef6d097 Merge pull request 'NoSchemSharing bug fix' (#193) from NoSchemSharingWithTestBlock into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #193
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2023-07-26 20:44:34 +02:00
542adab804 Merge pull request 'Add Definitions for Luanalysis' (#192) from defs into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #192
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2023-07-26 20:42:48 +02:00
zOnlyKroks
69347e652f Fix formatting
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-26 19:40:15 +02:00
zOnlyKroks
d4c38367c7 Add import
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-26 18:51:50 +02:00
zOnlyKroks
966a7336e1 Unscrew intellij
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-26 18:50:56 +02:00
zOnlyKroks
65f11dc917 Fix yet another typo
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-26 18:10:02 +02:00
zOnlyKroks
6afc5f3e81 Fix typo
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-07-26 18:08:43 +02:00
zOnlyKroks
3e703c8b06 No Schem Receiving
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-07-26 18:07:30 +02:00
fdd579af5a Merge branch 'master' into NoSchemSharingWithTestBlock
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-26 13:57:25 +02:00
zOnlyKroks
040f0373c8 Implement Punishment Check in ResetCommand
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-07-26 13:55:45 +02:00
zOnlyKroks
361d96ddf3 Fix import
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-07-26 13:49:53 +02:00
df882e3382
Fix Docs
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-26 13:03:41 +02:00
de2a393bf8 Merge branch 'master' into defs
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-26 13:02:08 +02:00
zOnlyKroks
37559ca688 Fix spelling and logic
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-07-26 12:15:33 +02:00
f53f0cedd9
Fix Docs
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-26 11:15:45 +02:00
a1880a61e9
Cleanup Defs
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-26 11:11:12 +02:00
040b25d601
Add Copyright
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-26 01:04:33 +02:00
f9c61808bb
Add Definitions for Luanalysis
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-26 01:02:07 +02:00
9d644782a8
Hotfix: Add Better Inventory item() Function
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-26 00:40:52 +02:00
1e2522af12 Merge pull request 'Add InventoryLib' (#191) from inventory_api into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #191
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2023-07-24 17:14:35 +02:00
60b3916ae7 „SCRIPT.md“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-24 14:00:05 +02:00
b2a770353e
Moar Docs
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-24 11:31:50 +02:00
e8f90cb400
Add InventoryLib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-23 22:35:47 +02:00
yoyosource
1ece69a6e2 Fix IncompleteRegionException for ColorReplaceCommand and TypeReplaceCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-22 15:50:19 +02:00
yoyosource
27798df7ce Hotfix Loader Bau slowdowns and crashes
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-22 14:30:32 +02:00
yoyosource
5f7f11bf87 Add some utility functions
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-20 17:07:09 +02:00
yoyosource
532c722636 Fix documentation
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-20 16:31:44 +02:00
yoyosource
6bb9900646 Closes: #185
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add RandomLib

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-20 16:29:48 +02:00
yoyosource
5f9d3b1e5b Fix SCRIPT.md
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-20 11:18:51 +02:00
yoyosource
fd1e021e80 Update scoreboard and fix ITEMS Flag
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-20 09:21:38 +02:00
yoyosource
0b992a5663 Hotfix player lib and world edit lib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-19 22:46:20 +02:00
yoyosource
8fe93d39a6 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-19 22:00:49 +02:00
yoyosource
d36945c217 Hotfix yaw and pitch in PlayerLib
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-19 22:00:41 +02:00
404baf148b Merge pull request 'Add StorageLib' (#184) from storage into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #184
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2023-07-19 20:48:24 +02:00
aa0594fa6c
Add StorageLib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-19 20:42:09 +02:00
yoyosource
bb133b8d7d Hotfix DoubleSwap and DebugStick
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-17 21:01:50 +02:00
yoyosource
93267d22a1 Fix documentation
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-17 20:23:58 +02:00
yoyosource
9207d3c966 Fix command stack overflow
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-17 20:14:38 +02:00
yoyosource
abc053bf8b Clean up some internal stuff
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-17 20:02:41 +02:00
yoyosource
a5932ac9d8 Hotfix PlayerInteract.getHand() null value
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-17 19:53:46 +02:00
yoyosource
611d7e978b Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-17 17:42:01 +02:00
yoyosource
32dcc8e7b4 Hotfix die zweite
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-17 17:41:06 +02:00
73e1ef75ab
Fix WE-Axe
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-17 17:33:58 +02:00
yoyosource
b93c743969 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-17 17:24:42 +02:00
yoyosource
e7a80981bb Fix FAWE exec()
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-17 17:24:30 +02:00
5f0ac969d5
Throw on global methods in local
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-17 17:22:10 +02:00
d606c01bdf
Add Length Method
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-17 17:16:18 +02:00
586e94d50a
Fix Error Messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-17 16:57:39 +02:00
9598838d2e Merge pull request 'Script System Lua' (#178) from lua into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #178
2023-07-17 16:44:03 +02:00
445b85cfaa Merge branch 'master' into lua
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-17 16:42:49 +02:00
yoyosource
9062bc698e Hotfix LaufbauState
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-16 21:25:43 +02:00
yoyosource
65e425ebdb Hotfix KillcheckerVisualizer bossbar progress
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-07-16 21:18:25 +02:00
74f7653a58 „SCRIPT.md“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-16 20:04:22 +02:00
706eb17362 Fixing...
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-07-01 13:40:52 +02:00
yoyosource
4b4b623fee Hotfix NPE in FreezeListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-26 20:59:31 +02:00
yoyosource
6c6b17eb30 Fix tpslimit 0 with all necessary features
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-20 17:56:26 +02:00
yoyosource
a317891685 Auto reshow on MicroMotion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-18 18:42:11 +02:00
yoyosource
65cf7ffe77 Auto reshow on MicroMotion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-18 18:20:21 +02:00
yoyosource
8ef7bafa22 Fix MicroMotion detector in Trace
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-18 17:58:52 +02:00
yoyosource
1b28b377e2 Add ShowModeParameterType.MICROMOTION
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-18 17:19:00 +02:00
yoyosource
949f7d1aeb Fix some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-17 20:09:02 +02:00
yoyosource
1337ec8ddf Update load usage calculation
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-17 18:18:45 +02:00
yoyosource
9a4aa3281a Remove load calculation
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-17 17:47:13 +02:00
yoyosource
b52283afa3 Update and hopefully fix the persisting issue
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-17 17:13:46 +02:00
yoyosource
a950640aae Disable System.out messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-17 12:18:51 +02:00
yoyosource
4d4e13ad53 Fix timeout
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-17 11:47:32 +02:00
yoyosource
c8fb4ffde1 Add some debug infos
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-17 11:47:12 +02:00
yoyosource
8f1fa7c2d6 Hotfix LoaderLever
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-17 11:17:54 +02:00
yoyosource
567f88c916 Update RamUsage
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-16 19:40:09 +02:00
yoyosource
8a5c3b1647 Add unlimited TPS and better AFKStopperListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-15 22:49:38 +02:00
yoyosource
e01d551a21 Update LoaderMovement
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-14 17:12:09 +02:00
yoyosource
c786850e46 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-06-14 17:03:37 +02:00
yoyosource
3d4468ef8c Add Tracer to global Region
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-14 17:03:29 +02:00
0ebfaae4c1 Fix typo
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-06-13 22:34:58 +02:00
yoyosource
5d56f4238d Add ShieldPrinting help messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-06-12 21:43:42 +02:00
ce389ca881 Fixing...
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-06-07 21:52:21 +02:00
70c9bb1d06 Fixing...
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-06-07 21:51:43 +02:00
5a09ece591 Fixing...
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-06-07 21:46:38 +02:00
29851ca4ca Fixing...
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-06-06 17:40:37 +02:00
43cecb54e3 Add WorldEditLib and Script Preview
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-05-28 00:59:06 +02:00
acb84b2729 Merge pull request 'Add Gradle Plugin' (#179) from gradle_plugin into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #179
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2023-05-21 21:29:57 +02:00
85a8dae7a9 Add Gradle Plugin
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-05-21 20:40:40 +02:00
900bbb0aec Add default ff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-05-21 14:55:46 +02:00
bf2e1c694d Fix UnsignCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-05-21 13:45:07 +02:00
dd69f7ba83 Add Cancelable Events
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-05-21 13:33:45 +02:00
96b37e1df1 Update Docs and some fixes
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-05-21 13:02:15 +02:00
2d8056883c Update Docs and Add Global GUI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Chaoscaot <chaoscaot@zohomail.eu>
2023-05-21 11:27:36 +02:00
edd44c172c Add Hotkeys
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-05-19 20:12:52 +02:00
95f0625031 Add Copyright
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-05-19 19:34:45 +02:00
16a6d10472 Script System Lua
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Todo:
* /script and global script storage
* Code Cleanup
2023-05-19 19:29:38 +02:00
yoyosource
072833f503 Fix TPSLimit Freeze
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-13 11:09:28 +02:00
yoyosource
6b395bde17 Remove help
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-10 21:03:28 +02:00
yoyosource
d2473ee72f Add global ItemsCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-10 20:59:42 +02:00
yoyosource
911f91a570 Fix messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-09 21:10:52 +02:00
yoyosource
d715a6a066 Hotfix BauInfoBauGuiItem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-09 19:56:41 +02:00
yoyosource
76631908f0 Add Flag.ITEMS for 1.19 server and up
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-09 19:45:27 +02:00
a573836bd6 Merge pull request 'LoaderRework' (#175) from LoaderRework into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #175
2023-05-09 18:31:41 +02:00
yoyosource
f6357c2a37 Fix package name
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-09 18:31:03 +02:00
yoyosource
f4e98ca95a Add all translations
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-09 18:28:53 +02:00
yoyosource
7c9c27ae3e Update LoaderDaylightDetector
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-09 17:19:27 +02:00
yoyosource
07abd7a1e7 Merge branch 'master' into LoaderRework 2023-05-09 17:04:32 +02:00
yoyosource
7785bb4c11 Reenable item
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-09 16:44:21 +02:00
yoyosource
989bb1f1d5 Merge branch 'master' into LoaderRework
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-05-09 15:59:25 +02:00
3c7168494f Fix TPS Warp inversion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-05-09 11:42:39 +02:00
a80770f5d3 Removing 1.15 only TPSWarp limiter...
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-05-09 11:25:47 +02:00
yoyosource
a73372a406 Update some more messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-07 22:36:33 +02:00
yoyosource
be33184cfe Update some gui texts
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-07 01:50:56 +02:00
yoyosource
bb654018d6 Update some multilingual stuff for Loader and LoaderCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-07 01:43:28 +02:00
yoyosource
55a720eb43 Remove unused translations
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-05 17:15:10 +02:00
yoyosource
ac2900c080 Add Loader setWaitBetween TNT and setGlobalWait
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-05 17:07:55 +02:00
yoyosource
6e82b57fbf Fix some stuff and add lores
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-05 16:51:14 +02:00
yoyosource
823e6e5534 Update scoreboard
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 20:17:30 +02:00
yoyosource
40ba9b838e Fix LoaderMovement
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 18:10:32 +02:00
yoyosource
b1dcd6d57b Update Loader and fix many things
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 18:00:54 +02:00
yoyosource
792f16fadf Update Loader
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 17:13:15 +02:00
yoyosource
7e78c2890a Update loader and remove old one
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 16:59:06 +02:00
yoyosource
88c015f7f9 Merge branch 'master' into LoaderRework
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-05-01 16:41:22 +02:00
yoyosource
35f882c123 Update Loader
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 16:39:00 +02:00
7fae86d2d4 Merge pull request 'BetterScoreboard' (#174) from BetterScoreboard into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #174
2023-05-01 15:06:41 +02:00
yoyosource
d0ab735bbf Hotfix stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 15:06:15 +02:00
yoyosource
043b3860a0 Add better Scoreboard building
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 14:30:29 +02:00
yoyosource
c320f92ea3 Update BauScoreboard design
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 12:34:22 +02:00
yoyosource
e997243887 Update LoaderRecorder
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 12:20:24 +02:00
yoyosource
b4d63e1fe9 Add reworked Loader
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-05-01 00:04:14 +02:00
f90a54728b Merge pull request 'SkullCommand' (#172) from SkullCommand into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #172
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2023-04-30 14:25:03 +02:00
528b441f46 Merge branch 'master' into SkullCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-04-30 14:23:05 +02:00
8bc2fda2ba „BauSystem_Main/src/de/steamwar/bausystem/features/loader/Loader.java“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-04-30 14:22:59 +02:00
3abeffd8b3 Merge pull request 'Fixed Issue #110 Loader bugt bei Strings' (#173) from psilab into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #173
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2023-04-30 14:22:20 +02:00
154d6fd08e Merge branch 'master' into psilab
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-04-30 14:20:59 +02:00
f1925dc366 „BauSystem_Main/src/de/steamwar/bausystem/features/loader/Loader.java“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-04-30 14:20:37 +02:00
yoyosource
4dafaab5d9 Update TNTSimulator.edit to better reflect interactability
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-30 12:39:11 +02:00
yoyosource
c3838138b4 Fix DesignEndStone
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-29 14:19:05 +02:00
yoyosource
a767a942fb Add DesignEndStone or DesignEndStoneCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add Line for BauScoreboard to show XRay and TechHider

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-29 11:49:27 +02:00
yoyosource
b494f0bf3a Hotfix Tracer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-24 16:24:31 +02:00
d625260fbe Merge branch 'master' into psilab
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-04-21 19:53:27 +02:00
5019f79b67 Merge branch 'master' into SkullCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-04-21 18:49:37 +02:00
PsiRobot
740d3cfb95 Fix SkullCommand for Bedrock
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-04-21 16:45:24 +00:00
yoyosource
37b76eff30 Add ShowModeParameterType.TICKS_SINCE_START
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-19 18:08:36 +02:00
yoyosource
7be2934e89 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-04-19 13:38:57 +02:00
yoyosource
3786f1e2bb Add sand shield printing tracking
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-19 13:38:00 +02:00
da0a53d636 Merge pull request 'Added new Buttons to Loader' (#171) from Button-Fix into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #171
Reviewed-by: Lixfel <lixfel@steamwar.de>
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2023-04-18 13:06:33 +02:00
377bcb92fb Generalized LoaderButton assignment
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-04-18 11:55:30 +02:00
ad4a054a63 Added new Buttons to Loader
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Detonator not nescessary since detection works differently
2023-04-18 11:46:58 +02:00
yoyosource
f991992528 Fix stoplag for ShieldPrinting.apply
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-16 17:39:51 +02:00
yoyosource
a15e5aaf50 Remove some memory
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-16 17:07:40 +02:00
yoyosource
61895377d1 Hotfix RegionedBossbar
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-16 16:56:05 +02:00
yoyosource
48b2a87c96 Fix ShieldPrinting
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-16 16:53:58 +02:00
yoyosource
e9d7c8211f Add ShieldPrinting
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-16 12:11:43 +02:00
yoyosource
3f5f4d7b80 Remove tnt flicker
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-16 11:26:09 +02:00
yoyosource
3c1275393f Hotfix Memory Leak
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-14 18:45:00 +02:00
yoyosource
e60ae56b67 Fix TPSLimit 0
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-14 18:43:59 +02:00
yoyosource
cfd625c6f0 Remove sout
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-13 19:52:56 +02:00
yoyosource
b8a27294fc Possibly fix ScriptExecutor
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-04-04 18:33:36 +02:00
PsiRobot
3f4f237d63 Fixed Issue #110 Loader bugt bei Strings
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-03-23 22:27:51 +00:00
yoyosource
36532ccd5d Fix divide by Zero
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-19 14:24:42 +01:00
yoyosource
66b601bbfd Fix SIOOBE for Substring
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-19 14:22:43 +01:00
yoyosource
e2a2344c89 Add DragonEggCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-19 14:19:28 +01:00
yoyosource
d6c9e8f827 Hotfix Xray
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-19 14:14:08 +01:00
yoyosource
fa906f7f4f Hotfix Xray
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-19 14:11:09 +01:00
a916b44a21 Merge pull request 'Add CuboidColorization filter option' (#167) from KillcheckerImprovements into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #167
2023-03-15 21:13:53 +01:00
7ea2ef694e Merge branch 'master' into KillcheckerImprovements
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-03-15 21:10:11 +01:00
yoyosource
0061bf7707 Add another help message
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-15 21:05:33 +01:00
yoyosource
ca730f7b8f Fix NPE of KillcheckerVisualizer.hide
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-15 20:59:34 +01:00
yoyosource
b902fffb76 Move visualization outside of build area
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-15 18:36:36 +01:00
yoyosource
b75d7c278a Finalize Killchecker and include BauSystem Bossbar API for better Bossbar usage
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-15 18:09:13 +01:00
yoyosource
ca338699fa Hotfix If
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-14 18:23:52 +01:00
yoyosource
8e133f0832 Probable fix for SelfJoin Event
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-13 20:58:53 +01:00
yoyosource
0e17679fab Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-03-12 21:05:03 +01:00
yoyosource
69b31483f4 Fix -builddestroyonly Trace option
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-12 21:04:56 +01:00
519c832c9d Hotfix NMSWrapper19
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-03-11 17:04:22 +01:00
yoyosource
e7d5cee75a Hotfix NPE
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-09 21:20:52 +01:00
yoyosource
3e3415e9ca Update some visuals, still needs to be multilingualed
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-08 21:56:25 +01:00
yoyosource
4b3b8691b5 Finalize everything
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add Cuboid for killchecker

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-08 21:02:32 +01:00
yoyosource
22b3da59e8 Update Killchecker
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-08 19:04:54 +01:00
yoyosource
d4727d5ed9 Add CuboidColorization filter option
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-08 07:43:22 +01:00
yoyosource
106a1a8fb0 Hotfix TNTElement alignment
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Author: PSIRobot

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-06 21:17:42 +01:00
yoyosource
ae1e10ecc6 Remove unused code
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-05 11:07:50 +01:00
yoyosource
43f1ecc985 Revert "Hotfix everything that does not work"
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
This reverts commit 4cfd7402a4.
2023-03-03 17:10:45 +01:00
yoyosource
4cfd7402a4 Hotfix everything that does not work
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-03 17:04:21 +01:00
yoyosource
91255be757 Hotfix NoClipCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-03 16:34:40 +01:00
yoyosource
b6730eca0e Hotfix NoClipCommand
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-03-03 16:31:13 +01:00
2d8b9defaa Merge pull request 'Add 1.19.3 support' (#149) from 1.19.3 into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #149
Reviewed-by: Lixfel <lixfel@steamwar.de>
2023-03-03 16:20:31 +01:00
yoyosource
9e31f05d83 Add /sl as alias for FreezeCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-28 16:51:17 +01:00
yoyosource
de067103cb Hotfix AttributeRemoveCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-27 20:27:30 +01:00
yoyosource
d9385691e4 Hotfix clear simulator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-25 15:16:03 +01:00
yoyosource
5d1fb567ef Fix alignment the second time
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-25 15:12:49 +01:00
yoyosource
1086808cf0 Fix some NPE's
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-25 14:29:26 +01:00
yoyosource
2dd5e16bda Fix alignment
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-25 13:58:42 +01:00
yoyosource
599d717602 Add darkness skins back
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-25 13:27:33 +01:00
ce41f817da Merge pull request 'Remove yellow color replace' (#150) from StreamlineColorReplace into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #150
2023-02-25 13:11:29 +01:00
yoyosource
dbde27d66b Add 1.19.3 support
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-25 09:55:49 +01:00
yoyosource
d3609dd2a0 Remove yellow color replace
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 22:13:34 +01:00
yoyosource
20e30627dd Remove sout
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 21:59:40 +01:00
yoyosource
fb920902f0 Hotfix the last one
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 21:59:28 +01:00
yoyosource
137bf5eeca Hotfix some more stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 21:40:43 +01:00
yoyosource
fce5b9c493 Hotfix some more stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 21:39:00 +01:00
yoyosource
7ab25a6ddb Hotfix TNTSimulator other sim stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 21:09:14 +01:00
yoyosource
73bdfe28f1 Hotfix TNTSimulator.remove
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 20:54:29 +01:00
ce8b4d8fa9 Merge pull request 'REntity' (#148) from REntity into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #148
Reviewed-by: Lixfel <lixfel@steamwar.de>
2023-02-24 20:31:33 +01:00
yoyosource
162e3f16b7 Fix TNTSimulatorGui
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 20:30:04 +01:00
yoyosource
070a58651b Last Hotfixes
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 20:25:27 +01:00
yoyosource
f149ccce93 First buildable version
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 18:03:57 +01:00
yoyosource
0f69d4acb1 Update some code
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 17:50:53 +01:00
yoyosource
a8b3410749 Update simulator internals to use REntityServer
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-24 09:36:03 +01:00
yoyosource
cc2668a49b Remove unused RayTraceUtils
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-23 18:13:53 +01:00
yoyosource
81df1e02be Fix NMSWrapper imports
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-23 18:12:31 +01:00
yoyosource
74d8f008a3 Remove entity creation methods
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-23 18:09:19 +01:00
yoyosource
fe82e38a0d Add Detonator click back
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-23 17:58:29 +01:00
yoyosource
bb5312ee92 Add TraceTNTClickListener back
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-23 17:54:14 +01:00
yoyosource
75b822ece1 Fix KillcheckerVisualizer
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-23 17:40:57 +01:00
yoyosource
c2ab476c22 Update Detonator
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Update some part or simulator

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-23 15:54:46 +01:00
yoyosource
9bf04d3093 Add REntity RayTrace
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-23 11:26:04 +01:00
yoyosource
da431752b3 Merge branch 'master' into REntity
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-02-23 10:54:03 +01:00
yoyosource
b2ddc1ef2d Add KillcheckerCommand and KillcheckerVisualizer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-22 18:52:30 +01:00
BuildTools
2f66580e60 sollte jetzt klappen, ich werde versuchen mehr in die devlabs rein zuschauen
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-02-18 13:41:02 +01:00
BuildTools
5d55784f79 sollte jetzt auch mit waterlogged blocks gehen
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-02-16 21:53:52 +01:00
yoyosource
1352b5eab7 Update stome stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-10 16:10:47 +01:00
BuildTools
55a63dacaf es kann sein das da was fehlt, da ich mit den commits durcheinander gekommen bin
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-02-06 21:38:12 +01:00
BuildTools
4bae6b8d43 finally working waterremover when doing /tb idk
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-02-06 09:37:34 +01:00
yoyosource
11593c6aa8 Fix some trace errors
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-05 12:24:34 +01:00
yoyosource
cb474ea75b Fix some trace errors
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-04 21:52:22 +01:00
yoyosource
b4f4a2fe13 Update tracer to REntityServer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Update warp to REntityServer

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-04 14:31:24 +01:00
BuildTools
5c8b70fc12 added check if it actually is a tb
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-02-04 12:15:45 +01:00
BuildTools
d2a3483d31 added check if it actually is a tb 2023-02-04 12:12:10 +01:00
BuildTools
cdc0dbea86 fixed mistake 2
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-02-04 11:56:52 +01:00
BuildTools
3d8a6e95fa fixed mistake
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-02-04 11:54:37 +01:00
BuildTools
8a425cc435 Prevent Water from being pasted using /tb <schem>
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-02-04 11:26:50 +01:00
yoyosource
41391df882 Update tracer to REntityServer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-02-03 19:20:34 +01:00
MoBrot
50d4e7ef2f NoSchemSharing with Testblock Fix.
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-01-18 16:35:33 +01:00
505 geänderte Dateien mit 22643 neuen und 22103 gelöschten Zeilen

10
.gitignore vendored
Datei anzeigen

@ -1,5 +1,7 @@
# Package Files
# Build files
*.jar
**/bin
**/build
# Gradle
.gradle
@ -10,6 +12,10 @@ steamwar.properties
# IntelliJ IDEA
.idea
*.iml
plugin.yml
# Other
lib
lib
#linkage
LinkageUtils.java

Datei anzeigen

@ -27,8 +27,8 @@ version '1.0'
compileJava.options.encoding = 'UTF-8'
sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceCompatibility = 17
targetCompatibility = 17
sourceSets {
main {

Datei anzeigen

@ -1,82 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.detonator.AbstractDetonatorEntity;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class DetonatorEntity15 extends EntityFallingBlock implements AbstractDetonatorEntity {
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
private final Vector position;
private int references = 0;
public DetonatorEntity15(World world, Vector position) {
super(((CraftWorld) world).getHandle(), position.getX(), position.getY(), position.getZ(), Blocks.RED_STAINED_GLASS.getBlockData());
this.position = position;
this.h(true);
this.setNoGravity(true);
this.ticksLived = -12000;
}
@Override
public void display(Player player) {
if (references++ > 0)
return;
PacketPlayOutSpawnEntity packetPlayOutSpawnEntity = new PacketPlayOutSpawnEntity(getId(), getUniqueID(), position.getX(), position.getY(), position.getZ(), 0, 0, EntityTypes.FALLING_BLOCK, Block.getCombinedId(Blocks.RED_STAINED_GLASS.getBlockData()), ZERO);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
playerConnection.sendPacket(packetPlayOutSpawnEntity);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(getId(), datawatcher, true);
playerConnection.sendPacket(packetPlayOutEntityMetadata);
}
@Override
public boolean hide(Player player, boolean force) {
if (!force && --references > 0)
return false;
sendDestroy(player);
die();
return true;
}
private void sendDestroy(Player player) {
PacketPlayOutEntityDestroy packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(getId());
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutEntityDestroy);
}
@Override
public void sendEntity(Player player) {
display(player);
}
@Override
public void sendEntityDestroy(Player player) {
hide(player, false);
}
}

Datei anzeigen

@ -1,64 +0,0 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2020 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.simulator.AbstractSimulatorEntity;
import de.steamwar.bausystem.shared.BaseEntity15;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class SimulatorEntity15 extends BaseEntity15 implements AbstractSimulatorEntity {
private boolean printed = false;
public SimulatorEntity15(World world, Vector position, boolean highlight) {
super(world, position, highlight ? Material.WHITE_STAINED_GLASS : Material.TNT);
this.setNoGravity(true);
this.ticksLived = -12000;
}
@Override
public void display(Player player) {
if (printed) return;
printed = true;
sendEntity(player);
}
@Override
public void setPosition(Vector position) {
this.position = position;
setPosition(position.getX(), position.getY(), position.getZ());
}
@Override
public boolean hide(Player player, boolean force) {
if (!printed) return false;
printed = false;
sendEntityDestroy(player);
die();
return true;
}
}

Datei anzeigen

@ -1,73 +0,0 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2020 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.tracer.AbstractTraceEntity;
import de.steamwar.bausystem.shared.BaseEntity15;
import de.steamwar.bausystem.shared.ReferenceCounter;
import net.minecraft.server.v1_15_R1.ChatComponentText;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class TraceEntity15 extends BaseEntity15 implements AbstractTraceEntity {
private boolean exploded = false;
private ReferenceCounter referenceCounter = new ReferenceCounter();
public TraceEntity15(World world, Vector position, boolean tnt) {
super(world, position, tnt ? Material.TNT : Material.WHITE_STAINED_GLASS);
this.setNoGravity(true);
this.ticksLived = -12000;
}
@Override
public void display(Player player, boolean exploded, int ticks) {
if (ticks != -1) {
this.setCustomNameVisible(true);
this.setCustomName(new ChatComponentText(ticks + ""));
}
if (!this.exploded && exploded) {
this.setCustomNameVisible(true);
this.setCustomName(new ChatComponentText("Bumm"));
this.exploded = true;
if (referenceCounter.increment() > 0) {
sendEntityDestroy(player);
}
} else if (referenceCounter.increment() > 0) {
return;
}
sendEntity(player);
}
@Override
public boolean hide(Player player, boolean force) {
if (!force && referenceCounter.decrement() > 0) {
return false;
}
sendEntityDestroy(player);
die();
return true;
}
}

Datei anzeigen

@ -1,80 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.warp.AbstractWarpEntity;
import de.steamwar.bausystem.shared.BaseArmorStand15;
import net.minecraft.server.v1_15_R1.ChatComponentText;
import net.minecraft.server.v1_15_R1.PacketPlayOutEntityMetadata;
import net.minecraft.server.v1_15_R1.PacketPlayOutEntityTeleport;
import net.minecraft.server.v1_15_R1.PlayerConnection;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class WarpEntity15 extends BaseArmorStand15 implements AbstractWarpEntity {
public WarpEntity15(World world, Vector position, String name) {
super(world, position);
setInvisible(true);
setSmall(true);
setName(name);
this.setNoGravity(true);
this.ticksLived = -12000;
}
@Override
public void display(Player player) {
sendEntity(player);
}
@Override
public void setName(String name) {
this.setCustomNameVisible(true);
this.setCustomName(new ChatComponentText(name));
}
@Override
public boolean hide(Player player) {
sendEntityDestroy(player);
die();
return true;
}
@Override
public void sendMetaData(Player player) {
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(getId(), datawatcher, true);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
playerConnection.sendPacket(packetPlayOutEntityMetadata);
}
@Override
public void teleport(Player player, Vector position) {
setPositionRaw(position.getX(), position.getY(), position.getZ());
PacketPlayOutEntityTeleport packetPlayOutEntityTeleport = new PacketPlayOutEntityTeleport(this);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutEntityTeleport);
}
@Override
public Vector getPosition() {
return new Vector(locX(), locY(), locZ());
}
}

Datei anzeigen

@ -1,39 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.tracer.record;
import net.minecraft.server.v1_15_R1.EntityTNTPrimed;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
import org.bukkit.entity.TNTPrimed;
import java.util.stream.Stream;
public class TNTPrimedIterator15 implements TNTPrimedIterator {
private static final CraftWorld WORLD = (CraftWorld) Bukkit.getWorlds().get(0);
@Override
public Stream<TNTPrimed> iterator() {
return WORLD.getHandle().entitiesById.values().stream()
.filter(EntityTNTPrimed.class::isInstance)
.map(entity -> (TNTPrimed) entity.getBukkitEntity());
}
}

Datei anzeigen

@ -1,56 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.shared;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class BaseArmorStand15 extends EntityArmorStand implements AbstractEntity {
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
protected Vector position;
public BaseArmorStand15(World world, Vector position) {
super(((CraftWorld) world).getHandle(), position.getX(), position.getY(), position.getZ());
this.position = position;
setNoGravity(true);
ticksLived = -12000;
}
public void sendEntity(Player player) {
PacketPlayOutSpawnEntity packetPlayOutSpawnEntity = new PacketPlayOutSpawnEntity(getId(), getUniqueID(), position.getX(), position.getY(), position.getZ(), 0, 0, EntityTypes.ARMOR_STAND, 0, ZERO);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
playerConnection.sendPacket(packetPlayOutSpawnEntity);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(getId(), datawatcher, true);
playerConnection.sendPacket(packetPlayOutEntityMetadata);
}
public void sendEntityDestroy(Player player) {
PacketPlayOutEntityDestroy packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(getId());
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutEntityDestroy);
}
}

Datei anzeigen

@ -1,60 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.shared;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_15_R1.block.data.CraftBlockData;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class BaseEntity15 extends EntityFallingBlock implements AbstractEntity {
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
private final IBlockData iBlockData;
protected Vector position;
public BaseEntity15(World world, Vector position, Material blockType) {
super(((CraftWorld) world).getHandle(), position.getX(), position.getY(), position.getZ(), ((CraftBlockData) blockType.createBlockData()).getState());
this.iBlockData = ((CraftBlockData) blockType.createBlockData()).getState();
this.position = position;
this.setNoGravity(true);
this.ticksLived = -12000;
}
public void sendEntity(Player player) {
PacketPlayOutSpawnEntity packetPlayOutSpawnEntity = new PacketPlayOutSpawnEntity(getId(), getUniqueID(), position.getX(), position.getY(), position.getZ(), 0, 0, EntityTypes.FALLING_BLOCK, Block.getCombinedId(iBlockData), ZERO);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().playerConnection;
playerConnection.sendPacket(packetPlayOutSpawnEntity);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(getId(), datawatcher, true);
playerConnection.sendPacket(packetPlayOutEntityMetadata);
}
public void sendEntityDestroy(Player player) {
PacketPlayOutEntityDestroy packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(getId());
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutEntityDestroy);
}
}

Datei anzeigen

@ -37,14 +37,11 @@ import com.sk89q.worldedit.function.operation.Operations;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.math.transform.AffineTransform;
import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.regions.selector.CuboidRegionSelector;
import com.sk89q.worldedit.session.ClipboardHolder;
import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockTypes;
import de.steamwar.bausystem.region.Color;
import de.steamwar.bausystem.region.PasteOptions;
import de.steamwar.bausystem.region.Point;
import org.bukkit.Bukkit;
import org.bukkit.Material;
@ -60,7 +57,12 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.BiPredicate;
import java.util.logging.Level;
public class FlatteningWrapper15 implements FlatteningWrapper {
@ -104,61 +106,55 @@ public class FlatteningWrapper15 implements FlatteningWrapper {
private static final WorldEditPlugin WORLDEDIT_PLUGIN = Objects.requireNonNull((WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit"));
private static final World BUKKITWORLD = new BukkitWorld(Bukkit.getWorlds().get(0));
@Override
public void setSelection(Player p, Point minPoint, Point maxPoint) {
WORLDEDIT_PLUGIN.getSession(p).setRegionSelector(BUKKITWORLD, new CuboidRegionSelector(BUKKITWORLD, toBlockVector3(minPoint), toBlockVector3(maxPoint)));
}
private static final BaseBlock WOOL = Objects.requireNonNull(BlockTypes.PINK_WOOL).getDefaultState().toBaseBlock();
private static final BaseBlock WOOL2 = Objects.requireNonNull(BlockTypes.YELLOW_WOOL).getDefaultState().toBaseBlock();
private static final BaseBlock CLAY = Objects.requireNonNull(BlockTypes.PINK_TERRACOTTA).getDefaultState().toBaseBlock();
private static final BaseBlock CLAY2 = Objects.requireNonNull(BlockTypes.YELLOW_TERRACOTTA).getDefaultState().toBaseBlock();
private static final BaseBlock GLAZED = Objects.requireNonNull(BlockTypes.PINK_GLAZED_TERRACOTTA).getDefaultState().toBaseBlock();
private static final BaseBlock GLASS = Objects.requireNonNull(BlockTypes.PINK_STAINED_GLASS).getDefaultState().toBaseBlock();
private static final BaseBlock GLASS2 = Objects.requireNonNull(BlockTypes.YELLOW_STAINED_GLASS).getDefaultState().toBaseBlock();
private static final BaseBlock GLASS_PANE = Objects.requireNonNull(BlockTypes.PINK_STAINED_GLASS_PANE).getDefaultState().toBaseBlock();
private static final BaseBlock GLASS_PANE2 = Objects.requireNonNull(BlockTypes.YELLOW_STAINED_GLASS_PANE).getDefaultState().toBaseBlock();
private static final BaseBlock CONCRETE = Objects.requireNonNull(BlockTypes.PINK_CONCRETE).getDefaultState().toBaseBlock();
private static final BaseBlock CONCRETE2 = Objects.requireNonNull(BlockTypes.YELLOW_CONCRETE).getDefaultState().toBaseBlock();
private static final BaseBlock CONCRETE_POWDER = Objects.requireNonNull(BlockTypes.PINK_CONCRETE_POWDER).getDefaultState().toBaseBlock();
private static final BaseBlock CARPET = Objects.requireNonNull(BlockTypes.PINK_CARPET).getDefaultState().toBaseBlock();
@Override
public EditSession paste(File file, Point pastePoint, PasteOptions pasteOptions) {
public Clipboard loadSchematic(File file) {
Clipboard clipboard;
try (ClipboardReader reader = Objects.requireNonNull(ClipboardFormats.findByFile(file)).getReader(new FileInputStream(file))) {
clipboard = reader.read();
} catch (NullPointerException | IOException e) {
throw new SecurityException("Bausystem schematic not found", e);
}
EditSession editSession = paste(clipboard, pastePoint, pasteOptions);
return editSession;
return clipboard;
}
@Override
public EditSession paste(Clipboard clipboard, Point pastePoint, PasteOptions pasteOptions) {
public EditSession paste(PasteBuilder pasteBuilder) {
try (EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(new BukkitWorld(Bukkit.getWorlds().get(0)), -1)) {
if (pasteOptions.getColor() != Color.YELLOW) {
changeColor(clipboard, pasteOptions.getColor());
}
if (pasteOptions.isOnlyColors()) {
Set<String> blocks = new HashSet<>();
blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_wool");
blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_terracotta");
blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_glazed_terracotta");
blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_stained_glass");
blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_stained_glass_pane");
blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_concrete");
blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_concrete_powder");
blocks.add("minecraft:" + pasteOptions.getColor().name().toLowerCase() + "_carpet");
Clipboard clipboard = pasteBuilder.getClipboard();
if (!pasteBuilder.getMappers().isEmpty()) {
BlockVector3 minimum = clipboard.getRegion().getMinimumPoint();
for (int x = 0; x < clipboard.getDimensions().getX(); x++) {
for (int y = 0; y < clipboard.getDimensions().getY(); y++) {
for (int z = 0; z < clipboard.getDimensions().getZ(); z++) {
BlockVector3 pos = minimum.add(x, y, z);
pasteBuilder.getMappers().forEach(mapper -> mapper.accept(clipboard, pos));
}
}
}
}
AtomicReference<BlockVector3> pastePoint = new AtomicReference<>();
if (!pasteBuilder.getPredicates().isEmpty()) {
e.setMask(new Mask() {
@Override
public boolean test(BlockVector3 blockVector3) {
BaseBlock block = clipboard.getFullBlock(blockVector3);
String blockName = block.toString().toLowerCase();
return blocks.contains(blockName);
BaseBlock block = clipboard.getFullBlock(blockVector3.subtract(pastePoint.get()).add(clipboard.getRegion().getMinimumPoint()));
String blockName = block.getBlockType().toString().toLowerCase();
for (BiPredicate<BaseBlock, String> predicate : pasteBuilder.getPredicates()) {
if (!predicate.test(block, blockName)) return false;
}
return true;
}
public Mask copy() {
return this;
}
@Nullable
@ -166,31 +162,28 @@ public class FlatteningWrapper15 implements FlatteningWrapper {
public Mask2D toMask2D() {
return null;
}
public Mask copy() {
return this;
}
});
}
ClipboardHolder ch = new ClipboardHolder(clipboard);
BlockVector3 dimensions = clipboard.getDimensions();
BlockVector3 v = BlockVector3.at(pastePoint.getX(), pastePoint.getY(), pastePoint.getZ());
BlockVector3 v = BlockVector3.at(pasteBuilder.getPastPoint().getX(), pasteBuilder.getPastPoint().getY(), pasteBuilder.getPastPoint().getZ());
BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
if (pasteOptions.isRotate()) {
if (pasteBuilder.isRotate()) {
ch.setTransform(new AffineTransform().rotateY(180));
v = v.add(dimensions.getX() / 2, 0, dimensions.getZ() / 2).subtract(offset.multiply(-1, 1, -1)).subtract(0, 0, 1);
} else {
v = v.subtract(dimensions.getX() / 2, 0, dimensions.getZ() / 2).subtract(offset);
}
pastePoint.set(v);
if (pasteOptions.isReset()) {
e.setBlocks((Region) new CuboidRegion(toBlockVector3(pasteOptions.getMinPoint()), toBlockVector3(pasteOptions.getMaxPoint())), Objects.requireNonNull(BlockTypes.AIR).getDefaultState().toBaseBlock());
if (pasteOptions.getWaterLevel() != 0) {
e.setBlocks((Region) new CuboidRegion(toBlockVector3(pasteOptions.getMinPoint()), toBlockVector3(pasteOptions.getMaxPoint()).withY(pasteOptions.getWaterLevel())), Objects.requireNonNull(BlockTypes.WATER).getDefaultState().toBaseBlock());
if (pasteBuilder.isReset()) {
e.setBlocks(new CuboidRegion(toBlockVector3(pasteBuilder.getMinPoint()), toBlockVector3(pasteBuilder.getMaxPoint())), Objects.requireNonNull(BlockTypes.AIR).getDefaultState().toBaseBlock());
if (pasteBuilder.getWaterLevel() != 0) {
e.setBlocks(new CuboidRegion(toBlockVector3(pasteBuilder.getMinPoint()), toBlockVector3(pasteBuilder.getMaxPoint()).withY(pasteBuilder.getWaterLevel())), Objects.requireNonNull(BlockTypes.WATER).getDefaultState().toBaseBlock());
}
}
Operations.completeBlindly(ch.createPaste(e).to(v).ignoreAirBlocks(pasteOptions.isIgnoreAir()).build());
Operations.completeBlindly(ch.createPaste(e).to(v).ignoreAirBlocks(pasteBuilder.isIgnoreAir()).build());
return e;
} catch (WorldEditException e) {
throw new SecurityException(e.getMessage(), e);
@ -198,56 +191,7 @@ public class FlatteningWrapper15 implements FlatteningWrapper {
}
@Override
public void changeColor(Clipboard clipboard, Color color) throws WorldEditException {
BlockVector3 minimum = clipboard.getRegion().getMinimumPoint();
BaseBlock wool = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_wool")).getDefaultState().toBaseBlock();
BaseBlock clay = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_terracotta")).getDefaultState().toBaseBlock();
BaseBlock glazed = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_glazed_terracotta")).getDefaultState().toBaseBlock();
BaseBlock glass = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_stained_glass")).getDefaultState().toBaseBlock();
BaseBlock glassPane = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_stained_glass_pane")).getDefaultState().toBaseBlock();
BaseBlock carpet = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_carpet")).getDefaultState().toBaseBlock();
BaseBlock concrete = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_concrete")).getDefaultState().toBaseBlock();
BaseBlock concretePowder = Objects.requireNonNull(BlockTypes.get(color.name().toLowerCase() + "_concrete_powder")).getDefaultState().toBaseBlock();
for (int x = 0; x < clipboard.getDimensions().getX(); x++) {
for (int y = 0; y < clipboard.getDimensions().getY(); y++) {
for (int z = 0; z < clipboard.getDimensions().getZ(); z++) {
BlockVector3 pos = minimum.add(x, y, z);
BaseBlock block = clipboard.getFullBlock(pos);
if (block.equals(WOOL)) {
clipboard.setBlock(pos, wool);
} else if (block.equals(WOOL2)) {
clipboard.setBlock(pos, wool);
} else if (block.equals(CLAY)) {
clipboard.setBlock(pos, clay);
} else if (block.equals(CLAY2)) {
clipboard.setBlock(pos, clay);
} else if (block.equals(GLAZED)) {
clipboard.setBlock(pos, glazed);
} else if (block.equals(GLASS)) {
clipboard.setBlock(pos, glass);
} else if (block.equals(GLASS2)) {
clipboard.setBlock(pos, glass);
} else if (block.equals(GLASS_PANE)) {
clipboard.setBlock(pos, glassPane);
} else if (block.equals(GLASS_PANE2)) {
clipboard.setBlock(pos, glassPane);
} else if (block.equals(CARPET)) {
clipboard.setBlock(pos, carpet);
} else if (block.equals(CONCRETE)) {
clipboard.setBlock(pos, concrete);
} else if (block.equals(CONCRETE2)) {
clipboard.setBlock(pos, concrete);
} else if (block.equals(CONCRETE_POWDER)) {
clipboard.setBlock(pos, concretePowder);
}
}
}
}
}
@Override
public boolean backup(Point minPoint, Point maxPoint, File file) {
public Clipboard copy(Point minPoint, Point maxPoint, Point copyPoint) {
BukkitWorld bukkitWorld = new BukkitWorld(Bukkit.getWorlds().get(0));
CuboidRegion region = new CuboidRegion(bukkitWorld, toBlockVector3(minPoint), toBlockVector3(maxPoint));
BlockArrayClipboard clipboard = new BlockArrayClipboard(region);
@ -260,12 +204,21 @@ public class FlatteningWrapper15 implements FlatteningWrapper {
copy.setCopyingBiomes(false);
Operations.complete(copy);
clipboard.setOrigin(toBlockVector3(copyPoint));
return clipboard;
} catch (WorldEditException e) {
Bukkit.getLogger().log(Level.SEVERE, e.getMessage(), e);
return null;
}
}
try (ClipboardWriter writer = BuiltInClipboardFormat.SPONGE_SCHEMATIC.getWriter(new FileOutputStream(file))) {
writer.write(clipboard);
}
@Override
public boolean backup(Point minPoint, Point maxPoint, File file) {
Clipboard clipboard = copy(minPoint, maxPoint, minPoint);
try (ClipboardWriter writer = BuiltInClipboardFormat.SPONGE_SCHEMATIC.getWriter(new FileOutputStream(file))) {
writer.write(clipboard);
return true;
} catch (WorldEditException | IOException e) {
} catch (IOException e) {
Bukkit.getLogger().log(Level.SEVERE, e.getMessage(), e);
return false;
}
@ -287,19 +240,4 @@ public class FlatteningWrapper15 implements FlatteningWrapper {
return ((Waterlogged) data).isWaterlogged();
}
@Override
public Material getTraceShowMaterial() {
return Material.LIME_CONCRETE;
}
@Override
public Material getTraceHideMaterial() {
return Material.RED_CONCRETE;
}
@Override
public Material getTraceXZMaterial() {
return Material.QUARTZ_SLAB;
}
}

Datei anzeigen

@ -20,20 +20,11 @@
package de.steamwar.bausystem.utils;
import com.comphenix.tinyprotocol.Reflection;
import de.steamwar.bausystem.entities.DetonatorEntity15;
import de.steamwar.bausystem.entities.SimulatorEntity15;
import de.steamwar.bausystem.entities.TraceEntity15;
import de.steamwar.bausystem.features.detonator.AbstractDetonatorEntity;
import de.steamwar.bausystem.features.util.NoClipCommand;
import de.steamwar.bausystem.features.simulator.AbstractSimulatorEntity;
import de.steamwar.bausystem.features.tracer.AbstractTraceEntity;
import de.steamwar.bausystem.features.warp.AbstractWarpEntity;
import de.steamwar.bausystem.entities.WarpEntity15;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
@ -41,7 +32,6 @@ import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.List;
@ -73,38 +63,6 @@ public class NMSWrapper15 implements NMSWrapper {
player.updateInventory();
}
@Override
public void init(LongSupplier longSupplier) {
SystemUtils.a = () -> System.nanoTime() + longSupplier.getAsLong();
}
private static final List<Packet<?>> packets = new ArrayList<>();
private static final Vec3D noMotion = new Vec3D(0, 0, 0);
@Override
public void createTickCache(World world) {
packets.clear();
world.getEntities().stream().filter(entity -> !(entity instanceof Player)).forEach(entity -> {
packets.add(new PacketPlayOutEntityVelocity(entity.getEntityId(), noMotion));
packets.add(new PacketPlayOutEntityTeleport(((CraftEntity) entity).getHandle()));
if (entity instanceof TNTPrimed) {
net.minecraft.server.v1_15_R1.Entity serverEntity = ((CraftEntity) entity).getHandle();
packets.add(new PacketPlayOutEntityMetadata(serverEntity.getId(), serverEntity.getDataWatcher(), true));
}
});
}
@Override
public void sendTickPackets() {
Bukkit.getOnlinePlayers().forEach(player -> {
PlayerConnection connection = ((CraftPlayer) player).getHandle().playerConnection;
for (Packet<?> p : packets) {
connection.sendPacket(p);
}
});
}
private static final Reflection.FieldAccessor<Integer> gameStateChangeReason = Reflection.getField(NoClipCommand.gameStateChange, int.class, 0);
@Override
@ -162,26 +120,6 @@ public class NMSWrapper15 implements NMSWrapper {
return invalid;
}
@Override
public AbstractWarpEntity createWarp(World world, Vector position, String name) {
return new WarpEntity15(world, position, name);
}
@Override
public AbstractSimulatorEntity createSimulator(World world, Vector tntPosition, boolean highlight) {
return new SimulatorEntity15(world, tntPosition, highlight);
}
@Override
public AbstractDetonatorEntity constructDetonator(World world, Vector position) {
return new DetonatorEntity15(world, position);
}
@Override
public AbstractTraceEntity createTrace(World world, Vector tntPosition, boolean tnt) {
return new TraceEntity15(world, tntPosition, tnt);
}
private final Class<?> explosionPacket = Reflection.getClass("{nms.network.protocol.game}.PacketPlayOutExplosion");
private final Reflection.FieldAccessor<Double> a = Reflection.getField(explosionPacket, double.class, 0);
private final Reflection.FieldAccessor<Double> b = Reflection.getField(explosionPacket, double.class, 1);

Datei anzeigen

@ -0,0 +1,43 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2023 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.utils;
import org.bukkit.Material;
public class PlaceItemWrapper15 implements PlaceItemWrapper {
public PlaceItemWrapper15() {
for (Material material : Material.values()) {
if (!material.isBlock()) continue;
if (material.isLegacy()) continue;
String nonWall = material.name().replace("_WALL_", "").replace("WALL_", "").replace("_WALL", "");
try {
Material nonWallMaterial = Material.valueOf(nonWall);
if (nonWallMaterial != material && nonWallMaterial.isItem() && !nonWallMaterial.isBlock()) {
BLOCK_MATERIAL_TO_WALL_BLOCK_MATERIAL.put(nonWallMaterial, material);
}
} catch (Exception e) {
// Ignore
}
}
ITEM_MATERIAL_TO_BLOCK_MATERIAL.put(Material.REDSTONE, Material.REDSTONE_WIRE);
}
}

Datei anzeigen

@ -19,9 +19,12 @@
package de.steamwar.bausystem.utils;
import com.comphenix.tinyprotocol.Reflection;
import de.steamwar.bausystem.utils.PlayerMovementWrapper;
import net.minecraft.server.v1_15_R1.EntityPlayer;
import net.minecraft.server.v1_15_R1.PacketPlayInFlying;
import net.minecraft.server.v1_15_R1.PacketPlayOutEntity;
import net.minecraft.server.v1_15_R1.PacketPlayOutEntityTeleport;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
@ -37,4 +40,20 @@ public class PlayerMovementWrapper15 implements PlayerMovementWrapper {
entityPlayer.setLocation(packetPlayInFlying.a(0.0), packetPlayInFlying.b(0.0), packetPlayInFlying.c(0.0), packetPlayInFlying.a(0F), packetPlayInFlying.b(0F));
}
}
@Override
public Object convertToOut(Player player, Object object) {
PacketPlayInFlying packetPlayInFlying = ((PacketPlayInFlying) object);
Object packet = Reflection.newInstance(teleportPacket);
teleportEntity.set(packet, player.getEntityId());
teleportPosition.set(packet, packetPlayInFlying.a(0.0), packetPlayInFlying.b(0.0), packetPlayInFlying.c(0.0));
if (Float.isNaN(packetPlayInFlying.a(Float.NaN))) {
teleportYaw.set(packet, rotToByte(player.getLocation().getYaw()));
teleportPitch.set(packet, rotToByte(player.getLocation().getPitch()));
} else {
teleportYaw.set(packet, rotToByte(packetPlayInFlying.a(0.0F)));
teleportPitch.set(packet, rotToByte(packetPlayInFlying.b(0.0F)));
}
return packet;
}
}

Datei anzeigen

@ -1,33 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.utils;
import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import de.steamwar.bausystem.features.util.NoClipCommand;
public class ProtocolWrapper15 implements ProtocolWrapper {
private static final Reflection.ConstructorInvoker playerInfoDataConstructor = Reflection.getConstructor(NoClipCommand.playerInfoDataClass, NoClipCommand.playerInfoPacket, GameProfile.class, int.class, NoClipCommand.enumGamemode, NoClipCommand.iChatBaseComponent);
@Override
public Object playerInfoDataConstructor(Object packet, GameProfile profile, Object mode) {
return playerInfoDataConstructor.invoke(packet, profile, 0, mode, null);
}
}

Datei anzeigen

@ -0,0 +1,23 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2023 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.utils;
public class TickListener15 implements TickListener {
}

Datei anzeigen

@ -27,8 +27,8 @@ version '1.0'
compileJava.options.encoding = 'UTF-8'
sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceCompatibility = 17
targetCompatibility = 17
sourceSets {
main {

Datei anzeigen

@ -1,95 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.detonator.AbstractDetonatorEntity;
import net.minecraft.network.protocol.game.PacketPlayOutEntityDestroy;
import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata;
import net.minecraft.network.protocol.game.PacketPlayOutSpawnEntity;
import net.minecraft.server.network.PlayerConnection;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.item.EntityFallingBlock;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.phys.Vec3D;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_18_R2.CraftWorld;
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class DetonatorEntity18 extends EntityFallingBlock implements AbstractDetonatorEntity {
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
private final Vector position;
private int references = 0;
public DetonatorEntity18(World world, Vector position) {
super(((CraftWorld) world).getHandle(), position.getX(), position.getY(), position.getZ(), Blocks.du.n());
this.position = position;
this.h(true);
this.e(true);
this.S = -12000;
}
@Override
public int getId() {
return ae();
}
@Override
public void display(Player player) {
if (references++ > 0)
return;
PacketPlayOutSpawnEntity packetPlayOutSpawnEntity = new PacketPlayOutSpawnEntity(getId(), cm(), position.getX(), position.getY(), position.getZ(), 0, 0, EntityTypes.C, Block.i(Blocks.du.n()), ZERO);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().b;
playerConnection.a(packetPlayOutSpawnEntity);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(getId(), Y, true);
playerConnection.a(packetPlayOutEntityMetadata);
}
@Override
public boolean hide(Player player, boolean force) {
if (!force && --references > 0)
return false;
sendDestroy(player);
ag();
return true;
}
private void sendDestroy(Player player) {
PacketPlayOutEntityDestroy packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(getId());
((CraftPlayer) player).getHandle().b.a(packetPlayOutEntityDestroy);
}
@Override
public void sendEntity(Player player) {
display(player);
}
@Override
public void sendEntityDestroy(Player player) {
hide(player, false);
}
}

Datei anzeigen

@ -1,68 +0,0 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2020 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.simulator.AbstractSimulatorEntity;
import de.steamwar.bausystem.shared.BaseEntity18;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class SimulatorEntity18 extends BaseEntity18 implements AbstractSimulatorEntity {
private boolean printed = false;
public SimulatorEntity18(World world, Vector position, boolean highlight) {
super(world, position, highlight ? Material.WHITE_STAINED_GLASS : Material.TNT);
this.e(true);
this.S = -12000;
}
@Override
public int getId() {
return ae();
}
@Override
public void display(Player player) {
if (printed) return;
printed = true;
sendEntity(player);
}
@Override
public void setPosition(Vector position) {
this.position = position;
e(position.getX(), position.getY(), position.getZ());
}
@Override
public boolean hide(Player player, boolean force) {
if (!printed) return false;
printed = false;
sendEntityDestroy(player);
ag();
return true;
}
}

Datei anzeigen

@ -1,73 +0,0 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2020 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.tracer.AbstractTraceEntity;
import de.steamwar.bausystem.shared.BaseEntity18;
import de.steamwar.bausystem.shared.ReferenceCounter;
import net.minecraft.network.chat.ChatComponentText;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class TraceEntity18 extends BaseEntity18 implements AbstractTraceEntity {
private boolean exploded = false;
private ReferenceCounter referenceCounter = new ReferenceCounter();
public TraceEntity18(World world, Vector position, boolean tnt) {
super(world, position, tnt ? Material.TNT : Material.WHITE_STAINED_GLASS);
this.e(true);
this.S = -12000;
}
@Override
public void display(Player player, boolean exploded, int ticks) {
if (ticks != -1) {
this.n(true);
this.a(new ChatComponentText(ticks + ""));
}
if (!this.exploded && exploded) {
this.n(true);
this.a(new ChatComponentText("Bumm"));
this.exploded = true;
if (referenceCounter.increment() > 0) {
sendEntityDestroy(player);
}
} else if (referenceCounter.increment() > 0) {
return;
}
sendEntity(player);
}
@Override
public boolean hide(Player player, boolean force) {
if (!force && referenceCounter.decrement() > 0) {
return false;
}
sendEntityDestroy(player);
ag();
return true;
}
}

Datei anzeigen

@ -1,80 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.warp.AbstractWarpEntity;
import de.steamwar.bausystem.shared.BaseArmorStand18;
import net.minecraft.network.chat.ChatComponentText;
import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata;
import net.minecraft.network.protocol.game.PacketPlayOutEntityTeleport;
import net.minecraft.server.network.PlayerConnection;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class WarpEntity18 extends BaseArmorStand18 implements AbstractWarpEntity {
public WarpEntity18(World world, Vector position, String name) {
super(world, position);
this.j(true);
this.a(true);
setName(name);
this.e(true);
this.S = -12000;
}
@Override
public void display(Player player) {
sendEntity(player);
}
@Override
public void setName(String name) {
this.n(true);
this.a(new ChatComponentText(name));
}
@Override
public boolean hide(Player player) {
sendEntityDestroy(player);
ag();
return true;
}
@Override
public void sendMetaData(Player player) {
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(ae(), Y, true);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().b;
playerConnection.a(packetPlayOutEntityMetadata);
}
@Override
public void teleport(Player player, Vector position) {
setPosRaw(position.getX(), position.getY(), position.getZ(), false);
PacketPlayOutEntityTeleport packetPlayOutEntityTeleport = new PacketPlayOutEntityTeleport(this);
((CraftPlayer) player).getHandle().b.a(packetPlayOutEntityTeleport);
}
@Override
public Vector getPosition() {
return new Vector(dc(), de(), di());
}
}

Datei anzeigen

@ -1,41 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.tracer.record;
import net.minecraft.world.entity.item.EntityTNTPrimed;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_18_R2.CraftWorld;
import org.bukkit.entity.TNTPrimed;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
public class TNTPrimedIterator18 implements TNTPrimedIterator {
private static final CraftWorld WORLD = (CraftWorld) Bukkit.getWorlds().get(0);
@Override
public Stream<TNTPrimed> iterator() {
return StreamSupport.stream(WORLD.getHandle().H().a().spliterator(), false)
.filter(EntityTNTPrimed.class::isInstance)
.map(entity -> (TNTPrimed) entity.getBukkitEntity());
}
}

Datei anzeigen

@ -1,62 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.shared;
import net.minecraft.network.protocol.game.PacketPlayOutEntityDestroy;
import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata;
import net.minecraft.network.protocol.game.PacketPlayOutSpawnEntity;
import net.minecraft.server.network.PlayerConnection;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.decoration.EntityArmorStand;
import net.minecraft.world.phys.Vec3D;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_18_R2.CraftWorld;
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class BaseArmorStand18 extends EntityArmorStand implements AbstractEntity {
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
protected Vector position;
public BaseArmorStand18(World world, Vector position) {
super(((CraftWorld) world).getHandle(), position.getX(), position.getY(), position.getZ());
this.position = position;
e(true);
S = -12000;
}
public void sendEntity(Player player) {
PacketPlayOutSpawnEntity packetPlayOutSpawnEntity = new PacketPlayOutSpawnEntity(ae(), cm(), position.getX(), position.getY(), position.getZ(), 0, 0, EntityTypes.c, 0, ZERO);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().b;
playerConnection.a(packetPlayOutSpawnEntity);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(ae(), Y, true);
playerConnection.a(packetPlayOutEntityMetadata);
}
public void sendEntityDestroy(Player player) {
PacketPlayOutEntityDestroy packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(ae());
((CraftPlayer) player).getHandle().b.a(packetPlayOutEntityDestroy);
}
}

Datei anzeigen

@ -1,68 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.shared;
import net.minecraft.network.protocol.game.PacketPlayOutEntityDestroy;
import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata;
import net.minecraft.network.protocol.game.PacketPlayOutSpawnEntity;
import net.minecraft.server.network.PlayerConnection;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.item.EntityFallingBlock;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.IBlockData;
import net.minecraft.world.phys.Vec3D;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_18_R2.CraftWorld;
import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData;
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class BaseEntity18 extends EntityFallingBlock implements AbstractEntity {
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
private final IBlockData iBlockData;
protected Vector position;
public BaseEntity18(World world, Vector position, Material blockType) {
super(((CraftWorld) world).getHandle(), position.getX(), position.getY(), position.getZ(), ((CraftBlockData) blockType.createBlockData()).getState());
this.iBlockData = ((CraftBlockData) blockType.createBlockData()).getState();
this.position = position;
this.e(true);
this.S = -12000;
}
public void sendEntity(Player player) {
PacketPlayOutSpawnEntity packetPlayOutSpawnEntity = new PacketPlayOutSpawnEntity(ae(), cm(), position.getX(), position.getY(), position.getZ(), 0, 0, EntityTypes.C, Block.i(iBlockData), ZERO);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().b;
playerConnection.a(packetPlayOutSpawnEntity);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(ae(), Y, true);
playerConnection.a(packetPlayOutEntityMetadata);
}
public void sendEntityDestroy(Player player) {
PacketPlayOutEntityDestroy packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(ae());
((CraftPlayer) player).getHandle().b.a(packetPlayOutEntityDestroy);
}
}

Datei anzeigen

@ -21,15 +21,7 @@ package de.steamwar.bausystem.utils;
import com.comphenix.tinyprotocol.Reflection;
import com.comphenix.tinyprotocol.TinyProtocol;
import de.steamwar.bausystem.entities.DetonatorEntity18;
import de.steamwar.bausystem.entities.SimulatorEntity18;
import de.steamwar.bausystem.entities.TraceEntity18;
import de.steamwar.bausystem.entities.WarpEntity18;
import de.steamwar.bausystem.features.detonator.AbstractDetonatorEntity;
import de.steamwar.bausystem.features.simulator.AbstractSimulatorEntity;
import de.steamwar.bausystem.features.tracer.AbstractTraceEntity;
import de.steamwar.bausystem.features.util.NoClipCommand;
import de.steamwar.bausystem.features.warp.AbstractWarpEntity;
import net.minecraft.SystemUtils;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
@ -39,14 +31,16 @@ import net.minecraft.network.protocol.game.*;
import net.minecraft.server.level.PlayerInteractManager;
import net.minecraft.world.level.EnumGamemode;
import net.minecraft.world.phys.Vec3D;
import org.bukkit.*;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_18_R2.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.List;
@ -79,37 +73,6 @@ public class NMSWrapper18 implements NMSWrapper {
player.updateInventory();
}
@Override
public void init(LongSupplier longSupplier) {
SystemUtils.a = () -> System.nanoTime() + longSupplier.getAsLong();
}
private static final List<Packet<?>> packets = new ArrayList<>();
private static final Vec3D noMotion = new Vec3D(0, 0, 0);
@Override
public void createTickCache(World world) {
packets.clear();
world.getEntities().stream().filter(entity -> !(entity instanceof Player)).forEach(entity -> {
packets.add(new PacketPlayOutEntityVelocity(entity.getEntityId(), noMotion));
packets.add(new PacketPlayOutEntityTeleport(((CraftEntity) entity).getHandle()));
if (entity instanceof TNTPrimed) {
net.minecraft.world.entity.Entity serverEntity = ((CraftEntity) entity).getHandle();
packets.add(new PacketPlayOutEntityMetadata(serverEntity.ae(), serverEntity.ai(), true));
}
});
}
@Override
public void sendTickPackets() {
Bukkit.getOnlinePlayers().forEach(player -> {
for (Packet<?> p : packets) {
TinyProtocol.instance.sendPacket(player, p);
}
});
}
private static final Reflection.FieldAccessor<PacketPlayOutGameStateChange.a> gameStateChangeReason = Reflection.getField(NoClipCommand.gameStateChange, PacketPlayOutGameStateChange.a.class, 12);
@Override
@ -167,26 +130,6 @@ public class NMSWrapper18 implements NMSWrapper {
return invalid;
}
@Override
public AbstractWarpEntity createWarp(World world, Vector position, String name) {
return new WarpEntity18(world, position, name);
}
@Override
public AbstractSimulatorEntity createSimulator(World world, Vector tntPosition, boolean highlight) {
return new SimulatorEntity18(world, tntPosition, highlight);
}
@Override
public AbstractDetonatorEntity constructDetonator(World world, Vector position) {
return new DetonatorEntity18(world, position);
}
@Override
public AbstractTraceEntity createTrace(World world, Vector tntPosition, boolean tnt) {
return new TraceEntity18(world, tntPosition, tnt);
}
private final Class<?> explosionPacket = Reflection.getClass("{nms.network.protocol.game}.PacketPlayOutExplosion");
private final Reflection.FieldAccessor<Double> a = Reflection.getField(explosionPacket, double.class, 0);
private final Reflection.FieldAccessor<Double> b = Reflection.getField(explosionPacket, double.class, 1);

Datei anzeigen

@ -19,6 +19,7 @@
package de.steamwar.bausystem.utils;
import com.comphenix.tinyprotocol.Reflection;
import de.steamwar.bausystem.utils.PlayerMovementWrapper;
import net.minecraft.network.protocol.game.PacketPlayInFlying;
import net.minecraft.server.level.EntityPlayer;
@ -37,4 +38,20 @@ public class PlayerMovementWrapper18 implements PlayerMovementWrapper {
entityPlayer.e(packetPlayInFlying.a, packetPlayInFlying.b, packetPlayInFlying.c);
}
}
@Override
public Object convertToOut(Player player, Object object) {
PacketPlayInFlying packetPlayInFlying = ((PacketPlayInFlying) object);
Object packet = Reflection.newInstance(teleportPacket);
teleportEntity.set(packet, player.getEntityId());
teleportPosition.set(packet, packetPlayInFlying.a, packetPlayInFlying.b, packetPlayInFlying.c);
if (packetPlayInFlying.h) {
teleportYaw.set(packet, rotToByte(player.getLocation().getYaw()));
teleportPitch.set(packet, rotToByte(player.getLocation().getPitch()));
} else {
teleportYaw.set(packet, rotToByte(packetPlayInFlying.d));
teleportPitch.set(packet, rotToByte(packetPlayInFlying.e));
}
return packet;
}
}

Datei anzeigen

@ -1,33 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.utils;
import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import de.steamwar.bausystem.features.util.NoClipCommand;
public class ProtocolWrapper18 implements ProtocolWrapper {
private static final Reflection.ConstructorInvoker playerInfoDataConstructor = Reflection.getConstructor(NoClipCommand.playerInfoDataClass, GameProfile.class, int.class, NoClipCommand.enumGamemode, NoClipCommand.iChatBaseComponent);
@Override
public Object playerInfoDataConstructor(Object packet, GameProfile profile, Object mode) {
return playerInfoDataConstructor.invoke(profile, 0, mode, null);
}
}

Datei anzeigen

@ -27,8 +27,8 @@ version '1.0'
compileJava.options.encoding = 'UTF-8'
sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceCompatibility = 17
targetCompatibility = 17
sourceSets {
main {
@ -51,6 +51,7 @@ dependencies {
implementation project(":BauSystem_Main")
compileOnly 'org.spigotmc:spigot-api:1.19-R0.1-SNAPSHOT'
compileOnly 'io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT'
compileOnly 'it.unimi.dsi:fastutil:8.5.6'
compileOnly 'com.mojang:datafixerupper:4.0.26'
compileOnly 'io.netty:netty-all:4.1.68.Final'

Datei anzeigen

@ -1,124 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.detonator.AbstractDetonatorEntity;
import net.minecraft.network.protocol.game.PacketPlayOutEntityDestroy;
import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata;
import net.minecraft.network.protocol.game.PacketPlayOutSpawnEntity;
import net.minecraft.server.network.PlayerConnection;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.item.EntityFallingBlock;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.IBlockData;
import net.minecraft.world.phys.Vec3D;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_19_R1.block.data.CraftBlockData;
import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import java.lang.reflect.Field;
public class DetonatorEntity19 extends EntityFallingBlock implements AbstractDetonatorEntity {
private static final Field ao;
static {
try {
ao = EntityFallingBlock.class.getDeclaredField("ao");
ao.setAccessible(true);
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
}
}
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
private final Vector position;
private int references = 0;
private IBlockData iBlockData;
public DetonatorEntity19(World world, Vector position) {
super(EntityTypes.E, ((CraftWorld) world).getHandle());
try {
ao.set(this, ((CraftBlockData) Material.RED_STAINED_GLASS.createBlockData()).getState());
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
this.q = true;
e(position.getX(), position.getY(), position.getZ());
f(Vec3D.b);
t = position.getX();
u = position.getY();
v = position.getZ();
a(this.db());
this.iBlockData = ((CraftBlockData) Material.RED_STAINED_GLASS.createBlockData()).getState();
this.position = position;
this.e(true);
this.S = -12000;
}
@Override
public int getId() {
return ae();
}
@Override
public void display(Player player) {
if (references++ > 0)
return;
PacketPlayOutSpawnEntity packetPlayOutSpawnEntity = new PacketPlayOutSpawnEntity(ae(), co(), position.getX(), position.getY(), position.getZ(), 0, 0, EntityTypes.E, Block.i(iBlockData), ZERO, 0.0);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().b;
playerConnection.a(packetPlayOutSpawnEntity);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(getId(), Y, true);
playerConnection.a(packetPlayOutEntityMetadata);
}
@Override
public boolean hide(Player player, boolean force) {
if (!force && --references > 0)
return false;
sendDestroy(player);
ag();
return true;
}
private void sendDestroy(Player player) {
PacketPlayOutEntityDestroy packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(getId());
((CraftPlayer) player).getHandle().b.a(packetPlayOutEntityDestroy);
}
@Override
public void sendEntity(Player player) {
display(player);
}
@Override
public void sendEntityDestroy(Player player) {
hide(player, false);
}
}

Datei anzeigen

@ -1,68 +0,0 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2020 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.simulator.AbstractSimulatorEntity;
import de.steamwar.bausystem.shared.BaseEntity19;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class SimulatorEntity19 extends BaseEntity19 implements AbstractSimulatorEntity {
private boolean printed = false;
public SimulatorEntity19(World world, Vector position, boolean highlight) {
super(world, position, highlight ? Material.WHITE_STAINED_GLASS : Material.TNT);
this.e(true);
this.S = -12000;
}
@Override
public int getId() {
return ae();
}
@Override
public void display(Player player) {
if (printed) return;
printed = true;
sendEntity(player);
}
@Override
public void setPosition(Vector position) {
this.position = position;
e(position.getX(), position.getY(), position.getZ());
}
@Override
public boolean hide(Player player, boolean force) {
if (!printed) return false;
printed = false;
sendEntityDestroy(player);
ag();
return true;
}
}

Datei anzeigen

@ -1,74 +0,0 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2020 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.tracer.AbstractTraceEntity;
import de.steamwar.bausystem.shared.BaseEntity19;
import de.steamwar.bausystem.shared.ReferenceCounter;
import net.minecraft.network.chat.IChatMutableComponent;
import net.minecraft.network.chat.contents.LiteralContents;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class TraceEntity19 extends BaseEntity19 implements AbstractTraceEntity {
private boolean exploded = false;
private ReferenceCounter referenceCounter = new ReferenceCounter();
public TraceEntity19(World world, Vector position, boolean tnt) {
super(world, position, tnt ? Material.TNT : Material.WHITE_STAINED_GLASS);
this.e(true);
this.S = -12000;
}
@Override
public void display(Player player, boolean exploded, int ticks) {
if (ticks != -1) {
this.n(true);
this.b(IChatMutableComponent.a(new LiteralContents(ticks + "")));
}
if (!this.exploded && exploded) {
this.n(true);
this.b(IChatMutableComponent.a(new LiteralContents("Bumm")));
this.exploded = true;
if (referenceCounter.increment() > 0) {
sendEntityDestroy(player);
}
} else if (referenceCounter.increment() > 0) {
return;
}
sendEntity(player);
}
@Override
public boolean hide(Player player, boolean force) {
if (!force && referenceCounter.decrement() > 0) {
return false;
}
sendEntityDestroy(player);
ag();
return true;
}
}

Datei anzeigen

@ -1,81 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.entities;
import de.steamwar.bausystem.features.warp.AbstractWarpEntity;
import de.steamwar.bausystem.shared.BaseArmorStand19;
import net.minecraft.network.chat.IChatMutableComponent;
import net.minecraft.network.chat.contents.LiteralContents;
import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata;
import net.minecraft.network.protocol.game.PacketPlayOutEntityTeleport;
import net.minecraft.server.network.PlayerConnection;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class WarpEntity19 extends BaseArmorStand19 implements AbstractWarpEntity {
public WarpEntity19(World world, Vector position, String name) {
super(world, position);
this.j(true);
this.a(true);
setName(name);
this.e(true);
this.S = -12000;
}
@Override
public void display(Player player) {
sendEntity(player);
}
@Override
public void setName(String name) {
this.n(true);
this.b(IChatMutableComponent.a(new LiteralContents(name)));
}
@Override
public boolean hide(Player player) {
sendEntityDestroy(player);
ag();
return true;
}
@Override
public void sendMetaData(Player player) {
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(ae(), Y, true);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().b;
playerConnection.a(packetPlayOutEntityMetadata);
}
@Override
public void teleport(Player player, Vector position) {
setPosRaw(position.getX(), position.getY(), position.getZ(), false);
PacketPlayOutEntityTeleport packetPlayOutEntityTeleport = new PacketPlayOutEntityTeleport(this);
((CraftPlayer) player).getHandle().b.a(packetPlayOutEntityTeleport);
}
@Override
public Vector getPosition() {
return new Vector(df(), dh(), dj());
}
}

Datei anzeigen

@ -1,165 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.simulator;
import com.google.common.collect.Maps;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import net.minecraft.core.BlockPosition;
import net.minecraft.util.RandomSource;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.EntityHuman;
import net.minecraft.world.level.Explosion;
import net.minecraft.world.level.ExplosionDamageCalculator;
import net.minecraft.world.level.World;
import net.minecraft.world.level.gameevent.GameEvent;
import net.minecraft.world.phys.Vec3D;
import org.bukkit.craftbukkit.v1_19_R1.event.CraftEventFactory;
import javax.annotation.Nullable;
import java.util.List;
import java.util.Map;
public class FakeExplosion19 extends Explosion {
private List<FakeTNT19> fakeTNT19s;
private boolean c;
private Explosion.Effect d;
private RandomSource e;
private World f;
private double g;
private double h;
private double i;
@Nullable
public Entity j;
private float k;
private DamageSource l;
private ExplosionDamageCalculator m;
private ObjectArrayList<BlockPosition> n;
private Map<EntityHuman, Vec3D> o;
public boolean wasCanceled;
public FakeExplosion19(List<FakeTNT19> fakeTNT19s, World world, @Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, double x, double y, double z, float power, boolean createFire, Explosion.Effect destructionType) {
super(world, entity, damageSource, behavior, x, y, z, power, createFire, destructionType);
this.fakeTNT19s = fakeTNT19s;
this.wasCanceled = false;
this.e = RandomSource.a();
this.n = new ObjectArrayList();
this.o = Maps.newHashMap();
this.f = world;
this.j = entity;
this.k = (float) Math.max((double) power, 0.0D);
this.g = x;
this.h = y;
this.i = z;
this.c = createFire;
this.d = destructionType;
this.l = damageSource == null ? DamageSource.a(this) : damageSource;
this.m = new ExplosionDamageCalculator();
}
private float getBlockDensity(Vec3D vec3d, Entity entity) {
return a(vec3d, entity);
}
@Override
public void a() {
if ((this.k) >= 0.1F) {
this.f.a(this.j, GameEvent.w, new Vec3D(this.g, this.h, this.i));
/*
Set<BlockPosition> set = Sets.newHashSet();
int i;
int j;
for (int k = 0; k < 16; ++k) {
for (i = 0; i < 16; ++i) {
for (j = 0; j < 16; ++j) {
if (k == 0 || k == 15 || i == 0 || i == 15 || j == 0 || j == 15) {
double d0 = (double) ((float) k / 15.0F * 2.0F - 1.0F);
double d1 = (double) ((float) i / 15.0F * 2.0F - 1.0F);
double d2 = (double) ((float) j / 15.0F * 2.0F - 1.0F);
double d3 = Math.sqrt(d0 * d0 + d1 * d1 + d2 * d2);
d0 /= d3;
d1 /= d3;
d2 /= d3;
float f = this.k * (0.7F + this.f.w.i() * 0.6F);
double d4 = this.g;
double d5 = this.h;
double d6 = this.i;
for (float var21 = 0.3F; f > 0.0F; f -= 0.22500001F) {
BlockPosition blockposition = new BlockPosition(d4, d5, d6);
IBlockData iblockdata = this.f.a_(blockposition);
Fluid fluid = iblockdata.p();
if (!this.f.j(blockposition)) {
break;
}
Optional<Float> optional = this.m.a(this, this.f, blockposition, iblockdata, fluid);
if (optional.isPresent()) {
f -= ((Float) optional.get() + 0.3F) * 0.3F;
}
if (f > 0.0F && this.m.a(this, this.f, blockposition, iblockdata, f)) {
set.add(blockposition);
}
d4 += d0 * 0.30000001192092896D;
d5 += d1 * 0.30000001192092896D;
d6 += d2 * 0.30000001192092896D;
}
}
}
}
}
this.n.addAll(set);
*/
float f2 = this.k * 2.0F;
Vec3D vec3d = new Vec3D(this.g, this.h, this.i);
for (int l1 = 0; l1 < fakeTNT19s.size(); ++l1) {
Entity entity = (Entity) fakeTNT19s.get(l1);
if (!entity.cF()) {
double d7 = Math.sqrt(entity.e(vec3d)) / (double) f2;
if (d7 <= 1.0D) {
double d8 = entity.df() - this.g;
double d9 = entity.dh() - this.h;
double d10 = entity.dl() - this.i;
double d11 = Math.sqrt(d8 * d8 + d9 * d9 + d10 * d10);
if (d11 != 0.0D) {
d8 /= d11;
d9 /= d11;
d10 /= d11;
double d12 = (double) this.getBlockDensity(vec3d, entity);
double d13 = (1.0D - d7) * d12;
entity.lastDamageCancelled = false;
CraftEventFactory.entityDamage = null;
entity.f(entity.dd().b(d8 * d13, d9 * d13, d10 * d13));
}
}
}
}
}
}
}

Datei anzeigen

@ -1,257 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.simulator;
import net.minecraft.core.BlockPosition;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.PacketPlayOutSpawnEntity;
import net.minecraft.network.syncher.DataWatcher;
import net.minecraft.network.syncher.DataWatcherObject;
import net.minecraft.network.syncher.DataWatcherRegistry;
import net.minecraft.util.MathHelper;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.*;
import net.minecraft.world.entity.item.EntityTNTPrimed;
import net.minecraft.world.level.Explosion;
import net.minecraft.world.level.ExplosionDamageCalculator;
import net.minecraft.world.level.World;
import net.minecraft.world.level.block.state.IBlockData;
import net.minecraft.world.phys.AxisAlignedBB;
import net.minecraft.world.phys.Vec3D;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.bukkit.entity.Explosive;
import org.bukkit.event.entity.ExplosionPrimeEvent;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
public class FakeTNT19 extends EntityTNTPrimed {
private static final DataWatcherObject<Integer> b;
private static final int c = 80;
private List<FakeTNT19> fakeTNT19s;
private List<FakeTNT19> spawnList = new ArrayList<>();
private int count;
@Nullable
public EntityLiving d;
public float yield;
public boolean isIncendiary;
public FakeTNT19(List<FakeTNT19> fakeTNT19s, EntityTypes<? extends EntityTNTPrimed> type, World world) {
super(type, world);
this.fakeTNT19s = fakeTNT19s;
this.yield = 4.0F;
this.isIncendiary = false;
super.q = true;
}
public FakeTNT19(List<FakeTNT19> fakeTNT19s, World world, double x, double y, double z, int fuse, int count) {
this(fakeTNT19s, EntityTypes.av, world);
this.e(x, y, z);
double d3 = world.w.j() * 6.2831854820251465D;
this.n(-Math.sin(d3) * 0.02D, 0.20000000298023224D, -Math.cos(d3) * 0.02D);
this.a(fuse);
super.t = x;
super.u = y;
super.v = z;
this.d = null;
this.count = count;
}
protected void a_() {
super.Y.a(b, 80);
}
protected MovementEmission aO() {
return MovementEmission.a;
}
public boolean bl() {
return !this.dt();
}
private Vec3D g(Vec3D vec3d) {
AxisAlignedBB axisalignedbb = this.cz();
List<VoxelShape> list = this.s.b(this, axisalignedbb.b(vec3d));
Vec3D vec3d1 = vec3d.g() == 0.0 ? vec3d : a(this, vec3d, axisalignedbb, this.s, list);
boolean flag = vec3d.c != vec3d1.c;
boolean flag1 = vec3d.d != vec3d1.d;
boolean flag2 = vec3d.e != vec3d1.e;
boolean flag3 = this.y || flag1 && vec3d.d < 0.0;
if (this.P > 0.0F && flag3 && (flag || flag2)) {
Vec3D vec3d2 = a(this, new Vec3D(vec3d.c, (double)this.P, vec3d.e), axisalignedbb, this.s, list);
Vec3D vec3d3 = a(this, new Vec3D(0.0, (double)this.P, 0.0), axisalignedbb.b(vec3d.c, 0.0, vec3d.e), this.s, list);
if (vec3d3.d < (double)this.P) {
Vec3D vec3d4 = a(this, new Vec3D(vec3d.c, 0.0, vec3d.e), axisalignedbb.c(vec3d3), this.s, list).e(vec3d3);
if (vec3d4.i() > vec3d2.i()) {
vec3d2 = vec3d4;
}
}
if (vec3d2.i() > vec3d1.i()) {
return vec3d2.e(a(this, new Vec3D(0.0, -vec3d2.d + vec3d.d, 0.0), axisalignedbb.c(vec3d2), this.s, list));
}
}
return vec3d1;
}
@Override
public void a(EnumMoveType enummovetype, Vec3D vec3d) {
if (this.E.g() > 1.0E-7) {
vec3d = vec3d.h(this.E);
this.E = Vec3D.b;
this.f(Vec3D.b);
}
Vec3D vec3d1 = this.g(vec3d);
double d0 = vec3d1.g();
if (d0 > 1.0E-7) {
this.e(this.df() + vec3d1.c, this.dg() + vec3d1.d, this.dl() + vec3d1.e);
}
boolean flag = !MathHelper.b(vec3d.c, vec3d1.c);
boolean flag1 = !MathHelper.b(vec3d.e, vec3d1.e);
this.z = flag || flag1;
this.A = vec3d.d != vec3d1.d;
this.B = this.A && vec3d.d < 0.0;
if (this.z) {
this.C = this.b(vec3d1);
} else {
this.C = false;
}
this.y = this.A && vec3d.d < 0.0;
BlockPosition blockposition = this.aA();
IBlockData iblockdata = this.s.a_(blockposition);
// this.a(vec3d1.d, this.y, iblockdata, blockposition);
if (!this.dt()) {
if (this.z) {
Vec3D vec3d2 = this.dd();
this.n(flag ? 0.0 : vec3d2.c, vec3d2.d, flag1 ? 0.0 : vec3d2.e);
}
net.minecraft.world.level.block.Block block = iblockdata.b();
if (vec3d.d != vec3d1.d) {
block.a(this.s, this);
}
if (this.y) {
block.a(this.s, blockposition, iblockdata, this);
}
this.ax();
float f2 = this.aD();
this.f(this.dd().d((double)f2, 1.0, (double)f2));
}
}
public void k(List<FakeTNT19> spawnList) {
if (!this.aN()) {
this.f(this.dd().b(0.0D, -0.04D, 0.0D));
}
this.a(EnumMoveType.a, this.dd());
this.f(this.dd().a(0.98D));
if (super.y) {
this.f(this.dd().d(0.7D, -0.5D, 0.7D));
}
int i = this.i() - 1;
this.a(i);
if (i <= 0) {
if (!super.s.y) {
this.j1();
}
this.ah();
} else {
this.aY();
}
if (i == 1 && count > 1) {
for (int c = 0; c < count - 1; c++) {
FakeTNT19 fakeTNT19 = new FakeTNT19(fakeTNT19s, this.s, this.df(), this.dh(), this.dl(), i, 1);
fakeTNT19.y = this.y;
fakeTNT19.f(new Vec3D(this.dd().c, this.dd().d, this.dd().e));
spawnList.add(fakeTNT19);
}
count = 1;
}
}
private void j1() {
ExplosionPrimeEvent event = new ExplosionPrimeEvent((Explosive) this.getBukkitEntity());
super.s.getCraftServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.a(this, this.df(), this.e(0.0625D), this.dl(), event.getRadius(), event.getFire(), Explosion.Effect.b);
}
}
public FakeExplosion19 a(@Nullable Entity entity, double x, double y, double z, float power, boolean createFire, Explosion.Effect destructionType) {
return this.a(entity, (DamageSource) null, (ExplosionDamageCalculator) null, x, y, z, power, createFire, destructionType);
}
public FakeExplosion19 a(@Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, double x, double y, double z, float power, boolean createFire, Explosion.Effect destructionType) {
FakeExplosion19 explosion = new FakeExplosion19(fakeTNT19s, SimulatorPreview19.WORLD, entity, damageSource, behavior, x, y, z, power, createFire, destructionType);
explosion.a();
// explosion.a(true);
return explosion;
}
protected void b(NBTTagCompound nbt) {
nbt.a("Fuse", (short) this.i());
}
protected void a(NBTTagCompound nbt) {
this.a(nbt.g("Fuse"));
}
@Nullable
public EntityLiving h() {
return this.d;
}
protected float a(EntityPose pose, EntitySize dimensions) {
return 0.15F;
}
public void a(int fuse) {
super.Y.b(b, fuse);
}
public int i() {
return (Integer) super.Y.a(b);
}
public Packet<?> S() {
return new PacketPlayOutSpawnEntity(this);
}
public boolean cr() {
return super.cr();
}
static {
b = DataWatcher.a(EntityTNTPrimed.class, DataWatcherRegistry.b);
}
}

Datei anzeigen

@ -1,136 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.simulator;
import de.steamwar.bausystem.features.simulator.tnt.SimulatorElement;
import de.steamwar.bausystem.features.tracer.show.Record;
import de.steamwar.bausystem.shared.Pair;
import net.minecraft.world.level.World;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld;
import org.bukkit.entity.TNTPrimed;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
public class SimulatorPreview19 implements SimulatorPreview {
public static final World WORLD = ((CraftWorld) Bukkit.getWorlds().get(0)).getHandle();
@Override
public Record simulate(TNTSimulator tntSimulator) {
if (true) {
return new Record(null);
}
Map<Integer, Map<Integer, Set<Pair<SimulatorPreview.SimulatorPreviewTNTData, Integer>>>> result = new HashMap<>();
for (SimulatorElement element : tntSimulator.getTntElementList()) {
element.locations(result);
}
AtomicInteger maxTick = new AtomicInteger(0);
Map<Integer, List<List<Pair<SimulatorPreview.SimulatorPreviewTNTData, Integer>>>> toSpawn = new HashMap<>();
AtomicInteger tntCount = new AtomicInteger(0);
result.forEach((integer, integerSetMap) -> {
List<Pair<Integer, Set<Pair<SimulatorPreview.SimulatorPreviewTNTData, Integer>>>> internal = new ArrayList<>();
integerSetMap.forEach((integer1, pairs) -> {
internal.add(new Pair<>(integer1, pairs));
});
internal.sort(Comparator.comparingInt(Pair::getKey));
toSpawn.put(integer, internal.stream().map(Pair::getValue).peek(pairs -> {
tntCount.addAndGet(pairs.stream().mapToInt(Pair::getValue).sum());
}).map(ArrayList::new).peek(Collections::shuffle).collect(Collectors.toList()));
if (maxTick.get() < integer) {
maxTick.set(integer);
}
});
if (tntCount.get() > 500) {
return new Record(null);
}
List<FakeTNT19> fakeTNT19s = new ArrayList<>();
Record record = new Record(null);
Map<FakeTNT19, Record.TNTRecord> tntRecords = new HashMap<>();
int maxTickToCalc = maxTick.get() + 160;
for (int tick = 0; tick < maxTickToCalc; tick++) {
List<List<Pair<SimulatorPreview.SimulatorPreviewTNTData, Integer>>> toSpawnInTick = toSpawn.get(tick);
try {
if (toSpawnInTick == null) continue;
toSpawnInTick.forEach(pairs -> {
AtomicBoolean hasSomeLeft = new AtomicBoolean(true);
while(hasSomeLeft.get()) {
hasSomeLeft.set(false);
pairs.forEach(pair -> {
SimulatorPreview.SimulatorPreviewTNTData previewTNTData = pair.getKey();
if (!previewTNTData.isXVelocity() && !previewTNTData.isZVelocity()) {
FakeTNT19 fakeTNT19 = new FakeTNT19(fakeTNT19s, WORLD, previewTNTData.getX(), previewTNTData.getY(), previewTNTData.getZ(), previewTNTData.getFuseTicks(), pair.getValue());
TNTPrimed tntPrimed = (TNTPrimed) fakeTNT19.getBukkitEntity();
if (!previewTNTData.isXVelocity()) tntPrimed.setVelocity(tntPrimed.getVelocity().setX(0));
if (!previewTNTData.isYVelocity()) tntPrimed.setVelocity(tntPrimed.getVelocity().setY(0));
if (!previewTNTData.isZVelocity()) tntPrimed.setVelocity(tntPrimed.getVelocity().setZ(0));
fakeTNT19s.add(fakeTNT19);
pair.setValue(0);
} else if (pair.getValue() > 0) {
hasSomeLeft.set(true);
FakeTNT19 fakeTNT19 = new FakeTNT19(fakeTNT19s, WORLD, previewTNTData.getX(), previewTNTData.getY(), previewTNTData.getZ(), previewTNTData.getFuseTicks(), 1);
TNTPrimed tntPrimed = (TNTPrimed) fakeTNT19.getBukkitEntity();
if (!previewTNTData.isXVelocity()) tntPrimed.setVelocity(tntPrimed.getVelocity().setX(0));
if (!previewTNTData.isYVelocity()) tntPrimed.setVelocity(tntPrimed.getVelocity().setY(0));
if (!previewTNTData.isZVelocity()) tntPrimed.setVelocity(tntPrimed.getVelocity().setZ(0));
fakeTNT19s.add(fakeTNT19);
pair.setValue(pair.getValue() - 1);
}
});
}
});
} finally {
calculateTick(fakeTNT19s, record, tntRecords);
}
}
return record;
}
private void calculateTick(List<FakeTNT19> fakeTNT19s, Record record, Map<FakeTNT19, Record.TNTRecord> tntRecords) {
int i = 0;
while (i < fakeTNT19s.size()) {
List<FakeTNT19> spawnList = new ArrayList<>();
FakeTNT19 fakeTNT19 = fakeTNT19s.get(i);
fakeTNT19.k(spawnList);
TNTPrimed tntPrimed = ((TNTPrimed) (fakeTNT19.getBukkitEntity()));
if (tntPrimed.getFuseTicks() <= 0) {
tntRecords.computeIfAbsent(fakeTNT19, ignore -> record.spawn(0)).explode(tntPrimed);
fakeTNT19s.remove(i);
i--;
} else {
tntRecords.computeIfAbsent(fakeTNT19, ignore -> record.spawn(0)).explode(tntPrimed);
}
if (!spawnList.isEmpty()) {
fakeTNT19s.addAll(i, spawnList);
i += spawnList.size();
}
i++;
}
}
}

Datei anzeigen

@ -1,41 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.tracer.record;
import net.minecraft.world.entity.item.EntityTNTPrimed;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld;
import org.bukkit.entity.TNTPrimed;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
public class TNTPrimedIterator19 implements TNTPrimedIterator {
private static final CraftWorld WORLD = (CraftWorld) Bukkit.getWorlds().get(0);
@Override
public Stream<TNTPrimed> iterator() {
return StreamSupport.stream(WORLD.getHandle().F().a().spliterator(), false)
.filter(EntityTNTPrimed.class::isInstance)
.map(entity -> (TNTPrimed) entity.getBukkitEntity());
}
}

Datei anzeigen

@ -1,62 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.shared;
import net.minecraft.network.protocol.game.PacketPlayOutEntityDestroy;
import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata;
import net.minecraft.network.protocol.game.PacketPlayOutSpawnEntity;
import net.minecraft.server.network.PlayerConnection;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.decoration.EntityArmorStand;
import net.minecraft.world.phys.Vec3D;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class BaseArmorStand19 extends EntityArmorStand implements AbstractEntity {
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
protected Vector position;
public BaseArmorStand19(World world, Vector position) {
super(((CraftWorld) world).getHandle(), position.getX(), position.getY(), position.getZ());
this.position = position;
e(true);
S = -12000;
}
public void sendEntity(Player player) {
PacketPlayOutSpawnEntity packetPlayOutSpawnEntity = new PacketPlayOutSpawnEntity(ae(), co(), position.getX(), position.getY(), position.getZ(), 0, 0, EntityTypes.d, 0, ZERO, 0.0);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().b;
playerConnection.a(packetPlayOutSpawnEntity);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(ae(), Y, true);
playerConnection.a(packetPlayOutEntityMetadata);
}
public void sendEntityDestroy(Player player) {
PacketPlayOutEntityDestroy packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(ae());
((CraftPlayer) player).getHandle().b.a(packetPlayOutEntityDestroy);
}
}

Datei anzeigen

@ -1,94 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.shared;
import net.minecraft.network.protocol.game.PacketPlayOutEntityDestroy;
import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata;
import net.minecraft.network.protocol.game.PacketPlayOutSpawnEntity;
import net.minecraft.server.network.PlayerConnection;
import net.minecraft.world.entity.EntityTypes;
import net.minecraft.world.entity.item.EntityFallingBlock;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.IBlockData;
import net.minecraft.world.phys.Vec3D;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_19_R1.block.data.CraftBlockData;
import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import java.lang.reflect.Field;
public class BaseEntity19 extends EntityFallingBlock implements AbstractEntity {
private static final Field ao;
static {
try {
ao = EntityFallingBlock.class.getDeclaredField("ao");
ao.setAccessible(true);
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
}
}
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
private final IBlockData iBlockData;
protected Vector position;
public BaseEntity19(World world, Vector position, Material blockType) {
super(EntityTypes.E, ((CraftWorld) world).getHandle());
try {
ao.set(this, ((CraftBlockData) blockType.createBlockData()).getState());
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
this.q = true;
e(position.getX(), position.getY(), position.getZ());
f(Vec3D.b);
t = position.getX();
u = position.getY();
v = position.getZ();
a(this.db());
this.iBlockData = ((CraftBlockData) blockType.createBlockData()).getState();
this.position = position;
this.e(true);
this.S = -12000;
}
public void sendEntity(Player player) {
PacketPlayOutSpawnEntity packetPlayOutSpawnEntity = new PacketPlayOutSpawnEntity(ae(), co(), position.getX(), position.getY(), position.getZ(), 0, 0, EntityTypes.E, Block.i(iBlockData), ZERO, 0.0);
PlayerConnection playerConnection = ((CraftPlayer) player).getHandle().b;
playerConnection.a(packetPlayOutSpawnEntity);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(ae(), Y, true);
playerConnection.a(packetPlayOutEntityMetadata);
}
public void sendEntityDestroy(Player player) {
PacketPlayOutEntityDestroy packetPlayOutEntityDestroy = new PacketPlayOutEntityDestroy(ae());
((CraftPlayer) player).getHandle().b.a(packetPlayOutEntityDestroy);
}
}

Datei anzeigen

@ -21,32 +21,27 @@ package de.steamwar.bausystem.utils;
import com.comphenix.tinyprotocol.Reflection;
import com.comphenix.tinyprotocol.TinyProtocol;
import de.steamwar.bausystem.entities.DetonatorEntity19;
import de.steamwar.bausystem.entities.SimulatorEntity19;
import de.steamwar.bausystem.entities.TraceEntity19;
import de.steamwar.bausystem.entities.WarpEntity19;
import de.steamwar.bausystem.features.detonator.AbstractDetonatorEntity;
import de.steamwar.bausystem.features.simulator.AbstractSimulatorEntity;
import de.steamwar.bausystem.features.tracer.AbstractTraceEntity;
import de.steamwar.bausystem.features.util.NoClipCommand;
import de.steamwar.bausystem.features.warp.AbstractWarpEntity;
import net.minecraft.SystemUtils;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.*;
import net.minecraft.network.syncher.DataWatcher;
import net.minecraft.server.level.PlayerInteractManager;
import net.minecraft.world.level.EnumGamemode;
import net.minecraft.world.phys.Vec3D;
import org.bukkit.*;
import org.bukkit.craftbukkit.v1_19_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_19_R2.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_19_R2.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_19_R2.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.List;
@ -60,7 +55,6 @@ public class NMSWrapper19 implements NMSWrapper {
@SuppressWarnings("deprecation")
public void setInternalGameMode(Player player, GameMode gameMode) {
playerGameMode.set(((CraftPlayer) player).getHandle().d, EnumGamemode.a(gameMode.getValue()));
}
@Override
@ -79,37 +73,6 @@ public class NMSWrapper19 implements NMSWrapper {
player.updateInventory();
}
@Override
public void init(LongSupplier longSupplier) {
SystemUtils.a = () -> System.nanoTime() + longSupplier.getAsLong();
}
private static final List<Packet<?>> packets = new ArrayList<>();
private static final Vec3D noMotion = new Vec3D(0, 0, 0);
@Override
public void createTickCache(World world) {
packets.clear();
world.getEntities().stream().filter(entity -> !(entity instanceof Player)).forEach(entity -> {
packets.add(new PacketPlayOutEntityVelocity(entity.getEntityId(), noMotion));
packets.add(new PacketPlayOutEntityTeleport(((CraftEntity) entity).getHandle()));
if (entity instanceof TNTPrimed) {
net.minecraft.world.entity.Entity serverEntity = ((CraftEntity) entity).getHandle();
packets.add(new PacketPlayOutEntityMetadata(serverEntity.ae(), serverEntity.ai(), true));
}
});
}
@Override
public void sendTickPackets() {
Bukkit.getOnlinePlayers().forEach(player -> {
for (Packet<?> p : packets) {
TinyProtocol.instance.sendPacket(player, p);
}
});
}
private static final Reflection.FieldAccessor<PacketPlayOutGameStateChange.a> gameStateChangeReason = Reflection.getField(NoClipCommand.gameStateChange, PacketPlayOutGameStateChange.a.class, 12);
@Override
@ -119,8 +82,8 @@ public class NMSWrapper19 implements NMSWrapper {
@Override
public void setPlayerBuildAbilities(Player player) {
((CraftPlayer) player).getHandle().fB().d = true;
((CraftPlayer) player).getHandle().fB().e = true;
((CraftPlayer) player).getHandle().fF().d = true;
((CraftPlayer) player).getHandle().fF().e = true;
}
@Override
@ -167,26 +130,6 @@ public class NMSWrapper19 implements NMSWrapper {
return invalid;
}
@Override
public AbstractWarpEntity createWarp(World world, Vector position, String name) {
return new WarpEntity19(world, position, name);
}
@Override
public AbstractSimulatorEntity createSimulator(World world, Vector tntPosition, boolean highlight) {
return new SimulatorEntity19(world, tntPosition, highlight);
}
@Override
public AbstractDetonatorEntity constructDetonator(World world, Vector position) {
return new DetonatorEntity19(world, position);
}
@Override
public AbstractTraceEntity createTrace(World world, Vector tntPosition, boolean tnt) {
return new TraceEntity19(world, tntPosition, tnt);
}
private final Class<?> explosionPacket = Reflection.getClass("{nms.network.protocol.game}.PacketPlayOutExplosion");
private final Reflection.FieldAccessor<Double> a = Reflection.getField(explosionPacket, double.class, 0);
private final Reflection.FieldAccessor<Double> b = Reflection.getField(explosionPacket, double.class, 1);

Datei anzeigen

@ -19,12 +19,17 @@
package de.steamwar.bausystem.utils;
import de.steamwar.bausystem.utils.PlayerMovementWrapper;
import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.network.protocol.game.PacketPlayInFlying;
import net.minecraft.server.level.EntityPlayer;
import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_19_R2.entity.CraftPlayer;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class PlayerMovementWrapper19 implements PlayerMovementWrapper {
@Override
@ -37,4 +42,20 @@ public class PlayerMovementWrapper19 implements PlayerMovementWrapper {
entityPlayer.e(packetPlayInFlying.a, packetPlayInFlying.b, packetPlayInFlying.c);
}
}
@Override
public Object convertToOut(Player player, Object object) {
PacketPlayInFlying packetPlayInFlying = ((PacketPlayInFlying) object);
Object packet = Reflection.newInstance(teleportPacket);
teleportEntity.set(packet, player.getEntityId());
teleportPosition.set(packet, packetPlayInFlying.a, packetPlayInFlying.b, packetPlayInFlying.c);
if (packetPlayInFlying.h) {
teleportYaw.set(packet, rotToByte(player.getLocation().getYaw()));
teleportPitch.set(packet, rotToByte(player.getLocation().getPitch()));
} else {
teleportYaw.set(packet, rotToByte(packetPlayInFlying.d));
teleportPitch.set(packet, rotToByte(packetPlayInFlying.e));
}
return packet;
}
}

Datei anzeigen

@ -1,33 +0,0 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2021 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.utils;
import com.comphenix.tinyprotocol.Reflection;
import com.mojang.authlib.GameProfile;
import de.steamwar.bausystem.features.util.NoClipCommand;
public class ProtocolWrapper19 implements ProtocolWrapper {
private static final Reflection.ConstructorInvoker playerInfoDataConstructor = Reflection.getConstructor(NoClipCommand.playerInfoDataClass, GameProfile.class, int.class, NoClipCommand.enumGamemode, NoClipCommand.iChatBaseComponent, Reflection.getClass("net.minecraft.world.entity.player.ProfilePublicKey$a"));
@Override
public Object playerInfoDataConstructor(Object packet, GameProfile profile, Object mode) {
return playerInfoDataConstructor.invoke(profile, 0, mode, null, null);
}
}

Datei anzeigen

@ -0,0 +1,51 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2023 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.utils;
import com.destroystokyo.paper.event.server.ServerTickEndEvent;
import com.destroystokyo.paper.event.server.ServerTickStartEvent;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.features.tpslimit.TPSFreezeUtils;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class TickListener19 implements TickListener, Listener {
private boolean tickStartRan = false;
public TickListener19() {
Bukkit.getPluginManager().registerEvents(this, BauSystem.getInstance());
}
@EventHandler
public void onServerTickStart(ServerTickStartEvent event) {
if (TPSFreezeUtils.isFrozen()) return;
Bukkit.getPluginManager().callEvent(new TickStartEvent());
tickStartRan = true;
}
@EventHandler
public void onServerTickEnd(ServerTickEndEvent event) {
if (!tickStartRan) return;
Bukkit.getPluginManager().callEvent(new TickEndEvent());
tickStartRan = false;
}
}

62
BauSystem_20/build.gradle Normale Datei
Datei anzeigen

@ -0,0 +1,62 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2020 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
plugins {
id 'base'
id 'java'
}
group 'steamwar'
version '1.0'
compileJava.options.encoding = 'UTF-8'
sourceCompatibility = 17
targetCompatibility = 17
sourceSets {
main {
java {
srcDirs = ['src/']
}
resources {
srcDirs = ['src/']
exclude '**/*.java', '**/*.kt'
}
}
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.22'
testCompileOnly 'org.projectlombok:lombok:1.18.22'
annotationProcessor 'org.projectlombok:lombok:1.18.22'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.22'
implementation project(":BauSystem_Main")
compileOnly 'org.spigotmc:spigot-api:1.20-R0.1-SNAPSHOT'
compileOnly 'it.unimi.dsi:fastutil:8.5.6'
compileOnly 'com.mojang:datafixerupper:4.0.26'
compileOnly 'io.netty:netty-all:4.1.68.Final'
compileOnly 'com.mojang:authlib:1.5.25'
compileOnly 'com.mojang:brigadier:1.0.18'
compileOnly swdep('Spigot-1.20')
compileOnly swdep('SpigotCore')
}

Datei anzeigen

@ -0,0 +1,136 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.utils;
import com.comphenix.tinyprotocol.Reflection;
import de.steamwar.bausystem.features.util.NoClipCommand;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.protocol.game.PacketPlayInSetCreativeSlot;
import net.minecraft.network.protocol.game.PacketPlayOutExplosion;
import net.minecraft.network.protocol.game.PacketPlayOutGameStateChange;
import net.minecraft.server.level.PlayerInteractManager;
import net.minecraft.world.level.EnumGamemode;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer;
import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.util.List;
public class NMSWrapper20 implements NMSWrapper {
private static final Reflection.FieldAccessor<EnumGamemode> playerGameMode = Reflection.getField(PlayerInteractManager.class, EnumGamemode.class, 0);
@Override
@SuppressWarnings("deprecation")
public void setInternalGameMode(Player player, GameMode gameMode) {
playerGameMode.set(((CraftPlayer) player).getHandle().e, EnumGamemode.a(gameMode.getValue()));
}
@Override
public void setSlotToItemStack(Player player, Object o) {
PacketPlayInSetCreativeSlot packetPlayInSetCreativeSlot = (PacketPlayInSetCreativeSlot) o;
int index = packetPlayInSetCreativeSlot.a();
if (index >= 36 && index <= 44) {
index -= 36;
} else if (index > 44) {
index -= 5;
} else if (index <= 8) {
index = index - 8 + 36;
}
player.getInventory().setItem(index, CraftItemStack.asBukkitCopy(packetPlayInSetCreativeSlot.c()));
if (index < 9) player.getInventory().setHeldItemSlot(index);
player.updateInventory();
}
private static final Reflection.FieldAccessor<PacketPlayOutGameStateChange.a> gameStateChangeReason = Reflection.getField(NoClipCommand.gameStateChange, PacketPlayOutGameStateChange.a.class, 12);
@Override
public void setGameStateChangeReason(Object packet) {
gameStateChangeReason.set(packet, PacketPlayOutGameStateChange.d);
}
@Override
public void setPlayerBuildAbilities(Player player) {
((CraftPlayer) player).getHandle().fO().d = true;
((CraftPlayer) player).getHandle().fO().e = true;
}
@Override
public Material pathMaterial() {
return Material.DIRT_PATH;
}
private static final int threshold = 2048;
@Override
public boolean checkItemStack(ItemStack item) {
net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);
NBTTagCompound tag = nmsItem.v();
if (tag != null && tag.e("BlockEntityTag")) {
NBTTagCompound blockTag = tag.p("BlockEntityTag");
if (blockTag.e("Items")) {
return drillDown(blockTag.c("Items", 10), 0, 0) > threshold;
}
}
return false;
}
private int drillDown(NBTTagList items, int layer, int start) {
if (layer > 2) return start + threshold;
int invalid = start;
for (NBTBase nbtBase : items) {
if (!(nbtBase instanceof NBTTagCompound))
continue;
NBTTagCompound slot = (NBTTagCompound) nbtBase;
if (slot.e("tag")) {
invalid += slot.f("Count");
NBTTagCompound iTag = slot.p("tag");
if (iTag.e("BlockEntityTag")) {
NBTTagCompound blockTag = iTag.p("BlockEntityTag");
if (blockTag.e("Items")) {
invalid = drillDown(blockTag.c("Items", 10), layer + 1, invalid);
}
}
}
if (invalid > threshold)
break;
}
return invalid;
}
private final Class<?> explosionPacket = Reflection.getClass("{nms.network.protocol.game}.PacketPlayOutExplosion");
private final Reflection.FieldAccessor<Double> a = Reflection.getField(explosionPacket, double.class, 0);
private final Reflection.FieldAccessor<Double> b = Reflection.getField(explosionPacket, double.class, 1);
private final Reflection.FieldAccessor<Double> c = Reflection.getField(explosionPacket, double.class, 2);
private final Reflection.FieldAccessor<Float> d = Reflection.getField(explosionPacket, float.class, 0);
private final Reflection.FieldAccessor<List> e = Reflection.getField(explosionPacket, List.class, 0);
@Override
public Object resetExplosionKnockback(Object packet) {
PacketPlayOutExplosion packetPlayOutExplosion = (PacketPlayOutExplosion) packet;
return new PacketPlayOutExplosion(a.get(packetPlayOutExplosion), b.get(packetPlayOutExplosion), c.get(packetPlayOutExplosion), d.get(packetPlayOutExplosion), e.get(packetPlayOutExplosion), null);
}
}

Datei anzeigen

@ -0,0 +1,43 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2023 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.utils;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
public class PlaceItemWrapper20 implements PlaceItemWrapper {
public PlaceItemWrapper20() {
for (Material material : Material.values()) {
if (!material.isBlock()) continue;
if (material.isLegacy()) continue;
BlockData blockData = material.createBlockData();
Material placementMaterial = blockData.getPlacementMaterial();
if (material == placementMaterial) continue;
if (placementMaterial == Material.AIR) continue;
if (placementMaterial.isItem() && !placementMaterial.isBlock()) {
ITEM_MATERIAL_TO_BLOCK_MATERIAL.put(placementMaterial, material);
}
if (material.name().contains("WALL")) {
BLOCK_MATERIAL_TO_WALL_BLOCK_MATERIAL.put(placementMaterial, material);
}
}
}
}

Datei anzeigen

@ -0,0 +1,62 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.utils;
import com.comphenix.tinyprotocol.Reflection;
import net.minecraft.network.protocol.game.PacketPlayInFlying;
import net.minecraft.network.protocol.game.PacketPlayOutEntityTeleport;
import net.minecraft.server.level.EntityPlayer;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class PlayerMovementWrapper20 implements PlayerMovementWrapper {
@Override
public void setPosition(Player player, Object object) {
PacketPlayInFlying packetPlayInFlying = ((PacketPlayInFlying) object);
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
if (packetPlayInFlying.h) {
entityPlayer.b(packetPlayInFlying.a, packetPlayInFlying.b, packetPlayInFlying.c, packetPlayInFlying.d, packetPlayInFlying.e);
} else {
entityPlayer.e(packetPlayInFlying.a, packetPlayInFlying.b, packetPlayInFlying.c);
}
}
@Override
public Object convertToOut(Player player, Object object) {
PacketPlayInFlying packetPlayInFlying = ((PacketPlayInFlying) object);
Object packet = Reflection.newInstance(teleportPacket);
teleportEntity.set(packet, player.getEntityId());
teleportPosition.set(packet, packetPlayInFlying.a, packetPlayInFlying.b, packetPlayInFlying.c);
if (packetPlayInFlying.h) {
teleportYaw.set(packet, rotToByte(player.getLocation().getYaw()));
teleportPitch.set(packet, rotToByte(player.getLocation().getPitch()));
} else {
teleportYaw.set(packet, rotToByte(packetPlayInFlying.d));
teleportPitch.set(packet, rotToByte(packetPlayInFlying.e));
}
return packet;
}
}

Datei anzeigen

@ -27,8 +27,8 @@ version '1.0'
compileJava.options.encoding = 'UTF-8'
sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceCompatibility = 17
targetCompatibility = 17
sourceSets {
main {

Datei anzeigen

@ -0,0 +1,40 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2023 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.linkage.types;
import de.steamwar.linkage.LinkageType;
import de.steamwar.linkage.plan.BuildPlan;
import de.steamwar.linkage.plan.MethodBuilder;
import javax.lang.model.element.TypeElement;
public class LuaLib_GENERIC implements LinkageType {
@Override
public String method() {
return "link";
}
@Override
public void generateCode(BuildPlan buildPlan, MethodBuilder methodBuilder, String s, TypeElement typeElement) {
buildPlan.addImport("de.steamwar.bausystem.features.script.lua.SteamWarLuaPlugin");
methodBuilder.addLine("SteamWarLuaPlugin.add(" + s + ");");
}
}

Datei anzeigen

@ -1,40 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.linkage.types;
import de.steamwar.linkage.LinkageType;
import de.steamwar.linkage.plan.BuildPlan;
import de.steamwar.linkage.plan.MethodBuilder;
import javax.lang.model.element.TypeElement;
public class Operator_GENERIC implements LinkageType {
@Override
public String method() {
return "linkScriptCommands";
}
@Override
public void generateCode(BuildPlan buildPlan, MethodBuilder methodBuilder, String s, TypeElement typeElement) {
buildPlan.addImport("de.steamwar.bausystem.features.script.expression.Expression");
methodBuilder.addLine("Expression.registerOperator(" + s + ");");
}
}

Datei anzeigen

@ -1,7 +1,7 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
* Copyright (C) 2023 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
@ -25,16 +25,16 @@ import de.steamwar.linkage.plan.MethodBuilder;
import javax.lang.model.element.TypeElement;
public class BlockAttribute_GENERIC implements LinkageType {
public class ScoreboardElement_GENERIC implements LinkageType {
@Override
public String method() {
return "linkBlockAttributes";
return "link";
}
@Override
public void generateCode(BuildPlan buildPlan, MethodBuilder methodBuilder, String s, TypeElement typeElement) {
buildPlan.addImport("de.steamwar.bausystem.features.attributescopy.*");
methodBuilder.addLine("AttributesCopyCommand.add(" + s + ");");
buildPlan.addImport("de.steamwar.bausystem.features.world.BauScoreboard");
methodBuilder.addLine("BauScoreboard.addElement(" + s + ");");
}
}

Datei anzeigen

@ -1,40 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.linkage.types;
import de.steamwar.linkage.LinkageType;
import de.steamwar.linkage.plan.BuildPlan;
import de.steamwar.linkage.plan.MethodBuilder;
import javax.lang.model.element.TypeElement;
public class SmartPlaceBehaviour_GENERIC implements LinkageType {
@Override
public String method() {
return "linkSmartPlace";
}
@Override
public void generateCode(BuildPlan buildPlan, MethodBuilder methodBuilder, String s, TypeElement typeElement) {
buildPlan.addImport("de.steamwar.bausystem.features.smartplace.SmartPlaceListener");
methodBuilder.addLine("SmartPlaceListener.add(" + s + ");");
}
}

Datei anzeigen

@ -1,40 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.linkage.types;
import de.steamwar.linkage.LinkageType;
import de.steamwar.linkage.plan.BuildPlan;
import de.steamwar.linkage.plan.MethodBuilder;
import javax.lang.model.element.TypeElement;
public class SpecialCommand_GENERIC implements LinkageType {
@Override
public String method() {
return "linkScriptCommands";
}
@Override
public void generateCode(BuildPlan buildPlan, MethodBuilder methodBuilder, String s, TypeElement typeElement) {
buildPlan.addImport("de.steamwar.bausystem.features.script.ScriptExecutor");
methodBuilder.addLine("ScriptExecutor.SPECIAL_COMMANDS.add(" + s + ");");
}
}

Datei anzeigen

@ -27,8 +27,8 @@ version '1.0'
compileJava.options.encoding = 'UTF-8'
sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceCompatibility = 17
targetCompatibility = 17
sourceSets {
main {
@ -54,14 +54,16 @@ dependencies {
implementation project(":BauSystem_Linkage")
annotationProcessor project(":BauSystem_Linkage")
compileOnly 'org.spigotmc:spigot-api:1.19-R0.1-SNAPSHOT'
compileOnly 'org.spigotmc:spigot-api:1.20-R0.1-SNAPSHOT'
compileOnly 'com.mojang:authlib:1.5.25'
compileOnly 'io.netty:netty-all:4.1.68.Final'
compileOnly swdep('Spigot-1.19')
// compileOnly swdep('WorldEdit-1.15')
compileOnly swdep('Spigot-1.20')
compileOnly swdep('SpigotCore')
annotationProcessor swdep('SpigotCore')
compileOnly swdep('FastAsyncWorldEdit-1.18')
compileOnly swdep('AxiomPaper')
implementation 'org.luaj:luaj-jse:3.0.1'
}

Datei-Diff unterdrückt, da er zu groß ist Diff laden

Datei-Diff unterdrückt, da er zu groß ist Diff laden

Datei anzeigen

@ -21,37 +21,44 @@ package de.steamwar.bausystem;
import com.comphenix.tinyprotocol.TinyProtocol;
import de.steamwar.bausystem.configplayer.Config;
import de.steamwar.bausystem.features.tpslimit.TPSFreezeUtils;
import de.steamwar.bausystem.linkage.LinkageUtils;
import de.steamwar.bausystem.region.loader.PrototypeLoader;
import de.steamwar.bausystem.region.loader.RegionLoader;
import de.steamwar.bausystem.region.loader.Updater;
import de.steamwar.bausystem.utils.TickListener;
import de.steamwar.bausystem.worlddata.WorldData;
import de.steamwar.bausystem.linkage.LinkageUtils;
import de.steamwar.command.AbstractValidator;
import de.steamwar.command.SWCommandUtils;
import de.steamwar.message.Message;
import lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import java.util.logging.Level;
public class BauSystem extends JavaPlugin implements Listener {
// This should be treated as final!
public static Message MESSAGE;
public static final boolean DEV_SERVER = !System.getProperty("user.home").endsWith("minecraft");
@Getter
private static BauSystem instance;
private World world;
@Override
public void onEnable() {
world = Bukkit.getWorlds().get(0);
// LOGGER
fixLogging();
@ -66,30 +73,40 @@ public class BauSystem extends JavaPlugin implements Listener {
} catch (SecurityException e) {
Bukkit.getLogger().log(Level.SEVERE, e.getMessage(), e);
Bukkit.shutdown();
System.exit(1);
return;
}
new Updater(PrototypeLoader.file, PrototypeLoader::load);
new Updater(RegionLoader.file, RegionLoader::load);
LinkageUtils.link();
SWCommandUtils.addValidator(Player.class, validator(Permission.BUILD));
SWCommandUtils.addValidator(CommandSender.class, validator(Permission.BUILD));
SWCommandUtils.addValidator("supervisor", validator(Permission.SUPERVISOR));
SWCommandUtils.addValidator("owner", validator(Permission.OWNER));
// This could disable any watchdog stuff. We need to investigate if this is a problem.
/*
Thread thread = new Thread(() -> {
while (true) {
WatchdogThread.tick();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
try {
LinkageUtils.link();
} catch (Exception e) {
Bukkit.getLogger().log(Level.SEVERE, e.getMessage(), e);
Bukkit.shutdown();
System.exit(1);
return;
}
TickListener.impl.init();
}
private <T extends CommandSender> AbstractValidator<T, ?> validator(Permission permission) {
return (commandSender, object, messageSender) -> {
if (commandSender instanceof Player) {
if (permission.hasPermission((Player) commandSender)) {
return true;
}
messageSender.send("NO_PERMISSION");
return false;
}
});
thread.setName("WatchdogThread ticker");
thread.setDaemon(true);
thread.start();
*/
return true;
};
}
@Override
@ -122,18 +139,44 @@ public class BauSystem extends JavaPlugin implements Listener {
}));
}
private void createLink(String source, String destination) {
try {
Bukkit.getLogger().log(Level.INFO, "Executing: ln -s /home/minecraft/server/Bau15/{0} {1}", new String[]{source, destination});
ProcessBuilder processBuilder = new ProcessBuilder("ln", "-s", "/home/minecraft/server/Bau15/" + source, destination);
processBuilder.directory(world.getWorldFolder());
processBuilder.inheritIO();
public static BukkitTask runTaskLater(Plugin plugin, Runnable runnable, long delay) {
return new BukkitRunnable() {
private int counter = 1;
Process process = processBuilder.start();
process.waitFor();
} catch (IOException | InterruptedException e) {
Thread.currentThread().interrupt();
Bukkit.shutdown();
}
@Override
public void run() {
if (TPSFreezeUtils.isFrozen()) return;
if (counter >= delay) {
runnable.run();
cancel();
return;
}
counter++;
}
}.runTaskTimer(plugin, 0, 1);
}
public static BukkitTask runTaskTimer(Plugin plugin, Runnable runnable, long delay, long period) {
return new BukkitRunnable() {
private int counter = 1;
private boolean first = true;
@Override
public void run() {
if (TPSFreezeUtils.isFrozen()) return;
if (counter >= (first ? delay : period)) {
first = false;
runnable.run();
counter = 1;
return;
}
counter++;
}
}.runTaskTimer(plugin, 0, 1);
}
public static void runTaskTimer(Plugin plugin, Consumer<BukkitTask> consumer, long delay, long period) {
AtomicReference<BukkitTask> task = new AtomicReference<>();
task.set(runTaskTimer(plugin, () -> consumer.accept(task.get()), delay, period));
}
}

Datei anzeigen

@ -20,72 +20,77 @@
package de.steamwar.bausystem;
import de.steamwar.bausystem.config.BauServer;
import de.steamwar.command.CommandMetaData;
import de.steamwar.command.TypeValidator;
import de.steamwar.bausystem.features.world.BauMemberUpdate;
import de.steamwar.bausystem.utils.BauMemberUpdateEvent;
import de.steamwar.sql.BauweltMember;
import de.steamwar.sql.SteamwarUser;
import lombok.AllArgsConstructor;
import org.bukkit.command.CommandSender;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Predicate;
@AllArgsConstructor
public enum Permission {
WORLD(BauweltMember::isWorld),
WORLDEDIT(BauweltMember::isWorldEdit),
MEMBER(bauweltMember -> true),
OWNER(bauweltMember -> false);
OWNER(bauweltMember -> false),
SUPERVISOR(bauweltMember -> {
return bauweltMember.isSupervisor();
}),
BUILD(bauweltMember -> {
if (isTempOnlySpectator(bauweltMember)) return false;
return bauweltMember.isBuild() || SUPERVISOR.permissionPredicate.test(bauweltMember);
}),
/**
* Only used for {@link BauMemberUpdate}
*/
REAL_SPECTATOR(bauweltMember -> {
return !bauweltMember.isBuild() && !bauweltMember.isSupervisor();
}),
/**
* Primarily used for {@link de.steamwar.bausystem.linkage.specific.GuiItem}
*/
MEMBER(bauweltMember -> {
return true;
});
private static final Set<Integer> TEMP_ONLY_SPECTATOR = new HashSet<>();
private static boolean isTempOnlySpectator(BauweltMember bauweltMember) {
return TEMP_ONLY_SPECTATOR.contains(bauweltMember.getMemberID());
}
public static boolean isTempOnlySpectator(Player player) {
return TEMP_ONLY_SPECTATOR.contains(SteamwarUser.get(player.getUniqueId()).getId());
}
public static void forceOnlySpectator(Player player) {
TEMP_ONLY_SPECTATOR.add(SteamwarUser.get(player.getUniqueId()).getId());
BauMemberUpdate.baumemberUpdate();
}
/**
* Only used by {@link BauMemberUpdate}
*/
public static void removeForceOnlySpectator(Player player) {
TEMP_ONLY_SPECTATOR.remove(SteamwarUser.get(player.getUniqueId()).getId());
}
private final Predicate<BauweltMember> permissionPredicate;
public boolean hasPermission(BauweltMember bauweltMember) {
if (bauweltMember == null) return false;
return permissionPredicate.test(bauweltMember);
}
public boolean hasPermission(Player member) {
if (member.getUniqueId().equals(BauServer.getInstance().getOwner())) {
return true;
}
BauweltMember bauMember = BauweltMember.getBauMember(BauServer.getInstance().getOwner(), member.getUniqueId());
if (bauMember == null) {
return false;
}
return permissionPredicate.test(bauMember);
}
public static boolean hasPermission(Player member, Permission permission) {
return permission.hasPermission(member);
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
@CommandMetaData.Parameter({Player.class})
@CommandMetaData.ImplicitValidator(handler = Perm.Handler.class, order = -10)
public @interface Perm {
Permission value();
String message() default "";
class Handler implements TypeValidator<Player> {
private Permission permission;
private String message;
public Handler(Perm perm) {
this.permission = perm.value();
this.message = perm.message();
if (message != null && message.isEmpty()) message = null;
}
@Override
public boolean validate(CommandSender commandSender, Player player, MessageSender messageSender) {
if (message == null) {
return permission.hasPermission(player);
}
return !messageSender.send(!permission.hasPermission((Player) commandSender), message);
}
if (SteamwarUser.get(member.getUniqueId()).getId() == BauServer.getInstance().getOwnerID()) {
return this != REAL_SPECTATOR;
}
BauweltMember bauweltMember = BauweltMember.getBauMember(BauServer.getInstance().getOwner(), member.getUniqueId());
if (bauweltMember == null) return this == REAL_SPECTATOR;
return permissionPredicate.test(bauweltMember);
}
}

Datei anzeigen

@ -97,7 +97,7 @@ public class Config implements Listener {
public void saveAll() {
playerConfigurations.forEach((uuid, yapionObject) -> {
String string = yapionObject.toYAPION(new StringOutput()).getResult();
String string = yapionObject.toYAPION(new StringOutput()).getResult().replaceAll("\\+", "\\");
UserConfig.updatePlayerConfig(uuid, "bausystem", string);
});
playerConfigurations.clear();
@ -112,7 +112,7 @@ public class Config implements Listener {
UUID uuid = player.getUniqueId();
if (playerConfigurations.containsKey(uuid)) {
YAPIONObject yapionObject = playerConfigurations.get(uuid);
String string = yapionObject.toYAPION(new StringOutput()).getResult();
String string = yapionObject.toYAPION(new StringOutput()).getResult().replaceAll("\\\\+", "\\\\");
UserConfig.updatePlayerConfig(uuid, "bausystem", string);
}
}

Datei anzeigen

@ -36,7 +36,6 @@ import java.util.List;
import java.util.stream.Collectors;
@Linked
@MinVersion(18)
public class AttributeRemoveCommand extends SWCommand {
public AttributeRemoveCommand() {
@ -45,7 +44,7 @@ public class AttributeRemoveCommand extends SWCommand {
@Register({"all"})
@Register({"*"})
public void genericCommand(Player player) {
public void genericCommand(@Validator Player player) {
ItemStack itemStack = player.getInventory().getItemInMainHand();
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setLore(new ArrayList<>());
@ -54,7 +53,7 @@ public class AttributeRemoveCommand extends SWCommand {
}
@Register(description = "ATTRIBUTE_REMOVE_COMMAND_HELP")
public void genericCommand(Player player, @Mapper("attribute") String attribute) {
public void genericCommand(@Validator Player player, @Mapper("attribute") String attribute) {
ItemStack itemStack = player.getInventory().getItemInMainHand();
ItemMeta itemMeta = itemStack.getItemMeta();
if (itemMeta == null) {
@ -74,7 +73,7 @@ public class AttributeRemoveCommand extends SWCommand {
BauSystem.MESSAGE.send("ATTRIBUTE_REMOVE_NOT_FOUND", player);
return;
}
lore.removeIf(s -> s.equals("§8-§7 " + attribute));
lore.removeIf(s -> s.startsWith("§8-§7 " + attribute + "§8:"));
if (lore.size() == 1) {
itemStack.setItemMeta(null);
} else {
@ -100,13 +99,13 @@ public class AttributeRemoveCommand extends SWCommand {
return lore.stream()
.skip(1)
.map(s1 -> s1.substring(6))
.map(s1 -> s1.replace(' ', '_'))
.map(s1 -> s1.substring(0, s1.indexOf("§8:")))
.collect(Collectors.toList());
}
@Override
public String map(CommandSender commandSender, PreviousArguments previousArguments, String s) {
return s.replace('_', ' ');
return s;
}
};
}

Datei anzeigen

@ -0,0 +1,128 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2023 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy;
import lombok.experimental.UtilityClass;
import org.bukkit.block.data.BlockData;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@UtilityClass
public class AttributeUtils {
private Map<Method, String> names = new HashMap<>();
private Map<Class<?>, List<Method>> getters = new HashMap<>();
private Map<Class<?>, Map<String, Method>> setters = new HashMap<>();
private void generate(BlockData blockData) {
Class<? extends BlockData> clazz = blockData.getClass();
if (getters.containsKey(clazz) && setters.containsKey(clazz)) return;
Map<String, List<Method>> methods = new HashMap<>();
for (Method declaredMethod : clazz.getMethods()) {
String s = declaredMethod.getName();
if (s.startsWith("get") && declaredMethod.getParameterCount() == 0) {
methods.computeIfAbsent(s.substring(3), aClass -> new ArrayList<>()).add(declaredMethod);
} else if (s.startsWith("is") && declaredMethod.getParameterCount() == 0) {
methods.computeIfAbsent(s.substring(2), aClass -> new ArrayList<>()).add(declaredMethod);
} else if (s.startsWith("set") && declaredMethod.getParameterCount() == 1) {
methods.computeIfAbsent(s.substring(3), aClass -> new ArrayList<>()).add(declaredMethod);
}
}
for (Map.Entry<String, List<Method>> entry : methods.entrySet()) {
if (entry.getValue().size() != 2) continue;
for (Method method : entry.getValue()) {
names.put(method, entry.getKey());
if (method.getName().startsWith("is") || method.getName().startsWith("get")) {
getters.computeIfAbsent(clazz, aClass -> new ArrayList<>()).add(method);
} else {
setters.computeIfAbsent(clazz, aClass -> new HashMap<>()).put(entry.getKey(), method);
}
}
}
}
public void copy(BlockData blockData, List<String> attributes) {
generate(blockData);
getters.getOrDefault(blockData.getClass(), new ArrayList<>()).forEach(method -> {
try {
Object invoke = method.invoke(blockData);
if (invoke != null) {
attributes.add("§8-§7 " + names.get(method) + "§8:§7 " + convert(invoke));
}
} catch (Exception e) {
// ignore
}
});
}
public void paste(BlockData blockData, List<String> attributes) {
generate(blockData);
for (String attribute : attributes) {
String[] split = attribute.split("§8:§7 ");
if (split.length != 2) continue;
String name = split[0].substring(6);
String value = split[1];
Method method = setters.getOrDefault(blockData.getClass(), new HashMap<>()).get(name);
if (method == null) continue;
try {
method.invoke(blockData, convert(value, method.getParameterTypes()[0]));
} catch (Exception e) {
// ignore
}
}
}
private String convert(Object o) {
if (o.getClass().isEnum()) {
return ((Enum<?>) o).name();
} else {
return o.toString();
}
}
private Object convert(String s, Class<?> type) {
if (type.isEnum()) {
return Enum.valueOf((Class<? extends Enum>) type, s);
} else if (type == int.class || type == Integer.class) {
return Integer.parseInt(s);
} else if (type == double.class || type == Double.class) {
return Double.parseDouble(s);
} else if (type == float.class || type == Float.class) {
return Float.parseFloat(s);
} else if (type == long.class || type == Long.class) {
return Long.parseLong(s);
} else if (type == short.class || type == Short.class) {
return Short.parseShort(s);
} else if (type == byte.class || type == Byte.class) {
return Byte.parseByte(s);
} else if (type == boolean.class || type == Boolean.class) {
return Boolean.parseBoolean(s);
} else {
return s;
}
}
}

Datei anzeigen

@ -20,10 +20,8 @@
package de.steamwar.bausystem.features.attributescopy;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.linkage.LinkageUtils;
import de.steamwar.command.SWCommand;
import de.steamwar.linkage.Linked;
import de.steamwar.linkage.MinVersion;
import org.bukkit.FluidCollisionMode;
import org.bukkit.Material;
import org.bukkit.block.Block;
@ -36,40 +34,29 @@ import java.util.ArrayList;
import java.util.List;
@Linked
@MinVersion(18)
public class AttributesCopyCommand extends SWCommand {
static List<BlockAttribute<?>> blockAttributeList = new ArrayList<>();
public static void add(BlockAttribute<?> blockAttribute) {
blockAttributeList.add(blockAttribute);
}
public AttributesCopyCommand() {
super("copyattributes", "attributescopy", "ac");
}
@Register
public void genericCommand(Player player) {
linkIfNeeded();
public void genericCommand(@Validator Player player) {
Block block = player.getTargetBlockExact(8, FluidCollisionMode.ALWAYS);
if (block == null) return;
ItemStack mainHand = player.getInventory().getItemInMainHand();
if (!isSame(block, mainHand)) {
if (!(block.getType().isItem() && block.getType() == mainHand.getType() || isSame(block, mainHand))) {
BauSystem.MESSAGE.send("ATTRIBUTES_CANT_COPY", player);
return;
}
BlockData blockData = block.getBlockData();
List<String> attributesToCopy = new ArrayList<>();
if (needsType(block)) {
attributesToCopy.add("§8-§7 material " + block.getType().name().toLowerCase());
}
for (BlockAttribute blockAttribute : blockAttributeList) {
if (blockAttribute.type().isInstance(blockData)) {
blockAttribute.copy(attributesToCopy, blockData);
}
if (block.getType() != mainHand.getType()) {
attributesToCopy.add("§8-§7 Material§8:§7 " + block.getType().name());
}
AttributeUtils.copy(blockData, attributesToCopy);
if (attributesToCopy.isEmpty()) {
BauSystem.MESSAGE.send("ATTRIBUTES_NO_COPY", player);
return;
@ -83,15 +70,7 @@ public class AttributesCopyCommand extends SWCommand {
BauSystem.MESSAGE.send("ATTRIBUTES_COPIED", player);
}
private static boolean isLinked = false;
static void linkIfNeeded() {
if (isLinked) return;
LinkageUtils.linkBlockAttributes();
isLinked = true;
}
private boolean isSame(Block block, ItemStack itemStack) {
if (block.getType() == itemStack.getType()) return true;
if (itemStack.getType() == Material.REDSTONE && block.getType() == Material.REDSTONE_WIRE) return true;
if (itemStack.getType() == Material.PLAYER_HEAD && block.getType() == Material.PLAYER_WALL_HEAD) return true;
if (itemStack.getType() == Material.ZOMBIE_HEAD && block.getType() == Material.ZOMBIE_WALL_HEAD) return true;
@ -102,22 +81,8 @@ public class AttributesCopyCommand extends SWCommand {
if (itemStack.getType() == Material.TORCH && block.getType() == Material.WALL_TORCH) return true;
if (itemStack.getType() == Material.SOUL_TORCH && block.getType() == Material.SOUL_WALL_TORCH) return true;
if (itemStack.getType() == Material.REDSTONE_TORCH && block.getType() == Material.REDSTONE_WALL_TORCH) return true;
if (itemStack.getType() == Material.WHEAT_SEEDS && block.getType() == Material.WHEAT) return true;
if (itemStack.getType().name().contains("_BANNER") && block.getType().name().contains("_WALL_BANNER")) return true;
return false;
}
private boolean needsType(Block block) {
if (block.getType().name().contains("WALL")) return true;
if (block.getType() == Material.PLAYER_HEAD) return true;
if (block.getType() == Material.ZOMBIE_HEAD) return true;
if (block.getType() == Material.CREEPER_HEAD) return true;
if (block.getType() == Material.DRAGON_HEAD) return true;
if (block.getType() == Material.SKELETON_SKULL) return true;
if (block.getType() == Material.WITHER_SKELETON_SKULL) return true;
if (block.getType() == Material.TORCH) return true;
if (block.getType() == Material.SOUL_TORCH) return true;
if (block.getType() == Material.REDSTONE_TORCH) return true;
if (block.getType().name().contains("_BANNER")) return true;
return false;
}
}

Datei anzeigen

@ -20,8 +20,8 @@
package de.steamwar.bausystem.features.attributescopy;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.linkage.Linked;
import de.steamwar.linkage.MinVersion;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
@ -33,21 +33,15 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.profile.PlayerProfile;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static de.steamwar.bausystem.features.attributescopy.AttributesCopyCommand.blockAttributeList;
@Linked
@MinVersion(18)
public class AttributesPlaceListener implements Listener {
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
AttributesCopyCommand.linkIfNeeded();
if(!Permission.BUILD.hasPermission(event.getPlayer())) return;
ItemStack itemStack = event.getItemInHand();
ItemMeta itemMeta = itemStack.getItemMeta();
if (itemMeta == null) return;
@ -65,12 +59,12 @@ public class AttributesPlaceListener implements Listener {
event.setCancelled(true);
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
Material material = strings.stream()
.filter(s -> s.startsWith("§8-§7 material "))
.map(s -> s.replace("§8-§7 material ", ""))
.filter(s -> s.startsWith("§8-§7 Material§8:§7 "))
.map(s -> s.replace("§8-§7 Material§8:§7 ", ""))
.map(String::toUpperCase)
.map(s -> {
try {
return Material.valueOf(s.toUpperCase());
return Material.valueOf(s);
} catch (Exception e) {
return null;
}
@ -78,7 +72,6 @@ public class AttributesPlaceListener implements Listener {
.findFirst()
.orElse(type);
event.getBlock().setType(material, false);
Set<String> attributesToPaste = new HashSet<>(strings);
Block block = event.getBlock();
BlockData blockData = block.getBlockData();
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
@ -88,11 +81,7 @@ public class AttributesPlaceListener implements Listener {
skull.update(true, false);
}
}, 1);
for (BlockAttribute blockAttribute : blockAttributeList) {
if (blockAttribute.type().isInstance(blockData)) {
blockAttribute.paste(attributesToPaste, blockData);
}
}
AttributeUtils.paste(blockData, strings);
block.setBlockData(blockData, false);
}, 1);
}

Datei anzeigen

@ -1,31 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy;
import org.bukkit.block.data.BlockData;
import java.util.List;
import java.util.Set;
public interface BlockAttribute<T extends BlockData> {
Class<T> type();
void copy(List<String> attributes, T blockData);
void paste(Set<String> attributes, T blockData);
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.Ageable;
import java.util.List;
import java.util.Set;
@Linked
public class AgeableAttribute implements BlockAttribute<Ageable> {
private String attribute = "§8-§7 age ";
@Override
public Class<Ageable> type() {
return Ageable.class;
}
@Override
public void copy(List<String> attributes, Ageable blockData) {
attributes.add(attribute + blockData.getAge());
}
@Override
public void paste(Set<String> attributes, Ageable blockData) {
attributes.stream()
.filter(s -> s.startsWith(attribute))
.map(s -> s.replace(attribute, ""))
.map(Integer::parseInt)
.findFirst()
.ifPresent(blockData::setAge);
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.AnaloguePowerable;
import java.util.List;
import java.util.Set;
@Linked
public class AnaloguePowerableAttribute implements BlockAttribute<AnaloguePowerable> {
private String attribute = "§8-§7 power ";
@Override
public Class<AnaloguePowerable> type() {
return AnaloguePowerable.class;
}
@Override
public void copy(List<String> attributes, AnaloguePowerable blockData) {
attributes.add(attribute + blockData.getPower());
}
@Override
public void paste(Set<String> attributes, AnaloguePowerable blockData) {
attributes.stream()
.filter(s -> s.startsWith(attribute))
.map(s -> s.replace(attribute, ""))
.map(Integer::parseInt)
.findFirst()
.ifPresent(blockData::setPower);
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.Attachable;
import java.util.List;
import java.util.Set;
@Linked
public class AttachableAttribute implements BlockAttribute<Attachable> {
private String attribute = "§8-§7 attached";
@Override
public Class<Attachable> type() {
return Attachable.class;
}
@Override
public void copy(List<String> attributes, Attachable blockData) {
if (blockData.isAttached()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Attachable blockData) {
blockData.setAttached(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.Bisected;
import java.util.List;
import java.util.Set;
@Linked
public class BisectedAttribute implements BlockAttribute<Bisected> {
private String attribute = "§8-§7 half ";
@Override
public Class<Bisected> type() {
return Bisected.class;
}
@Override
public void copy(List<String> attributes, Bisected blockData) {
attributes.add(attribute + blockData.getHalf().name().toLowerCase());
}
@Override
public void paste(Set<String> attributes, Bisected blockData) {
for (Bisected.Half half : Bisected.Half.values()) {
if (attributes.contains(attribute + half.name().toLowerCase())) {
blockData.setHalf(half);
return;
}
}
}
}

Datei anzeigen

@ -1,54 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.Directional;
import java.util.List;
import java.util.Set;
@Linked
public class DirectionalAttribute implements BlockAttribute<Directional> {
private String attribute = "§8-§7 facing ";
@Override
public Class<Directional> type() {
return Directional.class;
}
@Override
public void copy(List<String> attributes, Directional blockData) {
attributes.add(attribute + blockData.getFacing().name().toLowerCase());
}
@Override
public void paste(Set<String> attributes, Directional blockData) {
for (BlockFace blockFace : blockData.getFaces()) {
if (attributes.contains(attribute + blockFace.name().toLowerCase())) {
blockData.setFacing(blockFace);
break;
}
}
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.FaceAttachable;
import java.util.List;
import java.util.Set;
@Linked
public class FaceAttachableAttribute implements BlockAttribute<FaceAttachable> {
private String attribute = "§8-§7 attached ";
@Override
public Class<FaceAttachable> type() {
return FaceAttachable.class;
}
@Override
public void copy(List<String> attributes, FaceAttachable blockData) {
attributes.add(attribute + blockData.getAttachedFace().name().toLowerCase());
}
@Override
public void paste(Set<String> attributes, FaceAttachable blockData) {
for (FaceAttachable.AttachedFace attachedFace : FaceAttachable.AttachedFace.values()) {
if (attributes.contains(attribute + attachedFace.name().toLowerCase())) {
blockData.setAttachedFace(attachedFace);
break;
}
}
}
}

Datei anzeigen

@ -1,51 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import de.steamwar.linkage.MinVersion;
import org.bukkit.block.data.Hangable;
import java.util.List;
import java.util.Set;
@Linked
@MinVersion(19)
public class HangableAttribute implements BlockAttribute<Hangable> {
private String attribute = "§8-§7 hanging";
@Override
public Class<Hangable> type() {
return Hangable.class;
}
@Override
public void copy(List<String> attributes, Hangable blockData) {
if (!blockData.isHanging()) return;
attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Hangable blockData) {
blockData.setHanging(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.Levelled;
import java.util.List;
import java.util.Set;
@Linked
public class LevelledAttribute implements BlockAttribute<Levelled> {
private String attribute = "§8-§7 level ";
@Override
public Class<Levelled> type() {
return Levelled.class;
}
@Override
public void copy(List<String> attributes, Levelled blockData) {
attributes.add(attribute + blockData.getLevel());
}
@Override
public void paste(Set<String> attributes, Levelled blockData) {
attributes.stream()
.filter(s -> s.startsWith(attribute))
.map(s -> s.replace(attribute, ""))
.map(Integer::parseInt)
.findFirst()
.ifPresent(blockData::setLevel);
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.MultipleFacing;
import java.util.List;
import java.util.Set;
@Linked
public class MultipleFacingAttribute implements BlockAttribute<MultipleFacing> {
private String attribute = "§8-§7 connected ";
@Override
public Class<MultipleFacing> type() {
return MultipleFacing.class;
}
@Override
public void copy(List<String> attributes, MultipleFacing blockData) {
blockData.getFaces().forEach(blockFace -> {
attributes.add(attribute + blockFace.name().toLowerCase());
});
}
@Override
public void paste(Set<String> attributes, MultipleFacing blockData) {
for (BlockFace blockFace : BlockFace.values()) {
blockData.setFace(blockFace, attributes.contains(attribute + blockFace.name().toLowerCase()));
}
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.Openable;
import java.util.List;
import java.util.Set;
@Linked
public class OpenableAttribute implements BlockAttribute<Openable> {
private String attribute = "§8-§7 open";
@Override
public Class<Openable> type() {
return Openable.class;
}
@Override
public void copy(List<String> attributes, Openable blockData) {
if (blockData.isOpen()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Openable blockData) {
blockData.setOpen(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,54 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.Axis;
import org.bukkit.block.data.Orientable;
import java.util.List;
import java.util.Set;
@Linked
public class OrientableAttribute implements BlockAttribute<Orientable> {
private String attribute = "§8-§7 orientation ";
@Override
public Class<Orientable> type() {
return Orientable.class;
}
@Override
public void copy(List<String> attributes, Orientable blockData) {
attributes.add(attribute + blockData.getAxis().name().toLowerCase());
}
@Override
public void paste(Set<String> attributes, Orientable blockData) {
for (Axis axis : Axis.values()) {
if (attributes.contains(attribute + axis.name().toLowerCase())) {
blockData.setAxis(axis);
return;
}
}
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.Powerable;
import java.util.List;
import java.util.Set;
@Linked
public class PowerableAttribute implements BlockAttribute<Powerable> {
private String attribute = "§8-§7 powered";
@Override
public Class<Powerable> type() {
return Powerable.class;
}
@Override
public void copy(List<String> attributes, Powerable blockData) {
if (blockData.isPowered()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Powerable blockData) {
blockData.setPowered(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.Rail;
import java.util.List;
import java.util.Set;
@Linked
public class RailAttribute implements BlockAttribute<Rail> {
private String attribute = "§8-§7 rail shape ";
@Override
public Class<Rail> type() {
return Rail.class;
}
@Override
public void copy(List<String> attributes, Rail blockData) {
attributes.add(attribute + blockData.getShape().name().toLowerCase());
}
@Override
public void paste(Set<String> attributes, Rail blockData) {
for (Rail.Shape shape : Rail.Shape.values()) {
if (attributes.contains(attribute + shape)) {
blockData.setShape(shape);
return;
}
}
}
}

Datei anzeigen

@ -1,54 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.Rotatable;
import java.util.List;
import java.util.Set;
@Linked
public class RotatableAttribute implements BlockAttribute<Rotatable> {
private String attribute = "§8-§7 rotation ";
@Override
public Class<Rotatable> type() {
return Rotatable.class;
}
@Override
public void copy(List<String> attributes, Rotatable blockData) {
attributes.add(attribute + blockData.getRotation().name());
}
@Override
public void paste(Set<String> attributes, Rotatable blockData) {
for (BlockFace face : BlockFace.values()) {
if (attributes.contains(attribute + face.name())) {
blockData.setRotation(face);
return;
}
}
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.Snowable;
import java.util.List;
import java.util.Set;
@Linked
public class SnowableAttribute implements BlockAttribute<Snowable> {
private String attribute = "§8-§7 snowy";
@Override
public Class<Snowable> type() {
return Snowable.class;
}
@Override
public void copy(List<String> attributes, Snowable blockData) {
if (blockData.isSnowy()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Snowable blockData) {
blockData.setSnowy(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,49 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.Waterlogged;
import java.util.List;
import java.util.Set;
@Linked
public class WaterloggedAttribute implements BlockAttribute<Waterlogged> {
private String attribute = "§8-§7 waterlogged";
@Override
public Class<Waterlogged> type() {
return Waterlogged.class;
}
@Override
public void copy(List<String> attributes, Waterlogged waterlogged) {
if (!waterlogged.isWaterlogged()) return;
attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Waterlogged waterlogged) {
waterlogged.setWaterlogged(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Bamboo;
import java.util.List;
import java.util.Set;
@Linked
public class BambooAttribute implements BlockAttribute<Bamboo> {
private String attribute = "§8-§7 leaves ";
@Override
public Class<Bamboo> type() {
return Bamboo.class;
}
@Override
public void copy(List<String> attributes, Bamboo blockData) {
attributes.add(attribute + blockData.getLeaves());
}
@Override
public void paste(Set<String> attributes, Bamboo blockData) {
for (Bamboo.Leaves leaves : Bamboo.Leaves.values()) {
if (attributes.contains(attribute + leaves)) {
blockData.setLeaves(leaves);
return;
}
}
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Bell;
import java.util.List;
import java.util.Set;
@Linked
public class BellAttribute implements BlockAttribute<Bell> {
private String attribute = "§8-§7 attachament ";
@Override
public Class<Bell> type() {
return Bell.class;
}
@Override
public void copy(List<String> attributes, Bell blockData) {
attributes.add(attribute + blockData.getAttachment());
}
@Override
public void paste(Set<String> attributes, Bell blockData) {
for (Bell.Attachment attachment : Bell.Attachment.values()) {
if (attributes.contains(attribute + attachment)) {
blockData.setAttachment(attachment);
return;
}
}
}
}

Datei anzeigen

@ -1,55 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import de.steamwar.linkage.MinVersion;
import org.bukkit.block.data.type.BigDripleaf;
import java.util.List;
import java.util.Set;
@Linked
@MinVersion(18)
public class BigDripleafAttribute implements BlockAttribute<BigDripleaf> {
private String attribute = "§8-§7 tilt ";
@Override
public Class<BigDripleaf> type() {
return BigDripleaf.class;
}
@Override
public void copy(List<String> attributes, BigDripleaf blockData) {
attributes.add(attribute + blockData.getTilt());
}
@Override
public void paste(Set<String> attributes, BigDripleaf blockData) {
for (BigDripleaf.Tilt tilt : BigDripleaf.Tilt.values()) {
if (attributes.contains(attribute + tilt)) {
blockData.setTilt(tilt);
return;
}
}
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Cake;
import java.util.List;
import java.util.Set;
@Linked
public class CakeAttribute implements BlockAttribute<Cake> {
private String attribute = "§8-§7 bites ";
@Override
public Class<Cake> type() {
return Cake.class;
}
@Override
public void copy(List<String> attributes, Cake blockData) {
attributes.add(attribute + blockData.getBites());
}
@Override
public void paste(Set<String> attributes, Cake blockData) {
attributes.stream()
.filter(s -> s.startsWith(attribute))
.map(s -> s.replace(attribute, ""))
.map(Integer::parseInt)
.findFirst()
.ifPresent(blockData::setBites);
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Campfire;
import java.util.List;
import java.util.Set;
@Linked
public class CampfireAttribute implements BlockAttribute<Campfire> {
private String attribute = "§8-§7 signal fire";
@Override
public Class<Campfire> type() {
return Campfire.class;
}
@Override
public void copy(List<String> attributes, Campfire blockData) {
if (blockData.isSignalFire()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Campfire blockData) {
blockData.setSignalFire(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Candle;
import java.util.List;
import java.util.Set;
@Linked
public class CandleAttribute implements BlockAttribute<Candle> {
private String attribute = "§8-§7 candles ";
@Override
public Class<Candle> type() {
return Candle.class;
}
@Override
public void copy(List<String> attributes, Candle blockData) {
if (blockData.getCandles() > 0) attributes.add(attribute + blockData.getCandles());
}
@Override
public void paste(Set<String> attributes, Candle blockData) {
attributes.stream()
.filter(s -> s.startsWith(attribute))
.map(s -> s.replace(attribute, ""))
.map(Integer::parseInt)
.findFirst()
.ifPresent(blockData::setCandles);
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.CaveVinesPlant;
import java.util.List;
import java.util.Set;
@Linked
public class CaveVinesPlantAttribute implements BlockAttribute<CaveVinesPlant> {
private String attribute = "§8-§7 berries";
@Override
public Class<CaveVinesPlant> type() {
return CaveVinesPlant.class;
}
@Override
public void copy(List<String> attributes, CaveVinesPlant blockData) {
if (blockData.isBerries()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, CaveVinesPlant blockData) {
blockData.setBerries(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Comparator;
import java.util.List;
import java.util.Set;
@Linked
public class ComparatorAttribute implements BlockAttribute<Comparator> {
private String attribute = "§8-§7 mode ";
@Override
public Class<Comparator> type() {
return Comparator.class;
}
@Override
public void copy(List<String> attributes, Comparator blockData) {
attributes.add(attribute + blockData.getMode().name());
}
@Override
public void paste(Set<String> attributes, Comparator blockData) {
for (Comparator.Mode mode : Comparator.Mode.values()) {
if (attributes.contains(attribute + mode.name())) {
blockData.setMode(mode);
return;
}
}
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.DaylightDetector;
import java.util.List;
import java.util.Set;
@Linked
public class DaylightDetectorAttribute implements BlockAttribute<DaylightDetector> {
private String attribute = "§8-§7 inverted";
@Override
public Class<DaylightDetector> type() {
return DaylightDetector.class;
}
@Override
public void copy(List<String> attributes, DaylightDetector blockData) {
if (blockData.isInverted()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, DaylightDetector blockData) {
blockData.setInverted(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Door;
import java.util.List;
import java.util.Set;
@Linked
public class DoorAttribute implements BlockAttribute<Door> {
private String attribute = "§8-§7 hinge ";
@Override
public Class<Door> type() {
return Door.class;
}
@Override
public void copy(List<String> attributes, Door blockData) {
attributes.add(attribute + blockData.getHinge().toString().toLowerCase());
}
@Override
public void paste(Set<String> attributes, Door blockData) {
for (Door.Hinge hinge : Door.Hinge.values()) {
if (attributes.contains(attribute + hinge.toString().toLowerCase())) {
blockData.setHinge(hinge);
break;
}
}
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.EndPortalFrame;
import java.util.List;
import java.util.Set;
@Linked
public class EndPortalFrameAttribute implements BlockAttribute<EndPortalFrame> {
private String attribute = "§8-§7 eye";
@Override
public Class<EndPortalFrame> type() {
return EndPortalFrame.class;
}
@Override
public void copy(List<String> attributes, EndPortalFrame blockData) {
if (blockData.hasEye()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, EndPortalFrame blockData) {
blockData.setEye(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Farmland;
import java.util.List;
import java.util.Set;
@Linked
public class FarmlandAttribute implements BlockAttribute<Farmland> {
private String attribute = "§8-§7 moisture ";
@Override
public Class<Farmland> type() {
return Farmland.class;
}
@Override
public void copy(List<String> attributes, Farmland blockData) {
attributes.add(attribute + blockData.getMoisture());
}
@Override
public void paste(Set<String> attributes, Farmland blockData) {
attributes.stream()
.filter(s -> s.startsWith(attribute))
.map(s -> s.replace(attribute, ""))
.map(Integer::parseInt)
.findFirst()
.ifPresent(blockData::setMoisture);
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Gate;
import java.util.List;
import java.util.Set;
@Linked
public class GateAttribute implements BlockAttribute<Gate> {
private String attribute = "§8-§7 inWall";
@Override
public Class<Gate> type() {
return Gate.class;
}
@Override
public void copy(List<String> attributes, Gate blockData) {
if (blockData.isInWall()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Gate blockData) {
blockData.setInWall(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Hopper;
import java.util.List;
import java.util.Set;
@Linked
public class HopperAttribute implements BlockAttribute<Hopper> {
private String attribute = "§8-§7 enabled";
@Override
public Class<Hopper> type() {
return Hopper.class;
}
@Override
public void copy(List<String> attributes, Hopper blockData) {
if (blockData.isEnabled()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Hopper blockData) {
blockData.setEnabled(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Jigsaw;
import java.util.List;
import java.util.Set;
@Linked
public class JigsawAttribute implements BlockAttribute<Jigsaw> {
private String attribute = "§8-§7 orientation ";
@Override
public Class<Jigsaw> type() {
return Jigsaw.class;
}
@Override
public void copy(List<String> attributes, Jigsaw blockData) {
attributes.add(attribute + blockData.getOrientation());
}
@Override
public void paste(Set<String> attributes, Jigsaw blockData) {
for (Jigsaw.Orientation orientation : Jigsaw.Orientation.values()) {
if (attributes.contains(attribute + orientation)) {
blockData.setOrientation(orientation);
return;
}
}
}
}

Datei anzeigen

@ -1,49 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Lantern;
import java.util.List;
import java.util.Set;
@Linked
public class LanternAttribute implements BlockAttribute<Lantern> {
private String attribute = "§8-§7 lantern";
@Override
public Class<Lantern> type() {
return Lantern.class;
}
@Override
public void copy(List<String> attributes, Lantern lantern) {
if (!lantern.isHanging()) return;
attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Lantern lantern) {
lantern.setHanging(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,48 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Leaves;
import java.util.List;
import java.util.Set;
@Linked
public class LeavesAttribute implements BlockAttribute<Leaves> {
private String attribute = "§8-§7 persistent";
@Override
public Class<Leaves> type() {
return Leaves.class;
}
@Override
public void copy(List<String> attributes, Leaves blockData) {
if (blockData.isPersistent()) attributes.add(attribute);
}
@Override
public void paste(Set<String> attributes, Leaves blockData) {
blockData.setPersistent(attributes.contains(attribute));
}
}

Datei anzeigen

@ -1,62 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.type.PointedDripstone;
import java.util.List;
import java.util.Set;
@Linked
public class PointedDripstoneAttribute implements BlockAttribute<PointedDripstone> {
private String attribute1 = "§8-§7 vertialDirection ";
private String attribute2 = "§8-§7 thickness ";
@Override
public Class<PointedDripstone> type() {
return PointedDripstone.class;
}
@Override
public void copy(List<String> attributes, PointedDripstone blockData) {
attributes.add(attribute1 + " " + blockData.getVerticalDirection().name().toLowerCase());
attributes.add(attribute2 + " " + blockData.getThickness().name().toLowerCase());
}
@Override
public void paste(Set<String> attributes, PointedDripstone blockData) {
for (BlockFace blockFace : blockData.getVerticalDirections()) {
if (attributes.contains(attribute1 + " " + blockFace.name().toLowerCase())) {
blockData.setVerticalDirection(blockFace);
break;
}
}
for (PointedDripstone.Thickness thickness : PointedDripstone.Thickness.values()) {
if (attributes.contains(attribute2 + " " + thickness.name().toLowerCase())) {
blockData.setThickness(thickness);
break;
}
}
}
}

Datei anzeigen

@ -1,57 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.type.RedstoneWire;
import java.util.List;
import java.util.Set;
@Linked
public class RedstoneWireAttribute implements BlockAttribute<RedstoneWire> {
private String attribute = "§8-§7 connection ";
@Override
public Class<RedstoneWire> type() {
return RedstoneWire.class;
}
@Override
public void copy(List<String> attributes, RedstoneWire blockData) {
for (BlockFace blockFace : blockData.getAllowedFaces()) {
attributes.add(attribute + blockFace.name().toLowerCase() + " " + blockData.getFace(blockFace).name().toLowerCase());
}
}
@Override
public void paste(Set<String> attributes, RedstoneWire blockData) {
for (BlockFace blockFace : blockData.getAllowedFaces()) {
for (RedstoneWire.Connection connection : RedstoneWire.Connection.values()) {
if (attributes.contains(attribute + blockFace.name().toLowerCase() + " " + connection.name().toLowerCase())) {
blockData.setFace(blockFace, connection);
}
}
}
}
}

Datei anzeigen

@ -1,56 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Repeater;
import java.util.List;
import java.util.Set;
@Linked
public class RepeaterAttribute implements BlockAttribute<Repeater> {
private String attribute1 = "§8-§7 delay ";
private String attribute2 = "§8-§7 locked";
@Override
public Class<Repeater> type() {
return Repeater.class;
}
@Override
public void copy(List<String> attributes, Repeater blockData) {
attributes.add(attribute1 + blockData.getDelay());
if (blockData.isLocked()) attributes.add(attribute2);
}
@Override
public void paste(Set<String> attributes, Repeater blockData) {
attributes.stream()
.filter(s -> s.startsWith(attribute1))
.map(s -> s.replace(attribute1, ""))
.map(Integer::parseInt)
.findFirst()
.ifPresent(blockData::setDelay);
blockData.setLocked(attributes.contains(attribute2));
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.RespawnAnchor;
import java.util.List;
import java.util.Set;
@Linked
public class RespawnAnchorAttribute implements BlockAttribute<RespawnAnchor> {
private String attribute = "§8-§7 charges ";
@Override
public Class<RespawnAnchor> type() {
return RespawnAnchor.class;
}
@Override
public void copy(List<String> attributes, RespawnAnchor blockData) {
attributes.add(attribute + blockData.getCharges());
}
@Override
public void paste(Set<String> attributes, RespawnAnchor blockData) {
attributes.stream()
.filter(s -> s.startsWith(attribute))
.map(s -> s.replace(attribute, ""))
.map(Integer::parseInt)
.findFirst()
.ifPresent(blockData::setCharges);
}
}

Datei anzeigen

@ -1,53 +0,0 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2022 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.attributescopy.impl.type;
import de.steamwar.bausystem.features.attributescopy.BlockAttribute;
import de.steamwar.linkage.Linked;
import org.bukkit.block.data.type.Sapling;
import java.util.List;
import java.util.Set;
@Linked
public class SaplingAttribute implements BlockAttribute<Sapling> {
private String attribute = "§8-§7 stage ";
@Override
public Class<Sapling> type() {
return Sapling.class;
}
@Override
public void copy(List<String> attributes, Sapling blockData) {
attributes.add(attribute + blockData.getStage());
}
@Override
public void paste(Set<String> attributes, Sapling blockData) {
attributes.stream()
.filter(s -> s.startsWith(attribute))
.map(s -> s.replace(attribute, ""))
.map(Integer::parseInt)
.findFirst()
.ifPresent(blockData::setStage);
}
}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden Mehr anzeigen