SteamWar/BauSystem2.0
Archiviert
12
0

Commits vergleichen

..

1188 Commits

Autor SHA1 Nachricht Datum
yoyosource
47d5f29ae6 Fix SmartPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-08-03 22:28:04 +02:00
yoyosource
552a1ea7fc Add SmartPlaceListener for Block under Repeater
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-07-18 20:00:33 +02:00
yoyosource
d77e8e829e Fix BauSystem.properties
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-07-17 14:39:42 +02:00
yoyosource
bd06bce3dc Fix NoGravityListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-07-17 14:25:01 +02:00
yoyosource
76ecc8e6e4 Add NoGravityCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-07-17 14:22:43 +02:00
yoyosource
820e7fcbb2 Add NoGravityCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-07-17 14:19:19 +02:00
yoyosource
94958de2da Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-07-17 14:04:03 +02:00
yoyosource
2214b7dc3d Fix ClipboardListener 2024-07-17 14:03:55 +02:00
75e6b28e0e Trigger Rebuild
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-07-17 07:45:51 +02:00
a1dd919afa Merge pull request 'Added debug message for trace history map nullpointer and potential fix' (#257) from fix-trace-history-nullpointer into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #257
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-07-16 22:38:04 +02:00
D4rkr34lm
2b0b2a08d7 Added todo for debug removal
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-07-16 22:31:09 +02:00
D4rkr34lm
7fc76e5e2a fixed wrong map in debug message
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-07-16 22:19:11 +02:00
D4rkr34lm
5153609776 Added debug message for trace history map nullpointer and potential fix
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-07-16 21:56:08 +02:00
593113bbc3 Merge pull request 'fix(tracer): Fixed first point of advanced flag incorrect calc order' (#254) from fix-tracer-advanced-flag-first-tick-calc into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #254
2024-07-06 18:48:59 +02:00
D4rkr34lm
a62c08b097 fix(tracer): Fixed first point of advanced flag incorrect calc order
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-07-06 12:54:09 +02:00
442ba6f483 Merge pull request 'fix(tracer): Fixed wrong velocity taken in advanced flag' (#253) from fix-direction-decision-in-advanced-flag into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #253
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2024-07-04 17:17:15 +02:00
D4rkr34lm
e253e12994 use fixed ci
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2024-07-04 17:15:19 +02:00
D4rkr34lm
38bb687c5b fix(tracer): Fixed wrong velocity taken in advanced flag
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2024-07-04 15:33:40 +02:00
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
60b3916ae7 „SCRIPT.md“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-07-24 14:00:05 +02:00
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
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
Chaoscaot
edd44c172c Add Hotkeys
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-05-19 20:12:52 +02:00
Chaoscaot
95f0625031 Add Copyright
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-05-19 19:34:45 +02:00
Chaoscaot
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
yoyosource
6e56ecdc99 Add Permission.Perm
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-19 16:57:23 +01:00
MoBrot
50d4e7ef2f NoSchemSharing with Testblock Fix.
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2023-01-18 16:35:33 +01:00
yoyosource
8b97ea0383 Fix LaufbauState
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-17 18:13:32 +01:00
yoyosource
ff6970deba Hotfix DefaultHotbar
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-17 16:04:48 +01:00
yoyosource
558da3b6a0 Hotfix Substring
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-17 16:01:57 +01:00
yoyosource
79137e14b2 Fix 0 and null because it is expected behaviour and not used!
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-16 16:43:10 +01:00
yoyosource
418fbd9aa4 Fix 0 and null because it is expected behaviour and not used!
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-16 16:42:30 +01:00
yoyosource
629bf2edfe Fix 0 and null because it is expected behaviour and not used!
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-16 16:41:47 +01:00
yoyosource
fa0f80f36f Remove deprecated code usage from CommandAPI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-15 20:48:09 +01:00
yoyosource
7ac5240289 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-01-15 20:39:24 +01:00
yoyosource
46b9239801 Remove deprecated code usage from CommandAPI
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-15 20:39:09 +01:00
756d749fa3 Adapt CI config to new CI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2023-01-15 12:28:09 +01:00
yoyosource
8cfc7bda85 Hotfix MaterialCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-14 18:04:29 +01:00
yoyosource
ab32dbd1ff Add prototypes19.yapion, regions19.yapion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-12 22:21:58 +01:00
yoyosource
3975a7cf63 Fix SkinCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-12 10:10:49 +01:00
yoyosource
7ce2cb1595 Fix SkinCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-11 22:50:36 +01:00
yoyosource
e6ae92bfa4 Add BoundaryViewer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add first prototypes19.yapion (AS still missing)
Add first regions19.yapion (AS still missing)

Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-11 22:41:39 +01:00
yoyosource
54b17fa62d Fix name constant
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-07 11:06:24 +01:00
yoyosource
0c4fa56a83 Fix Expression
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2023-01-05 08:18:52 +01:00
yoyosource
2e9b578e9f Fix techhide hide message
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-28 16:39:21 +01:00
yoyosource
d0dab38d55 Fix various WorldEdit stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-28 16:34:40 +01:00
yoyosource
54b34bbfae Update script structure
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-28 16:09:05 +01:00
yoyosource
162fbbaa0c Add EventType.Scoreboard
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add more Constants

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-28 14:23:17 +01:00
yoyosource
1bfcb55d35 Merge branch 'ScriptEditor'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-28 12:01:16 +01:00
yoyosource
4a55af680d Hotfix CreatingLaufState and BlockBoundingBox
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-27 19:50:14 +01:00
yoyosource
e9c7d6cf07 Initial draft ScriptEditor
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-25 00:24:43 +01:00
yoyosource
675d0d616e Fix script calling other command without expression replacement
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-25 00:14:50 +01:00
yoyosource
77e38d6d99 Fix getMaterial and setMaterial
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-24 13:31:00 +01:00
yoyosource
514f771dfd Fix if command for scripts
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-24 12:07:24 +01:00
yoyosource
187c2a68d0 Fix panzern and laufbau undon
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-23 23:22:10 +01:00
yoyosource
f7440af50a Hotfix ScriptExecutor
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-23 23:02:38 +01:00
yoyosource
1058a49f1f Fix variable resolution order
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-23 22:52:11 +01:00
yoyosource
397de5e08a Update messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-23 22:16:41 +01:00
yoyosource
c2eb369163 Add Hotkeys
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-23 22:10:58 +01:00
yoyosource
766a3aef51 Add hotkeys
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-23 21:08:16 +01:00
yoyosource
e1fc5525ec Fix TeleportCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-23 19:17:37 +01:00
yoyosource
3465956c4f Fix EqualOperator and NotEqualOperator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-12-23 19:15:47 +01:00
yoyosource
cef0111fdf Fix ScriptExecutor for WorldEdit commands
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add new expression system
2022-12-23 18:42:40 +01:00
yoyosource
28424698d6 Add numbers to Simulator name whitelist
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-21 21:03:16 +01:00
yoyosource
3ccdec1141 Update Checkerboard3DMask
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-18 10:42:54 +01:00
yoyosource
807a3fddaf Fix build.gradle
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-18 10:31:55 +01:00
yoyosource
c0972b312e Fix build.gradle
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-18 10:28:55 +01:00
yoyosource
0cf4de14ad Fix build.gradle
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-18 10:26:40 +01:00
yoyosource
e668ea01ea Fix SelectCommand
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-18 10:20:33 +01:00
yoyosource
a9d06fbe84 FAWEMaskParser_GENERIC.java
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2022-12-18 10:14:08 +01:00
yoyosource
0a11fca681 Add some Masks and Patterns to FAWE
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2022-12-17 22:46:37 +01:00
yoyosource
8b62559547 Fix ColorReplaceCommand and TypeReplaceCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-17 12:07:54 +01:00
yoyosource
d31d8b7b01 Add /ac command as aliases to AttributesCopyCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-15 20:05:06 +01:00
yoyosource
5a7a435b9a Update prototypes4.yapion and regions4.yapion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-15 16:14:35 +01:00
yoyosource
3a28f5c42f Hotfix AttributesCopyCommand and AttributesPlaceListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-09 22:14:09 +01:00
yoyosource
6a52a319ab Hotfix MultipleFacingAttribute and AttributesPlaceListener and AttributesCopyCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-09 20:24:48 +01:00
yoyosource
e7e714f8ee Hotfix RedstoneWireAttribute and RepeaterAttribute
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-09 20:00:06 +01:00
yoyosource
6d298e1dec Hotfix WallAttribute
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-08 21:18:30 +01:00
yoyosource
0b633fc8fe Hotfix WallAttribute
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-08 21:18:05 +01:00
yoyosource
d5ab00c2c2 Hotfix AttributesCopyCommand.isSame
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-08 21:02:01 +01:00
yoyosource
fd98aa1b69 Hotfix StairsAttribute
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-08 20:50:08 +01:00
yoyosource
b90facb7d7 Hotfix RedstoneWireAttribute
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-08 20:46:03 +01:00
yoyosource
2b959228db Hotfix AttributeRemoveCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-08 20:38:58 +01:00
yoyosource
9c788a27d6 Hotfix AttributeRemoveCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-08 20:34:42 +01:00
yoyosource
75ba8813d3 Add attributes copy feature
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-12-08 20:21:51 +01:00
yoyosource
8100667da5 Fix some rotate behaviour
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-11-22 15:50:23 +01:00
635d235a87 „BauSystem_Main/src/de/steamwar/bausystem/features/util/TeleportCommand.java“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-11-21 07:29:35 +01:00
yoyosource
248c3a17c6 Update AutoShutdownListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-11-20 12:40:18 +01:00
4e6fa7cd42 Merge pull request 'Adapt to CommonDB' (#139) from commonDB into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #139
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2022-11-12 15:33:33 +01:00
472b6a3a47 Merge branch 'master' into commonDB
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-11-12 15:32:06 +01:00
532de2291d Merge pull request 'BauGUI (Editor) Improvements' (#142) from gui_improvements into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #142
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2022-11-12 12:03:05 +01:00
a00a23fed5 Merge branch 'master' into gui_improvements
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-11-12 12:02:10 +01:00
yoyosource
18319e99fb Fix some messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-11-12 12:01:05 +01:00
Chaoscaot
6d7d517835 Add Schematic GUI Bau GUI Item
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-11-12 08:59:32 +01:00
Chaoscaot
98201061d3 Add Close Button 2022-11-12 08:52:11 +01:00
Chaoscaot
06c2810061 Fix: Typo 2022-11-11 19:36:05 +01:00
5242730878 Merge branch 'master' into commonDB
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
# Conflicts:
#	BauSystem_Main/src/de/steamwar/bausystem/features/world/ClipboardListener.java
2022-10-29 12:30:50 +02:00
yoyosource
23ded823f0 Fix coral death while freeze is active
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-24 17:25:00 +02:00
yoyosource
9275fd552c Add unmoveable flag for MaterialCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-24 17:06:02 +02:00
yoyosource
566c612327 Add TNTPrimedIterator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-24 16:40:08 +02:00
yoyosource
4f2a6a70c4 Possible optimization of trace recorder
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-16 18:12:51 +02:00
yoyosource
9bb4cf548b Hotfix Recorder NPE
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-13 17:12:03 +02:00
yoyosource
fca07eba75 Fix laufbautool
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-09 21:13:22 +02:00
yoyosource
a57cd0287a Update custom model data
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-09 13:35:16 +02:00
yoyosource
f944fbd8cd Hotfix recorder
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-05 16:10:39 +02:00
yoyosource
f2ef3c4634 Hotfix recorder
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-05 15:58:16 +02:00
yoyosource
e7bda055b8 Hotfix weird trace show behaviour when cleared
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-04 17:12:59 +02:00
2b4cd8731d „BauSystem_Main/src/de/steamwar/bausystem/features/tracer/record/Recorder.java“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-10-04 15:50:21 +02:00
yoyosource
95af58e60e Hotfix isolated tnt
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-03 21:45:59 +02:00
yoyosource
7c79b47d61 Hotfix memory leak
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-03 21:38:05 +02:00
yoyosource
31f04ef07b Add trace ShowModeParameterType.BUILD_DESTROY_ONLY
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-03 21:24:23 +02:00
yoyosource
5e9b11d140 Add trace replay loop
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-03 21:05:18 +02:00
yoyosource
b0690d28d3 Update messages
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-03 19:03:21 +02:00
yoyosource
e894ed08f6 Add simple Trace replay
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-03 18:58:40 +02:00
yoyosource
f438b4aa77 Add TraceCommand.isolate
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-03 18:06:26 +02:00
yoyosource
ad8cd86338 Add SingleTraceRecorder
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-03 17:22:45 +02:00
yoyosource
399c86aa6d Rework tracer
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-03 17:01:43 +02:00
yoyosource
1e1d8d718a Fix xray and techhider
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-02 17:02:45 +02:00
yoyosource
dd5c932f15 Fix TraceEntity19.display with ticks
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Fix TraceTNTClickListener
Add Trace isolation

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-02 16:54:01 +02:00
yoyosource
41a457920d Optimize Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-02 15:46:22 +02:00
yoyosource
9728341529 Fix ETA message
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-02 14:21:31 +02:00
c975685995 Merge pull request 'Hotbar deserialize fix' (#140) from hb_fix into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #140
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2022-10-02 13:07:00 +02:00
yoyosource
765584bc9a Fix ETA message
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-02 13:06:25 +02:00
yoyosource
bdda84f333 Fix TraceTNTClickListener and NoCreativeKnockback
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-10-02 13:03:27 +02:00
Chaoscaot
c447315b9e Hotbar deserialize fix
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-10-02 08:12:49 +02:00
yoyosource
b8adf7fb08 Update BlockBoundingBox impls
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-28 18:57:52 +02:00
yoyosource
c227a67635 Update to linkage system
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-25 16:32:59 +02:00
yoyosource
ba3293cdc2 Update to linkage system
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-25 16:32:27 +02:00
yoyosource
98925dcb4a Remove old linkage things
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-25 11:30:33 +02:00
86b22cd0a1 Adapt to CommonDB
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2022-09-24 20:39:09 +02:00
yoyosource
ac91c77584 Add new linkages that are needed
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-24 20:26:33 +02:00
yoyosource
fc5a397097 Merge branch 'master' into Linkage 2022-09-24 20:07:14 +02:00
yoyosource
fae3a3d928 Remove useless messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-24 20:06:55 +02:00
yoyosource
17ff693b78 Fix some translations
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-24 20:06:08 +02:00
yoyosource
d888545e8f Fix some translations
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-24 20:05:17 +02:00
yoyosource
6a3f53a1c1 Add eta to laufbau states
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-24 20:04:26 +02:00
yoyosource
f3ac49fd12 Add copy to Simulator
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-24 20:03:43 +02:00
yoyosource
3b3ab508a7 Add SpigotCore to annotationProcessor
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-24 20:02:01 +02:00
yoyosource
e77d82839d Hotfix lightning rods
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-19 21:04:25 +02:00
yoyosource
abfe37dbb9 Add 1.19 blocks and sizes to laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-19 17:06:30 +02:00
yoyosource
21e9017d32 Hotfix plain linkages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-18 20:39:44 +02:00
yoyosource
c09d1a9ba3 Hotfix FreezeListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-18 15:02:45 +02:00
yoyosource
0f4924c9e8 Hotfix FreezeListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-18 14:59:55 +02:00
yoyosource
0cf588784d Update BackupScheduler
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-18 13:51:23 +02:00
yoyosource
01cb4abb39 Update BackupScheduler
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-18 13:32:15 +02:00
ddabee9d99 „BauSystem_Main/src/de/steamwar/bausystem/features/world/KickallCommand.java“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-09-14 14:22:15 +02:00
yoyosource
e4ba3249d7 Add KickallCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-13 21:03:02 +02:00
yoyosource
89f1971106 Fix XrayCommand also xray end_stone_bricks
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-13 20:53:07 +02:00
yoyosource
71e51654ce Add percentages to //cr and //tr
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-13 16:50:19 +02:00
718247a3d4 Merge pull request '+Add InventoryFillerCommand' (#135) from InventoryFillToggle into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #135
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2022-09-13 16:05:41 +02:00
yoyosource
74861f0797 Update how the validation work for the semi we commands
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-13 15:48:03 +02:00
yoyosource
cca55fa115 Hotfix purpur
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-13 15:38:46 +02:00
yoyosource
bed0891579 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-09-13 15:27:31 +02:00
yoyosource
59c02c37c9 Fix Hotbar errors
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-13 15:27:26 +02:00
yoyosource
70c0488083 Fix Hotbar errors
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-13 15:24:45 +02:00
ae35549bbd „BauSystem_Main/src/BauSystem_de.properties“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-09-13 08:19:29 +02:00
07b16ccdcd „BauSystem_Main/src/BauSystem.properties“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-09-13 08:18:00 +02:00
yoyosource
dfcaac5045 Fix stuff and rebuild
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-12 18:26:18 +02:00
yoyosource
50580f916a Add TypeReplaceCommand
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-12 17:39:37 +02:00
yoyosource
3e2b22be02 Fix some MultiReplaceCommand stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-11 21:24:23 +02:00
yoyosource
3ef7812aa7 Add MultiReplaceCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-10 15:22:49 +02:00
yoyosource
403ca8dae7 Update stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-10 15:15:38 +02:00
yoyosource
37f3726ccc Add ColorReplaceCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add TypeReplaceCommand WIP

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-10 13:55:56 +02:00
yoyosource
8bdc9c69d8 Move WorldEditUtils
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-09 17:10:43 +02:00
MoBrot
4e431c298a +move InventoryFillBauGuiItem to inventoryfiller package
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-09-07 14:45:08 +02:00
MoBrot
73f7fb2970 +Add Lore to InventoryFillBauGuiItem.getItem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-09-06 20:30:29 +02:00
MoBrot
f878efab32 +Add InventoryFillBauGuiItem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
+Add OTHER_ITEMS_INVENTORY_FILL_NAME in BauSystem.properties
2022-09-04 21:16:57 +02:00
MoBrot
60f10ae765 +Add InventoryFillerCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
+Add INVENTORY_FILL_HELP in BauSystem.properties
+Add INVENTORY_FILL_INFO in BauSystem.properties
2022-09-03 16:35:06 +02:00
yoyosource
ac9b75e009 Remove BauSystem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-01 18:03:42 +02:00
yoyosource
c0c22980a2 Remove BauSystem
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-09-01 18:03:32 +02:00
yoyosource
b4466e6444 Add selection edit group options
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 21:45:02 +02:00
yoyosource
a516363fdb Fix MaterialLazyInit
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 18:24:32 +02:00
yoyosource
1fd78cf11d Closes: #106
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 18:07:48 +02:00
yoyosource
276907cfd3 Fix edge case for PistonCalculator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 17:45:49 +02:00
yoyosource
210fd0bd9f Closes: #118
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 17:22:25 +02:00
yoyosource
6a6eadb937 Closes: #121
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 17:15:39 +02:00
yoyosource
f63d529b55 Fix edge case for PistonCalculator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 17:06:24 +02:00
yoyosource
776dd84668 Fix edge case for slot 0
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 16:59:33 +02:00
yoyosource
549baedf4d Add PistonCalculatorCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 16:36:17 +02:00
yoyosource
e247dbe8f3 Add PistonCalculator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Closes: #132

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 16:28:12 +02:00
yoyosource
f854f4896f Closes: #126
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 13:53:30 +02:00
yoyosource
509aa79979 Closes: #107
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 13:51:07 +02:00
yoyosource
ad4e5bbb26 Closes: #126
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 13:45:08 +02:00
yoyosource
974b12a1fd Hotfix InventoryFiller
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 13:37:19 +02:00
yoyosource
a3aa343683 Add new feature to InventoryFiller
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 13:34:02 +02:00
yoyosource
ae5795da17 Hotfix Panzern init
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 12:16:42 +02:00
yoyosource
f1aab8d3f7 Fix NPE
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-28 09:43:11 +02:00
yoyosource
f5b68687b5 Rename ChestFiller to InventoryFiller
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 22:54:38 +02:00
yoyosource
777f3cd506 Add ChestFiller
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 22:50:42 +02:00
yoyosource
cc9bd07743 Undo Optimize command injection
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 21:27:31 +02:00
yoyosource
be86b222d1 Optimize command injection
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 21:22:19 +02:00
yoyosource
456f7dd660 Optimize listener injection
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 21:04:35 +02:00
yoyosource
3e38e27b73 Optimize listener injection
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 20:56:19 +02:00
yoyosource
ee1a82b5d3 Fix ScriptExecutor
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 17:58:41 +02:00
yoyosource
3b964a2e18 Update generated code improve startup time with proper lazy init
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 17:45:12 +02:00
yoyosource
80eeaf533e Update generated code
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 15:35:46 +02:00
yoyosource
cee526b47a Add BauSystem enable timings
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 15:15:05 +02:00
yoyosource
805e4de4e5 Remove reflections from startup
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 15:07:10 +02:00
yoyosource
8b9978102d Fix LaufbauLazyInit
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-27 15:05:25 +02:00
yoyosource
f6db278214 Optimize imports
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-26 21:53:03 +02:00
yoyosource
bf8f8d2cf3 Fix somes stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-26 21:17:06 +02:00
yoyosource
f1289c1192 Fix somes stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-26 21:05:31 +02:00
yoyosource
eb352a36dd Fix somes stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-26 21:00:22 +02:00
yoyosource
c7b21bfc74 Remove unused order field
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-26 20:51:59 +02:00
yoyosource
def07fe50c Remove sout
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-26 20:47:01 +02:00
yoyosource
5758820679 Optimize some init stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-26 20:45:43 +02:00
yoyosource
6830852c78 Add MaterialLazyInit
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-26 20:16:38 +02:00
yoyosource
948c19167a Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-26 20:10:12 +02:00
yoyosource
c464a57828 Add PanzernAlgorithmLazyInit
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-26 20:10:03 +02:00
ed57eaec1a Add LaufbauLazyInit
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-25 11:30:30 +02:00
418b122f02 Merge pull request 'Remove System.out calls' (#128) from remove_system_out into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #128
Reviewed-by: Lixfel <lixfel@steamwar.de>
2022-08-23 17:01:37 +02:00
acf94338fc Merge pull request 'Fix Detonator type selection' (#129) from fix_detonator into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #129
Reviewed-by: Lixfel <lixfel@steamwar.de>
2022-08-23 17:01:29 +02:00
5cce94b635 Merge pull request 'Fix Language' (#130) from lang_fixes into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #130
Reviewed-by: Lixfel <lixfel@steamwar.de>
2022-08-23 17:01:14 +02:00
d4e582d5ea Merge pull request 'Rename English Countingwand' (#131) from counting_wand into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #131
Reviewed-by: Lixfel <lixfel@steamwar.de>
2022-08-23 17:01:04 +02:00
Chaoscaot
ec2074ce73 Rename English Countingwand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-23 12:41:49 +02:00
Chaoscaot
aaff263b5b Fix Language
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-23 12:04:00 +02:00
Chaoscaot
d9d383679f Fix Detonator type selection
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-23 11:50:28 +02:00
Chaoscaot
87c9827d46 Remove Timing map
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-23 11:35:15 +02:00
Chaoscaot
6c30fae13d Remove System.out calls
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-23 11:34:00 +02:00
5a32b90499 Merge pull request 'Update TinyProtocol API' (#127) from updateTinyApi into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #127
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2022-08-22 17:35:58 +02:00
bde4a29920 Update TinyProtocol API
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-22 17:34:35 +02:00
933ea78752 Fix stop
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-21 12:42:48 +02:00
yoyosource
e649e40876 Fix StopCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-19 18:55:49 +02:00
yoyosource
512e017905 Rebuild
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-18 21:07:56 +02:00
yoyosource
b722d9ab0f Remove last guard checks
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-18 20:27:05 +02:00
yoyosource
028c115731 Update region features
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-18 20:01:09 +02:00
yoyosource
72f0d08808 Remove some guard statements
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-17 21:07:41 +02:00
yoyosource
15559b500d Add some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-08 21:23:15 +02:00
yoyosource
700bfc6100 Fix ScriptEventListener Drop runs LeftClick bug
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-08 20:38:37 +02:00
yoyosource
32ab629a81 Add lever toggleability in frozen region
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-08 20:24:10 +02:00
yoyosource
2edc08943a Fix MaterialCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-08 18:15:59 +02:00
yoyosource
5703194017 Fix sneaking const naming in gui
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-08 18:08:19 +02:00
yoyosource
b5c2ef50df Fix /minecraft:... commands in script system
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-08 17:59:19 +02:00
yoyosource
d64e7a9299 Update MaterialCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-08 17:58:07 +02:00
yoyosource
09c69e4b3c Update MaterialCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-08 17:57:42 +02:00
yoyosource
7ae525391e Fix /minecraft:... commands in script system
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-08 05:51:43 +02:00
yoyosource
ab35286f97 Disable SimulatorPreview19 for now
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-07 18:05:22 +02:00
yoyosource
36efdd9a5f Fix warp entity sound
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-07 17:55:39 +02:00
yoyosource
81b8b5e4af Fix sim unwanted editing
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Fix sim double click editing

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-07 17:09:09 +02:00
yoyosource
17fdb08060 Fix some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-07 16:48:17 +02:00
yoyosource
a21e652ac9 Add create button
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Fix rounding error

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-06 17:43:07 +02:00
yoyosource
b22fabe8cd Add TraceTNTClickListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-06 17:24:48 +02:00
yoyosource
3be33adb00 Add LoaderCommand.singleLoader
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-06 14:30:08 +02:00
yoyosource
4a373b7234 Update PlayerMovementWrapper location
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-06 14:12:59 +02:00
ac6c621fb5 Merge pull request 'Fix TPSLimit Movement' (#101) from tps_limit_movement_fix into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #101
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2022-08-06 14:10:39 +02:00
yoyosource
2e4825c4a9 Optmize Detonator.getBlock
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-06 11:38:10 +02:00
yoyosource
659f09cb82 Fix Detonator for pressure plates and buttons
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-06 11:21:48 +02:00
yoyosource
8f32793593 Add NoCreativeKnockback
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-06 11:15:33 +02:00
Chaoscaot
f323c043b2 Refactor
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-06 11:15:30 +02:00
yoyosource
a35caa5d37 Fix HotbarCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-05 21:22:39 +02:00
yoyosource
c4e7c84348 Add global NightVisionCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-05 21:18:18 +02:00
yoyosource
5283bd5697 Fix SignEdit NPE
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-05 20:56:03 +02:00
yoyosource
54b955c1f5 Update SignEdit
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-05 20:48:06 +02:00
8f89c4d63a Merge pull request 'Armor to Hotbar' (#99) from armor_to_hotbar into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #99
Reviewed-by: Lixfel <lixfel@steamwar.de>
2022-08-05 20:34:30 +02:00
Chaoscaot
75dcb3dbea Fix TPSLimit Movement
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-05 15:29:32 +02:00
Chaoscaot
5e462ae097 Armor to Hotbar
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-05 14:07:41 +02:00
2c2d27893d Fix redo too
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-05 12:32:06 +02:00
6d7b2eec1a Pot corruption fix
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-05 12:22:11 +02:00
d4f49aeddb Remove debug messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-05 11:44:54 +02:00
4fcedb8c72 Add debug messages for region undo debugging
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-05 11:33:31 +02:00
4a3d806bf4 Fix 1.19.1
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-08-05 08:26:27 +02:00
yoyosource
88aa07ccb2 Update FlatteningWrapper
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-03 19:10:26 +02:00
yoyosource
056015395a Fix one edge case of RedstonetesterUtils
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-08-01 21:48:34 +02:00
yoyosource
04249488d9 Fix NoClipCommand for real now
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-31 21:21:20 +02:00
yoyosource
92b7a6ddbc Update NoClipCommand kinda fix it I guess
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-31 21:09:20 +02:00
yoyosource
a86fbf0ded Optimize imports NMSWrapper19
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-30 19:27:16 +02:00
yoyosource
2eabd2ea3d Fix NoClipCommand for item pick
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-30 17:43:40 +02:00
yoyosource
78cc53a564 Fix messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-30 14:24:34 +02:00
yoyosource
084adea7ef Add XrayCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-30 14:21:56 +02:00
yoyosource
d5f4503e08 Fix FreezeListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-30 11:29:38 +02:00
yoyosource
c128a3594c Update TechHiderCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-29 23:30:22 +02:00
yoyosource
102bbea11e Update TechHiderCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-29 23:25:16 +02:00
yoyosource
5784cdc446 Update TechHiderCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-29 23:12:58 +02:00
yoyosource
4773ba970d Fix FreezeListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-29 23:06:13 +02:00
yoyosource
b40fe28c7e Fix FreezeListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-29 22:43:34 +02:00
yoyosource
7330b4346b Fix FreezeListener again
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-29 22:37:40 +02:00
yoyosource
e428006b6c Fix FreezeListener again
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-29 22:36:41 +02:00
yoyosource
c304fc034f Fix FreezeListener again
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-29 22:30:17 +02:00
yoyosource
bb3ac6c515 Fix FreezeListener again
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-29 22:24:45 +02:00
yoyosource
2127af664d Fix FreezeListener for 1.19
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-29 20:35:43 +02:00
yoyosource
c706f85254 Add copy and testblock point to WarpListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-28 16:17:30 +02:00
yoyosource
5d8bd398ec Fix WarpListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-28 15:50:53 +02:00
yoyosource
ccb2f8540f Fix WarpListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-26 16:32:05 +02:00
yoyosource
8c61efe320 Update icons
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-22 20:59:37 +02:00
yoyosource
21ddadae99 Update icons
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-22 20:57:00 +02:00
yoyosource
8bfb564a68 Add delete icon in tnt menu
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-21 17:35:35 +02:00
yoyosource
840ae4e7b6 Fix TNTSimulatorListener.onBlockPlace
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-21 17:31:40 +02:00
yoyosource
633112ffd1 Fix offhand remove item
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-21 17:25:07 +02:00
yoyosource
e95b61e818 Remove velocity min
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-21 16:53:43 +02:00
yoyosource
cf46465cfd Hotfix stuff and rebuild
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-21 16:49:03 +02:00
yoyosource
6c3ea5ccc7 Update some stuff
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-21 16:44:52 +02:00
yoyosource
a0c644dd1c Optimize code
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-21 15:20:23 +02:00
yoyosource
07a1dd7195 Update stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-21 14:32:32 +02:00
yoyosource
662982f20e Fix NPE
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-21 14:02:45 +02:00
yoyosource
8e28422b8f Update recalculate
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-21 14:01:07 +02:00
yoyosource
935be23238 Add basic sim preview for 1.19
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-20 23:52:21 +02:00
yoyosource
cf4f0c5c07 Fix some translations
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-07-18 21:34:47 +02:00
yoyosource
9fe57e9cbc Fix offhand simulator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-07-18 16:44:44 +02:00
yoyosource
be0f15891b Fix offhand simulator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-07-18 16:25:26 +02:00
yoyosource
f1f783f0ec Fix offhand simulator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-07-18 16:15:53 +02:00
yoyosource
58a6a855a8 Fix count to TNTClickListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-05 17:27:46 +02:00
yoyosource
096ee8d586 Add count to TNTClickListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-05 17:18:31 +02:00
yoyosource
eb7dcbcdd4 Update and fix some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-04 15:32:28 +02:00
yoyosource
b8b50987d1 Fix weird BlockRotatingBehaviour
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-04 00:24:34 +02:00
yoyosource
07d8b7383a Update build.gradle
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-07-01 21:18:49 +02:00
yoyosource
47459d832d Remove sys out
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-28 21:58:11 +02:00
yoyosource
94e7902f2a Add sys out
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-28 21:55:43 +02:00
yoyosource
5265c298d2 Fix build.gradle
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-27 21:21:53 +02:00
yoyosource
7bc5c31f59 Update some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-27 21:17:53 +02:00
yoyosource
d13c321ed8 Remove dead code
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-27 20:58:46 +02:00
yoyosource
a4c4870236 Add dependencies.gradle
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-27 20:19:01 +02:00
yoyosource
89272f76cc Add direct searching to MaterialCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-26 17:48:32 +02:00
yoyosource
1e214d49d5 Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-06-24 20:19:55 +02:00
yoyosource
ef7e516d1c Fix SimulatorStorage
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-24 20:19:47 +02:00
yoyosource
7019682c8c Fix build
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-06-20 21:07:58 +02:00
yoyosource
0b57e5f2d9 Fix SimulatorStorage.enable for old simulators
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2022-06-20 21:07:01 +02:00
yoyosource
4f31b38332 Fix TPSWarpUtils
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-16 22:02:49 +02:00
yoyosource
9d89ebec57 Fix DetonatorEntity19
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-16 21:33:39 +02:00
yoyosource
cc7cd81abe Fix shift clicking
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-15 23:33:44 +02:00
yoyosource
1804dbc27d Fix sorting
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-15 17:29:34 +02:00
yoyosource
9bfa4282b5 Fix BauInfoBauGuiItem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-14 17:42:49 +02:00
yoyosource
701cc4611e Fix SkullCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-13 22:49:24 +02:00
yoyosource
7514728a72 Fix SimulatorCommand invalid names
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-13 22:45:36 +02:00
yoyosource
4951bf3ef7 Fix smartplace destroy blocks
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-13 14:46:47 +02:00
yoyosource
063495c624 Update and fix stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-13 11:40:42 +02:00
yoyosource
482008c461 Fix messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-12 14:24:58 +02:00
yoyosource
2cd7e4a931 Add SimulatorBauGuiItem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-12 14:11:31 +02:00
yoyosource
05f43b7486 Fix TNTElement selection
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-12 13:03:24 +02:00
yoyosource
35aa984d17 Fix delete errors
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 22:44:34 +02:00
yoyosource
f75efee1ab Fix TNTSimulator not working
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 22:40:54 +02:00
yoyosource
dc8d9ccf4b Add total tnt stat
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 22:29:59 +02:00
yoyosource
0ad94d9716 Optimize frozen region checks
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 22:04:57 +02:00
yoyosource
d0d902786e Simplify checks
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 21:50:43 +02:00
yoyosource
ce2caae9ce Make tnt only spawn in own region or 100 blocks around you if you are in global region
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 21:49:40 +02:00
yoyosource
1cfa3058f5 Merge branch 'master' into SimulatorRework
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-06-11 21:36:05 +02:00
yoyosource
1adce7baec Hotfix BaseEntity19
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 21:19:37 +02:00
yoyosource
e8bb2cfda5 Hotfix NoClipCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 21:17:27 +02:00
yoyosource
e42c701ac7 Hotfix NoClipCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 21:12:24 +02:00
yoyosource
19a9cebe49 Hotfix build.gradle
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 21:02:36 +02:00
yoyosource
8d6014cd01 Update stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 20:57:47 +02:00
yoyosource
2e86324544 Add auto trace back to the gui
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 20:54:26 +02:00
yoyosource
9ee33e8dcb Update TNTSimulator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 20:51:25 +02:00
yoyosource
9155bd7070 Add starting of TNTSimulator
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 16:53:49 +02:00
yoyosource
11ae4721f6 Fix some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 16:26:10 +02:00
yoyosource
a0476da4d8 Add alignment buttons
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 15:48:37 +02:00
yoyosource
576e39ac0b Fix TNTGroup.setTickOffset
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 14:36:12 +02:00
yoyosource
002996afbc Add phase gui
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 14:34:35 +02:00
yoyosource
c327471ef2 Update stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-11 13:10:26 +02:00
yoyosource
bd7c13dfd7 Fix stuff and fix bugs
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-10 22:56:28 +02:00
yoyosource
426f257358 Update stuff
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-10 19:39:48 +02:00
yoyosource
2d9c201803 Update loading of TNTElement
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-10 17:29:24 +02:00
yoyosource
5788ae70ef Add all tnt menus
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-10 17:25:49 +02:00
yoyosource
b755b89a8c Add OrderUtils
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Update some menus

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-10 14:00:42 +02:00
yoyosource
11560865a8 Add edit properties menu and edit location menu
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-10 11:07:47 +02:00
yoyosource
804afe9cb7 Update some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-09 22:50:32 +02:00
yoyosource
c4b5847dfd Update stome stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-09 22:50:09 +02:00
yoyosource
5a2552f9b2 Add TNTElementGUI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-09 22:23:47 +02:00
yoyosource
4ac101dcb1 Add TNTSimulatorGui
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-09 20:47:09 +02:00
yoyosource
8b351fe871 Add seamless changing and showing and hiding
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-09 19:42:11 +02:00
yoyosource
6ed13702d4 Add SimulatorCursor
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add SimulatorCommand

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-09 16:28:06 +02:00
yoyosource
c4f1b4f01a Update stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-09 13:42:15 +02:00
yoyosource
bb7d543658 Add SimulatorEntityShowMode
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Update stuff

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-09 13:12:10 +02:00
yoyosource
db48cde912 Initial stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-09 10:54:27 +02:00
yoyosource
d7dc2515c0 Update ItemUtils
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-08 13:13:45 +02:00
yoyosource
4507516f45 Add 2 more ItemUtils
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-08 12:20:50 +02:00
yoyosource
bba42ec3a4 Add 1.19 support
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-06-07 20:12:13 +02:00
yoyosource
763ac8deb2 Rebuild
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-30 12:59:09 +02:00
yoyosource
f2c44c76d7 Add BookReplaceCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-30 11:16:32 +02:00
yoyosource
d90782c4b3 Fix some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-25 16:42:40 +02:00
yoyosource
c5fcfdfb9c Fix some messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-20 15:31:21 +02:00
yoyosource
a5d6380c6d Fix some messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-20 15:18:33 +02:00
yoyosource
0fe15feb82 Fix some messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-20 15:13:06 +02:00
yoyosource
7c7ddc7873 Update messages to english
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-19 21:20:54 +02:00
yoyosource
e3fefdf447 Update messages to english
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-19 20:13:12 +02:00
yoyosource
c975ae3079 Merge branch 'master' into English
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-05-19 19:58:49 +02:00
yoyosource
215612afd2 Update messages to english
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-19 19:58:25 +02:00
yoyosource
94067693eb Update messages to english
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-19 19:57:53 +02:00
yoyosource
4f213f348c Merge remote-tracking branch 'origin/master'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-05-19 16:38:37 +02:00
yoyosource
d3e1f54124 Fix SmartPlace
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-19 16:38:31 +02:00
yoyosource
0e9d0d36c9 Fix SmartPlace
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-05-19 16:38:10 +02:00
6f45745f79 Merge pull request 'Fix rg color in 1.18' (#89) from fixRgColor into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #89
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2022-05-18 20:53:53 +02:00
cee693e44e Fix rg color in 1.18
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-05-18 17:33:25 +02:00
yoyosource
3d27af7196 Update properties
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-20 15:29:30 +02:00
yoyosource
8adc83a379 Merge branch 'master' into English 2022-04-20 15:25:20 +02:00
yoyosource
3813e9206b Merge remote-tracking branch 'origin/master'
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2022-04-20 15:24:20 +02:00
f83bb6dfb1 „steamwarci.yml“ ändern
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-04-18 21:37:13 +02:00
yoyosource
0a9fd70929 Remove ScriptVarsCommand.java
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Update BlockCounter

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-16 21:18:38 +02:00
yoyosource
bcd354bbf2 Remove Damage flag
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-16 20:43:43 +02:00
yoyosource
02c5c261e7 Remove WaterVisionCommand.java
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-16 18:57:25 +02:00
yoyosource
5d47afd984 Moved some stuff together
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-16 18:53:09 +02:00
yoyosource
78357dfe42 Remove unused features
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-16 18:49:54 +02:00
yoyosource
dd3bd868a9 Remove unused features
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-16 18:48:42 +02:00
yoyosource
c64bdae149 Remove unused features
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-16 17:46:28 +02:00
yoyosource
38102154ae Remove unused features
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-16 17:38:47 +02:00
yoyosource
20e907a5a2 Fix Trace again
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-14 12:14:53 +02:00
yoyosource
8a8d8888c8 Fix Panzer NPE's
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-13 21:04:10 +02:00
yoyosource
89273ee73f Fix Trace stuff for 'überspitze Winkel'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-10 09:46:35 +02:00
yoyosource
bf1dbd5bb2 Fix Simulator move all with multiple prime phases
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-09 23:12:15 +02:00
yoyosource
a242cf2321 Fix Trace stuff for 'überspitze Winkel'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-09 23:04:48 +02:00
yoyosource
73bae34535 Fix Trace stuff for 'überspitze Winkel'
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-09 22:44:20 +02:00
bccaf42a27 .
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-04-01 17:07:37 +02:00
yoyosource
05ae3fde95 Add some english translations
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-01 17:07:29 +02:00
yoyosource
5c08356bbe Add some english translations
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-01 16:57:23 +02:00
yoyosource
a8275e2902 Add some english translations
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-01 16:46:08 +02:00
yoyosource
aa121bb5e8 Update FreezeUtils
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-04-01 16:45:21 +02:00
ae942179c1 Merge pull request '1.18' (#77) from 1.18 into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #77
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2022-03-30 11:21:06 +02:00
185d7ee56a Fix noclip
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-03-29 22:28:38 +02:00
7a91aa4527 Move to 1.18.2
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-03-29 16:03:25 +02:00
26140fd054 Fix build
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-03-29 12:37:32 +02:00
305664e9ea Fix build
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-03-29 12:29:19 +02:00
fe317bec1e Full untested impl
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-03-29 11:43:37 +02:00
6cec8d27e4 Merge branch 'master' into 1.18
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-03-23 09:10:59 +01:00
61f14b8f37 Merge remote-tracking branch 'origin/1.18' into 1.18 2022-03-23 09:10:50 +01:00
yoyosource
d66f0f92d6 Update prototypes4.yapion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-03-21 20:21:31 +01:00
yoyosource
73f5d9bdf5 Update Loader
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-03-14 18:44:49 +01:00
yoyosource
6dd4f686a4 Update Loader
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-03-14 18:40:35 +01:00
d9fd740a8f Merge branch 'master' into 1.18 2022-03-14 12:15:12 +01:00
yoyosource
a30d5c2fb0 Fix NightVisionCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-03-05 12:16:09 +01:00
yoyosource
dd0d929c12 Update SimulatorData
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-23 15:29:21 +01:00
yoyosource
b01d763ac1 Fix WorldData
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-23 15:21:20 +01:00
yoyosource
60f225e277 Speed up startup time
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-23 12:16:44 +01:00
yoyosource
d4a7556b73 Update prototypes4.yapion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-22 10:56:53 +01:00
yoyosource
a250aeb6b6 Fixing stuff because mojang
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-10 18:08:32 +01:00
yoyosource
775435783a Fix DetonatorEntity18
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-10 17:52:59 +01:00
yoyosource
bcc4e7b0d3 Update build.gradle
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-10 17:51:31 +01:00
yoyosource
9b4fe3c9d6 Update some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-10 17:35:12 +01:00
yoyosource
4bb25a4ca7 Update some stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-10 17:21:35 +01:00
yoyosource
4ee537e017 Add needed classes
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-10 16:28:15 +01:00
yoyosource
28bb95f000 Add package for 1.18 support
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-10 16:15:40 +01:00
yoyosource
405a53aa2d Update stuff
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-08 17:34:46 +01:00
yoyosource
c9cc03be87 Update stuff
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-08 17:32:38 +01:00
yoyosource
6f0a2c8c4e Update LaufbauSettings
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-08 13:50:45 +01:00
yoyosource
55a5f6eec4 Update LaufbauSettings
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-08 13:49:31 +01:00
yoyosource
b87f708c28 Update CreatingInnerBlocksState
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-08 10:41:06 +01:00
yoyosource
7675e464a7 Update CreatingInnerBlocksState
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-07 23:15:51 +01:00
yoyosource
c878a6a183 Fix LanternBoundingBox
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add LaufbauSettings gui working

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-07 19:54:28 +01:00
yoyosource
5095decb37 Revert ShrinkingOuterPointsState
Add LaufbauUtils.identifier

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-07 18:38:26 +01:00
yoyosource
3a24d27ee4 Add Translations to everything
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-07 10:33:28 +01:00
yoyosource
cae96cd580 Add Translations to everything
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-07 10:25:28 +01:00
yoyosource
016707d23b Remove ShrinkingOuterPointsState.java
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add SWItem to BlockBoundingBox and update every constructor call

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-07 10:11:14 +01:00
yoyosource
dc277b052a Update some stuff
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Add Initial GUI stuff

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-06 18:06:20 +01:00
yoyosource
db88a91085 Update some BlockBoundingBox
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-06 16:59:31 +01:00
yoyosource
9c3560a3ff Update blast resistance mode
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-06 13:29:25 +01:00
yoyosource
5d28c33e7c Update stone to end_stone
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-06 12:34:02 +01:00
yoyosource
99d007aef5 Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-05 21:05:04 +01:00
yoyosource
38ff383023 Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-05 20:00:44 +01:00
yoyosource
c5dbed177a Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-05 18:51:58 +01:00
yoyosource
8ee04c52b0 Update Laufbau
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-05 18:48:40 +01:00
yoyosource
364249b192 Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-05 18:39:20 +01:00
yoyosource
b04ab92a78 Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-05 18:29:58 +01:00
yoyosource
8f06dcfc85 Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-05 15:44:24 +01:00
yoyosource
6a08e5c378 Merge branch 'master' into Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-02-05 09:27:28 +01:00
yoyosource
2b9e9767b0 Fix Single Trace
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-05 09:23:48 +01:00
yoyosource
8adaca2108 Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-04 23:57:51 +01:00
yoyosource
1a3559b7ac Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-04 18:51:03 +01:00
yoyosource
00cfa1676b Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-04 17:39:43 +01:00
yoyosource
44c26e0310 Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-03 23:26:19 +01:00
yoyosource
d7062b07a3 Update Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-03 18:21:25 +01:00
yoyosource
4ea99f93e4 Add Laufbau
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add LaufbauCommand

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-03 16:09:37 +01:00
yoyosource
5cb99349b0 Update ScriptCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-02 16:04:57 +01:00
yoyosource
8173703855 Update ScriptCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-02 15:59:13 +01:00
yoyosource
91c64fa26b Update ScriptCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-02 15:43:16 +01:00
yoyosource
0162ed7d92 Update Greater and Less
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-02 11:45:33 +01:00
yoyosource
d2bbcc2d98 Update WarpListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-02 11:24:43 +01:00
yoyosource
3a5e0efa26 Add Call and Return
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-02 09:59:58 +01:00
yoyosource
e8fa5ead91 Add EventType.DropItem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Update FF Event

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-02 09:34:04 +01:00
yoyosource
e24970f947 Update Prototype
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 15:38:11 +01:00
yoyosource
346f347243 Add 1 new GuiItem
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 13:57:52 +01:00
yoyosource
98bb9bfb77 Add 4 new GuiItems
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 13:56:27 +01:00
yoyosource
9c49481907 Update BauGUI
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 13:41:46 +01:00
yoyosource
dfee01cbb8 Remove unused messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 13:27:09 +01:00
yoyosource
f6969daab6 Update /rg build ... help messages
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 13:24:21 +01:00
yoyosource
21e9c50ecd Update ScriptCommand menu creation with lore of items.
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 09:41:29 +01:00
yoyosource
5407c3f9b4 Update the naming of CustomScriptListener.java to CustomScriptManager
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 09:33:22 +01:00
yoyosource
399ae8b0ea Add EventType.SelfJoin
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Add EventType.SelfLeave

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 09:25:45 +01:00
yoyosource
57feb5936c Update BauServer
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Remove BauSystem_API from settings.gradle

Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 09:14:26 +01:00
ed6367e90a Merge pull request 'Refactor BauServer.java' (#65) from use_spigotcore_data into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #65
2022-02-01 09:03:35 +01:00
0ff2713e52 Merge branch 'master' into use_spigotcore_data
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-02-01 09:01:53 +01:00
d96d98a56f Merge pull request 'Refactoring' (#64) from refactoring into master
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Reviewed-on: #64
Reviewed-by: YoyoNow <jwsteam@nidido.de>
2022-02-01 09:00:53 +01:00
yoyosource
baf44e326a Update some LinkageUtils problems
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 09:00:01 +01:00
yoyosource
d571edd2b9 Remove FlatteningWrapper.IFlatteningWrapper.start and stop as they should not be exposed
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-02-01 08:51:51 +01:00
4e54f13848 Merge branch 'master' into refactoring
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-01-31 14:59:33 +01:00
292cb689aa Fix createWarps, reenable LockSchemCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-01-31 14:58:30 +01:00
yoyosource
4939fd6bcc Update prototypes4.yapion and regions4.yapion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-01-31 14:30:27 +01:00
yoyosource
d5874ecda0 Update prototypes4.yapion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-01-30 22:40:00 +01:00
yoyosource
76785ca0b7 Update prototypes4.yapion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-01-30 21:47:43 +01:00
yoyosource
07ca3452ee Update prototypes4.yapion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-01-30 19:18:00 +01:00
yoyosource
6cbc6e9725 Update prototypes4.yapion
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-01-30 11:58:51 +01:00
48803dc3d2 Remove protocollib
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-01-29 16:28:21 +01:00
fe5c5a3ebd Remove unused
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-01-29 15:35:47 +01:00
fbf2789918 Finish dependency inversion + remove deprecated apis
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-01-29 15:28:28 +01:00
Chaos
2c58329ca2 Refactor BauServer.java
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2022-01-29 15:23:15 +01:00
341cc9c0f7 Dependency inversion
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed
2022-01-29 14:10:11 +01:00
yoyosource
92c4d7a7e2 Fix Constants
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-01-20 20:52:37 +01:00
yoyosource
61aaf1287c Update ScriptCommand
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-01-20 20:32:27 +01:00
yoyosource
de9511b0b7 Add 2 new Constants
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-01-20 20:30:29 +01:00
yoyosource
6929a60c0f Update WarpListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-01-20 20:24:40 +01:00
yoyosource
f0a23e0d5f Update WarpListener
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: yoyosource <yoyosource@nidido.de>
2022-01-20 20:19:04 +01:00
519 geänderte Dateien mit 32120 neuen und 15741 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 {
@ -48,9 +48,9 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok:1.18.22'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.22'
implementation project(":BauSystem_API")
implementation project(":BauSystem_Main")
compileOnly files("${projectDir}/../lib/Spigot-1.15.jar")
compileOnly files("${projectDir}/../lib/WorldEdit-1.15.jar")
compileOnly files("${projectDir}/../lib/ProtocolLib.jar")
compileOnly swdep('Spigot-1.15')
compileOnly swdep('WorldEdit-1.15')
compileOnly swdep('SpigotCore')
}

Datei anzeigen

@ -1,20 +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/>.
*/
rootProject.name = 'BauSystem_15'

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.features.detonator;
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;
class DetonatorEntity_15 extends EntityFallingBlock implements AbstractDetonatorEntity {
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
private final Vector position;
private int references = 0;
public DetonatorEntity_15(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,53 +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.features.other;
import lombok.experimental.UtilityClass;
import net.minecraft.server.v1_15_R1.EnumGamemode;
import net.minecraft.server.v1_15_R1.PlayerInteractManager;
import org.bukkit.GameMode;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import java.lang.reflect.Field;
@UtilityClass
public class NoClipCommand_15 {
private Field gameModeField;
public void setGameModeInternal(Player player, GameMode gameMode) {
CraftPlayer craftPlayer = (CraftPlayer) player;
EnumGamemode enumGamemode = EnumGamemode.getById(gameMode.getValue());
try {
checkCache();
gameModeField.set(craftPlayer.getHandle().playerInteractManager, enumGamemode);
} catch (NoSuchFieldException | IllegalAccessException e) {
throw new SecurityException("Could not find Field?");
}
}
private void checkCache() throws NoSuchFieldException {
if (gameModeField == null) {
gameModeField = PlayerInteractManager.class.getDeclaredField("gamemode");
gameModeField.setAccessible(true);
}
}
}

Datei anzeigen

@ -1,14 +0,0 @@
package de.steamwar.bausystem.features.script;
import lombok.experimental.UtilityClass;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
@UtilityClass
public class ScriptListener_15 {
static boolean isNoBook(ItemStack item) {
return item.getType() != Material.WRITABLE_BOOK && item.getType() != Material.WRITTEN_BOOK;
}
}

Datei anzeigen

@ -1,65 +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.features.simulator;
import de.steamwar.bausystem.shared.BaseEntity_15;
import de.steamwar.bausystem.shared.ReferenceCounter;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
class SimulatorEntity_15 extends BaseEntity_15 implements AbstractSimulatorEntity {
private ReferenceCounter referenceCounter = new ReferenceCounter();
public SimulatorEntity_15(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 (referenceCounter.increment() > 0) {
return;
}
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 (!force && referenceCounter.decrement() > 0) {
return false;
}
sendEntityDestroy(player);
die();
return true;
}
}

Datei anzeigen

@ -1,31 +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.features.simulator;
import org.bukkit.World;
import org.bukkit.util.Vector;
public class Simulator_15 {
public static AbstractSimulatorEntity create(World world, Vector tntPosition, boolean highlight) {
return new SimulatorEntity_15(world, tntPosition, highlight);
}
}

Datei anzeigen

@ -1,53 +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.features.slaves;
import lombok.experimental.UtilityClass;
import net.minecraft.server.v1_15_R1.WorldGenVines;
import org.bukkit.Material;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@UtilityClass
public class MaterialUtils_15 {
private static Set<Material> unpushable = new HashSet<>(Arrays.asList(Material.BARRIER, Material.BEACON, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK, Material.ENCHANTING_TABLE, Material.END_GATEWAY, Material.END_PORTAL, Material.ENDER_CHEST, Material.GRINDSTONE, Material.JIGSAW, Material.JUKEBOX, Material.NETHER_PORTAL, Material.OBSIDIAN, Material.STRUCTURE_VOID, Material.BARREL, Material.BEEHIVE, Material.BEE_NEST, Material.BLAST_FURNACE, Material.BREWING_STAND, Material.CHEST, Material.DAYLIGHT_DETECTOR, Material.DISPENSER, Material.DROPPER, Material.FURNACE, Material.HOPPER, Material.LECTERN, Material.SMOKER, Material.TRAPPED_CHEST));
// TODO: FLOWER
private static Set<Material> breaking = new HashSet<>(Arrays.asList(Material.BAMBOO, Material.CACTUS, Material.CAKE, Material.CARVED_PUMPKIN, Material.CHORUS_FLOWER, Material.CHORUS_PLANT, Material.COBWEB, Material.COCOA, Material.DRAGON_EGG, Material.FIRE, Material.FLOWER_POT, Material.JACK_O_LANTERN, Material.LADDER, Material.LAVA, Material.LAVA, Material.LEVER, Material.LILY_PAD, Material.MELON, Material.NETHER_WART, Material.PUMPKIN, Material.COMPARATOR, Material.REDSTONE_WIRE, Material.REPEATER, Material.TORCH, Material.STRUCTURE_VOID, Material.SCAFFOLDING, Material.SEA_PICKLE, Material.SNOW, Material.SUGAR_CANE, Material.TORCH, Material.TRIPWIRE, Material.TRIPWIRE_HOOK, Material.TURTLE_EGG, Material.VINE, Material.WATER, Material.WHEAT));
static boolean isUnpusheable(Material material) {
if (unpushable.contains(material)) {
return true;
}
String name = material.name();
return name.contains("BANNER") || name.contains("SIGN");
}
static boolean isBreakingOnPush(Material material) {
if (breaking.contains(material)) {
return true;
}
String name = material.name();
return name.contains("BED") || name.contains("BUTTON") || name.contains("CARPET") || (name.contains("DOOR") && !name.contains("TRAPDOOR")) || name.contains("HEAD") || name.contains("LEAVES") || name.contains("MUSHROOM") || name.contains("PRESSURE_PLATE") || name.contains("SHULKER_BOX");
}
}

Datei anzeigen

@ -1,61 +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.features.tpslimit;
import lombok.experimental.UtilityClass;
import net.minecraft.server.v1_15_R1.*;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import java.util.ArrayList;
import java.util.List;
@UtilityClass
public class TPSLimit_15 {
private static List<Packet<?>> packets = new ArrayList<>();
private static final Vec3D noMotion = new Vec3D(0, 0, 0);
static 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));
}
});
}
static void sendTickPackets() {
Bukkit.getOnlinePlayers().forEach(player -> {
PlayerConnection connection = ((CraftPlayer) player).getHandle().playerConnection;
for (Packet<?> p : packets) {
connection.sendPacket(p);
}
});
}
}

Datei anzeigen

@ -1,59 +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.features.tracer;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Waterlogged;
import org.bukkit.util.Vector;
public class TNTTracer_15 {
public static AbstractTraceEntity create(World world, Vector tntPosition, boolean tnt) {
return new TraceEntity_15(world, tntPosition, tnt);
}
public static boolean inWater(World world, Vector tntPosition) {
Block block = world.getBlockAt(tntPosition.getBlockX(), tntPosition.getBlockY(), tntPosition.getBlockZ());
if (block.getType() == Material.WATER)
return true;
BlockData data = block.getBlockData();
if (!(data instanceof Waterlogged))
return false;
return ((Waterlogged) data).isWaterlogged();
}
public static Material getTraceShowMaterial() {
return Material.LIME_CONCRETE;
}
public static Material getTraceHideMaterial() {
return Material.RED_CONCRETE;
}
public static Material getTraceXZMaterial() {
return Material.QUARTZ_SLAB;
}
}

Datei anzeigen

@ -1,72 +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.features.tracer;
import de.steamwar.bausystem.shared.BaseEntity_15;
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;
class TraceEntity_15 extends BaseEntity_15 implements AbstractTraceEntity {
private boolean exploded = false;
private ReferenceCounter referenceCounter = new ReferenceCounter();
public TraceEntity_15(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,21 +0,0 @@
package de.steamwar.bausystem.features.util;
import com.sk89q.worldedit.bukkit.BukkitWorld;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.regions.selector.CuboidRegionSelector;
import com.sk89q.worldedit.world.World;
import de.steamwar.bausystem.region.Point;
import de.steamwar.bausystem.region.RegionUtils_15;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
public class SelectCommand_15 {
static final WorldEditPlugin WORLDEDIT_PLUGIN = ((WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit"));
static final World BUKKITWORLD = new BukkitWorld(Bukkit.getWorlds().get(0));
static void setSelection(Player p, Point minPoint, Point maxPoint) {
WORLDEDIT_PLUGIN.getSession(p).setRegionSelector(BUKKITWORLD, new CuboidRegionSelector(BUKKITWORLD, RegionUtils_15.toBlockVector3(minPoint), RegionUtils_15.toBlockVector3(maxPoint)));
}
}

Datei anzeigen

@ -1,59 +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.features.warp;
import de.steamwar.bausystem.shared.BaseArmorStand_15;
import net.minecraft.server.v1_15_R1.ChatComponentText;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class WarpEntity_15 extends BaseArmorStand_15 implements AbstractWarpEntity {
private String name;
public WarpEntity_15(World world, Vector position, String name) {
super(world, position);
setInvisible(true);
setSmall(true);
this.name = name;
this.setNoGravity(true);
this.ticksLived = -12000;
}
@Override
public void display(Player player) {
this.setCustomNameVisible(true);
this.setCustomName(new ChatComponentText(name));
sendEntity(player);
}
@Override
public void setName(String name) {
this.name = name;
}
@Override
public boolean hide(Player player) {
sendEntityDestroy(player);
die();
return true;
}
}

Datei anzeigen

@ -1,67 +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.features.world;
import net.minecraft.server.v1_15_R1.NBTBase;
import net.minecraft.server.v1_15_R1.NBTTagCompound;
import net.minecraft.server.v1_15_R1.NBTTagList;
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack;
import org.bukkit.inventory.ItemStack;
public class InventoryListener_15 {
private static final int threshold = 2048;
public static boolean checkItemStack(ItemStack item) {
net.minecraft.server.v1_15_R1.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);
NBTTagCompound tag = nmsItem.getTag();
if (tag != null && tag.hasKey("BlockEntityTag")) {
NBTTagCompound blockTag = tag.getCompound("BlockEntityTag");
if (blockTag.hasKey("Items")) {
return drillDown(blockTag.getList("Items", 10), 0, 0) > threshold;
}
}
return false;
}
private static 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.hasKey("tag")) {
invalid += slot.getByte("Count");
NBTTagCompound iTag = slot.getCompound("tag");
if (iTag.hasKey("BlockEntityTag")) {
NBTTagCompound blockTag = iTag.getCompound("BlockEntityTag");
if (blockTag.hasKey("Items")) {
invalid = drillDown(blockTag.getList("Items", 10), layer + 1, invalid);
}
}
}
if (invalid > threshold)
break;
}
return invalid;
}
}

Datei anzeigen

@ -1,231 +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.region;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.bukkit.BukkitWorld;
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.extent.clipboard.io.BuiltInClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardReader;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardWriter;
import com.sk89q.worldedit.function.mask.AbstractExtentMask;
import com.sk89q.worldedit.function.mask.Mask2D;
import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
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.session.ClipboardHolder;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockTypes;
import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
import javax.annotation.Nullable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.logging.Level;
@UtilityClass
public class Region_15 {
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();
private Map<String, Long> timing = new HashMap<>();
public void start(String name) {
timing.put(name, System.currentTimeMillis());
}
public long stop(String name) {
return System.currentTimeMillis() - timing.getOrDefault(name, System.currentTimeMillis());
}
EditSession paste(File file, Point pastePoint, PasteOptions pasteOptions) {
start("clipboardLoad");
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);
}
System.out.println("Clipboard Load: " + stop("clipboardLoad"));
start("paste");
EditSession editSession = paste(clipboard, pastePoint, pasteOptions);
System.out.println("Paste: " + stop("paste"));
return editSession;
}
EditSession paste(Clipboard clipboard, Point pastePoint, PasteOptions pasteOptions) {
try (EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(new BukkitWorld(Bukkit.getWorlds().get(0)), -1)) {
start("changeColor");
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");
e.setMask(new AbstractExtentMask(clipboard) {
@Override
public boolean test(BlockVector3 blockVector3) {
BaseBlock block = getExtent().getFullBlock(blockVector3);
String blockName = block.toString().toLowerCase();
return blocks.contains(blockName);
}
@Nullable
@Override
public Mask2D toMask2D() {
return null;
}
});
}
System.out.println("ChangeColor: " + stop("changeColor"));
start("transform");
ClipboardHolder ch = new ClipboardHolder(clipboard);
BlockVector3 dimensions = clipboard.getDimensions();
BlockVector3 v = BlockVector3.at(pastePoint.getX(), pastePoint.getY(), pastePoint.getZ());
BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
if (pasteOptions.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);
}
System.out.println("Transform: " + stop("transform"));
start("reset");
if (pasteOptions.isReset()) {
e.setBlocks(new CuboidRegion(RegionUtils_15.toBlockVector3(pasteOptions.getMinPoint()), RegionUtils_15.toBlockVector3(pasteOptions.getMaxPoint())), Objects.requireNonNull(BlockTypes.AIR).getDefaultState().toBaseBlock());
if (pasteOptions.getWaterLevel() != 0) {
e.setBlocks(new CuboidRegion(RegionUtils_15.toBlockVector3(pasteOptions.getMinPoint()), RegionUtils_15.toBlockVector3(pasteOptions.getMaxPoint()).withY(pasteOptions.getWaterLevel())), Objects.requireNonNull(BlockTypes.WATER).getDefaultState().toBaseBlock());
}
}
System.out.println("Reset: " + stop("reset"));
start("operation");
Operations.completeBlindly(ch.createPaste(e).to(v).ignoreAirBlocks(pasteOptions.isIgnoreAir()).build());
System.out.println("Operation: " + stop("operation"));
return e;
} catch (WorldEditException e) {
throw new SecurityException(e.getMessage(), e);
}
}
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);
}
}
}
}
}
boolean backup(Point minPoint, Point maxPoint, File file) {
BukkitWorld bukkitWorld = new BukkitWorld(Bukkit.getWorlds().get(0));
CuboidRegion region = new CuboidRegion(bukkitWorld, RegionUtils_15.toBlockVector3(minPoint), RegionUtils_15.toBlockVector3(maxPoint));
BlockArrayClipboard clipboard = new BlockArrayClipboard(region);
try (EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(bukkitWorld, -1)) {
ForwardExtentCopy copy = new ForwardExtentCopy(
e, region, clipboard, region.getMinimumPoint()
);
copy.setCopyingEntities(false);
copy.setCopyingBiomes(false);
Operations.complete(copy);
try (ClipboardWriter writer = BuiltInClipboardFormat.SPONGE_SCHEMATIC.getWriter(new FileOutputStream(file))) {
writer.write(clipboard);
}
return true;
} catch (WorldEditException | IOException e) {
Bukkit.getLogger().log(Level.SEVERE, e.getMessage(), e);
return false;
}
}
}

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 BaseArmorStand_15 extends EntityArmorStand implements AbstractEntity {
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
protected Vector position;
public BaseArmorStand_15(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 BaseEntity_15 extends EntityFallingBlock implements AbstractEntity {
private static final Vec3D ZERO = new Vec3D(0, 0, 0);
private final IBlockData iBlockData;
protected Vector position;
public BaseEntity_15(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

@ -0,0 +1,243 @@
/*
* 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.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.WorldEditException;
import com.sk89q.worldedit.bukkit.BukkitWorld;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.extent.clipboard.io.BuiltInClipboardFormat;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardReader;
import com.sk89q.worldedit.extent.clipboard.io.ClipboardWriter;
import com.sk89q.worldedit.function.mask.Mask;
import com.sk89q.worldedit.function.mask.Mask2D;
import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
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.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.Point;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Waterlogged;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import javax.annotation.Nullable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
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 {
@Override
public boolean isNoBook(ItemStack item) {
return item.getType() != Material.WRITABLE_BOOK && item.getType() != Material.WRITTEN_BOOK;
}
private static final Set<Material> unpushable = new HashSet<>(Arrays.asList(Material.BARRIER, Material.BEACON, Material.COMMAND_BLOCK, Material.CHAIN_COMMAND_BLOCK, Material.REPEATING_COMMAND_BLOCK, Material.ENCHANTING_TABLE, Material.END_GATEWAY, Material.END_PORTAL, Material.ENDER_CHEST, Material.GRINDSTONE, Material.JIGSAW, Material.JUKEBOX, Material.NETHER_PORTAL, Material.OBSIDIAN, Material.STRUCTURE_VOID, Material.BARREL, Material.BEEHIVE, Material.BEE_NEST, Material.BLAST_FURNACE, Material.BREWING_STAND, Material.CHEST, Material.DAYLIGHT_DETECTOR, Material.DISPENSER, Material.DROPPER, Material.FURNACE, Material.HOPPER, Material.LECTERN, Material.SMOKER, Material.TRAPPED_CHEST));
// TODO: FLOWER
private static final Set<Material> breaking = new HashSet<>(Arrays.asList(Material.BAMBOO, Material.CACTUS, Material.CAKE, Material.CARVED_PUMPKIN, Material.CHORUS_FLOWER, Material.CHORUS_PLANT, Material.COBWEB, Material.COCOA, Material.DRAGON_EGG, Material.FIRE, Material.FLOWER_POT, Material.JACK_O_LANTERN, Material.LADDER, Material.LAVA, Material.LAVA, Material.LEVER, Material.LILY_PAD, Material.MELON, Material.NETHER_WART, Material.PUMPKIN, Material.COMPARATOR, Material.REDSTONE_WIRE, Material.REPEATER, Material.TORCH, Material.STRUCTURE_VOID, Material.SCAFFOLDING, Material.SEA_PICKLE, Material.SNOW, Material.SUGAR_CANE, Material.TORCH, Material.TRIPWIRE, Material.TRIPWIRE_HOOK, Material.TURTLE_EGG, Material.VINE, Material.WATER, Material.WHEAT));
@Override
public boolean isUnpusheable(Material material) {
if (unpushable.contains(material)) {
return true;
}
String name = material.name();
return name.contains("BANNER") || name.contains("SIGN");
}
@Override
public boolean isBreakingOnPush(Material material) {
if (breaking.contains(material)) {
return true;
}
String name = material.name();
return name.contains("BED") || name.contains("BUTTON") || name.contains("CARPET") || (name.contains("DOOR") && !name.contains("TRAPDOOR")) || name.contains("HEAD") || name.contains("LEAVES") || name.contains("MUSHROOM") || name.contains("PRESSURE_PLATE") || name.contains("SHULKER_BOX");
}
@Override
public boolean isWorldEditCommand(String command) {
if (command.startsWith("/")) {
command = command.replaceFirst("/", "");
}
command = command.toLowerCase();
return WorldEdit.getInstance().getPlatformManager().getPlatformCommandManager().getCommandManager().containsCommand(command);
}
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)));
}
@Override
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);
}
return clipboard;
}
@Override
public EditSession paste(PasteBuilder pasteBuilder) {
try (EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(new BukkitWorld(Bukkit.getWorlds().get(0)), -1)) {
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.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
@Override
public Mask2D toMask2D() {
return null;
}
});
}
ClipboardHolder ch = new ClipboardHolder(clipboard);
BlockVector3 dimensions = clipboard.getDimensions();
BlockVector3 v = BlockVector3.at(pasteBuilder.getPastPoint().getX(), pasteBuilder.getPastPoint().getY(), pasteBuilder.getPastPoint().getZ());
BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
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 (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(pasteBuilder.isIgnoreAir()).build());
return e;
} catch (WorldEditException e) {
throw new SecurityException(e.getMessage(), e);
}
}
@Override
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);
try (EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(bukkitWorld, -1)) {
ForwardExtentCopy copy = new ForwardExtentCopy(
e, region, clipboard, region.getMinimumPoint()
);
copy.setCopyingEntities(false);
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;
}
}
@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 (IOException e) {
Bukkit.getLogger().log(Level.SEVERE, e.getMessage(), e);
return false;
}
}
private BlockVector3 toBlockVector3(Point point) {
return BlockVector3.at(point.getX(), point.getY(), point.getZ());
}
@Override
public boolean inWater(org.bukkit.World world, Vector tntPosition) {
Block block = world.getBlockAt(tntPosition.getBlockX(), tntPosition.getBlockY(), tntPosition.getBlockZ());
if (block.getType() == Material.WATER)
return true;
BlockData data = block.getBlockData();
if (!(data instanceof Waterlogged))
return false;
return ((Waterlogged) data).isWaterlogged();
}
}

Datei anzeigen

@ -0,0 +1,135 @@
/*
* 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.server.v1_15_R1.*;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
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 java.util.ArrayList;
import java.util.List;
import java.util.function.LongSupplier;
public class NMSWrapper15 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().playerInteractManager, EnumGamemode.getById(gameMode.getValue()));
}
@Override
public void setSlotToItemStack(Player player, Object o) {
PacketPlayInSetCreativeSlot packetPlayInSetCreativeSlot = (PacketPlayInSetCreativeSlot) o;
int index = packetPlayInSetCreativeSlot.b();
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.getItemStack()));
if (index < 9) player.getInventory().setHeldItemSlot(index);
player.updateInventory();
}
private static final Reflection.FieldAccessor<Integer> gameStateChangeReason = Reflection.getField(NoClipCommand.gameStateChange, int.class, 0);
@Override
public void setGameStateChangeReason(Object packet) {
gameStateChangeReason.set(packet, 3);
}
@Override
public void setPlayerBuildAbilities(Player player) {
((CraftPlayer) player).getHandle().abilities.mayBuild = true;
((CraftPlayer) player).getHandle().abilities.canInstantlyBuild = true;
}
@Override
public Material pathMaterial() {
return Material.GRASS_PATH;
}
private static final int threshold = 2048;
@Override
public boolean checkItemStack(ItemStack item) {
net.minecraft.server.v1_15_R1.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);
NBTTagCompound tag = nmsItem.getTag();
if (tag != null && tag.hasKey("BlockEntityTag")) {
NBTTagCompound blockTag = tag.getCompound("BlockEntityTag");
if (blockTag.hasKey("Items")) {
return drillDown(blockTag.getList("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.hasKey("tag")) {
invalid += slot.getByte("Count");
NBTTagCompound iTag = slot.getCompound("tag");
if (iTag.hasKey("BlockEntityTag")) {
NBTTagCompound blockTag = iTag.getCompound("BlockEntityTag");
if (blockTag.hasKey("Items")) {
invalid = drillDown(blockTag.getList("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), Vec3D.a);
}
}

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

@ -0,0 +1,59 @@
/*
* 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.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;
public class PlayerMovementWrapper15 implements PlayerMovementWrapper {
@Override
public void setPosition(Player player, Object object) {
PacketPlayInFlying packetPlayInFlying = ((PacketPlayInFlying) object);
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
if (Float.isNaN(packetPlayInFlying.a(Float.NaN))) {
entityPlayer.e(packetPlayInFlying.a(0.0), packetPlayInFlying.b(0.0), packetPlayInFlying.c(0.0));
} else {
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

@ -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 {
}

63
BauSystem_18/build.gradle Normale Datei
Datei anzeigen

@ -0,0 +1,63 @@
/*
* 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.18-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.18')
compileOnly swdep('WorldEdit-1.15')
compileOnly swdep('SpigotCore')
}

Datei anzeigen

@ -0,0 +1,145 @@
/*
* 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.comphenix.tinyprotocol.TinyProtocol;
import de.steamwar.bausystem.features.util.NoClipCommand;
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.server.level.PlayerInteractManager;
import net.minecraft.world.level.EnumGamemode;
import net.minecraft.world.phys.Vec3D;
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 java.util.ArrayList;
import java.util.List;
import java.util.function.LongSupplier;
public class NMSWrapper18 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().d, EnumGamemode.a(gameMode.getValue()));
}
@Override
public void setSlotToItemStack(Player player, Object o) {
PacketPlayInSetCreativeSlot packetPlayInSetCreativeSlot = (PacketPlayInSetCreativeSlot) o;
int index = packetPlayInSetCreativeSlot.b();
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().fs().d = true;
((CraftPlayer) player).getHandle().fs().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.t();
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,57 @@
/*
* 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.utils.PlayerMovementWrapper;
import net.minecraft.network.protocol.game.PacketPlayInFlying;
import net.minecraft.server.level.EntityPlayer;
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer;
import org.bukkit.entity.Player;
public class PlayerMovementWrapper18 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;
}
}

64
BauSystem_19/build.gradle Normale Datei
Datei anzeigen

@ -0,0 +1,64 @@
/*
* 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.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'
compileOnly 'com.mojang:authlib:1.5.25'
compileOnly 'com.mojang:brigadier:1.0.18'
compileOnly swdep('Spigot-1.19')
compileOnly swdep('WorldEdit-1.15')
compileOnly swdep('SpigotCore')
}

Datei anzeigen

@ -0,0 +1,145 @@
/*
* 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.comphenix.tinyprotocol.TinyProtocol;
import de.steamwar.bausystem.features.util.NoClipCommand;
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.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 java.util.ArrayList;
import java.util.List;
import java.util.function.LongSupplier;
public class NMSWrapper19 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().d, EnumGamemode.a(gameMode.getValue()));
}
@Override
public void setSlotToItemStack(Player player, Object o) {
PacketPlayInSetCreativeSlot packetPlayInSetCreativeSlot = (PacketPlayInSetCreativeSlot) o;
int index = packetPlayInSetCreativeSlot.b();
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().fF().d = true;
((CraftPlayer) player).getHandle().fF().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,61 @@
/*
* 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.server.level.EntityPlayer;
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
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

@ -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

@ -1,20 +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/>.
*/
rootProject.name = 'BauSystem_API'

Datei anzeigen

@ -1,38 +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.features.simulator;
import de.steamwar.bausystem.shared.AbstractEntity;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public interface AbstractSimulatorEntity extends AbstractEntity {
void display(Player player);
void setPosition(Vector position);
boolean hide(Player player, boolean always);
int getId();
Entity getBukkitEntity();
}

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 {
@ -43,10 +43,5 @@ sourceSets {
}
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'
compileOnly files("${projectDir}/../lib/Spigot-1.15.jar")
}
compileOnly swdep('SpigotCore')
}

Datei anzeigen

@ -1,7 +1,7 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
* 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
@ -17,22 +17,24 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.slaves;
package de.steamwar.linkage.types;
import de.steamwar.core.VersionedCallable;
import org.bukkit.Material;
import de.steamwar.linkage.LinkageType;
import de.steamwar.linkage.plan.BuildPlan;
import de.steamwar.linkage.plan.MethodBuilder;
public class MaterialUtils {
import javax.lang.model.element.TypeElement;
public static boolean isUnpusheable(Material material) {
return VersionedCallable.call(
new VersionedCallable<>(() -> MaterialUtils_15.isUnpusheable(material), 15)
);
public class BauGuiItem_GENERIC implements LinkageType {
@Override
public String method() {
return "linkGUIItems";
}
public static boolean isBreakingOnPush(Material material) {
return VersionedCallable.call(
new VersionedCallable<>(() -> MaterialUtils_15.isBreakingOnPush(material), 15)
);
@Override
public void generateCode(BuildPlan buildPlan, MethodBuilder methodBuilder, String s, TypeElement typeElement) {
buildPlan.addImport("de.steamwar.bausystem.features.gui.BauGUI");
methodBuilder.addLine("BauGUI.addItem(" + s + ");");
}
}

Datei anzeigen

@ -1,7 +1,7 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
* 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
@ -17,20 +17,23 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.loader.activations;
package de.steamwar.linkage.types;
import de.steamwar.bausystem.features.loader.Loader;
import org.bukkit.entity.Player;
import de.steamwar.linkage.LinkageType;
import de.steamwar.linkage.plan.BuildPlan;
import de.steamwar.linkage.plan.MethodBuilder;
public abstract class AbstractLoaderActivation {
import javax.lang.model.element.TypeElement;
Player p;
public class BoundingBoxLoader_GENERIC implements LinkageType {
public AbstractLoaderActivation(Player p) {
this.p = p;
@Override
public String method() {
return "linkBoundingBox";
}
public abstract boolean execute();
public abstract int delay(Loader loader);
@Override
public void generateCode(BuildPlan buildPlan, MethodBuilder method, String instance, TypeElement typeElement) {
method.addLine(instance + ".load();");
}
}

Datei anzeigen

@ -1,7 +1,7 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 SteamWar.de-Serverteam
* 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
@ -17,14 +17,24 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.features.warp;
package de.steamwar.linkage.types;
import org.bukkit.World;
import org.bukkit.util.Vector;
import de.steamwar.linkage.LinkageType;
import de.steamwar.linkage.plan.BuildPlan;
import de.steamwar.linkage.plan.MethodBuilder;
public class WarpListener_15 {
import javax.lang.model.element.TypeElement;
public static AbstractWarpEntity create(World world, Vector position, String name) {
return new WarpEntity_15(world, position, name);
public class ConfigConverter_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.configplayer.Config");
methodBuilder.addLine("Config.addConfigConverter(" + s + ");");
}
}

Datei anzeigen

@ -0,0 +1,41 @@
/*
* 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 FAWEMaskParser_GENERIC implements LinkageType {
@Override
public String method() {
return "link";
}
@Override
public void generateCode(BuildPlan buildPlan, MethodBuilder methodBuilder, String s, TypeElement typeElement) {
methodBuilder.addLine("if (org.bukkit.Bukkit.getPluginManager().getPlugin(\"FastAsyncWorldEdit\") != null) {");
methodBuilder.addLine(" " + s + ";");
methodBuilder.addLine("}");
}
}

Datei anzeigen

@ -0,0 +1,41 @@
/*
* 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 FAWEPatternParser_GENERIC implements LinkageType {
@Override
public String method() {
return "link";
}
@Override
public void generateCode(BuildPlan buildPlan, MethodBuilder methodBuilder, String s, TypeElement typeElement) {
methodBuilder.addLine("if (org.bukkit.Bukkit.getPluginManager().getPlugin(\"FastAsyncWorldEdit\") != null) {");
methodBuilder.addLine(" " + s + ";");
methodBuilder.addLine("}");
}
}

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

@ -0,0 +1,40 @@
/*
* 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 PanzernAlgorithm_GENERIC implements LinkageType {
@Override
public String method() {
return "linkPanzern";
}
@Override
public void generateCode(BuildPlan buildPlan, MethodBuilder methodBuilder, String s, TypeElement typeElement) {
buildPlan.addImport("de.steamwar.bausystem.features.slaves.panzern.Panzern");
methodBuilder.addLine("Panzern.add(" + s + ");");
}
}

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 ScoreboardElement_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.world.BauScoreboard");
methodBuilder.addLine("BauScoreboard.addElement(" + s + ");");
}
}

Datei anzeigen

@ -27,13 +27,13 @@ version '1.0'
compileJava.options.encoding = 'UTF-8'
sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceCompatibility = 17
targetCompatibility = 17
sourceSets {
main {
java {
srcDirs = ['src/']
srcDirs = ['src/', 'build/generated/sources/annotationProcessor/java/main/']
}
resources {
srcDirs = ['src/']
@ -43,23 +43,27 @@ sourceSets {
}
dependencies {
implementation project(":BauSystem_15")
implementation project(":BauSystem_API")
implementation 'yoyosource:YAPION:0.25.3'
// implementation files("${projectDir}/../lib/YAPION-SNAPSHOT.jar")
// implementation 'yoyosource:YAPION:0.25.3'
implementation files("${projectDir}/../libs/YAPION-SNAPSHOT.jar")
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 'org.atteo.classindex:classindex:3.11'
testImplementation 'org.atteo.classindex:classindex:3.11'
annotationProcessor 'org.atteo.classindex:classindex:3.11'
testAnnotationProcessor 'org.atteo.classindex:classindex:3.11'
implementation project(":BauSystem_Linkage")
annotationProcessor project(":BauSystem_Linkage")
compileOnly files("${projectDir}/../lib/Spigot-1.15.jar")
compileOnly files("${projectDir}/../lib/WorldEdit-1.15.jar")
compileOnly files("${projectDir}/../lib/SpigotCore.jar")
}
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.20')
compileOnly swdep('SpigotCore')
annotationProcessor swdep('SpigotCore')
compileOnly swdep('FastAsyncWorldEdit-1.18')
compileOnly swdep('AxiomPaper')
implementation 'org.luaj:luaj-jse:3.0.1'
}

Datei anzeigen

@ -1,20 +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/>.
*/
rootProject.name = 'BauSystem_Main'

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

Datei anzeigen

@ -0,0 +1,955 @@
#
# 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/>.
#
PREFIX=§eBau§8System§8»
TIME=HH:mm:ss
DATE=........
COMMAND_HELP_HEAD=§7---=== (§e{0}§7) ===---
ONLY_SCHEMS=§cDu kannst hier keinen Ordner angeben
PAGE_LIST=§e Seite ({0}/{1}) »»
LIST_PREVIOUS_PAGE=§eVorherige Seite
LIST_NEXT_PAGE=§eNächste Seite
# Permission
NO_PERMISSION=Du darfst dies hier nicht nutzen
SPECTATOR=§fZuschauer
# Scoreboard
SCOREBOARD_TIME=Uhrzeit
SCOREBOARD_REGION=Region
SCOREBOARD_TRACE=Trace
SCOREBOARD_LOADER=Loader
SCOREBOARD_TPS=TPS
SCOREBOARD_TPS_FROZEN=§eEingefroren
SCOREBOARD_TRACE_TICKS=Ticks
SCOREBOARD_TECHHIDER=TechHider§8: §aAn
SCOREBOARD_XRAY=XRay§8: §aAn
SCOREBOARD_LOCK_TEAM=Bau Lock§8: §eTeam
SCOREBOARD_LOCK_TEAM_AND_SERVERTEAM=Bau Lock§8: §e(Server-) Team
SCOREBOARD_LOCK_SERVERTEAM=Bau Lock§8: §eServerteam
SCOREBOARD_LOCK_NOBODY=Bau Lock§8: §cNiemand
# Flags
FLAG_COLOR=Color
FLAG_TNT=TNT
FLAG_FIRE=Fire
FLAG_FREEZE=Freeze
FLAG_PROTECT=Protect
FLAG_ITEMS=Items
FLAG_FIRE_ALLOW=§can
FLAG_FIRE_DENY=§aaus
FLAG_FREEZE_ACTIVE=§aan
FLAG_FREEZE_INACTIVE=§caus
FLAG_PROTECT_ACTIVE=§aan
FLAG_PROTECT_INACTIVE=§caus
FLAG_TNT_ALLOW=§aan
FLAG_TNT_DENY=§caus
FLAG_TNT_ONLY_TB=§7Kein §eBaurahmen
FLAG_TNT_ONLY_BUILD=§7Kein §eTestblock
FLAG_ITEMS_ACTIVE=§aan
FLAG_ITEMS_INACTIVE=§caus
FLAG_COLOR_WHITE=§fWeiß
FLAG_COLOR_ORANGE=§6Orange
FLAG_COLOR_MAGENTA=§dMagenta
FLAG_COLOR_LIGHT_BLUE=§bHellblau
FLAG_COLOR_YELLOW=§eGelb
FLAG_COLOR_LIME=§aHellgrün
## This cannot be converted
FLAG_COLOR_PINK=§ePink
FLAG_COLOR_GRAY=§8Grau
FLAG_COLOR_LIGHT_GRAY=§7Hellgrau
FLAG_COLOR_CYAN=§3Cyan
FLAG_COLOR_PURPLE=§5Lila
FLAG_COLOR_BLUE=§1Blau
## This cannot be converted
FLAG_COLOR_BROWN=§eBraun
FLAG_COLOR_GREEN=§2Grün
FLAG_COLOR_RED=§cRot
FLAG_COLOR_BLACK=§0Schwarz
# Region
REGION_TYPE_NORMAL=Normal
REGION_TYPE_BUILD=Baubereich
REGION_TYPE_ONLY_TB=Testblock
# AttributesCopy
ATTRIBUTES_CANT_COPY=§cDu musst den Item Type in der Hand halten wo du auch drauf guckst.
ATTRIBUTES_NO_COPY=§cKeine Attribute kopiert.
ATTRIBUTES_COPIED=§eAttribute kopiert.
ATTRIBUTE_REMOVE_ALL=§eAlle Attribute entfernt.
ATTRIBUTE_REMOVE_SINGLE=§eAttribut §7{0}§e entfernt.
ATTRIBUTE_REMOVE_NOT_FOUND=§cAttribut nicht gefunden
# AutoStart
AUTOSTART_COMMAND_HELP=§8/§etimer §8- §7Legt den AutostartTimer ins Inventar
AUTOSTART_ITEM_NAME=§eAutostartTimer
AUTOSTART_ITEM_LORE=§eRechtsklick Block §8- §7Starte den Timer
AUTOSTART_MESSAGE_NO_REGION=§cDu befindest dich derzeit in keiner Region
AUTOSTART_MESSAGE_RESET=§eDer AutostartTimer wurde zurückgesetzt
AUTOSTART_MESSAGE_START=§eAutostartTimer gestartet
AUTOSTART_MESSAGE_RESULT1=§eZeit §7bis zur §eExplosion §7am Gegner§8:§e {0}§7 in game ticks
AUTOSTART_MESSAGE_RESULT2=§7Zeitdifferenz in §egame ticks §7bis {0} Sekunden§8:§e {1}
AUTOSTART_MESSAGE_RESULT3=§7Positiv, wenn zu wenig, negativ wenn zu viel
# Backup
BACKUP_HELP_CREATE=§8/§ebackup create §8- §7Erstelle ein Backup der Region
BACKUP_HELP_LOAD=§8/§ebackup load §8[§7BackupName§8] §8- §7 Lade ein Backup
BACKUP_HELP_LIST=§8/§ebackup list §8- §7Liste alle Backups der Region auf
BACKUP_HELP_GUI=§8/§ebackup gui §8- §7Öffne die Backups in einer GUI
BACKUP_REGION_NO_REGION=§cDu bist in keiner Region
BACKUP_CREATE_SUCCESS=§7Das Backup wurde erstellt
BACKUP_CREATE_FAILURE=§cDas Backup erstellen ist schiefgegangen
BACKUP_CREATE_NO_CHANGE=§7Die Region hat keine Veränderung
BACKUP_LIST_HEAD=§7---=== (§eBackup §7{0}§7) ===---
BACKUP_LIST_ENTRY=§7{0} §e[Laden]
BACKUP_LOAD_FAILURE=§cDas Backup laden ist schiefgegangen
BACKUP_LOAD=§7Backup geladen
BACKUP_INV_NAME=§eBackup
BACKUP_ITEM_NAME=§eBackup §7von §e{0}
BACKUP_LORE=§eKlicken zum Laden
# Bau
BAU_COMMAND_HELP_INFO=§8/§ebau info §8- §7Alias für §8/§ebauinfo
BAU_INFO_ITEM_NAME=§eBau-Management
## This is used in BauInfoBauGuiItem.java
BAU_INFO_ITEM_LORE_TNT=§7TNT§8: §e{0}
BAU_INFO_ITEM_LORE_FREEZE=§7Freeze§8: §e{0}
BAU_INFO_ITEM_LORE_DAMAGE=§7Damage§8: §e{0}
BAU_INFO_ITEM_LORE_FIRE=§7Feuer§8: §e{0}
BAU_INFO_ITEM_LORE_COLOR=§7Farbe§8: §e{0}
BAU_INFO_ITEM_LORE_PROTECT=§7Protect§8: §e{0}
BAU_INFO_COMMAND_HELP=§8/§ebauinfo §8- §7Gibt Informationen über den Bau
BAU_INFO_COMMAND_OWNER=§7Besitzer§8: §e{0}
BAU_INFO_COMMAND_MEMBER=§7{0} §8[§7{1}§8]§8: §e{2}
BAU_INFO_COMMAND_FLAG=§7{0}§8: §7{1}
BAU_INFO_COMMAND_TPS=§7TPS§8:§e
# Countingwand
COUNTINGWAND_COMMAND_HELP=§8/§ecountingwand §8- §7Gibt dir ein CountingWand
COUNTINGWAND_ITEM_NAME=§eZollstock
COUNTINGWAND_ITEM_LORE1=§eLinksklick §8- §7Setzt die 1. Position
COUNTINGWAND_ITEM_LORE2=§eRechtsklick §8- §7Setzt die 2. Position
COUNTINGWAND_MESSAGE_RCLICK=§7Erste Position bei: §8[§7{0}§8, §7{1}§8, §7{2}§8] ({3}§8) ({4}§8)
COUNTINGWAND_MESSAGE_LCLICK=§7Zweite Position bei: §8[§7{0}§8, §7{1}§8, §7{2}§8] ({3}§8) ({4}§8)
COUNTINGWAND_MESSAGE_VOLUME=§e{0}
COUNTINGWAND_MESSAGE_DIMENSION=§e{0}§8, §e{1}§8, §e{2}
# Design Endstone
DESIGN_ENDSTONE_COMMAND_HELP=§8/§edesign endstone §8- §7Zeige End Stone im Design
DESIGN_ENDSTONE_REGION_ERROR=§cDiese Region hat keinen Baubereich
DESIGN_ENDSTONE_ENABLE=§aEndstone im Design ist angezeigt
DESIGN_ENDSTONE_DISABLE=§cEndstone im Design ist versteckt
# Detonator
DETONATOR_LOC_REMOVE=§e{0} entfernt
DETONATOR_LOC_ADD=§e{0} hinzugefügt
DETONATOR_BUTTON_SWITCH=Hebel
DETONATOR_BUTTON_WOOD_BUTTON=Knopf
DETONATOR_BUTTON_STONE_BUTTON=Knopf
DETONATOR_BUTTON_PRESSURE_PLATE=Druckplatte
DETONATOR_BUTTON_WEIGHTED-PRESSURE_PLATE=Druckplatte
DETONATOR_BUTTON_TRIPWIRE=Tripwire
DETONATOR_BUTTON_NOTEBLOCK=Noteblock
DETONATOR_BUTTON_DAYLIGHTSENSOR=Tageslichtsensor
DETONATOR_BUTTON_POWERABLE=Aktivierbarer Block
DETONATOR_BUTTON_INVALID=Invalider
DETONATOR_WAND_NAME=§eFernzünder
DETONATOR_WAND_LORE_1=§eLinks Klick §8- §7Setzte einen Punkt zum Aktivieren
DETONATOR_WAND_LORE_2=§eLinks Klick + Shift §8- §eFüge einen Punkt hinzu
DETONATOR_WAND_LORE_3=§eRechts Klick §8- §eLöse alle Punkte aus
DETONATOR_HELP_WAND=§8/§edetonator wand §8-§7 Gibt den Fernzünder
DETONATOR_HELP_CLICK=§8/§edetonator click §8-§7 Aktiviere einen Fernzünder (Haupthand -> Hotbar -> Inventar)
DETONATOR_HELP_CLEAR=§8/§edetonator clear §8-§7 Cleare einen Fernzünder
DETONATOR_HELP_AUTOSTART=§8/§edetonator autostart §8-§7 Automatisch den Autostarttester Aktivieren
DETONATOR_AUTOSTART_ENABLE=§7Autostart beim detonate §aangeschaltet
DETONATOR_AUTOSTART_DISABLE=§7Autostart beim detonate §causgeschaltet
DETONATOR_POINT_ACT=§eEinen Punkt ausgelöst
DETONATOR_POINTS_ACT=§e{0} Punkte ausgelöst
DETONATOR_INVALID_POINT=§cEin Punkt konnte nicht ausgeführt werden
DETONATOR_INVALID_POINTS=§c{0} Punkte konnten nicht ausgeführt werden
DETONATOR_INVALID_BLOCK=§eDer Block konnte nicht hinzugefügt werden
# Hotbar
HOTBAR_HELP_GENERIC=§7Speichert eine Hotbar. Diese wird beim Joinen eines Bauserver, wo du ein Leeres Inventar hast geladen.
HOTBAR_HELP_SAVE=§8/§ehotbar save §8-§7 Speicher deine Aktuelle Hotbar
HOTBAR_HELP_LOAD=§8/§ehotbar load §8-§7 Lade deine Standard Hotbar
HOTBAR_HELP_SHOW=§8/§ehotbar show §8-§7 Zeigt dir deine Standard Hotbar
HOTBAR_SAVED=§7Deine Hotbar wurde als Standard gespeichert
HOTBAR_LOADED=§7Deine Standard Hotbar wurde geladen
HOTBAR_INVENTORY=Standard Hotbar
# GUI
GUI_EDITOR_ITEM_NAME=§eGui Editor
GUI_NAME=Bau GUI
GUI_ITEM_LORE1=§7Du kannst dieses Item zum Öffnen der BauGUI nutzen
GUI_ITEM_LORE2=§7oder Doppel F (Swap hands) drücken.
GUI_EDITOR_TITLE=Bau GUI Editor
GUI_EDITOR_ITEM_ROW_P=§e+1 Zeile
GUI_EDITOR_ITEM_ROW_M=§e-1 Zeile
GUI_EDITOR_ITEM_TRASH=§cTrashcan
GUI_EDITOR_ITEM_TRASH_LORE=§7Item hier rein Legen
GUI_EDITOR_ITEM_MORE=§eMehr Items
GUI_EDITOR_ITEM_CLOSE=§eSchließen
GUI_EDITOR_TITLE_MORE=Item auswählen
# Script
## CustomScript
SCRIPT_HOTKEY_ITEM_NAME=§7Hotkey§8: §e{0}
SCRIPT_EVENT_ITEM_NAME=§7Event§8: §e{0}
SCRIPT_COMMAND_ITEM_NAME=§7Befehl§8: §e/{0}
SCRIPT_ERROR_ONLY_IN_GLOBAL=§cDieses Skript kann nur als globales Skript ausgeführt werden
## Script Menu GUI
SCRIPT_MENU_GUI_ITEM_LORE_1=§7Klicke zum rausnehmen
SCRIPT_MENU_GUI_ITEM_LORE_2=§7Shiftklick zum kopieren
SCRIPT_MENU_GUI_ITEM_LORE_3=§7Rechtsklick zum editieren
SCRIPT_MENU_GUI_ITEM_LORE_4=§7Mittelklick zum anschauen
SCRIPT_MENU_GUI_NAME=§eSkript-Menü
SCRIPT_MENU_GUI_ITEM_ADD_NAME=§eHinzufügen
SCRIPT_MENU_GUI_ITEM_ADD_LORE=§7Klicke mit einem Buch zum hinzufügen
SCRIPT_DEPRECATED=§cDie Funktion §e{0}§c ist veraltet und wird demnächst entfernt. Bitte benutze §e{1}§c.
# Shield Printing
SHIELD_PRINTING_HELP_START=§8/§eshieldprinting start §8- §7Starte das Schild drucken
SHIELD_PRINTING_HELP_COPY=§8/§eshieldprinting copy §8- §7Kopiert die Schilder
SHIELD_PRINTING_HELP_APPLY=§8/§eshieldprinting apply §8- §7Wendet die Schilder an
SHIELD_PRINTING_HELP_STOP=§8/§eshieldprinting stop §8- §7Stoppt das Schild drucken
SHIELD_PRINTING_HELP_STEP_1=§81. §7Füge die Schematic in die Welt ein
SHIELD_PRINTING_HELP_STEP_2=§82. §7Starte das Schild drucken mit §8/§eshieldprinting start
SHIELD_PRINTING_HELP_STEP_3=§83. §7Warte bis alle Schilde ausgefahren sind
SHIELD_PRINTING_HELP_STEP_4=§84. §7Editiere die Schilde wenn nötig
SHIELD_PRINTING_HELP_STEP_5=§85. §7Kopiere das gedruckte mit §8/§eshieldprinting copy
SHIELD_PRINTING_HELP_STEP_6=§86. §7Füge die originale Schematic wieder ein
SHIELD_PRINTING_HELP_STEP_7=§87. §7Wende das gedruckte mit §8/§eshieldprinting apply§7 an
SHIELD_PRINTING_NO_REGION=§cDu bist in keiner Region.
SHIELD_PRINTING_NOT_RUNNING=§cShield printing ist nicht aktiv.
SHIELD_PRINTING_BOSSBAR=§fBewegungen: {0}
SHIELD_PRINTING_BOSSBAR_COPIED=§fBewegungen: {0} Kopiert: {1}
SHIELD_PRINTING_GUI_NAME=§7Schild Drucken
SHIELD_PRINTING_GUI_APPLY=§aAnwenden
SHIELD_PRINTING_GUI_STATE_PREVIOUS=§7R-Click§8: §7Vorherige
SHIELD_PRINTING_GUI_STATE_NEXT=§7L-Click§8: §7Nächste
SHIELD_PRINTING_GUI_STATE_ACTIVE=§e> §7{0}
SHIELD_PRINTING_GUI_STATE_INACTIVE=§8> §7{0}
SHIELD_PRINTING_GUI_STATE_FROM_ORIGINAL=Original
SHIELD_PRINTING_GUI_STATE_FROM_COPY=Kopie
SHIELD_PRINTING_GUI_STATE_ALWAYS_ON=An
SHIELD_PRINTING_GUI_STATE_ALWAYS_OFF=Aus
SHIELD_PRINTING_GUI_STATE_ALWAYS_OPEN=Offen
SHIELD_PRINTING_GUI_STATE_ALWAYS_CLOSED=Geschlossen
SHIELD_PRINTING_GUI_STATE_FENCE=§7{0} §fZaun Verbindungen
SHIELD_PRINTING_GUI_STATE_OPENABLE=§7{0} §fGeöffnet
SHIELD_PRINTING_GUI_STATE_PISTON=§7{0} §fAusgefahren
SHIELD_PRINTING_GUI_STATE_POWERABLE=§7{0} §fAktiviert
SHIELD_PRINTING_GUI_STATE_WALL=§7{0} §fWand Verbindungen
SHIELD_PRINTING_START=§aShield printing wurde gestartet.
SHIELD_PRINTING_COPY=§aSchilde wurden kopiert.
SHIELD_PRINTING_APPLY=§aSchilde wurden angewendet.
SHIELD_PRINTING_STOP=§aShield printing wurde gestoppt.
# Unsign Book
UNSIGN_HELP=§8/§eunsign §8- §7Mache ein Buch beschreibbar
# Simulator
SIMULATOR_HELP=§8/§esimulator §8-§7 Legt dir den Simulatorstab ins Inventar
SIMULATOR_CREATE_HELP=§8/§esimulator create §8[§7name§8] §8-§7 Erstelle einen neuen Simulator
SIMULATOR_CHANGE_HELP=§8/§esimulator change §8-§7 Wechsel zu einem anderen Simulator
SIMULATOR_DELETE_HELP=§8/§esimulator delete §8[§7name§8] §8-§7 Löscht den Simulator
SIMULATOR_START_HELP=§8/§esimulator start §8[§7name§8] §8-§7 Startet die Simulation
SIMULATOR_COPY_HELP=§8/§esimulator copy §8[§7to-copy§8] §8[§7name§8] §8-§7 Kopiert einen Simulator
SIMULATOR_GUI_ITEM_NAME=§eTNT Simulator
SIMULATOR_NO_SIM_IN_HAND=§cKein Simulator Item gewählt
SIMULATOR_GUI_SELECT_SIM=Simulator wählen
SIMULATOR_GUI_CREATE_SIM=§eSimulator erstellen
SIMULATOR_GUI_CREATE_SIM_GUI=Simulator erstellen
SIMULATOR_NAME_ALREADY_EXISTS=§cSimulator existiert bereits
SIMULATOR_NAME_INVALID=§cUngültiger Name
SIMULATOR_ERROR_COPY=§cFehler beim kopieren
SIMULATOR_NOT_EXISTS=§cSimulator existiert nicht
SIMULATOR_CREATE=§aSimulator erstellt
SIMULATOR_EDIT_LOCATION=§7Editiere Positionen
SIMULATOR_EDIT_PROPERTIES=§7Editiere Eigenschaften
SIMULATOR_EDIT_OTHER=§7Editiere Andere
SIMULATOR_EDIT_GROUP=§7Editiere Gruppe
SIMULATOR_EDIT_GROUP_MENU=§eEditiere Gruppe
SIMULATOR_WAND_NAME=§eKanonensimulator
SIMULATOR_WAND_NAME_SELECTED=§7Kanonensimulator §8- §e{0}
SIMULATOR_WAND_LORE_1=§eRechtsklick §8- §7Füge eine Position hinzu
SIMULATOR_WAND_LORE_2=§eSneaken §8- §7Freie Bewegung
SIMULATOR_WAND_LORE_3=§eLinksklick §8- §7Starte die Simulation
SIMULATOR_WAND_LORE_4=§eRechtsklick Luft §8- §7Öffne die GUI
SIMULATOR_WAND_LORE_5=§eDoppel Shift §8- §7Wechsel zwischen TNT und Redstone Block
SIMULATOR_REGION_FROZEN=§cSimulator kann nicht in eingefrorenen Regionen genutzt werden
## Other
SIMULATOR_PLUS_ONE=§7+1
SIMULATOR_PLUS_PIXEL_SHIFT=§eShift §7Click für §e+0,0625
SIMULATOR_PLUS_FIVE_SHIFT=§eShift §7Click für §e+5
SIMULATOR_MINUS_ONE=§7-1
SIMULATOR_MINUS_PIXEL_SHIFT=§eShift §7Click für §e-0,0625
SIMULATOR_MINUS_FIVE_SHIFT=§eShift §7Click für §e-5
SIMULATOR_POSITION_X=§7x-Position
SIMULATOR_POSITION_Y=§7y-Position
SIMULATOR_POSITION_Z=§7z-Position
SIMULATOR_BACK=§eZurück
SIMULATOR_GUI_TOTAL_TNT=§7Gesamt TNT§8: §e{0}
SIMULATOR_DELETED=§cSimulator gelöscht
## GUI
SIMULATOR_POSITION_EDIT=§ePosition bearbeiten
SIMULATOR_POSITION_ADD=§ePosition setzen
SIMULATOR_GUI_TNT_SPAWN_NAME=§eTNT
SIMULATOR_GUI_TNT_SPAWN_LORE_1=§7TNT-Anzahl§8: §e{0}
SIMULATOR_GUI_TNT_SPAWN_LORE_3=§7Lebensdauer§8: §e{0}
SIMULATOR_GUI_TNT_GROUP_NAME=§eTNT Gruppe
SIMULATOR_GUI_TNT_GROUP_LORE_1=§7Elementanzahl§8: §e{0}
SIMULATOR_GUI_TNT_DISABLED=§cDisabled
SIMULATOR_GUI_NAME=Kanonensimulator
SIMULATOR_GUI_DELETE=§cTNT löschen
SIMULATOR_GUI_AUTO_TRACE=§eAutoTrace§8: §7{0}
SIMULATOR_GUI_MOVE_ALL=§eAlle Verschieben
SIMULATOR_ALIGNMENT_CENTER=§7Verschiebung§8: §eMitte
SIMULATOR_ALIGNMENT_POSITIVE_X=§7Verschiebung§8: §ePositive X
SIMULATOR_ALIGNMENT_NEGATIVE_X=§7Verschiebung§8: §eNegative X
SIMULATOR_ALIGNMENT_POSITIVE_Z=§7Verschiebung§8: §ePositive Z
SIMULATOR_ALIGNMENT_NEGATIVE_Z=§7Verschiebung§8: §eNegative Z
SIMULATOR_MOVE_ALL_GUI_NAME=TNT Verschieben
SIMULATOR_TNT_SPAWN_GUI_NAME=TNT konfigurieren {0}
SIMULATOR_TNT_SPAWN_LORE=§eZum Ändern klicken
SIMULATOR_TNT_SPAWN_COUNT=§7TNT-Anzahl §8- §e{0}
SIMULATOR_TNT_SPAWN_COUNT_ANVIL_GUI_NAME=Anzahl TNT
SIMULATOR_TNT_SPAWN_TICK=§7Tick §8- §e{0}
SIMULATOR_TNT_SPAWN_TICK_ANVIL_GUI_NAME=Tick Offset
SIMULATOR_TNT_SPAWN_FUSE=§7Lebensdauer §8- §e{0}
SIMULATOR_TNT_SPAWN_FUSE_ANVIL_GUI_NAME=Fuse-Ticks
SIMULATOR_TNT_SPAWN_VELOCITY_NAME=§7TNT
SIMULATOR_TNT_SPAWN_VELOCITY_X=§7TNT §eSprung X §8- {0}
SIMULATOR_TNT_SPAWN_VELOCITY_Y=§7TNT §eSprung Y §8- {0}
SIMULATOR_TNT_SPAWN_VELOCITY_Z=§7TNT §eSprung Z §8- {0}
SIMULATOR_TNT_SPAWN_VELOCITY_ON=§aan
SIMULATOR_TNT_SPAWN_VELOCITY_OFF=§caus
SIMULATOR_TNT_SPAWN_POSITION_X=§7x-Position §8- §e{0}
SIMULATOR_TNT_SPAWN_POSITION_Y=§7y-Position §8- §e{0}
SIMULATOR_TNT_SPAWN_POSITION_Z=§7z-Position §8- §e{0}
SIMULATOR_TNT_SPAWN_ACTIVATED_WITH=§7Gezündet durch §8- §e{0}
SIMULATOR_TNT_SPAWN_ACTIVATED_WITH_COMPARATOR=Comparator
SIMULATOR_TNT_SPAWN_ACTIVATED_WITH_REPEATER=Repeater
SIMULATOR_TNT_SPAWN_ACTIVATED_WITH_OBSERVER=Observer
SIMULATOR_TNT_SPAWN_MATERIAL=§eMaterial
SIMULATOR_TNT_SPAWN_MATERIAL_LORE_1=§7Jetziges Material§8: §e{0}
SIMULATOR_TNT_SPAWN_MATERIAL_LORE_2=§eLink-Click §7Zum ändern
SIMULATOR_TNT_SPAWN_MATERIAL_LORE_3=§eRechts-Click §7Zum zurücksetzten
SIMULATOR_MATERIAL_GUI_NAME=Material ändern
SIMULATOR_MATERIAL_CLICK=§eKlicken zum wählen
SIMULATOR_TNT_SPAWN_ADD_IGNITION_PHASE=§eZündphase hinzufügen
SIMULATOR_TNT_SPAWN_ADD_TNT=§eTNT hinzufügen
SIMULATOR_TNT_SPAWN_REMOVE_TNT=§cEntfernen
SIMULATOR_TNT_SPAWN_POSITION_ANVIL_GUI_NAME=Position
# SmartPlace
SMART_PLACE_HELP=§8/§esmartplace §8-§7 Toggled SmartPlace
SMART_PLACE_INFO=§7Plaziert rotierbare Blöcke beim §esneaken§7 von dir §eweg§7.
SMART_PLACE_ENABLE=§aSmartPlace aktiviert
SMART_PLACE_DISABLE=§cSmartPlace deaktiviert
# InventoryFiller
INVENTORY_FILL_HELP=§8/§einventoryfill §8- §7Toggled InventoryFill
INVENTORY_FILL_INFO=§7Hilft dir, Behälter zu füllen, indem du sie beim sneaken ansiehst und den Gegenstand fallen lässt. Oder scrolle einfach auf einen Behälter, um die Menge des gehaltenen Gegenstandes darin zu ändern.
INVENTORY_FILL_ENABLE=§aInventoryFiller activated
INVENTORY_FILL_DISABLE=§cInventoryFiller deactivated
# Killchecker
KILLCHECKER_HELP_ENABLE=§8/§ekillchecker enable §8- §7Aktiviert Killchecker / Berechnet kills neu
KILLCHECKER_HELP_DISABLE=§8/§ekillchecker disable §8- §7Deaktiviert Killchecker
KILLCHECKER_INFO=§7Zeigt Überlappungen der Kanonen Kills im Baubereich an.
KILLCHECKER_INFO2=§7Nur farbige Blöcke wie Wolle, Terracotta, Stained Glass und Concrete wird gezählt.
KILLCHECKER_ENABLE=§aKillchecker aktiviert
KILLCHECKER_DISABLE=§cKillchecker deaktiviert
KILLCHECKER_BOSSBAR=§e§l{0} §7(§e{1}%§7) §e§l{2}§7 Kanonnen
# BlockCounter
BLOCK_COUNTER_HELP_TOGGLE=§8/§eblockcounter §8- §7Wechsel zwischen an und aus
BLOCK_COUNTER_HELP_ENABLE=§8/§eblockcounter enable §8- §7Schalte den BlockCounter an
BLOCK_COUNTER_HELP_DISABLE=§8/§eblockcounter disable §8- §7Schalte den BlockCounter aus
BLOCK_COUNTER_MESSAGE=§7Schaden §8> §e{0} §7Blöcke §e{1} §7TNT §e{2} §7Blöcke/TNT §e{3} §7Blöcke/tick
BLOCK_COUNTER_MESSAGE_SECOND=§7Schaden §8> §e{0} §7Blöcke §e{1} §7TNT §e{2} §7Blöcke/TNT §e{3} §7Blöcke/s
BLOCK_COUNTER_ENABLE=§7BlockCounter angemacht
BLOCK_COUNTER_DISABLE=§7BlockCounter ausgemacht
# DepthCounter
DEPTH_COUNTER_MESSAGE=§7Tiefe §8> §7
# TPSLimit
TPSLIMIT_FREEZE_HELP=§8/§etpslimit 0 §8-§7 Friere TPS ein
TPSLIMIT_LIMIT_HELP=§8/§etpslimit §8[§720>x>0.5§8] §8-§7 Verlangsame die TPS
TPSLIMIT_WARP_HELP=§8/§etpslimit §8[§7x>20§8] §8-§7 Beschleunige die TPS
TPSLIMIT_DEFAULT_HELP=§8/§etpslimit default §8-§7 Setze die TPS auf 20
TPSLIMIT_HELP=§8/§etpslimit §8-§7 Zeige die jetzige TPS
TICK_FREEZE_HELP=§8/§etick rate 0 §8-§7 Friere TPS ein
TICK_FREEZE_HELP_2=§8/§etick freeze §8-§7 Friere TPS ein
TICK_UNFREEZE_HELP=§8/§etick unfreeze §8-§7 Setze die TPS auf 20
TICK_LIMIT_HELP=§8/§etick rate §8[§720>x>0.5§8] §8-§7 Verlangsame die TPS
TICK_WARP_HELP=§8/§etick rate §8[§7x>20§8] §8-§7 Beschleunige die TPS
TICK_DEFAULT_HELP=§8/§etick rate default §8-§7 Setze die TPS auf 20
TICK_HELP=§8/§etick rate §8-§7 Zeige die jetzige TPS
TICK_STEPPING_HELP=§8/§etick step §8<§7Ticks§8> §8-§7 Spule n ticks oder 1 vor
TICK_WARPING_HELP=§8/§etick warp §8<§7Ticks§8> §8<§7TPS§8> §8-§7 Warpe n ticks oder 1 vor
TICK_BOSSBAR=§e{0}§8/§7{1} gesprungen
TPSLIMIT_GUI_ITEM_NAME=§eTPS Limiter
TPSLIMIT_GUI_ITEM_LORE=§7Aktuell: §e{0}
TPSLIMIT_ANVIL_GUI=Neues TPS Limit
TPSLIMIT_CURRENT=§7Jetziges TPS limit§8: §e{0}
TPSLIMIT_SET=§eTPS limit auf {0} gesetzt.
TPSLIMIT_FROZEN=§eTPS eingefroren.
# Trace
TRACE_RECORD=§aan
TRACE_HAS_TRACES=§ehat Traces
TRACE_MESSAGE_START=§aTNT-Tracer gestartet
TRACE_MESSAGE_AUTO_START=§eAuto TNT-Tracer gestartet
TRACE_MESSAGE_AUTO_STOP=§cAuto TNT-Tracer gestoppt
TRACE_MESSAGE_STOP=§cTNT-Tracer gestoppt
TRACE_MESSAGE_CLEAR=§cAlle TNT-Positionen gelöscht
TRACE_MESSAGE_CLICK_ISOLATE=§eKlicken zum §aisolieren§8/§causblenden
TRACE_MESSAGE_SHOW_AT=§aTNT-positions angezeigt bei {0}
TRACE_MESSAGE_SHOW_FROM=§aAll TNT-positions angezeigt von {0}
TRACE_MESSAGE_SHOW_FROM_TO=§aAll TNT-positions angezeigt von {0} bis {1}
TRACE_MESSAGE_BROADCAST=§e{0} teilte seinen Trace-Show-Status.
TRACE_MESSAGE_BROADCAST_HOVER=§eZum Ansehen klicken.
TRACE_MESSAGE_FOLLOW=§aSie folgen nun {0} Trace show state
TRACE_MESSAGE_FOLLOW_SELF=§cSie können sich selbst nicht folgen!
TRACE_MESSAGE_UNFOLLOW=§cSie folgen nicht mehr dem Status einer Trace-Show
TRACE_MESSAGE_SHOW_TO_SMALLER=§cBis muss größer als von sein
TRACE_MESSAGE_ISOLATE=§eTNT Positionen wurden isoliert
TRACE_COMMAND_HELP_BROADCAST=§8/§etrace broadcast §8- §7Teilt den aktuellen Trace-Show-Status mit anderen
TRACE_COMMAND_HELP_FOLLOW=§8/§etrace follow §8[§ePlayer§8] §8- §7Verfolgen eines Spielers Status anzeigen
TRACE_COMMAND_HELP_UNFOLLOW=§8/§etrace unfollow §8- §7Den Status der Trace-Anzeige aufheben
TRACE_COMMAND_HELP_START=§8/§etrace start §8- §7Startet die Aufnahme aller TNT-Positionen
TRACE_COMMAND_HELP_STOP=§8/§etrace stop §8- §7Stoppt den TNT-Tracer
TRACE_COMMAND_HELP_AUTO=§8/§etrace toggleauto §8- §7Automatischer Aufnahmenstart
TRACE_COMMAND_HELP_SHOW=§8/§etrace show §8<§eParameter§8> - §7Zeigt alle TNT-Positionen
TRACE_COMMAND_HELP_SHOW_AT=§8/§etrace show §8(§etime§8|§7fuse§8) §7at §8<§eTIME§8> - §7Zeigt alle TNT-Positionen bei §8<§eTIME§8> an
TRACE_COMMAND_HELP_SHOW_FROM=§8/§etrace show §8(§etime§8|§7fuse§8) §7from §8<§eFROM§8> - §7Zeigt alle TNT-Positionen von §8<§eFROM§8>
TRACE_COMMAND_HELP_SHOW_FROM_TO=§8/§etrace show §8(§etime§8|§7fuse§8) §7from §8<§eFROM§8> §7to §8<§eTO§8> - §7Zeigt alle TNT-Positionen zwischen §8<§eFROM§8> und §8<§eTO§8>
TRACE_COMMAND_HELP_HIDE=§8/§etrace hide §8- §7Versteckt alle TNT-Positionen
TRACE_COMMAND_HELP_DELETE=§8/§etrace delete §8- §7Löscht alle TNT-Positionen
TRACE_COMMAND_HELP_ISOLATE=§8/§etrace isolate §8[§eTrace§8] §8[§eTNT§8] §8- §7Isoliert spezifische TNTs des Traces
TRACE_GUI_ITEM_NAME=§eTracer
TRACE_GUI_ITEM_LORE=§7Status§8: {0}
TRACE_GUI_NAME=Tracer Gui
TRACE_GUI_TRACE_INACTIVE=§eTracer Starten
TRACE_GUI_TRACE_ACTIVE=§eTracer Stoppen
TRACE_GUI_TRACE_ACTIVE_AUTO=§eAuto-Trace ist Aktiv
TRACE_GUI_AUTO_TRACE_INACTIVE=§eAuto-Tracer Aktivieren
TRACE_GUI_AUTO_TRACE_ACTIVE=§eAuto-Tracer Deaktivieren
TRACE_GUI_DELETE=§eTrace Löschen
# Loader
LOADER_SETUP=§eEinrichtung
LOADER_RUNNING=§aLaufend
LOADER_PAUSE=§7Pausiert
LOADER_END=§8Beendet
LOADER_SINGLE=§aEinmal
LOADER_MESSAGE_INTERACT=§e{0} hinzugefügt {1}
LOADER_BUTTON_TNT=TNT
LOADER_BUTTON_SWITCH=Hebel
LOADER_BUTTON_WOOD_BUTTON=Holzknopf
LOADER_BUTTON_STONE_BUTTON=Steinknopf
LOADER_BUTTON_PRESSURE_PLATE=Druckplatte
LOADER_BUTTON_WEIGHTED_PRESSURE_PLATE=Druckplatte
LOADER_BUTTON_TRIPWIRE=Tripwire
LOADER_BUTTON_NOTEBLOCK=Noteblock
LOADER_BUTTON_DAYLIGHT_DETECTOR=Tageslichtsensor
LOADER_BUTTON_COMPARATOR=Comparator
LOADER_BUTTON_REPEATER=Repeater
LOADER_BUTTON_LECTERN=Lectern
LOADER_BUTTON_TRAPDOOR=Trapdoor
LOADER_BUTTON_DOOR=Door
LOADER_BUTTON_FENCEGATE=Fencegate
LOADER_HELP_SETUP=§8/§eloader setup §8- §7Startet die Aufnahme der Aktionen
LOADER_SETUP_STOP_FIRST=§cBitte stoppe zuerst den Loader
LOADER_HELP_START=§8/§eloader start §8- §7Spielt die zuvor aufgenommenen Aktionen ab
LOADER_HELP_SINGLE=§8/§eloader single §8- §7Spielt die zuvor aufgenommenen Aktionen einmal ab
LOADER_HELP_PAUSE=§8/§7loader pause §8- §7Pausiert das Abspielen
LOADER_HELP_GUI=§8/§7loader settings §8- §7Zeigt die Einstellungen an
LOADER_HELP_STOP=§8/§eloader stop §8- §7Stoppt die Aufnahme bzw. das Abspielen
LOADER_HELP_WAIT=§8/§7loader wait §8[§7Ticks§8] - §7Setzt die Wartezeit zwischen Schüssen
LOADER_HELP_SPEED=§8/§7loader speed §8[§7Ticks§8] - §7Setzt die Wartezeit zwischen Aktionen
LOADER_NO_LOADER=§cDu hast noch keinen Loader. Erstelle dir einen mit /loader setup
LOADER_NEW=§7Belade und feuer einmal die Kanone ab, um den Loader zu initialisieren.
LOADER_HOW_TO_START=§7Führe dann /§eloader start§7 um den Loader zu starten
LOADER_ACTIVE=§7Der Loader ist nun aktiviert.
LOADER_STOP=§7Der Loader ist nun gestoppt.
LOADER_SINGLE_CMD=§7Der Loader spielt nun einmal ab.
LOADER_PAUSED=§7Der Loader ist nun pausiert.
LOADER_SMALL_TIME=§cDie Wartezeit ist zu klein
LOADER_NEW_TIME=§7Die Schusswartezeit ist nun: {0}
LOADER_NEW_LOAD_TIME=§7Die Setzwartezeit ist nun: {0}
LOADER_NOTHING_RECORDED=§cEs wurden keine Elemente aufgenommen!
LOADER_GUI_TITLE=Loader Einstellungen
LOADER_GUI_SHOW_ALL=Zeige alles
LOADER_GUI_SHOW_INTERACTIONS=Zeige Interaktionen
LOADER_GUI_SHOW_WAITS=Zeige Wartezeiten
LOADER_GUI_SHOW_WAITS_BETWEEN_TNT=Zeige Wartezeiten zwischen TNT
LOADER_GUI_SHOW_TNT=Zeige TNT
LOADER_GUI_SHOW_WAITS_SET_ALL=§7Wait Time alle
LOADER_GUI_SHOW_WAITS_TITLE=§7Wartezeit
LOADER_GUI_SETTINGS_TITLE=Einstellungen
LOADER_GUI_COPY_TITLE=Anzahl Kopien
LOADER_GUI_SETTINGS_BACK=§8Zurück
LOADER_GUI_SETTINGS_COPY=§7Kopieren
LOADER_GUI_SETTINGS_DELETE=§cLöschen
LOADER_GUI_WAIT_TITLE=Wartezeit
LOADER_GUI_WAIT_BACK=§8Zurück
LOADER_GUI_CLICK_TO_EDIT=§7Klicke zum editieren
LOADER_GUI_ITEM_NAME=§7{0}§8: §e{1}
LOADER_SETTING_NAME=§7{0}
LOADER_SETTING_MODES=§7Modi§8: §e{0}
LOADER_SETTING_POWER=§7Redstone Stärke§8: §e{0}
LOADER_SETTING_TICKS=§7Ticks§8: §e{0}
LOADER_SETTING_REPEATER=§7Repeater§8: §e{0}
LOADER_SETTING_WAIT=§7Wartezeit§8: §e{0} Tick(s)
LOADER_SETTING_WAIT_NAME=Wartezeit
LOADER_SETTING_TICKS_NAME=Ticks
LOADER_SETTING_TICKS_REMOVE_ONE=§c-1
LOADER_SETTING_TICKS_REMOVE_ONE_SHIFT=§7Shift§8: §c-5
LOADER_SETTING_TICKS_ADD_ONE=§a+1
LOADER_SETTING_TICKS_ADD_ONE_SHIFT=§7Shift§8: §a+5
LOADER_SETTING_TNT_NAME=§cTNT
LOADER_SETTING_TNT_X=§7X§8: §e{0}
LOADER_SETTING_TNT_Y=§7Y§8: §e{0}
LOADER_SETTING_TNT_Z=§7Z§8: §e{0}
LOADER_INTERACTION_NOOP=NOOP
LOADER_INTERACTION_PLACE=Platzieren
LOADER_INTERACTION_INTERACT=Interagiere
LOADER_INTERACTION_POWERED=Aktiviert
LOADER_INTERACTION_UNPOWERED=Deaktiviert
LOADER_INTERACTION_PAGE_PREV=Vorherige Seite
LOADER_INTERACTION_PAGE_NEXT=Nächste Seite
LOADER_INTERACTION_PAGE=Seite {0}
LOADER_INTERACTION_ACTIVE=Aktiviert
LOADER_INTERACTION_INACTIVE=Deaktiviert
LOADER_INTERACTION_WAIT_FOR=Darauf warten
LOADER_INTERACTION_NO_WAIT_FOR=Nicht darauf warten
LOADER_INTERACTION_OPEN=Geöffnet
LOADER_INTERACTION_CLOSED=Geschlossen
LOADER_INTERACTION_COMPARE=Vergleichen
LOADER_INTERACTION_SUBTRACT=Subtrahieren
# Loadtimer
LOADTIMER_HELP_OVERVIEW=§7Messe dich und deine Freunde beim Beladen einer Kanone und bekomme informationen über die Kanone
LOADTIMER_HELP_START_1=§8/§eloadtimer start §8-§7 Startet den einfachen Loadtimer
LOADTIMER_HELP_START_2=§8/§7loadtimer start §8[§7full/half§8] - §7Starte den Timer in einem bestimmten Modus
LOADTIMER_HELP_START_3=§7Loadtimer Modis: Full -> Misst vom ersten TNT bis zur Treib-Explosion, kann somit besser die Schuss Frequent berechnen. Half -> Misst nur bis zur Aktivierung
LOADTIMER_HELP_STOP=§8/§eloadtimer stop §8-§7 Stoppe den Aktuellen Loadtimer
LOADTIMER_GUI_GLOBAL=§eLoadtimer gibt es nicht in der Global Region!
LOADTIMER_GUI_STOP=§eLoadtimer stoppen
LOADTIMER_GUI_START=§eLoadtimer starten
LOADTIMER_GUI_TITLE=Loadtimer Modus
LOADTIMER_GUI_FULL=§eFull
LOADTIMER_GUI_HALF=§eHalf
LOADTIMER_WAITING=§7Platziere ein TNT zum starten...
LOADTIMER_BOSSBAR=§7Tick: §e{0}§7(§e{1}§7) Zeit: §e{2}s §7Tnt: §e{3} §7Blöcke
LOADTIMER_ACTIVATED=§7Warte auf Zündung
LOADTIMER_IGNITION=§7Warte auf Explosion
LOADTIMER_SUMARY_HEAD=§7---=== (§eLoadtimer-Auswertung§7) ===---
LOADTIMER_SUMARY_PLAYERTABLE_HEAD=§7Spieler: §eTNT §7(§eTNT/s§7)
LOADTIMER_SUMARY_PLAYERTABLE_PLAYER=§7{0}: §e{1} §7(§e{2}/s§7)
LOADTIMER_SUMARY_PLAYERTABLE_ALL=Insgesamt
LOADTIMER_SUMARY_TIMES_HEAD=§7Zeiten: §eSekunden §7(§eTicks§7)
LOADTIMER_SUMARY_TIMES_START=§7 || §7Start!
LOADTIMER_SUMARY_TIMES_ACTIVATION=§7 || Aktivierung: §e{0}s §7(§e{1}t§7)
LOADTIMER_SUMARY_TIMES_IGNITION=§7 || Zündung: §e{0}s §7(§e{1}t§7)
LOADTIMER_SUMARY_TIMES_EXPLOSION=§7 || Explosion: §e{0}s §7(§e{1}t§7)
LOADTIMER_SUMARY_TIMES_LAST=§7\\/
LOADTIMER_SUMARY_STATS_HEAD=§7Kanonen-Stats§8:
LOADTIMER_SUMARY_STATS_TNT=§7TNT: §e{0}
LOADTIMER_SUMARY_STATS_FREQ=§7Belade Frequenz: §e{0}/m§8, §7Schuss Frequenz: §e{1}/m
# Observer
OBSERVER_HELP=§7Rechts-Klicke einen Observer um den Trace zu bekommen. Hierfür müssen Flammenpartikel an sein. Die Partikel werden im Block angezeigt.
OBSERVER_HELP_ENABLE=§8/§eobserver enable §8-§7 Aktiviere den Observer Tracer
OBSERVER_HELP_DISABLE=§8/§eobserver disable §8-§7 Deaktiviere den Observer Tracer
OBSERVER_HELP_DELETE=§8/§eobserver delete §8-§7 Lösche den Observer Tracer
OBSERVER_HELP_RETRACE=§8/§eobserver retrace §8-§7 Retrace den Observer Tracer
OBSERVER_ENABLE=§7Observer Trace gestartet
OBSERVER_DISABLE=§7Observer Trace gestoppt
OBSERVER_DELETE=§7Observer Trace gelöscht
OBSERVER_RETRACE_DONE=§7Observer Trace neu berechnet
OBSERVER_RETRACE_NO_TRACE=§7Kein Observer Trace zum neu berechnen
# Other
OTHER_ITEMS_TELEPORT_NAME=§eTeleporter
OTHER_ITEMS_TELEPORT_GUI_NAME=Teleportieren
OTHER_ITEMS_TELEPORT_PLAYER_OFFLINE=§cDer Spieler ist Offline
OTHER_ITEMS_CLEAR_NAME=§eClear
OTHER_ITEMS_DECLUTTER_NAME=§eDeclutter
OTHER_ITEMS_GAMEMODE_NAME=§eGamemode
OTHER_ITEMS_GAMEMODE_LORE_1=§eRechts-Click§8:§7 Umschalten zwischen Creative und Spectator
OTHER_ITEMS_GAMEMODE_LORE_2=§eLinks-Click§8:§7 Umschalten zwischen Survival und Adventure
OTHER_ITEMS_KILLALL_NAME=§eKillAll
OTHER_ITEMS_KILLALL_LORE_1=§eOhne Shift§8:§7 nur die Region
OTHER_ITEMS_KILLALL_LORE_2=§eMit Shift§8:§7 Global
OTHER_ITEMS_INVENTORY_FILL_LORE_ACTIVE=§aAktiviert
OTHER_ITEMS_INVENTORY_FILL_LORE_INACTIVE=§aDeaktiviert
OTHER_SLOT_INVALID_SLOT=§cInvalider Slot
OTHER_NOCLIP_SLOT_INFO=§7Mit /slot kannst du den ausgewählten Slot ändern und einen anderen Block in den Slot nehmen.
OTHER_NOCLIP_SLOT_HELP_PICK=§8/§eslot pick §8-§7 Lege den angeguckten Block ins Inventar
OTHER_NOCLIP_SLOT_HELP_DROP=§8/§eslot drop §8-§7 Cleared deinen Slot
OTHER_CLEAR_HELP_SELF=§8/§eclear §8- §7Leere dein Inventar
OTHER_CLEAR_HELP_PLAYER=§8/§eclear §8[§7Player§8] §8- §7Leere ein Spieler Inventar
OTHER_CLEAR_CLEARED=§7Dein Inventar wurde geleert.
OTHER_CLEAR_FROM=§7Dein Inventar wurde von {0} §7geleert.
OTHER_CLEAR_TO=§7Das Inventar von {0} §7wurde geleert.
OTHER_DECLUTTER_HELP=§8/§edeclutter §8- §7Räume dein Inventar auf
OTHER_DECLUTTER_DONE=§aDein Inventar wurde aufgeräumt.
OTHER_GAMEMODE_UNKNOWN=§cUnbekannter Spielmodus.
OTHER_GAMEMODE_POSSIBLE=§cMögliche Spielmodi: survival, adventure, creative, specator.
OTHER_KILLALL_HELP_SELF=§8/§ekillall §8- §7Entferne alle Entities aus deiner Region
OTHER_KILLALL_HELP_ALL=§8/§ekillall §8[§7Global§8/Local§7] §8- §7Entferne alle Entities aus deiner Region oder global
OTHER_KILLALL_REGION=§a{0} Entities aus der Region entfernt
OTHER_KILLALL_GLOBAL=§a{0} Entities aus der Welt entfernt
OTHER_TELEPORT_HELP=§8/§etp §8[§7Player§8] §8-§7 Teleportiere dich zu einem Spieler
OTHER_TELEPORT_SELF_0=§cSei eins mit dir selbst!
OTHER_TELEPORT_SELF_1=§cDu brauchst Leute zum spielen? Wir haben auch einen TeamSpeak!
OTHER_TELEPORT_SELF_2=§cNoch zu reisende Blöcke: 0; ETA: 0:00
OTHER_TELEPORT_SELF_3=§cEin wenig bewegung muss ein.
OTHER_TELEPORT_SELF_4=§cFür eine solche Distanz?
OTHER_TIME_HELP=§8/§etime §8<§7Zeit 0=Morgen§8, §76000=Mittag§8, §718000=Mitternacht§8> - §7Setzt die Zeit auf dem Bau
OTHER_TIME_INVALID=§cBitte gib eine Zahl zwischen 0 und 24000 an
OTHER_TIME_RESULT=§7§oWhooosh
OTHER_TPS_HEAD=§7TPS: 1s 10s 1m 5m 10m
OTHER_TPS_MESSAGE=§7 §e{0}§7 §e{1}§7 §e{2}§7 §e{3}§7 §e{4}
OTHER_TPS_SINGLE=§8TPS: §e{0}
OTHER_BIND_HELP=§8/§ebind §8[§7Command§8] §8-§e Binde ein Befehl auf Item Interaktion
OTHER_BIND_ERROR=§cFalscher oder unbekannter Befehl
OTHER_BIND_UNBINDABLE=§cBefehl konnte nicht gebunden werden
OTHER_BIND_MESSAGE_BIND=§7Befehl §e{0} §7ans Item gebunden
OTHER_BIND_MESSAGE_UNBIND=§7Befehl entbunden
# DebugStick
DEBUG_STICK_COMMAND_HELP=§8/§edebugstick §8-§7 Erhalte einen DebugStick
DEBUG_STICK_NAME=§eDebugstick
#Skull Gui
SKULL_GUI_ITEM_NAME=§eSpieler Köpfe
ANVIL_INV_NAME=Spieler name
# StructureVoid
STRUCTURE_VOID_COMMAND_HELP=§8/§estructureVoid §8-§7 Erhalte ein StructureVoid
# Dragon Egg
DRAGON_EGG_COMMAND_HELP=§8/§edragonegg §8-§7 Erhalte ein Drachenei
# NightVision
NIGHT_VISION_HELP=§8/§enightvision §8-§7 Schalte Nightvision an oder aus.
NIGHT_VISION_OFF=§eNightvision deaktiviert
NIGHT_VISION_ON=§eNightvision aktiviert
NIGHT_VISION_ITEM_ON=§7Nightvision: §eAktiviert
NIGHT_VISION_ITEM_OFF=§7Nightvision: §eDeaktiviert
#Navigation Wand
NAVIGATION_WAND=§eNavigation Wand
NAVIGATION_WAND_LEFT_CLICK=§eLeft click: jump to location
NAVIGATION_WAND_RIGHT_CLICK=§eRight click: pass through walls
# Material
MATERIAL_SEARCH_PROPERTY_TRUE=§aHat
MATERIAL_SEARCH_PROPERTY_FALSE=§cHat nicht
MATERIAL_SEARCH_PROPERTY_IGNORE=§eEgal
MATERIAL_INV_NAME=§eMaterial {0}/{1}
MATERIAL_SEARCH=§eSuchen
MATERIAL_BACK=§eZurück
MATERIAL_SEARCH_NAME=§eName
MATERIAL_SEARCH_TRANSPARENT=§eTransparent
MATERIAL_SEARCH_SOLID=§eSolide
MATERIAL_SEARCH_GRAVITY=§eFallend
MATERIAL_SEARCH_OCCLUDING=§eOccluding
MATERIAL_SEARCH_INTERACTEABLE=§eInterargierbar
MATERIAL_SEARCH_FLAMMABLE=§eFlammbar
MATERIAL_SEARCH_BURNABLE=§eBrennbar
MATERIAL_SEARCH_WATERLOGGABLE=§eWasserspeicherbar
MATERIAL_SEARCH_BLASTRESISTANCE=§eBlast Resistance
MATERIAL_SEARCH_VALUE=§8: §e{0}
MATERIAL_BLAST_RESISTANCE=§8- §eBlast Resistance§8: §7{0}
MATERIAL_HARDNESS=§8- §eHärte§8: §7{0}
MATERIAL_TNT_BREAKABLE=§8- §eZerstörbar durch TNT
MATERIAL_TNT_UNBREAKABLE=§8- §eNicht Zerstörbar durch TNT
MATERIAL_TRANSPARENT=§8- §eTransparenter Block
MATERIAL_SOLID=§8- §eSolider Block
MATERIAL_GRAVITY=§8- §eFallender Block
MATERIAL_OCCLUDING=§8- §eOccluding Block
MATERIAL_INTERACTABLE=§8- §eInterargierbarer Block
MATERIAL_FLAMMABLE=§8- §eFlammbarer Block
MATERIAL_BURNABLE=§8- §eBrennbarer Block
MATERIAL_WATERLOGGABLE=§8- §eWasserspeicherbarer Block
# Region Items
REGION_ITEM_COLOR=§7Color: §e{0}
REGION_ITEM_COLOR_CHOOSE=Farbe Wählen
REGION_ITEM_FIRE_ALLOW=§7Feuer: §eEingeschaltet
REGION_ITEM_FIRE_DISALLOW=§7Feuer: §eAusgeschaltet
REGION_ITEM_FREEZE_ALLOW=§7Freeze: §eEingeschaltet
REGION_ITEM_FREEZE_DISALLOW=§7Freeze: §eAusgeschaltet
REGION_ITEM_PROTECT_ALLOW=§7Protect: §eEingeschaltet
REGION_ITEM_PROTECT_DISALLOW=§7Protect: §eAusgeschaltet
REGION_ITEM_RESET=§eReset
REGION_ITEM_TESTBLOCK=§eTestblock
REGION_ITEM_TNT_OFF=§7TNT: §eAusgeschaltet
REGION_ITEM_TNT_ONLY_TB=§7TNT: §enur Testblock
REGION_ITEM_TNT_ONLY_BUILD=§7TNT: §enur Baubereich
REGION_ITEM_TNT_ON=§7TNT: §eEingeschaltet
REGION_ITEM_SELECTOR_TITLE=Tnt Modus
REGION_ITEM_SELECTOR_ON=§eEinschalten
REGION_ITEM_SELECTOR_ONLY_TB=§enur Testblock
REGION_ITEM_SELECTOR_ONLY_BUILD=§enur Baubereich
REGION_ITEM_SELECTOR_OFF=§eAusschalten
#Region
REGION_COLOR_HELP_COLOR=§8/§ecolor §8[§7Color§8] §8- §7Setze die Farbe der Region
REGION_COLOR_HELP_COLOR_TYPE=§8/§ecolor §8[§7Color§8] §8[§7Type§8] §8- §7Setze die Farbe der Region oder Global
REGION_COLOR_GLOBAL=§7Alle Regions farben auf §e{0}§7 gesetzt
REGION_COLOR_NO_REGION=§cDu befindest dich derzeit in keiner Region
REGION_FIRE_HELP=§8/§efire §8- §7Toggle Feuerschaden
REGION_FIRE_ENABLED=§cRegions Feuerschaden deaktiviert
REGION_FIRE_DISABLED=§aRegions Feuerschaden aktiviert
REGION_FREEZE_HELP=§8/§efreeze §8- §7Toggle Freeze
REGION_FREEZE_ENABLED=§cRegion eingefroren
REGION_FREEZE_DISABLED=§aRegion aufgetaut
REGION_ITEMS_HELP=§8/§eitems §8- §7Toggle Items
REGION_ITEMS_ENABLED=§aItems aktiviert in dieser Region
REGION_ITEMS_DISABLED=§cItems deaktiviert in dieser Region
REGION_PROTECT_HELP=§8/§eprotect §8- §7Schütze die Region
REGION_PROTECT_DISABLE=§cBoden Schutz aufgehoben
REGION_PROTECT_ENABLE=§aBoden geschützt
REGION_PROTECT_FALSE_REGION=§cDu befindest dich derzeit in keiner (M)WG-Region
REGION_NO_GRAVITY_HELP = §8/§enogravity §8- §7Toggle NoGravity
REGION_NO_GRAVITY_ENABLED = §aNoGravity aktiviert in dieser Region
REGION_NO_GRAVITY_DISABLED = §cNoGravity deaktiviert in dieser Region
REGION_REGION_HELP_UNDO=§8/§eregion undo §8- §7Mache die letzten 20 /testblock oder /reset rückgängig
REGION_REGION_HELP_REDO=§8/§eregion redo §8- §7Wiederhole die letzten 20 §8/§7rg undo
REGION_REGION_HELP_RESTORE=§8/§eregion restore §8- §7Setzte die Region zurück, ohne das Gebaute zu löschen
REGION_REGION_HELP_RESTORE_SCHEMATIC=§8/§eregion restore §8[§7Schematic§8] §8- §7Setzte die Region zurück, ohne das Gebaute zu löschen
REGION_REGION_HELP_COPYPOINT=§8/§eregion copypoint §8- §7Teleportiere dich zum Regions Kopierpunkt
REGION_REGION_HELP_TESTBLOCKPOINT=§8/§eregion testblockpoint §8- §7Teleportiere dich zum Regions Testblockpunkt
REGION_REGION_HELP_CHANGESKIN_INFO=§8/§eregion changeskin §8- §7Gebe den Regions Skin aus
REGION_REGION_HELP_CHANGESKIN=§8/§eregion changeskin §8[§7Skin§8] §8- §8Setzte den Regions Skin
REGION_REGION_HELP_COPY=§8/§eregion copy [-e] [-s] §8- §8Kopieren des Baubereichs optional mit Erweiterungen oder Auswahl am Kopierpunkt
REGION_REGION_HELP_PASTE=§8/§eregion paste [-a] [-s] §8[§7Skin§8] §8- §8Einfügen am Kopierpunkt optional ohne Luft und Auswahl des eingefügten Bereichs
REGION_REGION_NOTHING_UNDO=§cNichts zum rückgängig machen
REGION_REGION_UNDID=§7Letzte Aktion rückgangig gemacht
REGION_REGION_NOTHING_REDO=§cNichts zum wiederhohlen
REGION_REGION_REDID=§7Letzte Aktion wiederhohlt
REGION_REGION_RESTORED=§7Region zurückgesetzt
REGION_REGION_FAILED_RESTORE=§cFehler beim Zurücksetzen der Region
REGION_REGION_COLORED=§7Region umgefärbt
REGION_REGION_COLORED_FAILED=§7Nutze §e/rg restore§7 um manuell die Farbe zu ändern
REGION_REGION_FAILED_COLORED=§cFehler beim umfärben der Region
REGION_REGION_TP_COPY=§7Zum Kopierpunkt teleportiert
REGION_REGION_TP_TEST_BLOCK=§7Zum Testblock teleportiert
REGION_REGION_TP_UNKNOWN=§cNicht definierter Teleportierpunkt
REGION_REGION_NO_REGION=§cDu bist in keiner Region
REGION_REGION_NO_BUILD=§cDiese Region hat kein Baugebiet
REGION_REGION_COPY_DONE=§eBauregion oder Selektion kopiert
REGION_REGION_PASTE_DONE=§eBauregion oder Selektion eingefügt
REGION_REGION_CHANGESKIN_INFO=§7Regions Skin ist §e{0}
REGION_REGION_CHANGESKIN_INFO_CREATOR=§7Skin erstellt von §e{0}
REGION_REGION_CHANGESKIN_UNKNOWN=§cRegions Skin ist nicht valide
REGION_REGION_CHANGESKIN_INVALID=§cRegions Skin ist nicht erlaubt hier
REGION_REGION_CHANGESKIN_CHANGE=§7Regions Skin ist auf §e{0}§7 geändert
REGION_REGION_CHANGESKIN_CHANGE_UPDATE=§7Klicke §e§lHIER §7um den Skin anzuwenden
REGION_REGION_CHANGESKIN_CHANGE_UPDATE_HOVER=§8/§ereset
REGION_RESET_HELP_RESET=§8/§ereset §8- §7Setzte die Region zurück
REGION_RESET_HELP_SCHEMATIC=§8/§ereset §8[§7Schematic§8] §8- §7Setzte die Region mit einer Schematic zurück
REGION_RESET_RESETED=§7Region zurückgesetzt
REGION_RESET_ERROR=§cFehler beim Zurücksetzen der Region
REGION_RESET_NO_REGION=§cDu befindest dich derzeit in keiner Region
REGION_TB_HELP_RESET=§8/§etestblock §8- §7Setzte den Testblock zurück
REGION_TB_HELP_RESET_EXTENSION=§8/§etestblock §8[§7ExtensionType§8] §8- §7Setzte den Testblock zurück
REGION_TB_HELP_SCHEMATIC=§8/§etestblock §8[§7Schematic§8] §8- §7Setzte den Testblock mit einer Schematic zurück
REGION_TB_HELP_SCHEMATIC_EXTENSION=§8/§etestblock §8[§7Schematic§8] §8[§7ExtensionType§8] §8- §7Setzte den Testblock mit einer Schematic zurück
REGION_TB_DONE=§7Testblock zurückgesetzt
REGION_TB_ERROR=§cFehler beim Zurücksetzen des Testblocks
REGION_TB_NO_REGION=§cDu befindest dich derzeit in keiner Region
REGION_TB_NO_SCHEMSHARING=§cDu kannst aktuell keine Schematics teilen bis {0}.
REGION_TB_NO_SCHEMRECEIVING=§cDer Besitzer dieses Bauservers kann keine Schematics erhalten bis {0}.
REGION_TNT_HELP=§8/§etnt §8- §7Ändere das TNT verhalten
REGION_TNT_HELP_MODE=§8/§etnt §8[§7Mode§8] §8- §7Setzte das TNT verhalten auf einen Modus
REGION_TNT_ON=§aTNT-Schaden aktiviert
REGION_TNT_OFF=§cTNT-Schaden deaktiviert
REGION_TNT_TB=§aTNT-Schaden außerhalb Baurahmen aktiviert
REGION_TNT_BUILD_DESTROY=§cEine Explosion hätte Blöcke im Baubereich zerstört
REGION_TNT_TB_DESTROY=§cEine Explosion hätte Blöcke im Testblockbereich zerstört
AFK_KICK_MESSAGE=§cAuf diesem Server ist seit 15 Minuten nichts passiert.
AFK_WARNING_MESSAGE=§cDieser Server wird bei weiterer Inaktivität in einer Minute gestoppt
SKIN_HELP=§8/§eskin §8[§7Kuerzel§8] §8[§7Creator§8|§epublic§8] §8[§7Name...§8] §8- §7Erstellt die Skin Schematics. 'public' als Creator nutzen für keinen Creator, danach die nachricht an YoyoNow kopieren (mit Click kopieren)
SKIN_NO_REGION=§7Du steht in keiner Region, welche mit einem Skin versehen werden kann
SKIN_ALREADY_EXISTS=§cDieser Skin existiert in der Form bereits
SKIN_MESSAGE=§7Skin erstellt
SKIN_MESSAGE_HOVER=§eKlicken zum kopieren für YoyoNow und an diesen senden
# Panzern
PANZERN_HELP=§8/§epanzern §8[§7Block§8] §8[§7Slab§8] §8- §7Panzer deine WorldEdit Auswahl
PANZERN_PREPARE1=§71. Gucke nochmal nach, ob Läufe auch bis zur Panzergrenze führen.
PANZERN_PREPARE2=§72. Teppich in Gänge auf dem Boden vereinfacht das panzern.
PANZERN_PREPARE3=§73. Schildtechnik sollte explizit eingeschlossen sein.
PANZERN_PREPARE4=§74. Innerhalb der zu panzernden Region zu stehen, beim Befehlausführen kann das Panzern verbessern.
PANZERN_NO_WORLDEDIT=§cDu hast keine WorldEdit Selection
PANZERN_PROGRESS=§e{0} §7Blöcke übrig, §e{1} §7Blöcke pro Sekunde, §e{2} §7Block Delta
PANZERN_DONE=§aZuende gepanzert
# Laufbau
LAUFBAU_HELP=§8/§elaufbau §8[§7smallest§8|§7blastresistant§8] §8- §7Baue einen Lauf in deiner WorldEdit Auswahl mit den Traces
LAUFBAU_HELP_SETTINGS=§8/§elaufbau settings §8- §7Öffnet die Settings GUI
LAUFBAU_PREPARE1=§71. Trace die Kanonen so oft wie nötig, in allen Modi.
LAUFBAU_PREPARE2=§72. Versuche alle Fails aus dem Trace zu löschen.
LAUFBAU_NO_WORLDEDIT=§cDu hast keine WorldEdit Selection
LAUFBAU_STATE_FILTERING_TRACES=Traces filtern
LAUFBAU_STATE_PROCESSING_TRACES=Traces verbinden
LAUFBAU_STATE_CREATE_LAUF=Lauf erstellen
LAUFBAU_SIMPLE_PROGRESS=§e{0}§8: §e{1}§8/§e{2} §7Übrige Zeit §8: §e{3}
LAUFBAU_DONE=§aZuende gebaut
LAUFBAU_SETTINGS_GUI_NAME=§eLaufbau
LAUFBAU_SETTINGS_ACTIVE=§aAktiv
LAUFBAU_SETTINGS_INACTIVE=§cInaktiv
LAUFBAU_SETTINGS_MIXED=§e{0}§8/§e{1} §aAktiv
LAUFBAU_SETTINGS_GUI_BACK=§eBack
LAUFBAU_SETTINGS_TOGGLE=§eClick §8-§7 Toggle
LAUFBAU_SETTINGS_ADVANCED=§eMiddle-Click §8-§7 Erweiterte Einstellung
LAUFBAU_BLOCK_COBWEB=§eCobweb
LAUFBAU_BLOCK_GRASS_PATH=§eGrass Path
LAUFBAU_BLOCK_SOUL_SAND=§eSoul Sand
LAUFBAU_BLOCK_COCOA=§eCocoa
LAUFBAU_BLOCK_TURTLE_EGG=§eTurtle Eggs
LAUFBAU_BLOCK_CHEST=§eChest
LAUFBAU_BLOCK_SNOW=§eSnow Layer
LAUFBAU_BLOCK_PLAYER_WALL_HEAD=§ePlayer Wall Head
LAUFBAU_BLOCK_STONECUTTER=§eStonecutter
LAUFBAU_BLOCK_PLAYER_HEAD=§ePlayer Head
LAUFBAU_BLOCK_CAKE=§eCake
LAUFBAU_BLOCK_END_STONE_BRICK_SLAB=§eEndstone Brick Slabs
LAUFBAU_BLOCK_SEA_PICKLE=§eSea Pickles
LAUFBAU_BLOCK_CAMPFIRE=§eCampfire
LAUFBAU_BLOCK_FLOWER_POT=§eFlower Pot
LAUFBAU_BLOCK_IRON_TRAPDOOR=§eIron Trapdoor
LAUFBAU_BLOCK_LILY_PAD=§eLily Pad
LAUFBAU_BLOCK_WHITE_CARPET=§eCarpet
LAUFBAU_BLOCK_END_ROD=§eEnd Rod
LAUFBAU_BLOCK_LIGHTNING_ROD=§eLightning Rod
LAUFBAU_BLOCK_CONDUIT=§eConduit
LAUFBAU_BLOCK_BREWING_STAND=§eBrewing Stand
LAUFBAU_BLOCK_BELL=§eBell
LAUFBAU_BLOCK_GRINDSTONE=§eGrindstone
LAUFBAU_BLOCK_HOPPER=§eHopper
LAUFBAU_BLOCK_LANTERN=§eLantern
LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS=§eEndstone Brick Stairs
LAUFBAU_BLOCK_CHORUS_PLANT=§eChorus Plant
LAUFBAU_BLOCK_NETHER_BRICK_FENCE=§eNether Brick Fence
LAUFBAU_BLOCK_IRON_BARS=§eIron Bars
LAUFBAU_BLOCK_END_STONE_BRICK_WALL=§eEndstone Brick Walls
LAUFBAU_BLOCK_CHAIN=§eChain
LAUFBAU_BLOCK_BIG_DRIP_LEAF=§eBig Drip Leaf
LAUFBAU_BLOCK_DRAGON_EGG=§eDragon Egg
LAUFBAU_BLOCK_AZALEA=§eAzalea
LAUFBAU_BLOCK_CANDLE=§eKerze
LAUFBAU_BLOCK_CANDLE_CAKE=§eKuchen mit Kerze
LAUFBAU_BLOCK_LECTERN=§eLectern
LAUFBAU_FACING_NORTH=§8-§7 Richtung Norden
LAUFBAU_FACING_SOUTH=§8-§7 Richtung Süden
LAUFBAU_FACING_WEST=§8-§7 Richtung Westen
LAUFBAU_FACING_EAST=§8-§7 Richtung Osten
LAUFBAU_FACING_UP=§8-§7 Richtung Oben
LAUFBAU_FACING_DOWN=§8-§7 Richtung Unten
LAUFBAU_COUNT_1=§8-§7 Anzahl 1
LAUFBAU_COUNT_2=§8-§7 Anzahl 2
LAUFBAU_COUNT_3=§8-§7 Anzahl 3
LAUFBAU_COUNT_4=§8-§7 Anzahl 4
LAUFBAU_LAYERS_8=§8-§7 Ebenen 8
LAUFBAU_LAYERS_7=§8-§7 Ebenen 7
LAUFBAU_LAYERS_6=§8-§7 Ebenen 6
LAUFBAU_LAYERS_3=§8-§7 Ebenen 3
LAUFBAU_LAYERS_2=§8-§7 Ebenen 2
LAUFBAU_TYPE_BOTTOM=§8-§7 Type Unten
LAUFBAU_TYPE_TOP=§8-§7 Type Oben
LAUFBAU_HALF_BOTTOM=§8-§7 Hälfte Unten
LAUFBAU_HALF_TOP=§8-§7 Hälfte Oben
LAUFBAU_OPEN=§8-§7 Geöffnet
LAUFBAU_ATTACHMENT_CEILING=§8-§7 Befestigung Decke
LAUFBAU_ATTACHMENT_FLOOR=§8-§7 Befestigung Boden
LAUFBAU_ATTACHMENT_DOUBLE_WALL=§8-§7 Befestigung beidseitige Wand
LAUFBAU_ATTACHMENT_SINGLE_WALL=§8-§7 Befestigung einseitige Wand
LAUFBAU_ATTACHMENT_WALL=§8-§7 Befestigung Wand
LAUFBAU_CONNECTION_FLOOR=§8-§7 Verbindung Boden
LAUFBAU_CONNECTION_NORTH=§8-§7 Verbindung Norden
LAUFBAU_CONNECTION_SOUTH=§8-§7 Verbindung Süden
LAUFBAU_CONNECTION_EAST=§8-§7 Verbindung Osten
LAUFBAU_CONNECTION_WEST=§8-§7 Verbindung Westen
LAUFBAU_CONNECTION_DOWN=§8-§7 Verbindung Unten
LAUFBAU_CONNECTION_UP=§8-§7 Verbindung Oben
LAUFBAU_HANGING=§8-§7 hängend
LAUFBAU_SHAPE_STRAIGHT=§8-§7 Form gerade
LAUFBAU_SHAPE_OUTER_LEFT=§8-§7 Form äußere links
LAUFBAU_SHAPE_INNER_LEFT=§8-§7 Form innere links
LAUFBAU_TILT_NONE=§8-§7 Neigung keine
LAUFBAU_TILT_PARTIAL=§8-§7 Neigung teilweise
# UTILS
SELECT_HELP=§8/§eselect §8[§7RegionsTyp§8] §8- §7Wähle einen RegionsTyp aus
SELECT_EXTENSION_HELP=§8/§eselect §8[§7RegionsTyp§8] §8[§7Extension§8] §8- §7Wähle einen RegionsTyp aus mit oder ohne Extension
SELECT_GLOBAL_REGION=§cDie globale Region kannst du nicht auswählen
SELECT_NO_TYPE=§cDiese Region hat keinen {0}
SELECT_NO_EXTENSION=§cDiese Region hat keine Ausfahrmaße
SELECT_MESSAGE=§7WorldEdit auswahl auf {0}, {1}, {2} und {3}, {4}, {5} gesetzt
SKULL_HELP=§8/§eskull §8[§eSpieler§8] §8-§7 Gibt einen SpielerKopf
SKULL_INVALID=§cUngültiger Spieler
SKULL_ITEM=§e{0}§8s Kopf
SPEED_HELP=§8/§espeed §8[§71§8-§710§8|§edefault§8] §8-§7 Setzte deine Flug- und Laufgeschindigkeit.
SPEED_CURRENT=§7Aktuelle geschwindigkeit§8: §e{0}
SPEED_TOO_SMALL=§c{0} ist zu klein
SPEED_TOO_HIGH=§c{0} ist zu hoch
SPEED_ITEM=§eGeschwindigkeit
SPEED_ITEM_LORE=§7Aktuell: §e
SPEED_TAB_NAME=Geschwindigkeit eingeben
WORLDEDIT_WAND=WorldEdit Wand
WORLDEDIT_LEFTCLICK=Left click: select pos #1
WORLDEDIT_RIGHTCLICK=Right click: select pos #2
TNT_CLICK_HEADER=§8---=== §eTNT §8===---
TNT_CLICK_ORDER=§eEntity Order§8: §e{0}
TNT_CLICK_FUSE_TIME=§eFuseTime§8: §e{0}
TNT_CLICK_POSITION_X=§7Position §eX§8: §e{0}
TNT_CLICK_POSITION_Y=§7Position §eY§8: §e{0}
TNT_CLICK_POSITION_Z=§7Position §eZ§8: §e{0}
TNT_CLICK_VELOCITY_X=§7Velocity §eX§8: §e{0}
TNT_CLICK_VELOCITY_Y=§7Velocity §eY§8: §e{0}
TNT_CLICK_VELOCITY_Z=§7Velocity §eZ§8: §e{0}
TNT_CLICK_COUNT=§7Anzahl §8: §e{0}
TNT_CLICK_ISOLATE=§eIsolieren
SELECT_ITEM_CHOOSE_EXTENSION=Extension auswählen
SELECT_ITEM_CHOOSE_SELECTION=Auswahl auswählen
SELECT_ITEM_NORMAL_EXTENSION=§eNormal
SELECT_ITEM_EXTENDED_EXTENSION=§eAusgefahren
SELECT_ITEM_SELECT=§eSelect
SELECT_ITEM_AUSWAHL=§7Auswahl: §7{0} {1}
SELECT_ITEM_RIGHT_CLICK=§7Rechtklick zum ändern
SELECT_ITEM_BAURAHMEN=§eBaurahmen
SELECT_ITEM_BAUPLATTFORM=§eBauplattform
SELECT_ITEM_TESTBLOCK=§eTestblock
CHESTFILLER_FILLED=§eKiste gefüllt
PISTON_HELP_1=§7Rechts Klick auf Piston mit einem Slime Ball berechnet dir die bewegten Blöcke.
PISTON_HELP_2=§7Die Anzahl ist Rot, wenn ein unmovable Block vorhanden ist.
PISTON_HELP_3=§7Die Anzahl ist Gelb, wenn zu viele Blöcke vorhanden sind.
PISTON_INFO=§7Bewegte Blöcke {0}{1}§8/§712
# Warp
WARP_LOC_X=§7X§8: §e{0}
WARP_LOC_Y=§7Y§8: §e{0}
WARP_LOC_Z=§7Z§8: §e{0}
WARP_EXISTS=§7Ein Warp mit dem namen §e{0} §7existiert bereits
WARP_NAME_RESERVED=§7Du kannst nicht §c{0} §7als name für einen Warp nutzen
WARP_CREATED=§7Der Warp §e{0} §7wurde erstellt
WARP_DELETE_HOVER=§e{0} §7löschen
WARP_DELETED=§e{0} §7wurde gelöscht
WARP_TELEPORT_HOVER=§7Zu §e{0} §7teleportieren
WARP_MATERIAL_CHOOSE=Material auswählen
WARP_GUI_NAME=Warps
WARP_GUI_NO=§cHier gibt es noch keine Warps
WARP_GUI_DISTANCE=§7Distanz: §e{0} §7Blöcke
WARP_GUI_LCLICK=§7Links klicken zum teleportieren
WARP_GUI_RCLICK=§7Rechts klicken zum editieren
WARP_INFO_NAME=§7Name: §e{0}
WARP_HELP_ADD=§8/§ewarp add §8[§7Name§8] §8- §7Erstelle einen neuen Warp Punkt
WARP_HELP_TELEPORT=§8/§ewarp §8[§7Name§8] §8- §7Teleportiere dich zu einen Warp-Punkt
WARP_HELP_INFO=§8/§ewarp info §8[§7Name§8] §8- §7Infos zu einem Punkt
WARP_HELP_DELETE=§8/§ewarp delete §8[§7Name§8] §8- §7Lösche einen Warp
WARP_HELP_GUI=§8/§ewarp gui §8- §7Öffne die Warp-GUI
WARP_HELP_LIST=§8/§ewarp list §8- §7Liste alle Warp-Punkt auf
# WORLD
STOP_HELP=§8/§estop §8- §7Stoppt den Server
STOP_MESSAGE=§eDer Server wird gestoppt
KICKALL_HELP=§8/§ekickall §8- §7Kickt alle Spieler vom Server außer den Owner
# Techhider
TECHHIDER_HELP=§8/§etechhider §8- §7Techhider umschalten
TECHHIDER_GLOBAL=§cKein Techhider in der globalen region
TECHHIDER_ON=§aTechhider aktiviert
TECHHIDER_OFF=§cTechHider deaktiviert
# XRAY
XRAY_HELP=§8/§exray §8- §7Xray umschalten
XRAY_GLOBAL=§cKein Xray in der globalen region
XRAY_ON=§aXray aktiviert
XRAY_OFF=§cXray deaktiviert
# WorldEdit
COLORREPLACE_HELP=§8//§ecolorreplace §8[§7color§8] §8[§7color§8] §8- §7Ersetzt eine Farbe mit einer anderen
TYPEREPLACE_HELP=§8//§etyreplace §8[§7type§8] §8[§7type§8] §8- §7Ersetzt einen Blockgruppe mit einer anderen
# Schematics
SCHEMATIC_GUI_ITEM=§eSchematics

Datei anzeigen

@ -19,47 +19,46 @@
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.ProtocolAPI;
import de.steamwar.bausystem.utils.TickListener;
import de.steamwar.bausystem.worlddata.WorldData;
import de.steamwar.command.AbstractValidator;
import de.steamwar.command.SWCommandUtils;
import de.steamwar.message.Message;
import de.steamwar.scoreboard.SWScoreboard;
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.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
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() {
SWScoreboard.class.getName();
world = Bukkit.getWorlds().get(0);
fixBauSystem();
// LOGGER
fixLogging();
@ -74,13 +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));
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;
}
return true;
};
}
@Override
@ -89,7 +115,7 @@ public class BauSystem extends JavaPlugin implements Listener {
WorldData.write();
Config.getInstance().saveAll();
ProtocolAPI.tinyProtocol.close();
TinyProtocol.instance.close();
}
private void fixLogging() {
@ -113,59 +139,44 @@ public class BauSystem extends JavaPlugin implements Listener {
}));
}
private void fixBauSystem() {
if (!new File(world.getWorldFolder(), "sections.yml").exists()) {
try {
Path path = new File(world.getWorldFolder(), "region").toPath();
BasicFileAttributes attributes = Files.readAttributes(path, BasicFileAttributes.class);
FileTime creationTime = attributes.creationTime();
long millis = creationTime.toMillis();
if (millis < 1611081960) {
createLink("sections3.yml", "sections.yml");
} else {
createLink("sections4.yml", "sections.yml");
public static BukkitTask runTaskLater(Plugin plugin, Runnable runnable, long delay) {
return new BukkitRunnable() {
private int counter = 1;
@Override
public void run() {
if (TPSFreezeUtils.isFrozen()) return;
if (counter >= delay) {
runnable.run();
cancel();
return;
}
} catch (IOException e) {
Bukkit.getLogger().log(Level.SEVERE, e.getMessage(), e);
Bukkit.shutdown();
return;
counter++;
}
}
int number = -1;
try {
String string = new File(world.getWorldFolder(), "sections.yml").getCanonicalPath();
if (string.endsWith("/sections2.yml")) number = 2;
if (string.endsWith("/sections3.yml")) number = 3;
if (string.endsWith("/sections4.yml")) number = 4;
Bukkit.getLogger().log(Level.INFO, "SectionFile: " + string);
} catch (IOException e) {
Bukkit.getLogger().log(Level.SEVERE, e.getMessage(), e);
Bukkit.shutdown();
return;
}
if (number == -1) {
return;
}
if (!new File(world.getWorldFolder(),"prototypes.yapion").exists()) {
createLink("prototypes" + number + ".yapion", "prototypes.yapion");
}
if (!new File(world.getWorldFolder(),"regions.yapion").exists()) {
createLink("regions" + number + ".yapion", "regions.yapion");
}
}.runTaskTimer(plugin, 0, 1);
}
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 runTaskTimer(Plugin plugin, Runnable runnable, long delay, long period) {
return new BukkitRunnable() {
private int counter = 1;
private boolean first = true;
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 >= (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.bausystem.features.world.BauMemberUpdate;
import de.steamwar.bausystem.utils.BauMemberUpdateEvent;
import de.steamwar.sql.BauweltMember;
import de.steamwar.sql.SteamwarUser;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.function.BiConsumer;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Predicate;
@AllArgsConstructor
@RequiredArgsConstructor
public enum Permission {
WORLD(BauweltMember::isWorld, (player, target) -> {
target.setWorld(!target.isWorld());
sendMessages(player, target.isWorld(), target, "PERMISSION_WORLD");
OWNER(bauweltMember -> false),
SUPERVISOR(bauweltMember -> {
return bauweltMember.isSupervisor();
}),
WORLDEDIT(BauweltMember::isWorldEdit, (player, target) -> {
target.setWorldEdit(!target.isWorldEdit());
sendMessages(player, target.isWorldEdit(), target, "PERMISSION_WORLD_EDIT");
BUILD(bauweltMember -> {
if (isTempOnlySpectator(bauweltMember)) return false;
return bauweltMember.isBuild() || SUPERVISOR.permissionPredicate.test(bauweltMember);
}),
MEMBER(bauweltMember -> true),
OWNER(bauweltMember -> false);
/**
* 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;
private BiConsumer<Player, BauweltMember> permissionChange = (player, bauweltMember) -> {};
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;
if (SteamwarUser.get(member.getUniqueId()).getId() == BauServer.getInstance().getOwnerID()) {
return this != REAL_SPECTATOR;
}
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);
}
private static void sendMessages(Player player, boolean ableTo, BauweltMember target, String what) {
Player targetPlayer = Bukkit.getPlayer(SteamwarUser.get(target.getMemberID()).getUUID());
if (targetPlayer != null) {
if (ableTo) {
BauSystem.MESSAGE.send("PERMISSION_CHANGE_OTHER_ENABLE", targetPlayer, player.getName(), BauSystem.MESSAGE.parse(what, targetPlayer));
} else {
BauSystem.MESSAGE.send("PERMISSION_CHANGE_OTHER_DISABLE", targetPlayer, player.getName(), BauSystem.MESSAGE.parse(what, targetPlayer));
}
}
if (ableTo) {
BauSystem.MESSAGE.send("PERMISSION_CHANGE_YOU_ENABLE", player, BauSystem.MESSAGE.parse(what, player));
} else {
BauSystem.MESSAGE.send("PERMISSION_CHANGE_YOU_DISABLE", player, BauSystem.MESSAGE.parse(what, player));
}
}
public void toggle(Player player, BauweltMember target) {
permissionChange.accept(player, target);
}
public static void toggle(Player player, BauweltMember target, Permission permission) {
permission.toggle(player, target);
BauweltMember bauweltMember = BauweltMember.getBauMember(BauServer.getInstance().getOwner(), member.getUniqueId());
if (bauweltMember == null) return this == REAL_SPECTATOR;
return permissionPredicate.test(bauweltMember);
}
}

Datei anzeigen

@ -19,6 +19,7 @@
package de.steamwar.bausystem;
import de.steamwar.inventory.SWItem;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.UtilityClass;
@ -29,6 +30,7 @@ import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.Plugin;
import java.util.function.Function;
@ -59,6 +61,13 @@ public class SWUtils {
}
}
public static SWItem setCustomModelData(SWItem item, int customModelData) {
ItemMeta itemMeta = item.getItemMeta();
itemMeta.setCustomModelData(customModelData);
item.setItemMeta(itemMeta);
return item;
}
public static void sendToActionbar(Player p, String message) {
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));
}

Datei anzeigen

@ -19,15 +19,14 @@
package de.steamwar.bausystem.config;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.linkage.Linked;
import de.steamwar.providers.BauServerInfo;
import de.steamwar.sql.SteamwarUser;
import lombok.Getter;
import org.bukkit.Bukkit;
import java.util.UUID;
@Linked(LinkageType.PLAIN)
@Linked
public class BauServer {
@Getter
@ -35,30 +34,19 @@ public class BauServer {
public BauServer() {
instance = this;
try {
owner = UUID.fromString(Bukkit.getWorlds().get(0).getName());
} catch (IllegalArgumentException e) {
owner = null;
}
}
private UUID owner;
private Integer owner;
public UUID getOwner() {
//Lazy loading to improve startup time of the server in 1.15
if (owner == null) {
try {
owner = SteamwarUser.get(Integer.parseInt(Bukkit.getWorlds().get(0).getName())).getUUID();
} catch (NumberFormatException e) {
Bukkit.shutdown();
throw new SecurityException("owner is not a UserID", e);
}
}
return owner;
return SteamwarUser.get(getOwnerID()).getUUID();
}
public int getOwnerID() {
return SteamwarUser.get(getOwner()).getId();
//Lazy loading to improve startup time of the server in 1.15
if (owner == null) {
owner = BauServerInfo.getOwnerId();
}
return owner;
}
}

Datei anzeigen

@ -20,8 +20,7 @@
package de.steamwar.bausystem.configplayer;
import de.steamwar.bausystem.configplayer.serializer.ConfigurationSerializableSerializer;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.linkage.Linked;
import de.steamwar.sql.UserConfig;
import lombok.Getter;
import org.bukkit.Bukkit;
@ -40,7 +39,7 @@ import java.util.Map;
import java.util.UUID;
import java.util.logging.Level;
@Linked(LinkageType.LISTENER)
@Linked
public class Config implements Listener {
static {
@ -98,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();
@ -113,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

@ -0,0 +1,112 @@
/*
* 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 de.steamwar.bausystem.BauSystem;
import de.steamwar.command.PreviousArguments;
import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeMapper;
import de.steamwar.linkage.Linked;
import de.steamwar.linkage.MinVersion;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
@Linked
public class AttributeRemoveCommand extends SWCommand {
public AttributeRemoveCommand() {
super("removeattribute", "attributesremove");
}
@Register({"all"})
@Register({"*"})
public void genericCommand(@Validator Player player) {
ItemStack itemStack = player.getInventory().getItemInMainHand();
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setLore(new ArrayList<>());
itemStack.setItemMeta(itemMeta);
BauSystem.MESSAGE.send("ATTRIBUTE_REMOVE_ALL", player);
}
@Register(description = "ATTRIBUTE_REMOVE_COMMAND_HELP")
public void genericCommand(@Validator Player player, @Mapper("attribute") String attribute) {
ItemStack itemStack = player.getInventory().getItemInMainHand();
ItemMeta itemMeta = itemStack.getItemMeta();
if (itemMeta == null) {
BauSystem.MESSAGE.send("ATTRIBUTE_REMOVE_NOT_FOUND", player);
return;
}
List<String> lore = itemMeta.getLore();
if (lore == null) {
BauSystem.MESSAGE.send("ATTRIBUTE_REMOVE_NOT_FOUND", player);
return;
}
if (lore.isEmpty()) {
BauSystem.MESSAGE.send("ATTRIBUTE_REMOVE_NOT_FOUND", player);
return;
}
if (!lore.get(0).equals("§eAttributes§8:")) {
BauSystem.MESSAGE.send("ATTRIBUTE_REMOVE_NOT_FOUND", player);
return;
}
lore.removeIf(s -> s.startsWith("§8-§7 " + attribute + "§8:"));
if (lore.size() == 1) {
itemStack.setItemMeta(null);
} else {
itemMeta.setLore(lore);
itemStack.setItemMeta(itemMeta);
}
BauSystem.MESSAGE.send("ATTRIBUTE_REMOVE_SINGLE", player, attribute);
}
@Mapper(value = "attribute", local = true)
public TypeMapper<String> attribute() {
return new TypeMapper<String>() {
@Override
public Collection<String> tabCompletes(CommandSender commandSender, PreviousArguments previousArguments, String s) {
Player player = (Player) commandSender;
ItemStack itemStack = player.getInventory().getItemInMainHand();
ItemMeta itemMeta = itemStack.getItemMeta();
if (itemMeta == null) return null;
List<String> lore = itemMeta.getLore();
if (lore == null) return null;
if (lore.isEmpty()) return null;
if (!lore.get(0).equals("§eAttributes§8:")) return null;
return lore.stream()
.skip(1)
.map(s1 -> s1.substring(6))
.map(s1 -> s1.substring(0, s1.indexOf("§8:")))
.collect(Collectors.toList());
}
@Override
public String map(CommandSender commandSender, PreviousArguments previousArguments, String s) {
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

@ -0,0 +1,88 @@
/*
* 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 de.steamwar.bausystem.BauSystem;
import de.steamwar.command.SWCommand;
import de.steamwar.linkage.Linked;
import org.bukkit.FluidCollisionMode;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.List;
@Linked
public class AttributesCopyCommand extends SWCommand {
public AttributesCopyCommand() {
super("copyattributes", "attributescopy", "ac");
}
@Register
public void genericCommand(@Validator Player player) {
Block block = player.getTargetBlockExact(8, FluidCollisionMode.ALWAYS);
if (block == null) return;
ItemStack mainHand = player.getInventory().getItemInMainHand();
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 (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;
}
ItemMeta itemMeta = mainHand.getItemMeta();
List<String> lore = new ArrayList<>(attributesToCopy);
lore.add(0, "§eAttributes§8:");
itemMeta.setLore(lore);
mainHand.setItemMeta(itemMeta);
player.getInventory().setItemInMainHand(mainHand);
BauSystem.MESSAGE.send("ATTRIBUTES_COPIED", player);
}
private boolean isSame(Block block, ItemStack itemStack) {
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;
if (itemStack.getType() == Material.CREEPER_HEAD && block.getType() == Material.CREEPER_WALL_HEAD) return true;
if (itemStack.getType() == Material.DRAGON_HEAD && block.getType() == Material.DRAGON_WALL_HEAD) return true;
if (itemStack.getType() == Material.SKELETON_SKULL && block.getType() == Material.SKELETON_WALL_SKULL) return true;
if (itemStack.getType() == Material.WITHER_SKELETON_SKULL && block.getType() == Material.WITHER_SKELETON_WALL_SKULL) return true;
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;
}
}

Datei anzeigen

@ -0,0 +1,88 @@
/*
* 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 de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.linkage.Linked;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Block;
import org.bukkit.block.Skull;
import org.bukkit.block.data.BlockData;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.List;
@Linked
public class AttributesPlaceListener implements Listener {
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
if(!Permission.BUILD.hasPermission(event.getPlayer())) return;
ItemStack itemStack = event.getItemInHand();
ItemMeta itemMeta = itemStack.getItemMeta();
if (itemMeta == null) return;
List<String> strings = itemMeta.getLore();
if (strings == null) return;
if (strings.isEmpty()) return;
if (!strings.get(0).equals("§eAttributes§8:")) return;
Material type = event.getBlock().getType();
OfflinePlayer offlinePlayer = null;
if (event.getBlock().getState() instanceof Skull) {
Skull skull = (Skull) event.getBlock().getState();
offlinePlayer = skull.getOwningPlayer();
}
OfflinePlayer finalPlayerProfile = offlinePlayer;
event.setCancelled(true);
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
Material material = strings.stream()
.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);
} catch (Exception e) {
return null;
}
})
.findFirst()
.orElse(type);
event.getBlock().setType(material, false);
Block block = event.getBlock();
BlockData blockData = block.getBlockData();
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
if (block.getState() instanceof Skull && finalPlayerProfile != null) {
Skull skull = (Skull) block.getState();
skull.setOwningPlayer(finalPlayerProfile);
skull.update(true, false);
}
}, 1);
AttributeUtils.paste(blockData, strings);
block.setBlockData(blockData, false);
}, 1);
}
}

Datei anzeigen

@ -20,12 +20,11 @@
package de.steamwar.bausystem.features.autostart;
import de.steamwar.bausystem.SWUtils;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.command.SWCommand;
import de.steamwar.linkage.Linked;
import org.bukkit.entity.Player;
@Linked(LinkageType.COMMAND)
@Linked
public class AutoStartCommand extends SWCommand {
public AutoStartCommand() {
@ -33,7 +32,7 @@ public class AutoStartCommand extends SWCommand {
}
@Register(description = "AUTOSTART_COMMAND_HELP")
public void genericCommand(Player p) {
public void genericCommand(@Validator Player p) {
SWUtils.giveItemToPlayer(p, AutostartListener.getWandItem(p));
}
}

Datei anzeigen

@ -20,15 +20,14 @@
package de.steamwar.bausystem.features.autostart;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.specific.BauGuiItem;
import de.steamwar.linkage.Linked;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
@Linked(LinkageType.BAU_GUI_ITEM)
@Linked
public class AutoStartGuiItem extends BauGuiItem {
public AutoStartGuiItem() {
@ -51,6 +50,6 @@ public class AutoStartGuiItem extends BauGuiItem {
@Override
public Permission permission() {
return Permission.MEMBER;
return Permission.BUILD;
}
}

Datei anzeigen

@ -20,31 +20,34 @@
package de.steamwar.bausystem.features.autostart;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.features.tpslimit.TPSUtils;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.RegionUtils;
import de.steamwar.bausystem.region.utils.RegionExtensionType;
import de.steamwar.bausystem.region.utils.RegionType;
import de.steamwar.bausystem.utils.ItemUtils;
import de.steamwar.inventory.SWItem;
import de.steamwar.linkage.Linked;
import lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.type.Chest;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
@Linked(LinkageType.LISTENER)
@Linked
public class AutostartListener implements Listener {
@Getter
@ -65,15 +68,42 @@ public class AutostartListener implements Listener {
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
if(!Permission.BUILD.hasPermission(event.getPlayer())) return;
if (!ItemUtils.isItem(event.getItem(), "autostart")) {
return;
}
if (event.getClickedBlock() == null) {
return;
}
if (event.getClickedBlock().getBlockData() instanceof Chest) {
return;
}
if (event.getClickedBlock().getType() == Material.BEDROCK) {
event.getClickedBlock().setType(Material.SLIME_BLOCK);
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
event.getClickedBlock().setType(Material.BEDROCK, false);
}, 1);
}
activate(event.getPlayer());
}
@EventHandler
public void onInventoryClose(InventoryCloseEvent event) {
if (!(event.getPlayer() instanceof Player)) {
return;
}
if(!Permission.BUILD.hasPermission((Player) event.getPlayer())) return;
if (!ItemUtils.isItem(event.getPlayer().getInventory().getItemInMainHand(), "autostart")) {
return;
}
if (event.getInventory().getLocation() == null) {
return;
}
if (event.getInventory().getLocation().getBlock().getBlockData() instanceof Chest) {
activate((Player) event.getPlayer());
}
}
public void activate(Player player) {
Region region = Region.getRegion(player.getLocation());
if (region.isGlobal()) {
@ -89,7 +119,7 @@ public class AutostartListener implements Listener {
} else {
BauSystem.MESSAGE.send("AUTOSTART_MESSAGE_START", player);
}
regionStartTime.put(region, TPSUtils.currentTick.get());
regionStartTime.put(region, TPSUtils.currentRealTick.get());
}
@EventHandler
@ -97,17 +127,24 @@ public class AutostartListener implements Listener {
if (regionStartTime.isEmpty()) {
return;
}
event.blockList().forEach(block -> {
Region region = Region.getRegion(block.getLocation());
if (!regionStartTime.containsKey(region)) return;
if (!region.hasType(RegionType.TESTBLOCK)) return;
if (!region.inRegion(block.getLocation(), RegionType.TESTBLOCK, RegionExtensionType.EXTENSION)) return;
long tickDiff = TPSUtils.currentTick.get() - regionStartTime.remove(region);
RegionUtils.message(region, player -> {
return BauSystem.MESSAGE.parse("AUTOSTART_MESSAGE_RESULT1", player, new SimpleDateFormat(BauSystem.MESSAGE.parse("AUTOSTART_MESSAGE_DATE_PATTERN", player)).format(new Date(tickDiff * 50)));
});
RegionUtils.message(region, "AUTOSTART_MESSAGE_RESULT2", 30, (600 - tickDiff));
long tickDiff = TPSUtils.currentRealTick.get() - regionStartTime.remove(region);
long preFightDurationInSeconds = getPreFightDurationInSeconds(region);
RegionUtils.message(region, "AUTOSTART_MESSAGE_RESULT1", tickDiff);
RegionUtils.message(region, "AUTOSTART_MESSAGE_RESULT2", preFightDurationInSeconds, ((preFightDurationInSeconds * 20) - tickDiff));
RegionUtils.message(region, "AUTOSTART_MESSAGE_RESULT3");
});
}
private int getPreFightDurationInSeconds(Region region) {
File file = region.gameModeConfig();
if (file == null) return 30;
FileConfiguration config = YamlConfiguration.loadConfiguration(file);
return config.getInt("Times.PreFightDuration", 30);
}
}

Datei anzeigen

@ -19,15 +19,22 @@
package de.steamwar.bausystem.features.backup;
import com.sk89q.worldedit.EditSession;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.region.Color;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.flags.Flag;
import de.steamwar.bausystem.region.flags.flagvalues.ColorMode;
import de.steamwar.bausystem.region.tags.Tag;
import de.steamwar.command.*;
import de.steamwar.bausystem.utils.PasteBuilder;
import de.steamwar.command.SWCommand;
import de.steamwar.command.SWCommandUtils;
import de.steamwar.command.TypeMapper;
import de.steamwar.command.TypeValidator;
import de.steamwar.inventory.SWItem;
import de.steamwar.inventory.SWListInv;
import de.steamwar.linkage.Linked;
import net.md_5.bungee.api.chat.ClickEvent;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@ -39,7 +46,7 @@ import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@Linked(LinkageType.COMMAND)
@Linked
public class BackupCommand extends SWCommand {
public BackupCommand() {
@ -55,7 +62,7 @@ public class BackupCommand extends SWCommand {
}
@Register(value = "create", description = "BACKUP_HELP_CREATE")
public void backupCreate(@Guard Player p) {
public void backupCreate(@Validator("owner") Player p) {
Region region = Region.getRegion(p.getLocation());
if (checkGlobalRegion(region, p)) {
return;
@ -72,7 +79,7 @@ public class BackupCommand extends SWCommand {
}
@Register(value = "load", description = "BACKUP_HELP_LOAD")
public void backupLoad(@Guard Player p, @Mapper("backupName") String backupName) {
public void backupLoad(@Validator("owner") Player p, @Mapper("backupName") String backupName) {
Region region = Region.getRegion(p.getLocation());
if (checkGlobalRegion(region, p)) {
return;
@ -83,7 +90,13 @@ public class BackupCommand extends SWCommand {
BauSystem.MESSAGE.send("BACKUP_LOAD_FAILURE", p);
return;
}
region.reset(backupFile);
EditSession editSession = new PasteBuilder(new PasteBuilder.FileProvider(backupFile))
.pastePoint(region.getMinPoint().add(region.getPrototype().getSizeX() / 2, 0, region.getPrototype().getSizeZ() / 2))
.minPoint(region.getMinPoint())
.maxPoint(region.getMaxPoint())
.waterLevel(region.getWaterLevel())
.run();
region.remember(editSession);
BauSystem.MESSAGE.send("BACKUP_LOAD", p);
}
@ -117,7 +130,7 @@ public class BackupCommand extends SWCommand {
}
SWListInv<String> swListInv = new SWListInv<>(p, BauSystem.MESSAGE.parse("BACKUP_INV_NAME", p), swListEntries, (clickType, s) -> {
p.getOpenInventory().close();
backupLoad(p, s);
p.performCommand("backup load " + s);
});
swListInv.open();
}
@ -127,20 +140,6 @@ public class BackupCommand extends SWCommand {
return SWCommandUtils.createMapper(s -> s, (commandSender, s) -> listBackup((Player) commandSender));
}
@ClassGuard(value = Player.class, local = true)
public GuardChecker backupGuard() {
return (commandSender, guardCheckType, strings, s) -> {
Player player = (Player) commandSender;
if (Permission.hasPermission(player, Permission.WORLDEDIT)) {
return GuardResult.ALLOWED;
}
if (guardCheckType != GuardCheckType.TAB_COMPLETE) {
BauSystem.MESSAGE.send("BACKUP_NO_PERMS", player);
}
return GuardResult.DENIED;
};
}
private List<String> listBackup(Player p) {
Region region = Region.getRegion(p.getLocation());
if (checkGlobalRegion(region, p)) {

Datei anzeigen

@ -1,138 +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.features.bau;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.config.BauServer;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.LinkedInstance;
import de.steamwar.command.*;
import de.steamwar.sql.BauweltMember;
import de.steamwar.sql.SteamwarUser;
import org.bukkit.entity.Player;
import java.util.stream.Collectors;
@Linked(LinkageType.COMMAND)
public class BauCommand extends SWCommand {
@LinkedInstance
private BauServer bauServer;
@LinkedInstance
private InfoCommand infoCommand;
public BauCommand() {
super("bau", "b", "gs");
}
@Register(value = "info", description = "BAU_COMMAND_HELP_INFO")
public void infoCommand(Player p) {
infoCommand.sendBauInfo(p);
}
@Register(value = "togglewe", description = "BAU_COMMAND_HELP_TOGGLEWE")
public void toggleWECommand(@Guard Player p, SteamwarUser user) {
onToggleWE(p, user);
}
@Register(value = "toggleworld", description = "BAU_COMMAND_HELP_TOGGLEWORLD")
public void toggleWorldCommand(@Guard Player p, SteamwarUser user) {
onToggleWorld(p, user);
}
@Register("delmember")
public void delMemberCommand(Player p, SteamwarUser user) {
}
@Register("addmember")
public void addMemberCommand(Player p, String s) {
}
private void onToggleWE(Player p, SteamwarUser id) {
if (negativeToggleCheck(p, id)) {
return;
}
BauweltMember target = BauweltMember.getBauMember(bauServer.getOwnerID(), id.getId());
Permission.WORLDEDIT.toggle(p, target);
}
private void onToggleWorld(Player p, SteamwarUser id) {
if (negativeToggleCheck(p, id)) {
return;
}
BauweltMember target = BauweltMember.getBauMember(bauServer.getOwnerID(), id.getId());
Permission.WORLD.toggle(p, target);
}
private boolean negativeToggleCheck(Player p, SteamwarUser id) {
if (id == null) {
BauSystem.MESSAGE.send("BAU_UNKNOWN_PLAYER", p);
return true;
}
BauweltMember target = BauweltMember.getBauMember(bauServer.getOwnerID(), id.getId());
if (target == null) {
BauSystem.MESSAGE.send("BAU_NO_PLAYER", p);
return true;
}
return false;
}
@ClassMapper(value = SteamwarUser.class, local = true)
private TypeMapper<SteamwarUser> steamwarUserTypeMapper() {
return SWCommandUtils.createMapper(s -> BauweltMember.getMembers(bauServer.getOwnerID())
.stream()
.map(m -> SteamwarUser.get(m.getMemberID()))
.filter(u -> u.getUserName().equals(s))
.findFirst()
.orElse(null),
(c, s) -> {
if (!(c instanceof Player)) {
return null;
}
Player p = (Player) c;
return BauweltMember.getMembers(SteamwarUser.get(p.getUniqueId()).getId())
.stream()
.map(m -> SteamwarUser.get(m.getMemberID()).getUserName())
.collect(Collectors.toList());
});
}
@ClassGuard(value = Player.class, local = true)
public GuardChecker bauGuard() {
return (commandSender, guardCheckType, strings, s) -> {
Player p = (Player) commandSender;
if (!bauServer.getOwner().equals(p.getUniqueId())) {
if (guardCheckType != GuardCheckType.TAB_COMPLETE) {
BauSystem.MESSAGE.send("BAU_NO_WORLD", p);
}
return GuardResult.DENIED;
}
return GuardResult.ALLOWED;
};
}
}

Datei anzeigen

@ -22,13 +22,14 @@ package de.steamwar.bausystem.features.bau;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.config.BauServer;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.specific.BauGuiItem;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.flags.Flag;
import de.steamwar.core.Core;
import de.steamwar.inventory.SWItem;
import de.steamwar.linkage.Linked;
import de.steamwar.sql.SteamwarUser;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
@ -36,7 +37,7 @@ import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.List;
@Linked(LinkageType.BAU_GUI_ITEM)
@Linked
public class BauInfoBauGuiItem extends BauGuiItem {
public BauInfoBauGuiItem() {
@ -45,7 +46,12 @@ public class BauInfoBauGuiItem extends BauGuiItem {
@Override
public ItemStack getItem(Player player) {
SWItem itemStack = SWItem.getPlayerSkull(SteamwarUser.get(BauServer.getInstance().getOwner()).getUserName());
SWItem itemStack;
if (!player.getName().endsWith("")) {
itemStack = SWItem.getPlayerSkull(SteamwarUser.get(BauServer.getInstance().getOwner()).getUserName());
} else {
itemStack = new SWItem(Material.PLAYER_HEAD, "");
}
itemStack.setName(BauSystem.MESSAGE.parse("BAU_INFO_ITEM_NAME", player));
Region region = Region.getRegion(player.getLocation());
List<String> stringList = new ArrayList<>();
@ -53,6 +59,9 @@ public class BauInfoBauGuiItem extends BauGuiItem {
if (flag == Flag.PROTECT && region.getFloorLevel() == 0) {
continue;
}
if (flag == Flag.ITEMS && Core.getVersion() < 19) {
continue;
}
Flag.Value<?> value = region.get(flag);
if (value != null) {
stringList.add(BauSystem.MESSAGE.parse("BAU_INFO_ITEM_LORE_" + flag.name(), player, BauSystem.MESSAGE.parse(value.getChatValue(), player)));

Datei anzeigen

@ -0,0 +1,73 @@
/*
* 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.bau;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.command.PreviousArguments;
import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeMapper;
import de.steamwar.linkage.Linked;
import de.steamwar.techhider.TechHider;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.Collection;
import java.util.stream.Collectors;
@Linked
public class ForceSpectatorCommand extends SWCommand {
public ForceSpectatorCommand() {
super("forcespectator");
}
@Register
public void forceSpectator(@Validator("supervisor") Player player, @Mapper("builder") Player other) {
Permission.forceOnlySpectator(other);
}
@Mapper("builder")
public TypeMapper<Player> spectatorMapper() {
return new TypeMapper<>() {
@Override
public Player map(CommandSender commandSender, String[] previousArguments, String s) {
Player player = Bukkit.getPlayer(s);
if (player == null) {
return null;
}
if (Permission.BUILD.hasPermission(player) && !Permission.SUPERVISOR.hasPermission(player)) {
return player;
}
return null;
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
return Bukkit.getOnlinePlayers().stream()
.filter(Permission.BUILD::hasPermission)
.filter(player -> !Permission.SUPERVISOR.hasPermission(player))
.map(Player::getName)
.collect(Collectors.toList());
}
};
}
}

Datei anzeigen

@ -1,44 +1,32 @@
package de.steamwar.bausystem.features.bau;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.config.BauServer;
import de.steamwar.bausystem.features.tpslimit.TPSWarpUtils;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.LinkedInstance;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.flags.Flag;
import de.steamwar.command.SWCommand;
import de.steamwar.core.TPSWatcher;
import de.steamwar.linkage.Linked;
import de.steamwar.linkage.LinkedInstance;
import de.steamwar.sql.BauweltMember;
import de.steamwar.sql.SteamwarUser;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.*;
import static de.steamwar.bausystem.features.tpslimit.TPSWarpUtils.getTps;
@Linked(LinkageType.COMMAND)
@Linked
public class InfoCommand extends SWCommand {
@LinkedInstance
private BauServer bauServer;
public BauServer bauServer;
public InfoCommand() {
super("bauinfo");
}
@Register(help = true)
public void genericHelp(Player p, String... args) {
BauSystem.MESSAGE.send("BAU_INFO_COMMAND_HELP", p);
}
@Register
@Register(description = "BAU_INFO_COMMAND_HELP")
public void genericCommand(Player p) {
sendBauInfo(p);
}
public void sendBauInfo(Player p) {
BauSystem.MESSAGE.send("BAU_INFO_COMMAND_OWNER", p, SteamwarUser.get(bauServer.getOwnerID()).getUserName());
Region region = Region.getRegion(p.getLocation());
for (Flag flag : Flag.getFlags()) {
@ -51,29 +39,48 @@ public class InfoCommand extends SWCommand {
}
}
List<BauweltMember> members = BauweltMember.getMembers(bauServer.getOwnerID());
StringBuilder membermessage = new StringBuilder();
membermessage.append(BauSystem.MESSAGE.parsePrefixed("BAU_INFO_COMMAND_MEMBER", p));
if (Permission.BUILD.hasPermission(p)) {
List<BauweltMember> members = BauweltMember.getMembers(bauServer.getOwnerID());
Map<Permission, List<BauweltMember>> memberByPermission = new HashMap<>();
members.forEach(member -> {
if (Permission.SUPERVISOR.hasPermission(member)) {
memberByPermission.computeIfAbsent(Permission.SUPERVISOR, __ -> new ArrayList<>()).add(member);
} else if (Permission.BUILD.hasPermission(member)) {
memberByPermission.computeIfAbsent(Permission.BUILD, __ -> new ArrayList<>()).add(member);
} else {
memberByPermission.computeIfAbsent(Permission.MEMBER, __ -> new ArrayList<>()).add(member);
}
});
for (BauweltMember member : members) {
membermessage.append(BauSystem.MESSAGE.parse("BAU_INFO_MEMBER_INFO", p,
SteamwarUser.get(member.getMemberID()).getUserName(),
member.isWorldEdit() ? BauSystem.MESSAGE.parse("BAU_INFO_MEMBER_WE_ALLOW", p) : BauSystem.MESSAGE.parse("BAU_INFO_MEMBER_WE_DISALLOW", p),
member.isWorld() ? BauSystem.MESSAGE.parse("BAU_INFO_MEMBER_WORLD_ALLOW", p) : BauSystem.MESSAGE.parse("BAU_INFO_MEMBER_WORLD_DISALLOW", p)
));
List<BauweltMember> supervisor = memberByPermission.getOrDefault(Permission.SUPERVISOR, Collections.emptyList());
BauSystem.MESSAGE.send("BAU_INFO_COMMAND_MEMBER", p, "§eSupervisor", supervisor.size(), supervisor.isEmpty() ? "§8<none>" : joining(supervisor));
List<BauweltMember> builder = memberByPermission.getOrDefault(Permission.BUILD, Collections.emptyList());
BauSystem.MESSAGE.send("BAU_INFO_COMMAND_MEMBER", p, "§6Builder", builder.size(), builder.isEmpty() ? "§8<none>" : joining(builder));
List<BauweltMember> spectator = memberByPermission.getOrDefault(Permission.MEMBER, Collections.emptyList());
BauSystem.MESSAGE.send("BAU_INFO_COMMAND_MEMBER", p, "§7Spectator", spectator.size(), spectator.isEmpty() ? "§8<none>" : joining(spectator));
}
p.sendMessage(membermessage.toString());
StringBuilder tpsMessage = new StringBuilder();
tpsMessage.append(BauSystem.MESSAGE.parsePrefixed("BAU_INFO_COMMAND_TPS", p));
tpsMessage.append(" ").append(getTps(TPSWatcher.TPSType.ONE_SECOND));
tpsMessage.append(" ").append(getTps(TPSWatcher.TPSType.TEN_SECONDS));
if (!TPSWarpUtils.isWarping()) {
tpsMessage.append(" ").append(TPSWatcher.getTPS(TPSWatcher.TPSType.ONE_MINUTE));
tpsMessage.append(" ").append(TPSWatcher.getTPS(TPSWatcher.TPSType.FIVE_MINUTES));
tpsMessage.append(" ").append(TPSWatcher.getTPS(TPSWatcher.TPSType.TEN_MINUTES));
}
tpsMessage.append(" ").append(TPSWatcher.getTPS(TPSWatcher.TPSType.ONE_SECOND));
tpsMessage.append(" ").append(TPSWatcher.getTPS(TPSWatcher.TPSType.TEN_SECONDS));
tpsMessage.append(" ").append(TPSWatcher.getTPS(TPSWatcher.TPSType.ONE_MINUTE));
tpsMessage.append(" ").append(TPSWatcher.getTPS(TPSWatcher.TPSType.FIVE_MINUTES));
tpsMessage.append(" ").append(TPSWatcher.getTPS(TPSWatcher.TPSType.TEN_MINUTES));
p.sendMessage(tpsMessage.toString());
}
private String joining(List<BauweltMember> bauweltMembers) {
StringBuilder st = new StringBuilder();
for (int i = 0; i < bauweltMembers.size(); i++) {
if (i != 0) {
st.append("§8, ");
}
st.append("§7");
st.append(SteamwarUser.get(bauweltMembers.get(i).getMemberID()).getUserName());
}
return st.toString();
}
}

Datei anzeigen

@ -0,0 +1,96 @@
/*
* 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.cannon;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.features.cannon.depth.Depth;
import de.steamwar.bausystem.features.cannon.depth.DepthManager;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.utils.RegionType;
import de.steamwar.linkage.Linked;
import org.bukkit.Bukkit;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.util.Vector;
import java.util.*;
import java.util.stream.Collectors;
@Linked
public class CannonDetector implements Listener {
private Map<TNTPrimed, Vector> velocities = new HashMap<>();
private Map<TNTPrimed, Set<UUID>> propulsionOfProjectile = new HashMap<>();
@EventHandler(priority = EventPriority.LOW)
public void onEntityExplode(EntityExplodeEvent event) {
if (!(event.getEntity() instanceof TNTPrimed)) {
return;
}
TNTPrimed tnt = (TNTPrimed) event.getEntity();
propulsionOfProjectile.remove(tnt);
DepthManager.update(tnt, event.blockList());
List<TNTPrimed> tnts = Bukkit.getWorlds().get(0).getEntitiesByClass(TNTPrimed.class)
.stream()
.filter(entity -> entity != tnt)
.filter(entity -> entity.getFuseTicks() > 1)
.filter(entity -> entity.getLocation().distance(event.getLocation()) <= 8)
.collect(Collectors.toList());
if (tnts.isEmpty()) {
return;
}
boolean isEmpty = velocities.isEmpty();
tnts.forEach(tntPrimed -> {
velocities.put(tntPrimed, tntPrimed.getVelocity().clone());
propulsionOfProjectile.computeIfAbsent(tntPrimed, __ -> new HashSet<>()).add(tnt.getUniqueId());
});
if (!isEmpty) {
return;
}
BauSystem.runTaskLater(BauSystem.getInstance(), () -> {
Map<CannonKey, List<TNTPrimed>> grouped = new HashMap<>();
velocities.forEach((tntPrimed, vector) -> {
boolean xBiggest = Math.abs(vector.getX()) > Math.abs(vector.getZ());
boolean zBiggest = Math.abs(vector.getZ()) > Math.abs(vector.getX());
Vector vec = new Vector(xBiggest ? Math.signum(vector.getX()) : 0, Math.round(vector.getY() * 100), zBiggest ? Math.signum(vector.getZ()) : 0);
grouped.computeIfAbsent(new CannonKey(propulsionOfProjectile.get(tntPrimed), vec), ignored -> new ArrayList<>()).add(tntPrimed);
});
grouped.forEach((cannonKey, tntPrimeds) -> {
if (tntPrimeds.size() <= 5) return;
Region region = Region.getRegion(tntPrimeds.get(0).getLocation());
if (region.isGlobal()) return;
if (!region.hasType(RegionType.TESTBLOCK)) return;
Depth depth = new Depth(region);
DepthManager.init(tntPrimeds, depth);
});
velocities.clear();
}, 1);
}
}

Datei anzeigen

@ -0,0 +1,37 @@
/*
* 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.cannon;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.util.Vector;
import java.util.Set;
import java.util.UUID;
@AllArgsConstructor
@EqualsAndHashCode
@Getter
public final class CannonKey {
private Set<UUID> propulsions;
private Vector velocityVector;
}

Datei anzeigen

@ -0,0 +1,109 @@
/*
* 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.cannon.depth;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.RegionUtils;
import de.steamwar.bausystem.region.utils.RegionExtensionType;
import de.steamwar.bausystem.region.utils.RegionType;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class Depth {
private Region region;
private Vector minVector = null;
private Vector maxVector = null;
private int tntCount = 0;
public Depth(Region region) {
this.region = region;
}
public void update(List<Block> blocks) {
List<Block> blocksList = blocks.stream()
.filter(block -> region.inRegion(block.getLocation(), RegionType.TESTBLOCK, RegionExtensionType.EXTENSION))
.collect(Collectors.toList());
tntCount++;
for (Block block : blocksList) {
internalUpdate(block);
}
}
public void finish() {
if (maxVector == null || minVector == null) return;
Vector dimensions = maxVector.subtract(minVector);
dimensions.setX(Math.abs(dimensions.getX()));
dimensions.setY(Math.abs(dimensions.getY()));
dimensions.setZ(Math.abs(dimensions.getZ()));
RegionUtils.message(region, player -> {
player.spigot().sendMessage(getMessage(player, dimensions.getBlockX() + 1, dimensions.getBlockY() + 1, dimensions.getBlockZ() + 1, tntCount));
});
}
private void internalUpdate(Block block) {
if (minVector == null) {
minVector = block.getLocation().toVector();
}
minVector.setX(Math.min(minVector.getX(), block.getX()));
minVector.setY(Math.min(minVector.getY(), block.getY()));
minVector.setZ(Math.min(minVector.getZ(), block.getZ()));
if (maxVector == null) {
maxVector = block.getLocation().toVector();
}
maxVector.setX(Math.max(maxVector.getX(), block.getX()));
maxVector.setY(Math.max(maxVector.getY(), block.getY()));
maxVector.setZ(Math.max(maxVector.getZ(), block.getZ()));
}
private static BaseComponent[] getMessage(Player player, int x, int y, int z, int tntCount) {
final Set<Integer> dimensions = new HashSet<>();
dimensions.add(x);
dimensions.add(y);
dimensions.add(z);
int max = getMax(dimensions);
TextComponent headerComponent = new TextComponent(BauSystem.MESSAGE.parse("DEPTH_COUNTER_MESSAGE", player));
TextComponent depthComponent = new TextComponent(BauSystem.MESSAGE.parse("DEPTH_COUNTER_COUNT", player, x == max ? "§e" : "§7", x, y == max ? "§e" : "§7", y, z == max ? "§e" : "§7", z));
depthComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{new TextComponent(BauSystem.MESSAGE.parse("DEPTH_COUNTER_HOVER", player))}));
TextComponent tntComponent = new TextComponent(BauSystem.MESSAGE.parse("DEPTH_COUNTER_TNT", player, tntCount));
return new BaseComponent[]{headerComponent, depthComponent, tntComponent};
}
private static int getMax(Set<Integer> values) {
return values.stream().max(Integer::compare).orElse(0);
}
}

Datei anzeigen

@ -0,0 +1,48 @@
/*
* 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.cannon.depth;
import lombok.experimental.UtilityClass;
import org.bukkit.block.Block;
import org.bukkit.entity.TNTPrimed;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@UtilityClass
public class DepthManager {
private Map<TNTPrimed, Depth> depths = new HashMap<>();
public void init(List<TNTPrimed> list, Depth depth) {
for (TNTPrimed tnt : list) {
depths.putIfAbsent(tnt, depth);
}
}
public void update(TNTPrimed tnt, List<Block> blocks) {
Depth depth = depths.remove(tnt);
if (depth == null) return;
depth.update(blocks);
if (depths.containsValue(depth)) return;
depth.finish();
}
}

Datei anzeigen

@ -28,6 +28,7 @@ import lombok.experimental.UtilityClass;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.Arrays;
import java.util.HashMap;
@ -40,6 +41,9 @@ public class Countingwand {
public static ItemStack getWandItem(Player player) {
ItemStack itemStack = new SWItem(Material.STICK, BauSystem.MESSAGE.parse("COUNTINGWAND_ITEM_NAME", player), Arrays.asList(BauSystem.MESSAGE.parse("COUNTINGWAND_ITEM_LORE1", player), BauSystem.MESSAGE.parse("COUNTINGWAND_ITEM_LORE2", player)), false, null).getItemStack();
ItemUtils.setItem(itemStack, "countingwand");
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setCustomModelData(1);
itemStack.setItemMeta(itemMeta);
return itemStack;
}

Datei anzeigen

@ -20,13 +20,12 @@
package de.steamwar.bausystem.features.countingwand;
import de.steamwar.bausystem.SWUtils;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.command.SWCommand;
import de.steamwar.linkage.Linked;
import org.bukkit.entity.Player;
@Linked(LinkageType.COMMAND)
@Linked
public class CountingwandCommand extends SWCommand {
public CountingwandCommand() {

Datei anzeigen

@ -20,15 +20,14 @@
package de.steamwar.bausystem.features.countingwand;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.specific.BauGuiItem;
import de.steamwar.linkage.Linked;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
@Linked(LinkageType.BAU_GUI_ITEM)
@Linked
public class CountingwandGuiItem extends BauGuiItem {
public CountingwandGuiItem() {
@ -49,6 +48,6 @@ public class CountingwandGuiItem extends BauGuiItem {
@Override
public Permission permission() {
return Permission.WORLDEDIT;
return Permission.MEMBER;
}
}

Datei anzeigen

@ -19,9 +19,8 @@
package de.steamwar.bausystem.features.countingwand;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.region.Point;
import de.steamwar.linkage.Linked;
import org.bukkit.FluidCollisionMode;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -34,7 +33,7 @@ import org.bukkit.util.RayTraceResult;
import java.util.Objects;
@Linked(LinkageType.LISTENER)
@Linked
public class CountingwandListener implements Listener {
@EventHandler

Datei anzeigen

@ -0,0 +1,141 @@
/*
* 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.design.endstone;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.region.Region;
import de.steamwar.entity.REntity;
import de.steamwar.entity.REntityServer;
import de.steamwar.entity.RFallingBlockEntity;
import net.md_5.bungee.api.ChatMessageType;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class DesignEndStone {
private static final World WORLD = Bukkit.getWorlds().get(0);
private int minX, minY, minZ, maxX, maxY, maxZ;
private REntityServer entityServer = new REntityServer();
private List<REntity> entities = new ArrayList<>();
private Set<Location> locations = new HashSet<>();
private boolean wsOrAs;
private double maxBlastResistance;
public DesignEndStone(Region region) {
this.minX = region.getMinPointBuild().getX();
this.minY = region.getMinPointBuild().getY();
this.minZ = region.getMinPointBuild().getZ();
this.maxX = region.getMaxPointBuild().getX();
this.maxY = region.getMaxPointBuild().getY();
this.maxZ = region.getMaxPointBuild().getZ();
wsOrAs = region.getName().startsWith("ws") || region.getName().startsWith("as");
maxBlastResistance = wsOrAs ? 6.1 : 9.0;
entityServer.setCallback((player, rEntity, entityAction) -> {
if (entityAction != REntityServer.EntityAction.ATTACK) return;
Location location = new Location(WORLD, rEntity.getX(), rEntity.getY(), rEntity.getZ());
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
location.getBlock().breakNaturally();
calc();
}, 1);
});
}
public void calc() {
entities.forEach(REntity::die);
entities.clear();
locations.clear();
calc(minX, minY, minZ, maxX, maxY, minZ, 0, 0, 1, maxZ - minZ);
calc(minX, minY, maxZ, maxX, maxY, maxZ, 0, 0, -1, maxZ - minZ);
calc(minX, minY, minZ, minX, maxY, maxZ, 1, 0, 0, maxX - minX);
calc(maxX, minY, minZ, maxX, maxY, maxZ, -1, 0, 0, maxX - minX);
if (wsOrAs) {
calc(minX, minY, minZ, maxX, minY, maxZ, 0, 1, 0, maxY - minY + 1);
} else {
int airBlocks = 0;
double minAirBlocks = (maxX - minX) * (maxZ - minZ) * 0.1;
for (int x = minX; x < maxX; x++) {
for (int z = minZ; z < maxZ; z++) {
if (WORLD.getBlockAt(x, minY, z).getType().isAir()) {
airBlocks++;
if (airBlocks > minAirBlocks) break;
}
}
}
if (airBlocks > minAirBlocks) {
calc(minX, minY, minZ, maxX, minY, maxZ, 0, 1, 0, maxY - minY + 1);
}
}
calc(minX, maxY, minZ, maxX, maxY, maxZ, 0, -1, 0, maxY - minY + 1);
}
private void calc(int minX, int minY, int minZ, int maxX, int maxY, int maxZ, int dirX, int dirY, int dirZ, int steps) {
for (int x = minX; x <= maxX; x++) {
for (int y = minY; y <= maxY; y++) {
for (int z = minZ; z <= maxZ; z++) {
for (int step = 0; step < steps; step++) {
int cx = x + step * dirX;
int cy = y + step * dirY;
int cz = z + step * dirZ;
Material material = WORLD.getBlockAt(cx, cy, cz).getType();
if (material != Material.WATER && material != Material.LAVA && material.getBlastResistance() >= maxBlastResistance) {
Location location = new Location(WORLD, cx + 0.5, cy, cz + 0.5);
if (!locations.add(location)) break;
RFallingBlockEntity entity = new RFallingBlockEntity(entityServer, location, Material.RED_STAINED_GLASS);
entity.setNoGravity(true);
entity.setGlowing(true);
entities.add(entity);
break;
} else if (!material.isAir() && material != Material.WATER && material != Material.LAVA) {
break;
}
}
}
}
}
}
public void toggle(Player player) {
if (entityServer.getPlayers().contains(player)) {
entityServer.removePlayer(player);
BauSystem.MESSAGE.sendPrefixless("DESIGN_ENDSTONE_DISABLE", player, ChatMessageType.ACTION_BAR);
} else {
entityServer.addPlayer(player);
calc();
BauSystem.MESSAGE.sendPrefixless("DESIGN_ENDSTONE_ENABLE", player, ChatMessageType.ACTION_BAR);
}
}
public boolean removePlayer(Player player) {
entityServer.removePlayer(player);
return entityServer.getPlayers().isEmpty();
}
}

Datei anzeigen

@ -0,0 +1,97 @@
/*
* 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.design.endstone;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.utils.RegionType;
import de.steamwar.bausystem.utils.BauMemberUpdateEvent;
import de.steamwar.command.SWCommand;
import de.steamwar.linkage.Linked;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@Linked
public class DesignEndStoneCommand extends SWCommand implements Listener {
public DesignEndStoneCommand() {
super("designendstone");
}
private Map<Region, DesignEndStone> designEndStoneMap = new HashMap<>();
@Register(description = "DESIGN_ENDSTONE_COMMAND_HELP")
public void genericCommand(@Validator Player player) {
Region region = Region.getRegion(player.getLocation());
if (!region.hasType(RegionType.BUILD)) {
BauSystem.MESSAGE.send("DESIGN_ENDSTONE_REGION_ERROR", player);
return;
}
designEndStoneMap.computeIfAbsent(region, DesignEndStone::new).toggle(player);
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
disableDesignEndStone(event.getPlayer());
}
@EventHandler
public void onBauMemberUpdate(BauMemberUpdateEvent event) {
event.getNewSpectator().forEach(this::disableDesignEndStone);
}
private void disableDesignEndStone(Player player) {
new HashSet<>(designEndStoneMap.entrySet()).forEach(regionDesignEndStoneEntry -> {
if (regionDesignEndStoneEntry.getValue().removePlayer(player)) {
designEndStoneMap.remove(regionDesignEndStoneEntry.getKey());
}
});
}
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
update(event.getBlock().getLocation());
}
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
BauSystem.runTaskLater(BauSystem.getInstance(), () -> {
update(event.getBlock().getLocation());
}, 1);
}
private void update(Location location) {
Region region = Region.getRegion(location);
DesignEndStone designEndStone = designEndStoneMap.get(region);
if (designEndStone == null) {
return;
}
designEndStone.calc();
}
}

Datei anzeigen

@ -25,7 +25,8 @@ import de.steamwar.bausystem.configplayer.Config;
import de.steamwar.bausystem.features.autostart.AutostartListener;
import de.steamwar.bausystem.features.detonator.storage.DetonatorStorage;
import de.steamwar.bausystem.features.detonator.storage.ItemStorage;
import de.steamwar.core.VersionedRunnable;
import de.steamwar.entity.REntityServer;
import de.steamwar.entity.RFallingBlockEntity;
import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@ -40,12 +41,11 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import java.util.*;
import java.util.stream.Collectors;
@UtilityClass
public class Detonator {
private static final Map<Player, List<AbstractDetonatorEntity>> ENTITIES_MAP = new HashMap<>();
private static final Map<Player, REntityServer> ENTITIES_MAP = new HashMap<>();
private static final Vector HALF = new Vector(0.5, 0, 0.5);
public static boolean isDetonator(ItemStack itemStack) {
@ -53,21 +53,24 @@ public class Detonator {
}
public static void showDetonator(Player p, List<Location> locs) {
List<Vector> vecs = locs.stream().map(Location::toVector).collect(Collectors.toList());
List<AbstractDetonatorEntity> entities = new LinkedList<>();
VersionedRunnable.call(new VersionedRunnable(() -> {
vecs.forEach(vector -> entities.add(Detonator_15.constructEntity(p.getWorld(), vector.add(HALF))));
}, 15));
entities.forEach(abstractDetonatorEntity -> abstractDetonatorEntity.display(p));
ENTITIES_MAP.putIfAbsent(p, entities);
if (ENTITIES_MAP.containsKey(p)) return;
REntityServer entities = new REntityServer();
entities.setCallback((player, rEntity, entityAction) -> {
Vector vector = new Vector(rEntity.getX(), rEntity.getY(), rEntity.getZ());
DetonatorListener.addLocationToDetonator(vector.toLocation(player.getWorld()).getBlock().getLocation(), player);
DetonatorListener.HAS_UPDATED.add(player);
});
entities.addPlayer(p);
ENTITIES_MAP.put(p, entities);
locs.forEach(location -> {
RFallingBlockEntity entity = new RFallingBlockEntity(entities, location.clone().add(HALF), Material.RED_STAINED_GLASS);
entity.setNoGravity(true);
});
}
public static void hideDetonator(Player p) {
ENTITIES_MAP.remove(p).forEach(abstractDetonatorEntity -> abstractDetonatorEntity.hide(p, true));
}
public static List<AbstractDetonatorEntity> getDetoEntities(Player p) {
return ENTITIES_MAP.getOrDefault(p, new ArrayList<>());
ENTITIES_MAP.remove(p).close();
}
public static boolean hasActiveDetonatorShow(Player p) {
@ -196,34 +199,23 @@ public class Detonator {
switch (block.getType()) {
case LEVER:
return Detoblock.SWITCH;
case ACACIA_BUTTON:
case BIRCH_BUTTON:
case DARK_OAK_BUTTON:
case JUNGLE_BUTTON:
case OAK_BUTTON:
case SPRUCE_BUTTON:
return Detoblock.WOOD_BUTTON;
case STONE_BUTTON:
return Detoblock.STONE_BUTTON;
case ACACIA_PRESSURE_PLATE:
case BIRCH_PRESSURE_PLATE:
case DARK_OAK_PRESSURE_PLATE:
case JUNGLE_PRESSURE_PLATE:
case OAK_PRESSURE_PLATE:
case SPRUCE_PRESSURE_PLATE:
case STONE_PRESSURE_PLATE:
return Detoblock.PRESSURE_PLATE;
case HEAVY_WEIGHTED_PRESSURE_PLATE:
case LIGHT_WEIGHTED_PRESSURE_PLATE:
return Detoblock.WEIGHTED_PRESSURE_PLATE;
case TRIPWIRE:
return Detoblock.TRIPWIRE;
case NOTE_BLOCK:
return Detoblock.NOTEBLOCK;
case DAYLIGHT_DETECTOR:
return Detoblock.DAYLIGHTSENSOR;
case HEAVY_WEIGHTED_PRESSURE_PLATE:
case LIGHT_WEIGHTED_PRESSURE_PLATE:
return Detoblock.WEIGHTED_PRESSURE_PLATE;
default:
if (block.getBlockData() instanceof Powerable) {
if (block.getType().name().contains("STONE_BUTTON")) {
return Detoblock.STONE_BUTTON;
} else if (block.getType().name().contains("BUTTON")) {
return Detoblock.WOOD_BUTTON;
} else if (block.getType().name().contains("PRESSURE_PLATE")) {
return Detoblock.PRESSURE_PLATE;
} else if (block.getBlockData() instanceof Powerable) {
return Detoblock.POWERABLE;
} else {
return Detoblock.INVALID;

Datei anzeigen

@ -20,14 +20,13 @@
package de.steamwar.bausystem.features.detonator;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.specific.BauGuiItem;
import de.steamwar.linkage.Linked;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
@Linked(LinkageType.BAU_GUI_ITEM)
@Linked
public class DetonatorBauGuiItem extends BauGuiItem {
public DetonatorBauGuiItem() {
@ -48,6 +47,6 @@ public class DetonatorBauGuiItem extends BauGuiItem {
@Override
public Permission permission() {
return Permission.MEMBER;
return Permission.BUILD;
}
}

Datei anzeigen

@ -24,10 +24,9 @@ import de.steamwar.bausystem.SWUtils;
import de.steamwar.bausystem.configplayer.Config;
import de.steamwar.bausystem.features.detonator.storage.DetonatorStorage;
import de.steamwar.bausystem.features.detonator.storage.ItemStorage;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.utils.ItemUtils;
import de.steamwar.command.SWCommand;
import de.steamwar.linkage.Linked;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@ -35,7 +34,7 @@ import org.bukkit.inventory.meta.ItemMeta;
import java.util.Arrays;
@Linked(LinkageType.COMMAND)
@Linked
public class DetonatorCommand extends SWCommand {
public static ItemStack getWAND(Player player) {
@ -47,23 +46,24 @@ public class DetonatorCommand extends SWCommand {
meta.setLore(Arrays.asList(BauSystem.MESSAGE.parse("DETONATOR_WAND_LORE_1", player),
BauSystem.MESSAGE.parse("DETONATOR_WAND_LORE_2", player),
BauSystem.MESSAGE.parse("DETONATOR_WAND_LORE_3", player)));
meta.setCustomModelData(3);
wand.setItemMeta(meta);
ItemUtils.setItem(wand, "detonator");
return wand;
}
protected DetonatorCommand() {
public DetonatorCommand() {
super("detonator", "dt");
}
@Register(value = "wand", description = "DETONATOR_HELP_WAND")
public void giveWand(Player p) {
public void giveWand(@Validator Player p) {
SWUtils.giveItemToPlayer(p, getWAND(p));
}
@Register(value = "click", description = "DETONATOR_HELP_CLICK")
public void clickDetonator(Player p) {
public void clickDetonator(@Validator Player p) {
Detonator.activateDetonator(new ItemStorage(p));
}

Datei anzeigen

@ -19,14 +19,12 @@
package de.steamwar.bausystem.features.detonator;
import com.comphenix.tinyprotocol.Reflection;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.SWUtils;
import de.steamwar.bausystem.features.detonator.storage.DetonatorStorage;
import de.steamwar.bausystem.features.detonator.storage.ItemStorage;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.utils.ProtocolAPI;
import de.steamwar.linkage.Linked;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -39,39 +37,14 @@ import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Linked(LinkageType.LISTENER)
@Linked
public class DetonatorListener implements Listener {
public static final Class<?> useEntity = Reflection.getClass("{nms}.PacketPlayInUseEntity");
private static final Reflection.FieldAccessor<Integer> entityIdFieldAccessor = Reflection.getField(useEntity, int.class, 0);
static final Set<Player> HAS_UPDATED = new HashSet<>();
private static final Set<Player> HAS_UPDATED = new HashSet<>();
public DetonatorListener() {
ProtocolAPI.setIncomingHandler(useEntity, (player, o) -> {
List<AbstractDetonatorEntity> entities = Detonator.getDetoEntities(player);
if (entities.isEmpty()) {
return o;
}
int entityId = entityIdFieldAccessor.get(o);
AbstractDetonatorEntity entity = entities.stream().filter(abstractDetonatorEntity -> abstractDetonatorEntity.getId() == entityId).findFirst().orElse(null);
if (entity == null) {
return o;
}
Location location = entity.getBukkitEntity().getLocation().getBlock().getLocation();
addLocationToDetonator(location, player);
HAS_UPDATED.add(player);
return null;
});
}
private static void addLocationToDetonator(Location location, Player p) {
static void addLocationToDetonator(Location location, Player p) {
Detoblock detoblock = Detonator.getBlock(location.getBlock());
if (detoblock == Detoblock.INVALID) {
SWUtils.sendToActionbar(p, BauSystem.MESSAGE.parse("DETONATOR_INVALID_BLOCK", p));
@ -93,6 +66,7 @@ public class DetonatorListener implements Listener {
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
if(!Permission.BUILD.hasPermission(event.getPlayer())) return;
Player p = event.getPlayer();
if (Detonator.isDetonator(p.getInventory().getItemInMainHand())) {
event.setCancelled(true);
@ -103,6 +77,7 @@ public class DetonatorListener implements Listener {
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
if(!Permission.BUILD.hasPermission(event.getPlayer())) return;
if (!Detonator.isDetonator(event.getItem())) {
return;
}
@ -117,7 +92,7 @@ public class DetonatorListener implements Listener {
@EventHandler(ignoreCancelled = true)
public void onPlayerMove(PlayerMoveEvent event) {
if (!Detonator.isDetonator(event.getPlayer().getInventory().getItemInMainHand())) {
if (!Permission.BUILD.hasPermission(event.getPlayer()) ||!Detonator.isDetonator(event.getPlayer().getInventory().getItemInMainHand())) {
if (Detonator.hasActiveDetonatorShow(event.getPlayer())) {
Detonator.hideDetonator(event.getPlayer());
}
@ -138,6 +113,7 @@ public class DetonatorListener implements Listener {
@EventHandler
public void onPlayerItemHeld(PlayerItemHeldEvent event) {
if(!Permission.BUILD.hasPermission(event.getPlayer())) return;
if (Detonator.isDetonator(event.getPlayer().getInventory().getItemInMainHand())) {
HAS_UPDATED.add(event.getPlayer());
}
@ -145,6 +121,7 @@ public class DetonatorListener implements Listener {
@EventHandler
public void onPlayerSwapHandItems(PlayerSwapHandItemsEvent event) {
if(!Permission.BUILD.hasPermission(event.getPlayer())) return;
if (Detonator.isDetonator(event.getMainHandItem()) || Detonator.isDetonator(event.getOffHandItem())) {
HAS_UPDATED.add(event.getPlayer());
}

Datei anzeigen

@ -23,9 +23,9 @@ import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.SWUtils;
import de.steamwar.bausystem.features.gui.editor.BauGuiMapping;
import de.steamwar.bausystem.linkage.LinkageUtils;
import de.steamwar.bausystem.linkage.specific.BauGuiItem;
import de.steamwar.inventory.SWInventory;
import lombok.Getter;
import lombok.experimental.UtilityClass;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Material;
@ -38,8 +38,12 @@ import java.util.*;
@UtilityClass
public class BauGUI {
@Getter
private static final HashMap<Integer, BauGuiItem> ITEMS = new HashMap<>();
private static final Map<Integer, BauGuiItem> ITEMS = new HashMap<>();
public static Map<Integer, BauGuiItem> getITEMS() {
if (ITEMS.isEmpty()) LinkageUtils.linkGUIItems();
return ITEMS;
}
private static final Set<Player> OPEN_INVS = new HashSet<>();
private static boolean updating = false;
@ -65,7 +69,7 @@ public class BauGUI {
}
BauGuiMapping mapping = BauGuiMapping.getGuiMapping(p);
SWInventory inv = new SWInventory(p, mapping.getSize(), BauSystem.MESSAGE.parse("GUI_NAME", p));
ITEMS.values().forEach(item -> {
getITEMS().values().forEach(item -> {
if (!mapping.isShown(item.getId())) {
return;
}
@ -77,7 +81,7 @@ public class BauGUI {
}
} else {
p.closeInventory();
BauSystem.MESSAGE.send("GUI_NO_PERMISSION", p);
BauSystem.MESSAGE.send("NO_PERMISSION", p);
}
});
});
@ -104,26 +108,13 @@ public class BauGUI {
if (!permission.hasPermission(p)) {
List<String> lore = meta.getLore();
if (lore == null) {
lore = Collections.singletonList(BauSystem.MESSAGE.parse(permissionString(permission), p));
lore = Collections.singletonList(BauSystem.MESSAGE.parse("NO_PERMISSION", p));
} else {
lore.add(BauSystem.MESSAGE.parse(permissionString(permission), p));
lore.add(BauSystem.MESSAGE.parse("NO_PERMISSION", p));
}
meta.setLore(lore);
}
itemStack.setItemMeta(meta);
return itemStack;
}
private static String permissionString(Permission permission) {
switch (permission) {
case OWNER:
return "GUI_NO_OWNER";
case WORLD:
return "GUI_NO_WORLD";
case WORLDEDIT:
return "GUI_NO_WORLDEDIT";
default:
return "GUI_NO_MEMBER";
}
}
}

Datei anzeigen

@ -19,24 +19,16 @@
package de.steamwar.bausystem.features.gui;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.features.gui.editor.BauGuiEditor;
import de.steamwar.bausystem.features.gui.editor.BauGuiImportExport;
import de.steamwar.bausystem.features.gui.editor.BauGuiMapping;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.command.SWCommand;
import de.steamwar.inventory.SWItem;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import de.steamwar.linkage.Linked;
import org.bukkit.entity.Player;
@Linked(LinkageType.COMMAND)
@Linked
public class BauGUICommand extends SWCommand {
protected BauGUICommand() {
public BauGUICommand() {
super("gui", "baugui", "g");
}
@ -54,29 +46,4 @@ public class BauGUICommand extends SWCommand {
public void openEditor(Player p) {
BauGuiEditor.openGuiEditor(p, new SWItem().getItemStack());
}
@Register("export")
public void exportGui(Player p) {
String export = BauGuiImportExport.exportGui(BauGuiMapping.getGuiMapping(p));
TextComponent component = new TextComponent();
component.setColor(ChatColor.YELLOW);
component.setBold(true);
component.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(BauSystem.MESSAGE.parse("GUI_EXPORT_CODE_HOVER", p))));
component.setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, export));
component.setText(export);
BauSystem.MESSAGE.send("GUI_EXPORT_CODE", p);
p.spigot().sendMessage(component);
}
@Register("import")
public void importGui(Player p, String code) {
try {
if (BauGuiImportExport.importGui(code, p)) {
BauSystem.MESSAGE.send("GUI_IMPORT_CODE_SUCCESSFUL", p);
}
} catch (Exception e) {
e.printStackTrace();
BauSystem.MESSAGE.send("GUI_IMPORT_INVALID_CODE", p);
}
}
}

Datei anzeigen

@ -21,10 +21,9 @@ package de.steamwar.bausystem.features.gui;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.specific.BauGuiItem;
import de.steamwar.inventory.SWItem;
import de.steamwar.linkage.Linked;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@ -33,7 +32,7 @@ import org.bukkit.inventory.ItemStack;
import java.util.Arrays;
@Linked(LinkageType.BAU_GUI_ITEM)
@Linked
public class BauGuiBauGuiItem extends BauGuiItem {
public BauGuiBauGuiItem() {

Datei anzeigen

@ -19,14 +19,13 @@
package de.steamwar.bausystem.features.gui;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.linkage.Linked;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
@Linked(LinkageType.LISTENER)
@Linked
public class BauGuiListener implements Listener {
@EventHandler

Datei anzeigen

@ -21,11 +21,10 @@ package de.steamwar.bausystem.features.gui.editor;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.features.gui.BauGUI;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.specific.BauGuiItem;
import de.steamwar.inventory.SWItem;
import de.steamwar.inventory.SWListInv;
import de.steamwar.linkage.Linked;
import lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.Material;
@ -40,13 +39,14 @@ import org.bukkit.event.inventory.InventoryDragEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
import java.util.*;
@Linked(LinkageType.LISTENER)
@Linked
public class BauGuiEditor implements Listener {
@Getter
@ -73,6 +73,7 @@ public class BauGuiEditor implements Listener {
inv.setItem(mapping.getSize() + 5, new SWItem(Material.BARRIER, BauSystem.MESSAGE.parse("GUI_EDITOR_ITEM_TRASH", p), Arrays.asList(BauSystem.MESSAGE.parse("GUI_EDITOR_ITEM_TRASH_LORE", p)), false, clickType -> {
}).getItemStack());
inv.setItem(mapping.getSize() + 6, new SWItem(Material.SCUTE, BauSystem.MESSAGE.parse("GUI_EDITOR_ITEM_MORE", p)).getItemStack());
inv.setItem(mapping.getSize() + 8, new SWItem(Material.ARROW, BauSystem.MESSAGE.parse("GUI_EDITOR_ITEM_CLOSE", p)).getItemStack());
p.openInventory(inv);
p.getOpenInventory().setCursor(cursor == null ? new SWItem().getItemStack() : cursor);
@ -156,6 +157,10 @@ public class BauGuiEditor implements Listener {
});
inv.open();
break;
case 8:
saveMapping(p);
BauGUI.openBauGui(p);
break;
default:
}
}
@ -189,14 +194,17 @@ public class BauGuiEditor implements Listener {
}
private void saveMapping(Player p) {
BauGuiMapping mapping = BauGuiMapping.getGuiMapping(p);
saveMapping(p.getOpenInventory(), BauGuiMapping.getGuiMapping(p));
}
private void saveMapping(InventoryView view, BauGuiMapping mapping) {
if (mapping.isSaved()) {
return;
}
HashMap<Integer, Integer> newMapping = new HashMap<>();
for (int i = 0; i < p.getOpenInventory().getTopInventory().getContents().length; i++) {
ItemStack itemStack = p.getOpenInventory().getTopInventory().getContents()[i];
for (int i = 0; i < view.getTopInventory().getContents().length; i++) {
ItemStack itemStack = view.getTopInventory().getContents()[i];
if (itemStack == null || itemStack.getType() == Material.AIR || i >= mapping.getSize()) continue;
newMapping.put(getId(itemStack), i);
}
@ -219,7 +227,7 @@ public class BauGuiEditor implements Listener {
Player p = (Player) event.getPlayer();
saveMapping(p);
saveMapping(event.getView(), BauGuiMapping.getGuiMapping(p));
open_Edits.remove(p);
}
}

Datei anzeigen

@ -21,16 +21,15 @@ package de.steamwar.bausystem.features.gui.editor;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.specific.BauGuiItem;
import de.steamwar.inventory.SWItem;
import de.steamwar.linkage.Linked;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
@Linked(LinkageType.BAU_GUI_ITEM)
@Linked
public class BauGuiEditorGuiItem extends BauGuiItem {
public BauGuiEditorGuiItem() {

Datei anzeigen

@ -1,168 +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.features.gui.editor;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.features.gui.BauGUI;
import lombok.experimental.UtilityClass;
import org.bukkit.entity.Player;
import java.util.*;
import java.util.stream.Collectors;
@UtilityClass
public class BauGuiImportExport {
private static final String VERSION = "00000";
public String exportGui(BauGuiMapping mapping) {
StringBuilder st = new StringBuilder();
st.append(VERSION); // Version in Binary (0 - 32)
append(st, Integer.toBinaryString(mapping.getSize() / 9), 3); // Menu Size
Map<Integer, Integer> map = new HashMap<>();
mapping.getMapping().forEach((integer, integer2) -> map.put(integer2, integer));
List<Integer> integerList = map.keySet().stream().sorted().collect(Collectors.toList());
for (int i = 0; i < integerList.size(); i++) {
int current = integerList.get(i);
int last = i == 0 ? -1 : integerList.get(i - 1);
if (current - last > 1) {
binaryConvert(st, Integer.toBinaryString(current - last - 1), '0');
}
binaryConvert(st, Integer.toBinaryString(map.get(current)), '1');
}
byte[] bytes = new byte[st.length() / 8 + 1];
if (st.length() / 8 == (int) Math.ceil(st.length() / 8.0)) {
bytes = new byte[st.length() / 8];
}
int index = 0;
while (st.length() > 0) {
byte result = 0;
for (int i = 0; i < Math.min(8, st.length()); i++) {
result |= (st.charAt(i) - '0') << (7 - i);
}
bytes[index] = result;
index++;
st.delete(0, Math.min(8, st.length()));
}
return Base64.getEncoder().encodeToString(bytes);
}
private static void append(StringBuilder st, String s, int length) {
for (int i = 0; i < length - s.length(); i++) {
st.append("0");
}
st.append(s);
}
private static void binaryConvert(StringBuilder st, String s, char identifier) {
StringBuilder current = new StringBuilder().append(identifier).append(s);
char reverseIdentifier = identifier == '0' ? '1' : '0';
boolean added = false;
while (current.length() % 4 != 0) {
current.insert(0, reverseIdentifier);
added = true;
}
if (!added) {
current.insert(0, reverseIdentifier);
current.insert(0, reverseIdentifier);
current.insert(0, reverseIdentifier);
current.insert(0, reverseIdentifier);
}
while (current.length() > 4) {
st.append('1').append(current.substring(0, 4));
current.delete(0, 4);
}
st.append('0').append(current);
}
public static boolean importGui(String str, Player p) {
byte[] bytes = Base64.getDecoder().decode(str);
StringBuilder st = new StringBuilder();
for (byte b : bytes) {
append(st, Integer.toBinaryString(b & 0xFF), 8);
}
if (!st.substring(0, 5).equals(VERSION)) {
BauSystem.MESSAGE.send("GUI_IMPORT_INVALID_CODE", p);
return false;
}
int size = Integer.parseInt(st.substring(5, 8), 2);
if (size <= 0 || size > 5) {
BauSystem.MESSAGE.send("GUI_IMPORT_INVALID_CODE", p);
return false;
}
size *= 9;
st.delete(0, 8);
List<String> blobs = new ArrayList<>();
if (st.length() > 0) {
blobs.add("");
}
while (st.length() > 4) {
String current = st.substring(0, 5);
int last = blobs.size() - 1;
blobs.set(last, blobs.get(last) + current.substring(1));
if (current.startsWith("0")) {
blobs.add("");
}
st.delete(0, 5);
}
blobs.removeIf(String::isEmpty);
blobs.replaceAll(s -> {
char start = s.charAt(0);
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) != start) {
return s.substring(i);
}
}
return s;
});
int currentIndex = 0;
Map<Integer, Integer> map = new HashMap<>();
boolean initial = true;
for (String s : blobs) {
if (s.startsWith("0")) {
currentIndex += Integer.parseInt(s.substring(1), 2);
} else {
if (!initial) {
currentIndex++;
}
initial = false;
s = s.substring(1);
int itemID = Integer.parseInt(s, 2);
if (!BauGUI.getITEMS().containsKey(itemID)) {
BauSystem.MESSAGE.send("GUI_IMPORT_INVALID_CODE", p);
return false;
}
map.put(itemID, currentIndex);
}
}
BauGuiMapping mapping = BauGuiMapping.getGuiMapping(p);
mapping.setMapping(map);
mapping.setSize(size);
return true;
}
}

Datei anzeigen

@ -20,6 +20,7 @@
package de.steamwar.bausystem.features.hotbar;
import de.steamwar.bausystem.configplayer.Config;
import de.steamwar.core.Core;
import lombok.experimental.UtilityClass;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@ -30,14 +31,18 @@ import yapion.parser.YAPIONParser;
import yapion.serializing.YAPIONDeserializer;
import yapion.serializing.YAPIONSerializer;
import java.util.HashSet;
import java.util.Set;
@UtilityClass
public class DefaultHotbar {
private final YAPIONArray DEFAULT_HOTBAR = YAPIONParser.parse("{[{@type(org.bukkit.inventory.ItemStack)v(2230)type(WOODEN_AXE)meta{@type(org.bukkit.inventory.meta.ItemMeta)meta-type(UNSPECIFIC)display-name(WorldEdit Wand)lore{@type(java.util.ArrayList)values[Left click: select pos #1,Right click: select pos #2]}}},{@type(org.bukkit.inventory.ItemStack)v(2230)type(COMPASS)meta{@type(org.bukkit.inventory.meta.ItemMeta)meta-type(UNSPECIFIC)display-name(Navigation Wand)lore{@type(java.util.ArrayList)values[Left click: jump to location,Right click: pass through walls]}}},null,null,null,null,null,null,{@type(org.bukkit.inventory.ItemStack)v(2230)type(NETHER_STAR)meta{@type(org.bukkit.inventory.meta.ItemMeta)meta-type(UNSPECIFIC)display-name(§eBau GUI)}}]}").getArray("");
private final YAPIONArray DEFAULT_HOTBAR = YAPIONParser.parse("{[{@type(org.bukkit.inventory.ItemStack)v(2230)type(WOODEN_AXE)meta{@type(org.bukkit.inventory.meta.ItemMeta)meta-type(UNSPECIFIC)display-name(WorldEdit Wand)lore{@type(java.util.ArrayList)values[Left click: select pos #1,Right click: select pos #2]}}},{@type(org.bukkit.inventory.ItemStack)v(2230)type(COMPASS)meta{@type(org.bukkit.inventory.meta.ItemMeta)meta-type(UNSPECIFIC)display-name(Navigation Wand)lore{@type(java.util.ArrayList)values[Left click: jump to location,Right click: pass through walls]}}},null,null,null,null,null,null,{@type(org.bukkit.inventory.ItemStack)v(2230)type(NETHER_STAR)meta{@type(org.bukkit.inventory.meta.ItemMeta)meta-type(UNSPECIFIC)display-name(§eBau GUI)}},null,null,{@type(org.bukkit.inventory.ItemStack)v(3117)type(ELYTRA)},null]}").getArray("");
public void updateHotbar(Player p) {
ItemStack[] hotbar = new ItemStack[9];
ItemStack[] hotbar = new ItemStack[13];
System.arraycopy(p.getInventory().getContents(), 0, hotbar, 0, 9);
System.arraycopy(p.getInventory().getArmorContents(), 0, hotbar, 9, 4);
YAPIONArray yapionArray = new YAPIONArray();
for (ItemStack itemStack : hotbar) {
if (itemStack != null) {
@ -46,27 +51,39 @@ public class DefaultHotbar {
yapionArray.add(new YAPIONValue<>(null));
}
}
Config.getInstance().get(p).add("hotbar", yapionArray);
Config.getInstance().get(p).add("hotbar-" + Core.getVersion(), yapionArray);
Config.getInstance().save(p);
}
public void setHotbar(Player p) {
ItemStack[] hotbar = getItems(p);
ItemStack[] inv = p.getInventory().getContents();
ItemStack[] armor = p.getInventory().getArmorContents();
System.arraycopy(hotbar, 0, inv, 0, 9);
System.arraycopy(hotbar, 9, armor, 0, 4);
p.getInventory().setContents(inv);
p.getInventory().setArmorContents(armor);
}
public ItemStack[] getItems(Player p) {
YAPIONArray yapionArray = Config.getInstance().get(p).getYAPIONArrayOrSetDefault("hotbar", defaultHotbar());
ItemStack[] hotbar = new ItemStack[9];
Config.getInstance().get(p).remap("hotbar", "hotbar-19");
YAPIONArray yapionArray = Config.getInstance().get(p).getYAPIONArrayOrSetDefault("hotbar-" + Core.getVersion(), defaultHotbar());
ItemStack[] hotbar = new ItemStack[13];
Set<Integer> invalid = new HashSet<>();
yapionArray.forEach((integer, yapionAnyType) -> {
if (yapionAnyType instanceof YAPIONValue) {
hotbar[integer] = null;
} else {
hotbar[integer] = (ItemStack) YAPIONDeserializer.deserialize((YAPIONObject) yapionAnyType);
try {
hotbar[integer] = YAPIONDeserializer.deserialize((YAPIONObject) yapionAnyType);
} catch (Exception e) {
invalid.add(integer);
hotbar[integer] = null;
}
}
});
invalid.forEach(i -> yapionArray.set(i, new YAPIONValue<>(null)));
if (!invalid.isEmpty()) Config.getInstance().save(p);
return hotbar;
}

Datei anzeigen

@ -20,23 +20,22 @@
package de.steamwar.bausystem.features.hotbar;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.command.SWCommand;
import de.steamwar.inventory.SWInventory;
import de.steamwar.linkage.Linked;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@Linked(LinkageType.COMMAND)
@Linked
public class HotbarCommand extends SWCommand {
protected HotbarCommand() {
public HotbarCommand() {
super("hotbar", "hb");
addDefaultHelpMessage("HOTBAR_HELP_GENERIC");
}
@Register(value = "load", description = "HOTBAR_HELP_LOAD")
public void loadHotbar(Player p) {
public void loadHotbar(@Validator Player p) {
DefaultHotbar.setHotbar(p);
BauSystem.MESSAGE.send("HOTBAR_LOADED", p);
}
@ -49,7 +48,7 @@ public class HotbarCommand extends SWCommand {
@Register(value = "show", description = "HOTBAR_HELP_SHOW")
public void showHotbar(Player p) {
SWInventory inv = new SWInventory(p, 9, BauSystem.MESSAGE.parse("HOTBAR_INVENTORY", p));
SWInventory inv = new SWInventory(p, 18, BauSystem.MESSAGE.parse("HOTBAR_INVENTORY", p));
ItemStack[] hotbar = DefaultHotbar.getItems(p);
for (int i = 0; i < hotbar.length; i++) {
if (hotbar[i] == null) continue;

Datei anzeigen

@ -19,19 +19,20 @@
package de.steamwar.bausystem.features.hotbar;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.Permission;
import de.steamwar.linkage.Linked;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
@Linked(LinkageType.LISTENER)
@Linked
public class HotbarListener implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerJoin(PlayerJoinEvent event) {
if (allNull(event.getPlayer().getInventory().getContents())) {
if(!Permission.BUILD.hasPermission(event.getPlayer())) return;
if (allNull(event.getPlayer().getInventory().getContents()) && allNull(event.getPlayer().getInventory().getArmorContents())) {
DefaultHotbar.setHotbar(event.getPlayer());
}
}

Datei anzeigen

@ -0,0 +1,42 @@
package de.steamwar.bausystem.features.inventoryfiller;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.configplayer.Config;
import de.steamwar.bausystem.linkage.specific.BauGuiItem;
import de.steamwar.inventory.SWItem;
import de.steamwar.linkage.Linked;
import de.steamwar.linkage.LinkedInstance;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
import java.util.Collections;
@Linked
public class InventoryFillBauGuiItem extends BauGuiItem {
public InventoryFillBauGuiItem() {
super(34);
}
@LinkedInstance
public InventoryFillerCommand command;
@Override
public Permission permission() {
return Permission.MEMBER;
}
@Override
public ItemStack getItem(Player player) {
String loreKey = Config.getInstance().get(player).getPlainValueOrDefault("inventoryfill", false) ? "OTHER_ITEMS_INVENTORY_FILL_LORE_ACTIVE" : "OTHER_ITEMS_INVENTORY_FILL_LORE_INACTIVE";
return new SWItem(Material.HOPPER, BauSystem.MESSAGE.parse("OTHER_ITEMS_INVENTORY_FILL_NAME", player), Collections.singletonList(BauSystem.MESSAGE.parse(loreKey, player)), false, clickType -> {}).getItemStack();
}
@Override
public boolean click(ClickType click, Player p) {
command.toggle(p);
return false;
}
}

Datei anzeigen

@ -0,0 +1,124 @@
/*
* 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.inventoryfiller;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.configplayer.Config;
import de.steamwar.linkage.Linked;
import net.md_5.bungee.api.ChatMessageType;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Container;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerItemHeldEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
@Linked
public class InventoryFiller implements Listener {
@EventHandler
public void onPlayerDropItem(PlayerDropItemEvent event) {
if(!Permission.BUILD.hasPermission(event.getPlayer())) return;
if (!Config.getInstance().get(event.getPlayer()).getPlainValueOrDefault("inventoryfill", false)) return;
if (!event.getPlayer().isSneaking()) return;
Block block = event.getPlayer().getTargetBlockExact(5);
if (block == null) return;
if (!(block.getState() instanceof Container)) return;
Container container = (Container) block.getState();
Inventory inventory = container.getInventory();
ItemStack itemStack = event.getItemDrop().getItemStack().clone();
itemStack.setAmount(itemStack.getType().getMaxStackSize());
event.setCancelled(true);
for (int i = 0; i < inventory.getSize(); i++) {
inventory.setItem(i, itemStack);
}
BauSystem.MESSAGE.sendPrefixless("CHESTFILLER_FILLED", event.getPlayer(), ChatMessageType.ACTION_BAR);
}
/**
* For MacOS user: https://www.curseforge.com/minecraft/mc-mods/shift-scroll-fix
*/
@EventHandler
public void onPlayerItemHeld(PlayerItemHeldEvent event) {
if(!Permission.BUILD.hasPermission(event.getPlayer())) return;
if (!Config.getInstance().get(event.getPlayer()).getPlainValueOrDefault("inventoryfill", false)) return;
if (!event.getPlayer().isSneaking()) return;
ItemStack itemStack = event.getPlayer().getInventory().getItemInMainHand();
if (itemStack.getType() == Material.AIR) return;
Block block = event.getPlayer().getTargetBlockExact(5);
if (block == null) return;
if (!(block.getState() instanceof Container)) return;
Container container = (Container) block.getState();
Inventory inventory = container.getInventory();
event.setCancelled(true);
int upperBound = event.getPreviousSlot() + 4;
if (upperBound > 8) upperBound -= 8;
int lowerBound = event.getPreviousSlot() - 5;
if (lowerBound < 0) lowerBound += 8;
int direction = 0;
if (event.getPreviousSlot() != 0 && (event.getNewSlot() > event.getPreviousSlot() || (upperBound < event.getPreviousSlot() && event.getNewSlot() < upperBound))) {
direction = 1;
} else if (event.getPreviousSlot() == 0 && event.getNewSlot() > upperBound) {
direction = -1;
} else if (event.getNewSlot() < event.getPreviousSlot() || (lowerBound > event.getPreviousSlot() && event.getNewSlot() >= lowerBound)) {
direction = -1;
} else if (event.getPreviousSlot() == 0) {
direction = 1;
}
int count = 0;
int emptySlot = -1;
int filledSlot = -1;
for (int i = 0; i < inventory.getSize(); i++) {
ItemStack current = inventory.getItem(i);
if (current == null) {
if (emptySlot == -1) emptySlot = i;
continue;
}
if (current.getType() == itemStack.getType()) {
count += current.getAmount();
int emptyAmount = itemStack.getType().getMaxStackSize() - current.getAmount();
if (direction == -1) filledSlot = Math.max(filledSlot, i);
if (emptyAmount > 0) filledSlot = Math.min(i, filledSlot);
if (emptyAmount > 0 && filledSlot == -1) filledSlot = i;
}
}
int slotToUse = direction == -1 ? filledSlot : (filledSlot == -1 ? emptySlot : filledSlot);
if (slotToUse == -1) return;
ItemStack current = inventory.getItem(slotToUse);
if (current == null) {
ItemStack now = itemStack.clone();
now.setAmount(1);
inventory.setItem(slotToUse, now);
} else {
current.setAmount(current.getAmount() + direction);
}
BauSystem.MESSAGE.sendPrefixless("CHESTFILLER_COUNT", event.getPlayer(), ChatMessageType.ACTION_BAR, itemStack.getType(), count + direction);
}
}

Datei anzeigen

@ -0,0 +1,28 @@
package de.steamwar.bausystem.features.inventoryfiller;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.SWUtils;
import de.steamwar.bausystem.configplayer.Config;
import de.steamwar.command.SWCommand;
import de.steamwar.linkage.Linked;
import org.bukkit.entity.Player;
@Linked
public class InventoryFillerCommand extends SWCommand {
public InventoryFillerCommand() {
super("inventoryfill");
}
@Register(description = {"INVENTORY_FILL_HELP", "INVENTORY_FILL_INFO"})
public void toggle(Player player) {
boolean inventoryFill = Config.getInstance().get(player).getPlainValueOrDefault("inventoryfill", false);
Config.getInstance().get(player).put("inventoryfill", !inventoryFill);
if (!inventoryFill) {
SWUtils.sendToActionbar(player, BauSystem.MESSAGE.parse("INVENTORY_FILL_ENABLE", player));
BauSystem.MESSAGE.send("INVENTORY_FILL_INFO", player);
}else {
SWUtils.sendToActionbar(player, BauSystem.MESSAGE.parse("INVENTORY_FILL_DISABLE", player));
}
}
}

Datei anzeigen

@ -1,7 +1,7 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 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
@ -17,11 +17,18 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.bausystem.shared;
package de.steamwar.bausystem.features.killchecker;
import org.bukkit.entity.Player;
import lombok.AllArgsConstructor;
import lombok.Data;
public interface AbstractEntity {
void sendEntity(Player player);
void sendEntityDestroy(Player player);
}
@Data
@AllArgsConstructor
public class Cuboid {
private double x;
private double y;
private double z;
private double dx;
private double dy;
private double dz;
}

Datei anzeigen

@ -0,0 +1,115 @@
/*
* 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.killchecker;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.utils.BauMemberUpdateEvent;
import de.steamwar.bausystem.utils.bossbar.BossBarService;
import de.steamwar.command.SWCommand;
import de.steamwar.linkage.Linked;
import de.steamwar.linkage.LinkedInstance;
import org.bukkit.Bukkit;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@Linked
public class KillcheckerCommand extends SWCommand implements Listener {
private Map<Region, KillcheckerVisualizer> visualizers = new HashMap<>();
@LinkedInstance
public BossBarService bossBarService;
public KillcheckerCommand() {
super("killchecker");
addDefaultHelpMessage("KILLCHECKER_INFO");
addDefaultHelpMessage("KILLCHECKER_INFO2");
}
@Register(value = "enable", description = "KILLCHECKER_HELP_ENABLE")
public void genericCommand(@Validator Player player, @OptionalValue("-outline") @StaticValue(value = {"-area", "-outline"}, allowISE = true) boolean onlyOutline) {
Region region = Region.getRegion(player.getLocation());
KillcheckerVisualizer killcheckerVisualizer = visualizers.computeIfAbsent(region, region1 -> new KillcheckerVisualizer(region1, bossBarService));
killcheckerVisualizer.recalc();
killcheckerVisualizer.show(player, onlyOutline);
BauSystem.MESSAGE.send("KILLCHECKER_ENABLE", player);
}
@Register(value = "disable", description = "KILLCHECKER_HELP_DISABLE")
public void disableCommand(Player player) {
Region region = Region.getRegion(player.getLocation());
KillcheckerVisualizer killcheckerVisualizer = visualizers.get(region);
if (killcheckerVisualizer != null) {
if (killcheckerVisualizer.hide(player)) {
visualizers.remove(region);
}
}
BauSystem.MESSAGE.send("KILLCHECKER_DISABLE", player);
}
@EventHandler
public void onBauMemberUpdate(BauMemberUpdateEvent event) {
event.getNewSpectator().forEach(this::hide);
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
hide(event.getPlayer());
}
private void hide(Player player) {
new HashSet<>(visualizers.entrySet()).forEach(regionKillcheckerVisualizerEntry -> {
if (regionKillcheckerVisualizerEntry.getValue().hide(player)) {
visualizers.remove(regionKillcheckerVisualizerEntry.getKey());
}
});
}
private void recalc(Block block) {
Region region = Region.getRegion(block.getLocation());
KillcheckerVisualizer killcheckerVisualizer = visualizers.get(region);
if (killcheckerVisualizer != null) {
killcheckerVisualizer.recalc();
}
}
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
recalc(event.getBlock());
}
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
recalc(event.getBlock());
}, 1);
}
}

Datei anzeigen

@ -0,0 +1,390 @@
/*
* 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.killchecker;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.region.Point;
import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.utils.RegionExtensionType;
import de.steamwar.bausystem.region.utils.RegionType;
import de.steamwar.bausystem.utils.bossbar.BauSystemBossbar;
import de.steamwar.bausystem.utils.bossbar.BossBarService;
import de.steamwar.entity.REntity;
import de.steamwar.entity.REntityServer;
import de.steamwar.entity.RFallingBlockEntity;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.boss.BarColor;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class KillcheckerVisualizer {
private static final Material[] MATERIALS = new Material[]{
Material.LIME_STAINED_GLASS,
Material.LIME_CONCRETE,
Material.GREEN_STAINED_GLASS,
Material.GREEN_CONCRETE,
Material.YELLOW_STAINED_GLASS,
Material.YELLOW_CONCRETE,
Material.ORANGE_STAINED_GLASS,
Material.ORANGE_CONCRETE,
Material.RED_STAINED_GLASS,
Material.RED_CONCRETE,
Material.PURPLE_STAINED_GLASS,
Material.PURPLE_CONCRETE,
Material.BLACK_STAINED_GLASS,
Material.BLACK_CONCRETE,
};
private static final World WORLD = Bukkit.getWorlds().get(0);
private static final double SURROUND = 4.5;
private final Point minPoint;
private final Point maxPoint;
private final int yArea;
private final int zArea;
private final int xArea;
private final Region region;
private final BossBarService bossBarService;
public KillcheckerVisualizer(Region region, BossBarService bossBarService) {
this.region = region;
this.minPoint = region.getMinPoint(RegionType.BUILD, RegionExtensionType.NORMAL);
this.maxPoint = region.getMaxPoint(RegionType.BUILD, RegionExtensionType.NORMAL);
yArea = (maxPoint.getX() - minPoint.getX()) * (maxPoint.getZ() - minPoint.getZ());
zArea = (maxPoint.getX() - minPoint.getX()) * (maxPoint.getY() - minPoint.getY());
xArea = (maxPoint.getY() - minPoint.getY()) * (maxPoint.getZ() - minPoint.getZ());
this.bossBarService = bossBarService;
}
private final REntityServer outline = new REntityServer();
private final REntityServer inner = new REntityServer();
private final Map<Point, Integer> killCount = new HashMap<>();
private final Set<Point> outlinePointsCache = new HashSet<>();
private final Map<Point, REntity> rEntities = new HashMap<>();
private double percent = 0;
private int kills = 0;
private int cannonCount = 0;
public void recalc() {
Set<Cuboid> cuboids = new HashSet<>();
Set<Point> points = new HashSet<>();
for (int x = minPoint.getX() + 1; x < maxPoint.getX(); x++) {
for (int y = minPoint.getY(); y < maxPoint.getY(); y++) {
for (int z = minPoint.getZ() + 1; z < maxPoint.getZ(); z++) {
if (points.contains(new Point(x, y, z))) continue;
Block block = WORLD.getBlockAt(x, y, z);
if (block.getType().isAir()) continue;
String name = block.getType().name();
if (!name.endsWith("_WOOL") && !name.endsWith("_STAINED_GLASS") && !name.endsWith("_CONCRETE") && !name.endsWith("_TERRACOTTA")) continue;
if (name.equals("_GLAZED_TERRACOTTA")) continue;
Cuboid cuboid = create(block.getType(), x, y, z);
cuboids.add(cuboid);
for (int dx = (int) cuboid.getX(); dx <= cuboid.getDx(); dx++) {
for (int dy = (int) cuboid.getY(); dy <= cuboid.getDy(); dy++) {
for (int dz = (int) cuboid.getZ(); dz <= cuboid.getDz(); dz++) {
points.add(new Point(dx, dy, dz));
}
}
}
}
}
}
cannonCount = cuboids.size();
Map<Point, Integer> kill = new HashMap<>();
int yKills = 0;
int yCount = 0;
Set<Point> yPoints = new HashSet<>();
for (int x = minPoint.getX(); x <= maxPoint.getX(); x++) {
for (int z = minPoint.getZ(); z <= maxPoint.getZ(); z++) {
Set<Cuboid> cuboidSet = new HashSet<>();
for (Cuboid cuboid : cuboids) {
if (x >= cuboid.getX() - SURROUND && x < cuboid.getDx() + SURROUND && z >= cuboid.getZ() - SURROUND && z < cuboid.getDz() + SURROUND) {
cuboidSet.add(cuboid);
}
}
if (cuboidSet.size() > 1) {
yCount++;
yKills += splitIntoDoubleKills(cuboidSet.size());
Point p2 = new Point(x, maxPoint.getY() + 1, z);
yPoints.add(p2);
kill.put(p2, Math.max(kill.getOrDefault(p2, 0), cuboidSet.size()));
}
}
}
int xKills = 0;
int xCount = 0;
Set<Point> xPoints = new HashSet<>();
for (int y = minPoint.getY(); y <= maxPoint.getY(); y++) {
for (int z = minPoint.getZ(); z <= maxPoint.getZ(); z++) {
Set<Cuboid> cuboidSet = new HashSet<>();
for (Cuboid cuboid : cuboids) {
if (y >= cuboid.getY() - SURROUND && y < cuboid.getDy() + SURROUND && z >= cuboid.getZ() - SURROUND && z < cuboid.getDz() + SURROUND) {
cuboidSet.add(cuboid);
}
}
if (cuboidSet.size() > 1) {
xCount++;
xKills += splitIntoDoubleKills(cuboidSet.size());
Point p1 = new Point(minPoint.getX() - 1, y, z);
xPoints.add(p1);
kill.put(p1, Math.max(kill.getOrDefault(p1, 0), cuboidSet.size()));
Point p2 = new Point(maxPoint.getX() + 1, y, z);
xPoints.add(p2);
kill.put(p2, Math.max(kill.getOrDefault(p2, 0), cuboidSet.size()));
}
}
}
int zKills = 0;
int zCount = 0;
Set<Point> zPoints = new HashSet<>();
for (int x = minPoint.getX(); x <= maxPoint.getX(); x++) {
for (int y = minPoint.getY(); y <= maxPoint.getY(); y++) {
Set<Cuboid> cuboidSet = new HashSet<>();
for (Cuboid cuboid : cuboids) {
if (x >= cuboid.getX() - SURROUND && x < cuboid.getDx() + SURROUND && y >= cuboid.getY() - SURROUND && y < cuboid.getDy() + SURROUND) {
cuboidSet.add(cuboid);
}
}
if (cuboidSet.size() > 1) {
zCount++;
zKills += splitIntoDoubleKills(cuboidSet.size());
Point p1 = new Point(x, y, minPoint.getZ() - 1);
zPoints.add(p1);
kill.put(p1, Math.max(kill.getOrDefault(p1, 0), cuboidSet.size()));
Point p2 = new Point(x, y, maxPoint.getZ() + 1);
zPoints.add(p2);
kill.put(p2, Math.max(kill.getOrDefault(p2, 0), cuboidSet.size()));
}
}
}
Set<Point> outlinePoints = new HashSet<>();
yPoints.forEach(point -> {
Point p1 = new Point(point.getX() - 1, point.getY(), point.getZ());
Point p2 = new Point(point.getX() + 1, point.getY(), point.getZ());
Point p3 = new Point(point.getX(), point.getY(), point.getZ() - 1);
Point p4 = new Point(point.getX(), point.getY(), point.getZ() + 1);
Point p5 = new Point(point.getX() - 1, point.getY(), point.getZ() - 1);
Point p6 = new Point(point.getX() - 1, point.getY(), point.getZ() + 1);
Point p7 = new Point(point.getX() + 1, point.getY(), point.getZ() - 1);
Point p8 = new Point(point.getX() + 1, point.getY(), point.getZ() + 1);
int count = kill.get(point);
int surrounded = 0;
if (kill.getOrDefault(p1, 0) == count) surrounded++;
if (kill.getOrDefault(p2, 0) == count) surrounded++;
if (kill.getOrDefault(p3, 0) == count) surrounded++;
if (kill.getOrDefault(p4, 0) == count) surrounded++;
if (surrounded != 4) outlinePoints.add(point);
if (kill.getOrDefault(p5, 0) != count) outlinePoints.add(point);
if (kill.getOrDefault(p6, 0) != count) outlinePoints.add(point);
if (kill.getOrDefault(p7, 0) != count) outlinePoints.add(point);
if (kill.getOrDefault(p8, 0) != count) outlinePoints.add(point);
});
xPoints.forEach(point -> {
Point p1 = new Point(point.getX(), point.getY() - 1, point.getZ());
Point p2 = new Point(point.getX(), point.getY() + 1, point.getZ());
Point p3 = new Point(point.getX(), point.getY(), point.getZ() - 1);
Point p4 = new Point(point.getX(), point.getY(), point.getZ() + 1);
Point p5 = new Point(point.getX(), point.getY() - 1, point.getZ() - 1);
Point p6 = new Point(point.getX(), point.getY() - 1, point.getZ() + 1);
Point p7 = new Point(point.getX(), point.getY() + 1, point.getZ() - 1);
Point p8 = new Point(point.getX(), point.getY() + 1, point.getZ() + 1);
int count = kill.get(point);
int surrounded = 0;
if (kill.getOrDefault(p1, 0) == count) surrounded++;
if (kill.getOrDefault(p2, 0) == count) surrounded++;
if (kill.getOrDefault(p3, 0) == count) surrounded++;
if (kill.getOrDefault(p4, 0) == count) surrounded++;
if (surrounded != 4) outlinePoints.add(point);
if (kill.getOrDefault(p5, 0) != count) outlinePoints.add(point);
if (kill.getOrDefault(p6, 0) != count) outlinePoints.add(point);
if (kill.getOrDefault(p7, 0) != count) outlinePoints.add(point);
if (kill.getOrDefault(p8, 0) != count) outlinePoints.add(point);
});
zPoints.forEach(point -> {
Point p1 = new Point(point.getX() - 1, point.getY(), point.getZ());
Point p2 = new Point(point.getX() + 1, point.getY(), point.getZ());
Point p3 = new Point(point.getX(), point.getY() - 1, point.getZ());
Point p4 = new Point(point.getX(), point.getY() + 1, point.getZ());
Point p5 = new Point(point.getX() - 1, point.getY() - 1, point.getZ());
Point p6 = new Point(point.getX() - 1, point.getY() + 1, point.getZ());
Point p7 = new Point(point.getX() + 1, point.getY() - 1, point.getZ());
Point p8 = new Point(point.getX() + 1, point.getY() + 1, point.getZ());
int count = kill.get(point);
int surrounded = 0;
if (kill.getOrDefault(p1, 0) == count) surrounded++;
if (kill.getOrDefault(p2, 0) == count) surrounded++;
if (kill.getOrDefault(p3, 0) == count) surrounded++;
if (kill.getOrDefault(p4, 0) == count) surrounded++;
if (surrounded != 4) outlinePoints.add(point);
if (kill.getOrDefault(p5, 0) != count) outlinePoints.add(point);
if (kill.getOrDefault(p6, 0) != count) outlinePoints.add(point);
if (kill.getOrDefault(p7, 0) != count) outlinePoints.add(point);
if (kill.getOrDefault(p8, 0) != count) outlinePoints.add(point);
});
double xPercent = zCount / (double) xArea;
double yPercent = yCount / (double) yArea;
double zPercent = xCount / (double) zArea;
percent = (xPercent + yPercent + zPercent) / 3;
kills = zKills + yKills + xKills;
outline.getPlayers().forEach(this::updateBossBar);
Set<Point> pointSet = new HashSet<>(killCount.keySet());
Set<Point> outlinePointsCacheLast = new HashSet<>(outlinePointsCache);
outlinePointsCache.clear();
for (Point point : pointSet) {
if (!kill.containsKey(point)) {
rEntities.get(point).die();
rEntities.remove(point);
killCount.remove(point);
}
}
kill.forEach((point, count) -> {
if (rEntities.containsKey(point)) {
if (killCount.get(point) == count && outlinePoints.contains(point) == outlinePointsCacheLast.contains(point)) return;
rEntities.get(point).die();
}
RFallingBlockEntity entity = new RFallingBlockEntity(outlinePoints.contains(point) ? outline : inner, point.toLocation(WORLD, 0.5, 0, 0.5), MATERIALS[Math.min(count - 1, MATERIALS.length) - 1]);
entity.setNoGravity(true);
rEntities.put(point, entity);
if (outlinePoints.contains(point)) outlinePointsCache.add(point);
killCount.put(point, count);
});
}
private int splitIntoDoubleKills(int kills) {
return kills * (kills - 1) / 2;
}
private void updateBossBar(Player player) {
BauSystemBossbar bossbar = bossBarService.get(player, region, "killchecker");
bossbar.setTitle(BauSystem.MESSAGE.parse("KILLCHECKER_BOSSBAR", player, kills, ((int) (percent * 1000) / 10.0), cannonCount));
bossbar.setProgress(Math.min(Math.max(percent, 0), 1));
if (percent >= 0.35) {
bossbar.setColor(BarColor.RED);
} else if (percent >= 0.25) {
bossbar.setColor(BarColor.PURPLE);
} else if (percent >= 0.15) {
bossbar.setColor(BarColor.YELLOW);
} else {
bossbar.setColor(BarColor.GREEN);
}
}
private Cuboid create(Material type, int x, int y, int z) {
Set<Point> checked = new HashSet<>();
Set<Point> points = new HashSet<>();
points.add(new Point(x, y, z));
while (!points.isEmpty()) {
Point point = points.iterator().next();
points.remove(point);
if (!checked.add(point)) continue;
if (point.getX() < minPoint.getX() || point.getX() > maxPoint.getX()) continue;
if (point.getY() < minPoint.getY() || point.getY() > maxPoint.getY()) continue;
if (point.getZ() < minPoint.getZ() || point.getZ() > maxPoint.getZ()) continue;
if (WORLD.getBlockAt(point.getX() + 1, point.getY(), point.getZ()).getType() == type) {
points.add(new Point(point.getX() + 1, point.getY(), point.getZ()));
}
if (WORLD.getBlockAt(point.getX(), point.getY() + 1, point.getZ()).getType() == type) {
points.add(new Point(point.getX(), point.getY() + 1, point.getZ()));
}
if (WORLD.getBlockAt(point.getX(), point.getY(), point.getZ() + 1).getType() == type) {
points.add(new Point(point.getX(), point.getY(), point.getZ() + 1));
}
if (WORLD.getBlockAt(point.getX() - 1, point.getY(), point.getZ()).getType() == type) {
points.add(new Point(point.getX() - 1, point.getY(), point.getZ()));
}
if (WORLD.getBlockAt(point.getX(), point.getY() - 1, point.getZ()).getType() == type) {
points.add(new Point(point.getX(), point.getY() - 1, point.getZ()));
}
if (WORLD.getBlockAt(point.getX(), point.getY(), point.getZ() - 1).getType() == type) {
points.add(new Point(point.getX(), point.getY(), point.getZ() - 1));
}
}
int minX = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE;
int minY = Integer.MAX_VALUE;
int maxY = Integer.MIN_VALUE;
int minZ = Integer.MAX_VALUE;
int maxZ = Integer.MIN_VALUE;
for (Point point : checked) {
if (point.getX() < minX) minX = point.getX();
if (point.getX() > maxX) maxX = point.getX();
if (point.getY() < minY) minY = point.getY();
if (point.getY() > maxY) maxY = point.getY();
if (point.getZ() < minZ) minZ = point.getZ();
if (point.getZ() > maxZ) maxZ = point.getZ();
}
return new Cuboid(minX, minY, minZ, maxX, maxY, maxZ);
}
public void show(Player player, boolean onlyOutline) {
outline.addPlayer(player);
if (!onlyOutline) {
inner.addPlayer(player);
} else {
inner.removePlayer(player);
}
updateBossBar(player);
}
public boolean hide(Player player) {
outline.removePlayer(player);
inner.removePlayer(player);
bossBarService.remove(player, region, "killchecker");
if (outline.getPlayers().isEmpty() && inner.getPlayers().isEmpty()) {
outline.close();
inner.close();
return true;
}
return false;
}
}

Datei anzeigen

@ -1,7 +1,7 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2021 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
@ -20,199 +20,361 @@
package de.steamwar.bausystem.features.loader;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.SWUtils;
import de.steamwar.bausystem.features.loader.activations.AbstractLoaderActivation;
import de.steamwar.bausystem.features.loader.activations.BlockPlaceLoaderActivation;
import de.steamwar.bausystem.features.loader.activations.InteractionActivation;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.features.loader.elements.LoaderElement;
import de.steamwar.bausystem.features.loader.elements.LoaderInteractionElement;
import de.steamwar.bausystem.features.loader.elements.impl.LoaderTNT;
import de.steamwar.bausystem.features.loader.elements.impl.LoaderWait;
import de.steamwar.bausystem.shared.EnumDisplay;
import lombok.AccessLevel;
import de.steamwar.inventory.SWAnvilInv;
import de.steamwar.inventory.SWItem;
import de.steamwar.inventory.SWListInv;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.scheduler.BukkitTask;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
@Getter
@Setter
public class Loader implements Listener {
private static final Map<Player, Loader> LOADER_MAP = new HashMap<>();
public static Loader getLoader(Player player) {
return LOADER_MAP.get(player);
}
public static void newLoader(Player player) {
LOADER_MAP.put(player, new Loader(player));
}
private final Player p;
private final List<AbstractLoaderActivation> actions = new LinkedList<>();
private int ticksBetweenShots = 80;
private int ticksBetweenBlocks = 1;
private Stage stage;
private int lastActivation = -1;
private int countdown = 0;
@Getter(AccessLevel.PRIVATE)
private final BukkitTask task;
@Getter
private Stage stage = Stage.SETUP;
private LoaderRecorder recorder;
@Getter(AccessLevel.PRIVATE)
@Setter(AccessLevel.PRIVATE)
private AbstractLoaderActivation current;
private List<LoaderElement> elements = new ArrayList<>();
private int currentElement = 0;
private long waitTime = 0;
@Getter(AccessLevel.PRIVATE)
@Setter(AccessLevel.PRIVATE)
private ListIterator<AbstractLoaderActivation> iterator;
private Loader(Player p) {
public Loader(Player p) {
this.p = p;
stage = Stage.SETUP;
this.recorder = new LoaderRecorder(p, elements);
Bukkit.getPluginManager().registerEvents(this, BauSystem.getInstance());
task = Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), this::run, 1, 1);
BauSystem.runTaskTimer(BauSystem.getInstance(), () -> {
if (stage != Stage.RUNNING) return;
if(!Permission.BUILD.hasPermission(p)) return;
if (waitTime > 0) {
waitTime--;
return;
}
if (currentElement >= elements.size()) {
currentElement = 0;
if (stage == Stage.SINGLE) {
stage = Stage.PAUSE;
return;
}
}
while (currentElement < elements.size()) {
LoaderElement element = elements.get(currentElement);
currentElement++;
element.execute(delay -> waitTime = delay);
if (waitTime > 0) {
if (element instanceof LoaderTNT) currentElement--;
return;
}
}
}, 0, 1);
}
public static Loader getLoader(Player p) {
return LOADER_MAP.getOrDefault(p, null);
}
public static Loader newLoader(Player p) {
return LOADER_MAP.put(p, new Loader(p));
public void single() {
if (stage == Stage.END) return;
if (stage == Stage.RUNNING) return;
stage = Stage.SINGLE;
if (recorder != null) {
recorder.stop();
recorder = null;
}
if (elements.isEmpty()) {
BauSystem.MESSAGE.send("LOADER_NOTHING_RECORDED", p);
stop();
}
}
public void start() {
iterator = actions.listIterator();
countdown = 0;
current = null;
if (stage == Stage.END) return;
if (stage == Stage.RUNNING) return;
stage = Stage.RUNNING;
if (recorder != null) {
recorder.stop();
recorder = null;
}
if (elements.isEmpty()) {
BauSystem.MESSAGE.send("LOADER_NOTHING_RECORDED", p);
stop();
}
}
public void pause() {
if (stage == Stage.RUNNING) {
stage = Stage.PAUSE;
if (stage == Stage.END) return;
if (stage == Stage.PAUSE) return;
stage = Stage.PAUSE;
if (recorder != null) {
recorder.stop();
recorder = null;
}
}
public void resume() {
if (stage == Stage.PAUSE) {
stage = Stage.RUNNING;
}
}
public void setup() {
stage = Stage.SETUP;
iterator = null;
current = null;
countdown = 0;
}
public void stop() {
stage = Stage.END;
task.cancel();
LOADER_MAP.remove(p, this);
if (recorder != null) {
recorder.stop();
recorder = null;
}
elements.clear();
LOADER_MAP.remove(p);
}
public void clear() {
if (stage == Stage.SETUP) {
actions.clear();
BauSystem.MESSAGE.send("LOADER_MESSAGE_CLEAR", p);
public boolean setTicksBetweenShots(int delay) {
if (elements.size() == 0) return false;
LoaderElement loaderElement = elements.get(elements.size() - 1);
if (loaderElement instanceof LoaderWait) {
((LoaderWait) loaderElement).setDelay(delay);
return true;
}
return false;
}
public void setTicksBetweenBlocks(int delay) {
for (int i = 0; i < elements.size() - 1; i++) {
LoaderElement loaderElement = elements.get(i);
if (loaderElement instanceof LoaderWait) {
((LoaderWait) loaderElement).setDelay(delay);
}
}
}
public void gui(SettingsSorting settingsSorting) {
List<SWListInv.SWListEntry<LoaderElement>> list = new ArrayList<>();
AtomicBoolean allWait = new AtomicBoolean(true);
Runnable updateRunnable = () -> {
list.clear();
for (int i = 0; i < elements.size(); i++) {
LoaderElement previous = i > 0 ? elements.get(i - 1) : null;
LoaderElement current = elements.get(i);
LoaderElement next = i < elements.size() - 1 ? elements.get(i + 1) : null;
if (!settingsSorting.shouldShow(previous, current, next)) {
continue;
}
if ((!(current instanceof LoaderWait))) {
allWait.set(false);
}
SWItem item = current.menu(p);
if (current instanceof LoaderInteractionElement<?>) {
LoaderInteractionElement<?> interactionElement = (LoaderInteractionElement<?>) current;
List<String> lore = new ArrayList<>();
if (item.getItemMeta() != null && item.getItemMeta().getLore() != null) {
lore.addAll(item.getItemMeta().getLore());
lore.add("§8");
}
lore.add(BauSystem.MESSAGE.parse("LOADER_SETTING_MODES", p, interactionElement.size()));
lore.add(BauSystem.MESSAGE.parse("LOADER_GUI_CLICK_TO_EDIT", p));
item.setLore(lore);
} else {
List<String> lore = new ArrayList<>();
if (item.getItemMeta() != null && item.getItemMeta().getLore() != null) {
lore.addAll(item.getItemMeta().getLore());
lore.add("§8");
}
lore.add(BauSystem.MESSAGE.parse("LOADER_GUI_CLICK_TO_EDIT", p));
item.setLore(lore);
}
list.add(new SWListInv.SWListEntry<>(item, current));
}
if (list.isEmpty()) {
allWait.set(false);
}
};
updateRunnable.run();
SWListInv<LoaderElement> swListInv = new SWListInv<>(p, BauSystem.MESSAGE.parse("LOADER_GUI_TITLE", p), false, list, (clickType, loaderElement) -> {});
swListInv.setCallback((clickType, entry) -> entry.click(p, () -> {
updateRunnable.run();
swListInv.open();
}));
SWItem settingItem = new SWItem(settingsSorting.getMaterial(), "§e" + BauSystem.MESSAGE.parse(settingsSorting.getName(), p), clickType -> {
if (clickType == ClickType.LEFT) {
int index = settingsSorting.ordinal() + 1;
if (index >= SettingsSorting.LENGTH) {
index = 0;
}
gui(SettingsSorting.values()[index]);
} else if (clickType == ClickType.RIGHT) {
int index = settingsSorting.ordinal() - 1;
if (index < 0) {
index = SettingsSorting.LENGTH - 1;
}
gui(SettingsSorting.values()[index]);
}
});
List<String> strings = new ArrayList<>();
for (SettingsSorting setting : SettingsSorting.values()) {
if (setting == settingsSorting) {
strings.add("§e> §7" + BauSystem.MESSAGE.parse(setting.getName(), p));
} else {
strings.add("§8> §7" + BauSystem.MESSAGE.parse(setting.getName(), p));
}
}
settingItem.setLore(strings);
swListInv.setItem(48, settingItem);
if (allWait.get()) {
SWItem setWait = new SWItem(Material.PAPER, BauSystem.MESSAGE.parse("LOADER_GUI_SHOW_WAITS_SET_ALL", p), clickType -> {
SWAnvilInv swAnvilInv = new SWAnvilInv(p, BauSystem.MESSAGE.parse("LOADER_GUI_SHOW_WAITS_TITLE", p), "");
swAnvilInv.setCallback(s -> {
try {
long delay = Math.max(Long.parseLong(s), 0);
list.forEach(loaderElementSWListEntry -> {
((LoaderWait) loaderElementSWListEntry.getObject()).setDelay(delay);
});
} catch (NumberFormatException ignored) {
}
gui(settingsSorting);
});
swAnvilInv.open();
});
swListInv.setItem(50, setWait);
} else {
BauSystem.MESSAGE.send("LOADER_MESSAGE_CLEAR_HELP", p);
}
}
public void run() {
if (stage == Stage.SETUP && lastActivation >= 0)
lastActivation++;
if (stage != Stage.RUNNING) {
return;
}
if (countdown-- > 0) {
return;
}
if (!iterator.hasNext()) {
countdown = getTicksBetweenShots();
iterator = actions.listIterator();
return;
}
current = iterator.next();
if (current.execute()) {
countdown = current.delay(this);
} else {
countdown = 1;
iterator.previous();
}
}
public void undo() {
if (actions.isEmpty() || stage != Stage.SETUP) {
return;
}
actions.remove(actions.size() - 1);
}
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
if (event.getPlayer() != p) {
return;
}
if (stage != Stage.SETUP) {
return;
}
if (event.getBlock().getType() != Material.TNT) {
return;
}
actions.add(new BlockPlaceLoaderActivation(p, event.getBlock().getLocation(), Material.TNT));
SWUtils.sendToActionbar(p, BauSystem.MESSAGE.parse("LOADER_MESSAGE_TNT", p, actions.size()));
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
if (event.getPlayer() != p) {
return;
}
if (stage != Stage.SETUP) {
return;
}
if (event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.PHYSICAL)
return;
if (event.getClickedBlock().getType() == Material.OBSERVER)
return;
LoaderButton button = LoaderButton.fromBlock(event.getClickedBlock());
if (button != LoaderButton.INVALID) {
actions.add(InteractionActivation.construct(p, event.getClickedBlock().getLocation(), this));
lastActivation = 0;
SWUtils.sendToActionbar(p, BauSystem.MESSAGE.parse("LOADER_MESSAGE_INTERACT", p, BauSystem.MESSAGE.parse(button.getName(), p), actions.size()));
swListInv.setItem(50, new SWItem(Material.GRAY_STAINED_GLASS_PANE, "§8"));
}
swListInv.open();
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
if (event.getPlayer() != p) {
return;
}
if (event.getPlayer() != p) return;
stop();
}
public String getProgress() {
return Math.max(currentElement, 1) + "§8/§7" + elements.size();
}
public enum SettingsSorting {
ALL {
@Override
public Material getMaterial() {
return Material.STRUCTURE_VOID;
}
@Override
public String getName() {
return "LOADER_GUI_SHOW_ALL";
}
@Override
public boolean shouldShow(LoaderElement previous, LoaderElement current, LoaderElement next) {
return true;
}
},
WAIT {
@Override
public Material getMaterial() {
return Material.CLOCK;
}
@Override
public String getName() {
return "LOADER_GUI_SHOW_WAITS";
}
@Override
public boolean shouldShow(LoaderElement previous, LoaderElement current, LoaderElement next) {
return current instanceof LoaderWait;
}
},
WAIT_BETWEEN_TNT {
@Override
public Material getMaterial() {
return Material.REDSTONE_BLOCK;
}
@Override
public String getName() {
return "LOADER_GUI_SHOW_WAITS_BETWEEN_TNT";
}
@Override
public boolean shouldShow(LoaderElement previous, LoaderElement current, LoaderElement next) {
return previous instanceof LoaderTNT && current instanceof LoaderWait && next instanceof LoaderTNT;
}
},
INTERACTIONS {
@Override
public Material getMaterial() {
return Material.REPEATER;
}
@Override
public String getName() {
return "LOADER_GUI_SHOW_INTERACTIONS";
}
@Override
public boolean shouldShow(LoaderElement previous, LoaderElement current, LoaderElement next) {
return current instanceof LoaderInteractionElement && !(current instanceof LoaderTNT);
}
},
TNT {
@Override
public Material getMaterial() {
return Material.TNT;
}
@Override
public String getName() {
return "LOADER_GUI_SHOW_TNT";
}
@Override
public boolean shouldShow(LoaderElement previous, LoaderElement current, LoaderElement next) {
return current instanceof LoaderTNT;
}
},
;
public static int LENGTH = SettingsSorting.values().length;
public abstract Material getMaterial();
public abstract String getName();
public abstract boolean shouldShow(LoaderElement previous, LoaderElement current, LoaderElement next);
}
@AllArgsConstructor
public enum Stage implements EnumDisplay {
SETUP("LOADER_SETUP"),
RUNNING("LOADER_RUNNING"),
SINGLE("LOADER_SINGLE"),
PAUSE("LOADER_PAUSE"),
END("LOADER_END");
@Getter
private String chatValue;
private final String chatValue;
}
}

Datei anzeigen

@ -1,106 +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.features.loader;
import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.linkage.LinkageType;
import de.steamwar.bausystem.linkage.Linked;
import de.steamwar.bausystem.linkage.specific.BauGuiItem;
import de.steamwar.inventory.SWAnvilInv;
import de.steamwar.inventory.SWInventory;
import de.steamwar.inventory.SWItem;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
import java.util.Arrays;
@Linked(LinkageType.BAU_GUI_ITEM)
public class LoaderBauGuiItem extends BauGuiItem {
public LoaderBauGuiItem() {
super(9);
}
@Override
public ItemStack getItem(Player player) {
return new SWItem(Material.FLINT_AND_STEEL, BauSystem.MESSAGE.parse("LOADER_GUI_NAME", player)).getItemStack();
}
@Override
public boolean click(ClickType click, Player p) {
p.closeInventory();
openLoaderGui(p);
return false;
}
private void openLoaderGui(Player p) {
SWInventory inv = new SWInventory(p, 9, BauSystem.MESSAGE.parse("LOADER_GUI_NAME", p));
if (Loader.getLoader(p) == null) {
inv.setItem(4, new SWItem(Material.SCUTE, BauSystem.MESSAGE.parse("LOADER_GUI_NEW", p), clickType -> {
p.closeInventory();
p.performCommand("loader setup");
}));
} else {
Loader loader = Loader.getLoader(p);
if (loader.getStage() != Loader.Stage.RUNNING) {
inv.setItem(0, new SWItem(Material.GREEN_DYE, BauSystem.MESSAGE.parse("LOADER_GUI_START", p), clickType -> {
p.closeInventory();
p.performCommand("loader start");
}));
} else {
inv.setItem(0, new SWItem(Material.RED_DYE, BauSystem.MESSAGE.parse("LOADER_GUI_PAUSE", p), clickType -> {
p.closeInventory();
p.performCommand("loader pause");
}));
}
inv.setItem(2, new SWItem(Material.ARROW, BauSystem.MESSAGE.parse("LOADER_GUI_UNDO", p), clickType -> {
p.closeInventory();
p.performCommand("loader undo");
}));
inv.setItem(4, new SWItem(Material.COMPASS, BauSystem.MESSAGE.parse("LOADER_GUI_WAIT", p), Arrays.asList(BauSystem.MESSAGE.parse("LOADER_GUI_WAIT_LORE", p, loader.getTicksBetweenShots())), false, clickType -> {
p.closeInventory();
SWAnvilInv anvilInv = new SWAnvilInv(p, BauSystem.MESSAGE.parse("LOADER_GUI_WAIT_TITLE", p));
anvilInv.setItem(Material.CLOCK);
anvilInv.setCallback(s -> p.performCommand("loader delay " + s));
anvilInv.open();
}));
inv.setItem(6, new SWItem(Material.CLOCK, BauSystem.MESSAGE.parse("LOADER_GUI_SPEED", p), Arrays.asList(BauSystem.MESSAGE.parse("LOADER_GUI_SPEED_LORE", p, loader.getTicksBetweenBlocks())), false, clickType -> {
p.closeInventory();
SWAnvilInv anvilInv = new SWAnvilInv(p, BauSystem.MESSAGE.parse("LOADER_GUI_SPEED_TITLE", p));
anvilInv.setItem(Material.CLOCK);
anvilInv.setCallback(s -> p.performCommand("loader speed " + s));
anvilInv.open();
}));
inv.setItem(8, new SWItem(Material.BARRIER, BauSystem.MESSAGE.parse("LOADER_GUI_STOP", p), clickType -> {
p.closeInventory();
p.performCommand("loader stop");
}));
}
inv.open();
}
@Override
public Permission permission() {
return Permission.WORLD;
}
}

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