Compare commits

..

33 Commits

Author SHA1 Message Date
70baca7145 Better naming for "legacy" block state populator 2022-06-11 16:32:54 +01:00
2a90015037 Address comments
Co-authored-by: Alexander Brandes <mc.cache@web.de>
2022-06-11 16:04:38 +01:00
f17aa377b7 Better exception handling when setting data to LimitedRegion during chunk population 2022-06-11 13:29:57 +01:00
e159fa054d Clean up HybridGen
- There's no need for while loops acting as a modulo after we've already performed a modulo
 - Make the code-sections calculating if positions are in the wall/road more readable
 - Collaps duplicate if-elseif bodies
2022-06-11 13:24:03 +01:00
058c65e34c Ensure Location is still sealed, and add api description annotation to public methods in UncheckedWorldLocation 2022-06-11 13:04:05 +01:00
8608604306 Address comments regarding javadocs/comments 2022-06-11 13:03:09 +01:00
8d0cc68721 Don't do the big error if heads don't work 2022-06-09 22:00:51 +01:00
2a79c0a419 Javadocs 2022-06-09 21:07:49 +01:00
90d42b8b9f Implement tile entities to generation using Populators
- Fixes #3051
2022-06-09 20:49:43 +01:00
a79c474957 Deprecate methods for removal that will be removed/had their signatures changed in v7 2022-06-09 13:49:58 +01:00
4bb480a238 chore: Update Code of conduct email (#3661) 2022-06-09 12:58:31 +02:00
9ffa935c0c build: Switch to bill of materials (#3653)
* build: Switch to managed dependencies

* build: Move bom to root build script

* build: Update bom

* Update build.gradle.kts

* fix: Use the correct bom version
2022-06-09 12:57:37 +02:00
0a32268784 Prevent blocks moving/generating below and above build height (#3641)
* fix: cancel BlockFormEvent outside of build limit

* refactor: rename variables for easier readability

* fix: cancel liquid flow outside build limit

* refactor: implement to/from context
2022-06-05 20:51:07 +02:00
ae3b8c06f6 chore: Address Paper javadoc warnings (#3648) 2022-06-05 20:50:49 +02:00
713c4ad0d2 Remove aggregation of cross module javadocs (#3646)
chore: Don't aggregate javadocs anymore
2022-06-03 23:13:41 +02:00
48386c0828 build: Back to snapshot for development 2022-06-01 20:12:50 +02:00
625b3921e1 build: Release 6.8.1 2022-06-01 20:09:36 +02:00
48aa37d173 Update Readme SVG (#3642)
docs: Update Readme SVG
2022-05-30 13:47:25 +02:00
2c2314e95c refactor: return info.server for %plotsquared_currentplot_owner% if plot is a server plot (#3640) 2022-05-25 10:18:10 +02:00
5eb2fc3ad0 Kick players on merged plots appropriately (#3639)
fix: kick denied player regardless on all connected plots
2022-05-24 20:30:06 +02:00
82cd9a092c build: Update fawe to v2.2.0 (#3637)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-05-24 13:33:54 +02:00
62754362c2 build: Don't expose jcip and findbugs annotations to the world on runtime (#3533)
* build: Don't expose jcip and findbugs

* build: Revert relocation change of unpublished, shaded deps

* chore: Exclude .DS_Store files
2022-05-21 10:01:06 +00:00
2e9dfd6f6f chore: Update PaperMC repository endpoint (#3633)
Migration - New PaperMC endpoints
2022-05-21 07:57:22 +02:00
fc9fe1462f build: Back to snapshot for development 2022-05-18 22:07:22 +02:00
41f546ca6b build: Release 6.8.0 2022-05-18 22:05:31 +02:00
d037da33cb chore: Ignore .DS_Store files 2022-05-18 21:59:09 +02:00
dc2d08c67e build: Update release-drafter/release-drafter action to v5.20.0 (#3624)
* build: Update release-drafter/release-drafter action to v5.20.0

* Update release-drafter.yml

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Alexander Brandes <mc.cache@web.de>
2022-05-18 17:19:23 +02:00
96dfc27411 Fix lag caused when generating augmented worlds with roads (#3614)
- Begin by implementing forceSync to the queue system as we know the chunk will be accessible to edits in some cases (i.e. population).
 - Also implement custom SideEffectSets to override any decided by the default chunk consumer, as we do NOT want to update neighbours in population (this caused infinite generation to be required causing the lag and server death). We also do not want to enqueue the QueueCoordinator in AugmentedUtils as this would write to the world and update neighbours before we might want to (plus it's just used to restrict and offset the blocks being set)
 - Then implement disabling any biomes from being saved/set to the queue to prevent augmented worlds having their biomes overridden in roads
 - Consequently fix ScopedQueueCoordinator, preventing the y value of blocks being set from needlessly being changed, fixing road heights in augmented worlds
 - Finally we do not need a method with chunkObject in the signature in AugmentedUtils as this is no longer used by the method
2022-05-16 13:27:41 +01:00
171d2e5e99 Fix generation of augmented/partial worlds when single worlds are enabled (#3615) 2022-05-16 13:21:43 +01:00
4433892431 fix: Block Endermites from spawning if mob spawning is disabled (#3623) 2022-05-16 13:20:03 +01:00
98a07dad1b Fix plot analysis (#3618)
* Fix plot analysis
 - Stop using deprecated ChunkQueueCoordinator and create a new purpose-built coordinator
 - Generation is chunk-by-chunk thus the old blocks cache needs to be filled accordingly
 - Remove the **four** System#gc calls
 - Fixes #3464
 - Fix really weird dumb... maths? in ExpiryTask
 - Fixes #3600

* Add since annotation

* Address comments and maxY should be inclusive

* Annotate new queue as internal use only
2022-05-15 11:58:04 +02:00
0ffa22b7a6 Deprecations to Queues (#3613)
* Deprecations and niceties
 - Deprecate ScopedQueueCoordinator as it is poorly named
 - Deprecate ChunkQueueCoordinator for complete removal as it is poorly designed (though still used)

* Add since tags
2022-05-15 11:57:26 +02:00
60a0129fe9 Correctly use yIndex when regenerating plots in certain world configurations (#3601)
- Fixes #3597
2022-05-15 11:42:19 +02:00
154 changed files with 2587 additions and 2549 deletions

View File

@ -14,6 +14,6 @@ jobs:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }} if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: release-drafter/release-drafter@v5.19.0 - uses: release-drafter/release-drafter@v5
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

4
.gitignore vendored
View File

@ -131,5 +131,9 @@ local.properties
checkstyle.xml checkstyle.xml
classes/ classes/
*.bat *.bat
# Other
docs/ docs/
build/ build/
.DS_Store

47
.idea/icon.svg generated
View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4000 3333.3333" height="3333.3333" width="4000" xml:space="preserve" id="svg2" version="1.1"> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="svg2" xml:space="preserve" width="4000" height="3333.3333" viewBox="0 0 4000 3333.3333" sodipodi:docname="PlotSquared.ai">
<metadata id="metadata8"> <metadata id="metadata8">
<rdf:RDF> <rdf:RDF>
<cc:Work rdf:about=""> <cc:Work rdf:about="">
@ -9,39 +9,40 @@
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
<defs id="defs6"> <defs id="defs6">
<clipPath id="clipPath18" clipPathUnits="userSpaceOnUse"> <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path id="path16" d="M 0,2500 H 3000 V 0 H 0 Z" /> <path d="M 0,2500 H 3000 V 0 H 0 Z" id="path16" />
</clipPath> </clipPath>
</defs> </defs>
<g transform="matrix(1.3333333,0,0,-1.3333333,0,3333.3333)" id="g10"> <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="640" inkscape:window-height="480" id="namedview4" />
<g id="g10" inkscape:groupmode="layer" inkscape:label="PlotSquared" transform="matrix(1.3333333,0,0,-1.3333333,0,3333.3333)">
<g id="g12"> <g id="g12">
<g clip-path="url(#clipPath18)" id="g14"> <g id="g14" clip-path="url(#clipPath18)">
<g transform="translate(1486.1511,2242.6453)" id="g20"> <g id="g20" transform="translate(1486.1511,2242.6453)">
<path id="path22" style="fill:#2b3f56;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 16.533,10.846 33.211,21.453 50.104,31.699 78.972,-48.281 153.985,-102.704 227.269,-159.144 148.61,-115.422 287.884,-243.01 414.393,-382.333 111.39,-122.861 212.751,-255.152 298.898,-396.971 52.744,-87.322 100.544,-177.884 139.514,-272.214 -11.638,-3.551 -23.108,-7.655 -34.362,-12.286 l -0.24,0.288 c -11.135,12.982 -24.141,24.212 -34.915,37.506 -22.557,23.013 -45.425,45.737 -68.03,68.678 -19.725,20.253 -40.601,39.45 -58.958,60.974 -36.355,36.451 -72.517,73.093 -108.944,109.471 -22.628,26.013 -48.064,49.385 -71.965,74.197 -19.029,19.485 -38.706,38.346 -57.519,57.999 -12.166,14.998 -26.684,27.716 -39.93,41.658 -27.668,27.524 -54.903,55.479 -82.571,82.979 -23.924,27.956 -51.664,52.264 -76.692,79.164 -4.68,4.487 -8.855,10.774 -15.886,11.326 -22.34,34.027 -58.311,57.327 -97.377,67.502 -104.312,99.153 -215.487,191.202 -332.661,274.782 -117.942,-83.94 -229.476,-176.781 -334.484,-276.39 -26.684,-0.024 -53.368,0.024 -80.076,-0.024 0.024,-26.564 0.048,-53.104 0,-79.668 -72.229,-73.021 -139.491,-150.937 -202.385,-232.092 -63.758,-82.619 -121.973,-169.51 -173.541,-260.264 131.932,-69.061 257.864,-149.521 375.926,-240.275 0.096,-26.444 -0.12,-52.888 0.096,-79.332 l 0.744,-0.984 c 20.109,-24.14 43.409,-45.233 65.126,-67.861 15.118,-15.382 30.571,-30.404 45.569,-45.881 17.565,-20.733 37.698,-39.042 56.607,-58.503 19.917,-20.781 41.25,-40.218 59.967,-62.151 29.156,-29.299 58.167,-58.815 87.515,-87.922 29.155,-33.043 61.502,-63.111 92.169,-94.738 13.726,-12.67 25.124,-27.571 38.634,-40.457 25.029,-25.365 50.129,-50.657 75.325,-75.853 -37.914,-51.208 -73.741,-103.952 -107.192,-158.183 -167.83,273.317 -397.235,507.305 -662.37,687.158 -81.875,55.335 -167.23,105.584 -255.681,149.641 -52.815,26.276 -106.831,50.248 -162.239,70.381 99.393,233.628 242.795,446.715 410.289,636.79 93.562,106.088 194.634,205.433 301.466,298.13 C -217.335,-155.808 -111.439,-73.789 0,0" /> <path d="m 0,0 c 16.533,10.846 33.211,21.453 50.104,31.699 78.972,-48.281 153.985,-102.704 227.269,-159.144 148.61,-115.422 287.884,-243.01 414.393,-382.333 111.39,-122.861 212.751,-255.152 298.898,-396.971 52.744,-87.322 100.544,-177.884 139.514,-272.214 -11.638,-3.551 -23.108,-7.655 -34.362,-12.286 l -0.24,0.288 c -11.135,12.982 -24.141,24.212 -34.915,37.506 -22.557,23.013 -45.425,45.737 -68.03,68.678 -19.725,20.253 -40.601,39.45 -58.958,60.974 -36.355,36.451 -72.517,73.093 -108.944,109.471 -22.628,26.013 -48.064,49.385 -71.965,74.197 -19.029,19.485 -38.706,38.346 -57.519,57.999 -12.166,14.998 -26.684,27.716 -39.93,41.658 -27.668,27.524 -54.903,55.479 -82.571,82.979 -23.924,27.956 -51.664,52.264 -76.692,79.164 -4.68,4.487 -8.855,10.774 -15.886,11.326 -22.34,34.027 -58.311,57.327 -97.377,67.502 -104.312,99.153 -215.487,191.202 -332.661,274.782 -117.942,-83.94 -229.476,-176.781 -334.484,-276.39 -26.684,-0.024 -53.368,0.024 -80.076,-0.024 0.024,-26.564 0.048,-53.104 0,-79.668 -72.229,-73.021 -139.491,-150.937 -202.385,-232.092 -63.758,-82.619 -121.973,-169.51 -173.541,-260.264 131.932,-69.061 257.864,-149.521 375.926,-240.275 0.096,-26.444 -0.12,-52.888 0.096,-79.332 l 0.744,-0.984 c 20.109,-24.14 43.409,-45.233 65.126,-67.861 15.118,-15.382 30.571,-30.404 45.569,-45.881 17.565,-20.733 37.698,-39.042 56.607,-58.503 19.917,-20.781 41.25,-40.218 59.967,-62.151 29.156,-29.299 58.167,-58.815 87.515,-87.922 29.155,-33.043 61.502,-63.111 92.169,-94.738 13.726,-12.67 25.124,-27.571 38.634,-40.457 25.029,-25.365 50.129,-50.657 75.325,-75.853 -37.914,-51.208 -73.741,-103.952 -107.192,-158.183 -167.83,273.317 -397.235,507.305 -662.37,687.158 -81.875,55.335 -167.23,105.584 -255.681,149.641 -52.815,26.276 -106.831,50.248 -162.239,70.381 99.393,233.628 242.795,446.715 410.289,636.79 93.562,106.088 194.634,205.433 301.466,298.13 C -217.335,-155.808 -111.439,-73.789 0,0" style="fill:#062f4c;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path22" />
</g> </g>
<g transform="translate(1201.7948,1741.5303)" id="g24"> <g id="g24" transform="translate(1201.7948,1741.5303)">
<path id="path26" style="fill:#5693ce;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 0,0 C 105.008,99.609 216.543,192.45 334.485,276.39 451.659,192.81 562.833,100.76 667.146,1.608 c -34.987,8.83 -71.51,9.718 -107.264,6.431 -41.202,-4.296 -82.907,-19.077 -112.543,-48.953 -33.019,-32.155 -49.456,-77.604 -55.311,-122.501 -28.124,27.908 -56.104,55.983 -84.035,84.083 -2.976,2.976 -6.839,4.823 -10.391,6.911 -19.029,26.348 -45.953,46.673 -76.62,57.495 C 187.555,-2.472 151.513,-0.12 116.166,0 Z" /> <path d="M 0,0 C 105.008,99.609 216.543,192.45 334.485,276.39 451.659,192.81 562.833,100.76 667.146,1.608 c -34.987,8.83 -71.51,9.718 -107.264,6.431 -41.202,-4.296 -82.907,-19.077 -112.543,-48.953 -33.019,-32.155 -49.456,-77.604 -55.311,-122.501 -28.124,27.908 -56.104,55.983 -84.035,84.083 -2.976,2.976 -6.839,4.823 -10.391,6.911 -19.029,26.348 -45.953,46.673 -76.62,57.495 C 187.555,-2.472 151.513,-0.12 116.166,0 Z" style="fill:#4c8fcc;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path26" />
</g> </g>
<g transform="translate(919.3342,1429.7462)" id="g28"> <g id="g28" transform="translate(919.3342,1429.7462)">
<path id="path30" style="fill:#5693ce;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 62.894,81.156 130.156,159.072 202.385,232.092 0.048,-244.21 0.024,-488.421 0,-732.631 C 84.323,-409.785 -41.61,-329.325 -173.541,-260.264 -121.973,-169.51 -63.758,-82.619 0,0" /> <path d="m 0,0 c 62.894,81.156 130.156,159.072 202.385,232.092 0.048,-244.21 0.024,-488.421 0,-732.631 C 84.323,-409.785 -41.61,-329.325 -173.541,-260.264 -121.973,-169.51 -63.758,-82.619 0,0" style="fill:#4c8fcc;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path30" />
</g> </g>
<g transform="translate(1649.134,1700.6166)" id="g32"> <g id="g32" transform="translate(1649.134,1700.6166)">
<path id="path34" style="fill:#feeeef;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 29.635,29.875 71.341,44.657 112.543,48.952 35.754,3.288 72.277,2.4 107.263,-6.431 39.066,-10.174 75.037,-33.474 97.377,-67.501 11.879,-17.661 20.181,-37.411 26.42,-57.687 10.871,-38.802 11.95,-79.356 11.446,-119.358 -44.345,-0.072 -88.69,0.048 -133.035,-0.072 -1.032,30.907 3.263,63.686 -10.175,92.626 -9.526,20.325 -32.107,31.243 -53.751,32.131 -21.453,1.44 -45.065,-4.32 -59.175,-21.597 -12.79,-15.861 -15.382,-37.002 -16.558,-56.655 -1.295,-29.132 3.696,-59.031 17.518,-84.923 16.821,-30.619 39.378,-57.783 64.526,-81.9 31.387,-32.634 67.501,-60.374 97.857,-94.041 27.332,-28.988 51.256,-61.479 68.005,-97.785 20.541,-41.13 26.972,-87.827 25.82,-133.372 -0.912,-32.107 -5.231,-64.406 -16.149,-94.737 -11.59,-31.699 -31.123,-61.047 -58.335,-81.371 -25.124,-19.125 -55.696,-29.852 -86.651,-34.771 -49.552,-6.743 -101.888,-4.847 -148.465,14.854 -35.227,14.829 -64.238,42.689 -81.708,76.548 -20.996,40.242 -27.115,86.339 -27.259,131.212 0.048,17.829 0,35.658 0.048,53.463 44.345,0.048 88.69,-0.023 133.059,0.048 1.728,-35.538 -4.055,-72.06 5.663,-106.807 5.783,-22.173 26.204,-37.794 48.185,-41.754 20.733,-3.431 43.577,-2.015 61.622,9.791 15.502,9.43 23.949,26.78 26.78,44.225 5.903,35.922 1.872,74.293 -15.381,106.688 -16.918,30.595 -39.474,57.711 -64.55,81.899 -33.187,34.099 -71.173,63.254 -102.585,99.081 -26.756,28.867 -49.408,61.646 -65.486,97.641 -24.572,52.48 -26.731,112.422 -20.18,169.102 C -49.456,-77.604 -33.019,-32.155 0,0" /> <path d="m 0,0 c 29.635,29.875 71.341,44.657 112.543,48.952 35.754,3.288 72.277,2.4 107.263,-6.431 39.066,-10.174 75.037,-33.474 97.377,-67.501 11.879,-17.661 20.181,-37.411 26.42,-57.687 10.871,-38.802 11.95,-79.356 11.446,-119.358 -44.345,-0.072 -88.69,0.048 -133.035,-0.072 -1.032,30.907 3.263,63.686 -10.175,92.626 -9.526,20.325 -32.107,31.243 -53.751,32.131 -21.453,1.44 -45.065,-4.32 -59.175,-21.597 -12.79,-15.861 -15.382,-37.002 -16.558,-56.655 -1.295,-29.132 3.696,-59.031 17.518,-84.923 16.821,-30.619 39.378,-57.783 64.526,-81.9 31.387,-32.634 67.501,-60.374 97.857,-94.041 27.332,-28.988 51.256,-61.479 68.005,-97.785 20.541,-41.13 26.972,-87.827 25.82,-133.372 -0.912,-32.107 -5.231,-64.406 -16.149,-94.737 -11.59,-31.699 -31.123,-61.047 -58.335,-81.371 -25.124,-19.125 -55.696,-29.852 -86.651,-34.771 -49.552,-6.743 -101.888,-4.847 -148.465,14.854 -35.227,14.829 -64.238,42.689 -81.708,76.548 -20.996,40.242 -27.115,86.339 -27.259,131.212 0.048,17.829 0,35.658 0.048,53.463 44.345,0.048 88.69,-0.023 133.059,0.048 1.728,-35.538 -4.055,-72.06 5.663,-106.807 5.783,-22.173 26.204,-37.794 48.185,-41.754 20.733,-3.431 43.577,-2.015 61.622,9.791 15.502,9.43 23.949,26.78 26.78,44.225 5.903,35.922 1.872,74.293 -15.381,106.688 -16.918,30.595 -39.474,57.711 -64.55,81.899 -33.187,34.099 -71.173,63.254 -102.585,99.081 -26.756,28.867 -49.408,61.646 -65.486,97.641 -24.572,52.48 -26.731,112.422 -20.18,169.102 C -49.456,-77.604 -33.019,-32.155 0,0" style="fill:#feeeee;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path34" />
</g> </g>
<g transform="translate(1262.7214,1613.126)" id="g36"> <g id="g36" transform="translate(1262.7214,1613.126)">
<path id="path38" style="fill:#feeeef;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 v -301.13 c 23.204,0.024 46.409,-0.048 69.613,0.024 18.525,0.288 38.202,6.575 50.153,21.429 12.43,17.277 13.917,39.522 14.613,60.111 0.024,43.985 -0.048,87.994 0.024,131.979 -0.48,23.637 -0.983,50.369 -17.277,69.23 C 104.864,-5.711 86.867,-0.24 69.589,0 46.385,0.048 23.204,0.024 0,0 m -141.002,128.38 c 26.708,0.048 53.392,0 80.075,0.024 H 55.24 c 35.346,-0.12 71.389,-2.471 104.815,-14.925 30.668,-10.823 57.592,-31.148 76.621,-57.496 26.852,-39.09 36.69,-87.202 38.058,-133.947 0.024,-48.833 0.096,-97.689 -0.024,-146.521 -1.728,-47.993 -11.974,-97.953 -41.514,-136.971 -22.748,-30.644 -57.495,-50.801 -94.281,-59.583 -45.377,-11.878 -92.578,-6.791 -138.891,-7.847 -0.072,-111.799 0,-223.574 -0.024,-335.373 -13.942,0 -27.86,0.024 -41.778,-0.024 -32.802,0.072 -65.605,0 -98.384,0.048 l -0.744,0.984 c -0.216,26.444 0,52.888 -0.096,79.332 0.024,244.211 0.048,488.421 0,732.632 0.048,26.563 0.024,53.103 0,79.667" /> <path d="m 0,0 v -301.13 c 23.204,0.024 46.409,-0.048 69.613,0.024 18.525,0.288 38.202,6.575 50.153,21.429 12.43,17.277 13.917,39.522 14.613,60.111 0.024,43.985 -0.048,87.994 0.024,131.979 -0.48,23.637 -0.983,50.369 -17.277,69.23 C 104.864,-5.711 86.867,-0.24 69.589,0 46.385,0.048 23.204,0.024 0,0 m -141.002,128.38 c 26.708,0.048 53.392,0 80.075,0.024 H 55.24 c 35.346,-0.12 71.389,-2.471 104.815,-14.925 30.668,-10.823 57.592,-31.148 76.621,-57.496 26.852,-39.09 36.69,-87.202 38.058,-133.947 0.024,-48.833 0.096,-97.689 -0.024,-146.521 -1.728,-47.993 -11.974,-97.953 -41.514,-136.971 -22.748,-30.644 -57.495,-50.801 -94.281,-59.583 -45.377,-11.878 -92.578,-6.791 -138.891,-7.847 -0.072,-111.799 0,-223.574 -0.024,-335.373 -13.942,0 -27.86,0.024 -41.778,-0.024 -32.802,0.072 -65.605,0 -98.384,0.048 l -0.744,0.984 c -0.216,26.444 0,52.888 -0.096,79.332 0.024,244.211 0.048,488.421 0,732.632 0.048,26.563 0.024,53.103 0,79.667" style="fill:#feeeee;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path38" />
</g> </g>
<g transform="translate(1966.3174,1675.6364)" id="g40"> <g id="g40" transform="translate(1966.3174,1675.6364)">
<path id="path42" style="fill:#2a3746;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 7.031,-0.552 11.206,-6.839 15.885,-11.326 25.029,-26.9 52.768,-51.208 76.693,-79.164 27.667,-27.5 54.903,-55.456 82.571,-82.979 13.246,-13.942 27.764,-26.66 39.93,-41.658 18.813,-19.653 38.49,-38.514 57.519,-57.999 23.9,-24.812 49.337,-48.185 71.965,-74.197 36.427,-36.378 72.589,-73.02 108.943,-109.471 18.358,-21.524 39.234,-40.722 58.959,-60.974 22.605,-22.941 45.473,-45.665 68.03,-68.678 10.774,-13.294 23.78,-24.524 34.914,-37.506 -103.904,-41.97 -203.488,-94.114 -298.922,-152.761 -246.994,-152.28 -466.224,-350.298 -639.333,-583.398 -25.197,25.196 -50.297,50.488 -75.325,75.852 -13.51,12.886 -24.908,27.788 -38.634,40.458 -30.667,31.627 -63.014,61.695 -92.17,94.738 -29.347,29.107 -58.359,58.623 -87.514,87.922 -18.717,21.933 -40.05,41.37 -59.967,62.151 -18.909,19.461 -39.042,37.77 -56.607,58.503 -14.998,15.477 -30.452,30.499 -45.569,45.88 -21.717,22.629 -45.017,43.722 -65.126,67.862 32.779,-0.048 65.582,0.024 98.384,-0.048 114.391,-98.097 220.407,-205.984 315.384,-322.99 92.914,114.318 196.242,220.022 307.753,316.271 30.955,4.919 61.526,15.646 86.65,34.771 27.212,20.325 46.745,49.672 58.335,81.371 107.312,77.988 219.327,149.929 337.509,210.376 -35.299,64.67 -75.829,126.437 -118.254,186.643 C 176.253,-228.037 104.24,-140.115 26.42,-57.687 20.181,-37.41 11.878,-17.661 0,0" /> <path d="m 0,0 c 7.031,-0.552 11.206,-6.839 15.885,-11.326 25.029,-26.9 52.768,-51.208 76.693,-79.164 27.667,-27.5 54.903,-55.456 82.571,-82.979 13.246,-13.942 27.764,-26.66 39.93,-41.658 18.813,-19.653 38.49,-38.514 57.519,-57.999 23.9,-24.812 49.337,-48.185 71.965,-74.197 36.427,-36.378 72.589,-73.02 108.943,-109.471 18.358,-21.524 39.234,-40.722 58.959,-60.974 22.605,-22.941 45.473,-45.665 68.03,-68.678 10.774,-13.294 23.78,-24.524 34.914,-37.506 -103.904,-41.97 -203.488,-94.114 -298.922,-152.761 -246.994,-152.28 -466.224,-350.298 -639.333,-583.398 -25.197,25.196 -50.297,50.488 -75.325,75.852 -13.51,12.886 -24.908,27.788 -38.634,40.458 -30.667,31.627 -63.014,61.695 -92.17,94.738 -29.347,29.107 -58.359,58.623 -87.514,87.922 -18.717,21.933 -40.05,41.37 -59.967,62.151 -18.909,19.461 -39.042,37.77 -56.607,58.503 -14.998,15.477 -30.452,30.499 -45.569,45.88 -21.717,22.629 -45.017,43.722 -65.126,67.862 32.779,-0.048 65.582,0.024 98.384,-0.048 114.391,-98.097 220.407,-205.984 315.384,-322.99 92.914,114.318 196.242,220.022 307.753,316.271 30.955,4.919 61.526,15.646 86.65,34.771 27.212,20.325 46.745,49.672 58.335,81.371 107.312,77.988 219.327,149.929 337.509,210.376 -35.299,64.67 -75.829,126.437 -118.254,186.643 C 176.253,-228.037 104.24,-140.115 26.42,-57.687 20.181,-37.41 11.878,-17.661 0,0" style="fill:#042338;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path42" />
</g> </g>
<g transform="translate(1499.3971,1669.1094)" id="g44"> <g id="g44" transform="translate(1499.3971,1669.1094)">
<path id="path46" style="fill:#3378bc;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 3.551,-2.088 7.415,-3.935 10.39,-6.911 27.932,-28.1 55.912,-56.175 84.036,-84.083 -6.551,-56.679 -4.392,-116.622 20.18,-169.102 16.078,-35.994 38.73,-68.774 65.486,-97.641 31.412,-35.826 69.398,-64.982 102.585,-99.081 25.076,-24.188 47.632,-51.304 64.55,-81.899 17.253,-32.395 21.284,-70.765 15.381,-106.688 -2.831,-17.445 -11.278,-34.794 -26.78,-44.225 -18.045,-11.806 -40.889,-13.222 -61.622,-9.79 -21.981,3.959 -42.402,19.58 -48.185,41.753 -9.718,34.747 -3.935,71.269 -5.663,106.808 -44.369,-0.072 -88.714,0 -133.059,-0.048 -0.048,-17.806 0,-35.635 -0.048,-53.464 0.144,-44.873 6.263,-90.97 27.259,-131.212 17.47,-33.859 46.481,-61.718 81.708,-76.548 46.577,-19.701 98.913,-21.597 148.465,-14.854 -111.511,-96.249 -214.839,-201.953 -307.753,-316.271 -94.977,117.006 -200.993,224.893 -315.383,322.99 13.918,0.048 27.836,0.024 41.777,0.024 0.024,111.799 -0.048,223.574 0.024,335.372 46.313,1.056 93.514,-4.031 138.891,7.847 36.786,8.783 71.533,28.94 94.282,59.583 29.539,39.018 39.785,88.978 41.513,136.971 0.12,48.833 0.048,97.689 0.024,146.522 C 36.69,-87.203 26.852,-39.09 0,0" /> <path d="m 0,0 c 3.551,-2.088 7.415,-3.935 10.39,-6.911 27.932,-28.1 55.912,-56.175 84.036,-84.083 -6.551,-56.679 -4.392,-116.622 20.18,-169.102 16.078,-35.994 38.73,-68.774 65.486,-97.641 31.412,-35.826 69.398,-64.982 102.585,-99.081 25.076,-24.188 47.632,-51.304 64.55,-81.899 17.253,-32.395 21.284,-70.765 15.381,-106.688 -2.831,-17.445 -11.278,-34.794 -26.78,-44.225 -18.045,-11.806 -40.889,-13.222 -61.622,-9.79 -21.981,3.959 -42.402,19.58 -48.185,41.753 -9.718,34.747 -3.935,71.269 -5.663,106.808 -44.369,-0.072 -88.714,0 -133.059,-0.048 -0.048,-17.806 0,-35.635 -0.048,-53.464 0.144,-44.873 6.263,-90.97 27.259,-131.212 17.47,-33.859 46.481,-61.718 81.708,-76.548 46.577,-19.701 98.913,-21.597 148.465,-14.854 -111.511,-96.249 -214.839,-201.953 -307.753,-316.271 -94.977,117.006 -200.993,224.893 -315.383,322.99 13.918,0.048 27.836,0.024 41.777,0.024 0.024,111.799 -0.048,223.574 0.024,335.372 46.313,1.056 93.514,-4.031 138.891,7.847 36.786,8.783 71.533,28.94 94.282,59.583 29.539,39.018 39.785,88.978 41.513,136.971 0.12,48.833 0.048,97.689 0.024,146.522 C 36.69,-87.203 26.852,-39.09 0,0" style="fill:#1c72ba;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path46" />
</g> </g>
<g transform="translate(1748.0469,1601.6797)" id="g48"> <g id="g48" transform="translate(1748.0469,1601.6797)">
<path id="path50" style="fill:#3378bc;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 0,0 C 14.11,17.277 37.722,23.036 59.175,21.597 80.82,20.709 103.4,9.791 112.927,-10.534 c 13.438,-28.94 9.142,-61.719 10.174,-92.626 44.345,0.12 88.691,0 133.036,0.072 0.504,40.002 -0.576,80.556 -11.447,119.358 77.82,-82.428 149.833,-170.35 215.583,-262.664 42.426,-60.207 82.956,-121.973 118.254,-186.643 -118.182,-60.447 -230.196,-132.388 -337.508,-210.376 10.918,30.331 15.238,62.63 16.149,94.737 1.152,45.545 -5.279,92.242 -25.82,133.372 -16.749,36.306 -40.673,68.797 -68.005,97.785 -30.355,33.667 -66.47,61.406 -97.857,94.041 -25.148,24.117 -47.705,51.28 -64.526,81.9 -13.822,25.892 -18.813,55.791 -17.517,84.923 C -15.382,-37.002 -12.79,-15.862 0,0" /> <path d="M 0,0 C 14.11,17.277 37.722,23.036 59.175,21.597 80.82,20.709 103.4,9.791 112.927,-10.534 c 13.438,-28.94 9.142,-61.719 10.174,-92.626 44.345,0.12 88.691,0 133.036,0.072 0.504,40.002 -0.576,80.556 -11.447,119.358 77.82,-82.428 149.833,-170.35 215.583,-262.664 42.426,-60.207 82.956,-121.973 118.254,-186.643 -118.182,-60.447 -230.196,-132.388 -337.508,-210.376 10.918,30.331 15.238,62.63 16.149,94.737 1.152,45.545 -5.279,92.242 -25.82,133.372 -16.749,36.306 -40.673,68.797 -68.005,97.785 -30.355,33.667 -66.47,61.406 -97.857,94.041 -25.148,24.117 -47.705,51.28 -64.526,81.9 -13.822,25.892 -18.813,55.791 -17.517,84.923 C -15.382,-37.002 -12.79,-15.862 0,0" style="fill:#1c72ba;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path50" />
</g> </g>
<g transform="translate(1262.7214,1613.126)" id="g52"> <g id="g52" transform="translate(1262.7214,1613.126)">
<path id="path54" style="fill:#3378bc;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 23.204,0.024 46.385,0.048 69.589,0 17.278,-0.24 35.275,-5.711 47.537,-18.357 16.294,-18.861 16.797,-45.593 17.277,-69.23 -0.072,-43.985 0,-87.994 -0.024,-131.979 -0.696,-20.589 -2.183,-42.834 -14.613,-60.111 -11.951,-14.854 -31.628,-21.141 -50.153,-21.429 -23.204,-0.072 -46.409,0 -69.613,-0.024 z" /> <path d="m 0,0 c 23.204,0.024 46.385,0.048 69.589,0 17.278,-0.24 35.275,-5.711 47.537,-18.357 16.294,-18.861 16.797,-45.593 17.277,-69.23 -0.072,-43.985 0,-87.994 -0.024,-131.979 -0.696,-20.589 -2.183,-42.834 -14.613,-60.111 -11.951,-14.854 -31.628,-21.141 -50.153,-21.429 -23.204,-0.072 -46.409,0 -69.613,-0.024 z" style="fill:#1c72ba;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path54" />
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,4 +0,0 @@
jdkVersion = "17"
build = "gradle clean build -x test"
tools = ["findsecbugs", "ErrorProne", "Semgrep", "Detekt", "Infer"]
ignoreRules = ["CatchAndPrintStackTrace", "ReferenceEquality", "FallThrough", "FutureReturnValueIgnored", "MixedMutabilityReturnType", "EmptyCatch", "MissingCasesInEnumSwitch", "OperatorPrecedence", "StaticAssignmentInConstructor", "ReferenceEquality", "EqualsHashCode", "EqualsGetClass", "TypeParameterUnusedInFormals", "StringSplitter", "InlineMeSuggester", "NULL_DEREFERENCE"]

View File

@ -8,7 +8,7 @@ repositories {
maven { maven {
name = "PaperMC" name = "PaperMC"
url = uri("https://papermc.io/repo/repository/maven-public/") url = uri("https://repo.papermc.io/repository/maven-public/")
} }
maven { maven {
@ -21,20 +21,20 @@ dependencies {
api(projects.plotSquaredCore) api(projects.plotSquaredCore)
// Metrics // Metrics
implementation(libs.bstats) implementation("org.bstats:bstats-bukkit")
// Paper // Paper
compileOnly(libs.paper) compileOnly(libs.paper)
implementation(libs.paperlib) implementation("io.papermc:paperlib")
// Plugins // Plugins
compileOnly(libs.worldeditBukkit) { compileOnly(libs.worldeditBukkit) {
exclude(group = "org.bukkit") exclude(group = "org.bukkit")
exclude(group = "org.spigotmc") exclude(group = "org.spigotmc")
} }
compileOnly(libs.fastasyncworldeditBukkit) { isTransitive = false } compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false }
testImplementation(libs.fastasyncworldeditBukkit) { isTransitive = false } testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false }
compileOnly(libs.vault) { compileOnly("com.github.MilkBowl:VaultAPI") {
exclude(group = "org.bukkit") exclude(group = "org.bukkit")
} }
compileOnly(libs.placeholderapi) compileOnly(libs.placeholderapi)
@ -44,15 +44,15 @@ dependencies {
// Other libraries // Other libraries
implementation(libs.squirrelid) { isTransitive = false } implementation(libs.squirrelid) { isTransitive = false }
implementation(libs.serverlib) implementation("dev.notmyfault.serverlib:ServerLib")
// Our libraries // Our libraries
implementation(libs.arkitektonika) implementation(libs.arkitektonika)
implementation(libs.http4j) implementation(libs.http4j)
implementation(libs.paster) implementation("com.intellectualsites.paster:Paster")
// Adventure // Adventure
implementation(libs.adventurePlatformBukkit) implementation("net.kyori:adventure-platform-bukkit")
} }
tasks.processResources { tasks.processResources {
@ -85,6 +85,8 @@ tasks.named<ShadowJar>("shadowJar") {
relocate("javax.annotation", "com.plotsquared.core.annotation") relocate("javax.annotation", "com.plotsquared.core.annotation")
relocate("com.github.spotbugs", "com.plotsquared.core.spotbugs") relocate("com.github.spotbugs", "com.plotsquared.core.spotbugs")
relocate("javax.inject", "com.plotsquared.core.annotation.inject") relocate("javax.inject", "com.plotsquared.core.annotation.inject")
relocate("net.jcip", "com.plotsquared.core.annotations.jcip")
relocate("edu.umd.cs.findbugs", "com.plotsquared.core.annotations.findbugs")
// Get rid of all the libs which are 100% unused. // Get rid of all the libs which are 100% unused.
minimize() minimize()
@ -95,7 +97,7 @@ tasks.named<ShadowJar>("shadowJar") {
tasks { tasks {
withType<Javadoc> { withType<Javadoc> {
val opt = options as StandardJavadocDocletOptions val opt = options as StandardJavadocDocletOptions
opt.links("https://papermc.io/javadocs/paper/1.18/") opt.links("https://jd.papermc.io/paper/1.18/")
opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/" + libs.worldeditBukkit.get().versionConstraint.toString()) opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/" + libs.worldeditBukkit.get().versionConstraint.toString())
opt.links("https://javadoc.io/doc/com.plotsquared/PlotSquared-Core/latest/") opt.links("https://javadoc.io/doc/com.plotsquared/PlotSquared-Core/latest/")
opt.links("https://jd.adventure.kyori.net/api/" + libs.adventure.get().versionConstraint.toString()) opt.links("https://jd.adventure.kyori.net/api/" + libs.adventure.get().versionConstraint.toString())

View File

@ -25,17 +25,18 @@
*/ */
package com.plotsquared.bukkit.generator; package com.plotsquared.bukkit.generator;
import com.plotsquared.core.PlotSquared; import com.plotsquared.bukkit.queue.LimitedRegionWrapperQueue;
import com.plotsquared.core.generator.HybridPlotWorld;
import com.plotsquared.core.generator.IndependentPlotGenerator; import com.plotsquared.core.generator.IndependentPlotGenerator;
import com.plotsquared.core.location.ChunkWrapper; import com.plotsquared.core.location.Location;
import com.plotsquared.core.location.UncheckedWorldLocation;
import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.world.PlotAreaManager; import com.plotsquared.core.plot.world.PlotAreaManager;
import com.plotsquared.core.queue.QueueCoordinator; import com.plotsquared.core.plot.world.SinglePlotArea;
import com.plotsquared.core.queue.ScopedQueueCoordinator; import com.plotsquared.core.queue.ScopedQueueCoordinator;
import com.sk89q.worldedit.bukkit.BukkitWorld;
import org.bukkit.Chunk;
import org.bukkit.World;
import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.BlockPopulator;
import org.bukkit.generator.LimitedRegion;
import org.bukkit.generator.WorldInfo;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Random; import java.util.Random;
@ -43,35 +44,51 @@ import java.util.Random;
final class BlockStatePopulator extends BlockPopulator { final class BlockStatePopulator extends BlockPopulator {
private final IndependentPlotGenerator plotGenerator; private final IndependentPlotGenerator plotGenerator;
private final PlotAreaManager plotAreaManager;
private QueueCoordinator queue; /**
* @since TODO
*/
public BlockStatePopulator(
final @NonNull IndependentPlotGenerator plotGenerator
) {
this.plotGenerator = plotGenerator;
}
/**
* @deprecated Use {@link BlockStatePopulator#BlockStatePopulator(IndependentPlotGenerator)} as plotAreManager is unused
*/
@Deprecated(forRemoval = true, since = "TODO")
public BlockStatePopulator( public BlockStatePopulator(
final @NonNull IndependentPlotGenerator plotGenerator, final @NonNull IndependentPlotGenerator plotGenerator,
final @NonNull PlotAreaManager plotAreaManager final @NonNull PlotAreaManager plotAreaManager
) { ) {
this.plotGenerator = plotGenerator; this.plotGenerator = plotGenerator;
this.plotAreaManager = plotAreaManager;
} }
@Override @Override
public void populate(final @NonNull World world, final @NonNull Random random, final @NonNull Chunk source) { public void populate(
if (this.queue == null) { @NonNull final WorldInfo worldInfo,
this.queue = PlotSquared.platform().globalBlockQueue().getNewQueue(new BukkitWorld(world)); @NonNull final Random random,
} final int chunkX,
final PlotArea area = this.plotAreaManager.getPlotArea(world.getName(), null); final int chunkZ,
if (area == null) { @NonNull final LimitedRegion limitedRegion
) {
PlotArea area = UncheckedWorldLocation.at(worldInfo.getName(), chunkX << 4, 0, chunkZ << 4).getPlotArea();
if (area == null || (area instanceof HybridPlotWorld hpw && !hpw.populationNeeded()) || area instanceof SinglePlotArea) {
return; return;
} }
final ChunkWrapper wrap = new ChunkWrapper(area.getWorldName(), source.getX(), source.getZ()); LimitedRegionWrapperQueue wrapped = new LimitedRegionWrapperQueue(limitedRegion);
final ScopedQueueCoordinator chunk = this.queue.getForChunk(wrap.x, wrap.z, // It is possible for the region to be larger than the chunk, but there is no reason for P2 to need to populate
com.plotsquared.bukkit.util.BukkitWorld.getMinWorldHeight(world), // outside of the actual chunk area.
com.plotsquared.bukkit.util.BukkitWorld.getMaxWorldHeight(world) - 1 Location min = UncheckedWorldLocation.at(worldInfo.getName(), chunkX << 4, worldInfo.getMinHeight(), chunkZ << 4);
Location max = UncheckedWorldLocation.at(
worldInfo.getName(),
(chunkX << 4) + 15,
worldInfo.getMaxHeight(),
(chunkZ << 4) + 15
); );
if (this.plotGenerator.populateChunk(chunk, area)) { ScopedQueueCoordinator offsetChunkQueue = new ScopedQueueCoordinator(wrapped, min, max);
this.queue.enqueue(); this.plotGenerator.populateChunk(offsetChunkQueue, area);
}
} }
} }

View File

@ -25,7 +25,11 @@
*/ */
package com.plotsquared.bukkit.generator; package com.plotsquared.bukkit.generator;
import com.plotsquared.core.PlotSquared;
import com.plotsquared.core.generator.AugmentedUtils; import com.plotsquared.core.generator.AugmentedUtils;
import com.plotsquared.core.queue.QueueCoordinator;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.util.SideEffectSet;
import org.bukkit.Chunk; import org.bukkit.Chunk;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.BlockPopulator;
@ -52,7 +56,14 @@ public class BukkitAugmentedGenerator extends BlockPopulator {
@Override @Override
public void populate(@NonNull World world, @NonNull Random random, @NonNull Chunk source) { public void populate(@NonNull World world, @NonNull Random random, @NonNull Chunk source) {
AugmentedUtils.generate(source, world.getName(), source.getX(), source.getZ(), null); QueueCoordinator queue = PlotSquared.platform().globalBlockQueue().getNewQueue(BukkitAdapter.adapt(world));
// The chunk is already loaded and we do not want to load the chunk in "fully" by using any PaperLib methods.
queue.setForceSync(true);
queue.setSideEffectSet(SideEffectSet.none());
queue.setBiomesEnabled(false);
queue.setChunkObject(source);
AugmentedUtils.generateChunk(world.getName(), source.getX(), source.getZ(), queue);
queue.enqueue();
} }
} }

View File

@ -49,8 +49,7 @@ import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.Set; import java.util.Set;
public class BukkitPlotGenerator extends ChunkGenerator public class BukkitPlotGenerator extends ChunkGenerator implements GeneratorWrapper<ChunkGenerator> {
implements GeneratorWrapper<ChunkGenerator> {
@SuppressWarnings("unused") @SuppressWarnings("unused")
public final boolean PAPER_ASYNC_SAFE = true; public final boolean PAPER_ASYNC_SAFE = true;
@ -73,7 +72,12 @@ public class BukkitPlotGenerator extends ChunkGenerator
this.plotGenerator = generator; this.plotGenerator = generator;
this.platformGenerator = this; this.platformGenerator = this;
this.populators = new ArrayList<>(); this.populators = new ArrayList<>();
this.populators.add(new BlockStatePopulator(this.plotGenerator, this.plotAreaManager)); int minecraftMinorVersion = PlotSquared.platform().serverVersion()[1];
if (minecraftMinorVersion >= 17) {
this.populators.add(new BlockStatePopulator(this.plotGenerator));
} else {
this.populators.add(new LegacyBlockStatePopulator(this.plotGenerator));
}
this.full = true; this.full = true;
} }
@ -159,7 +163,6 @@ public class BukkitPlotGenerator extends ChunkGenerator
@NonNull World world, @NonNull Random random, int x, int z, @NonNull World world, @NonNull Random random, int x, int z,
@NonNull BiomeGrid biome @NonNull BiomeGrid biome
) { ) {
int minY = BukkitWorld.getMinWorldHeight(world); int minY = BukkitWorld.getMinWorldHeight(world);
int maxY = BukkitWorld.getMaxWorldHeight(world); int maxY = BukkitWorld.getMaxWorldHeight(world);
GenChunk result = new GenChunk(minY, maxY); GenChunk result = new GenChunk(minY, maxY);

View File

@ -0,0 +1,81 @@
/*
* _____ _ _ _____ _
* | __ \| | | | / ____| | |
* | |__) | | ___ | |_| (___ __ _ _ _ __ _ _ __ ___ __| |
* | ___/| |/ _ \| __|\___ \ / _` | | | |/ _` | '__/ _ \/ _` |
* | | | | (_) | |_ ____) | (_| | |_| | (_| | | | __/ (_| |
* |_| |_|\___/ \__|_____/ \__, |\__,_|\__,_|_| \___|\__,_|
* | |
* |_|
* PlotSquared plot management system for Minecraft
* Copyright (C) 2014 - 2022 IntellectualSites
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.plotsquared.bukkit.generator;
import com.plotsquared.core.PlotSquared;
import com.plotsquared.core.generator.HybridPlotWorld;
import com.plotsquared.core.generator.IndependentPlotGenerator;
import com.plotsquared.core.location.Location;
import com.plotsquared.core.location.UncheckedWorldLocation;
import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.world.SinglePlotArea;
import com.plotsquared.core.queue.QueueCoordinator;
import com.plotsquared.core.queue.ScopedQueueCoordinator;
import com.sk89q.worldedit.bukkit.BukkitWorld;
import com.sk89q.worldedit.util.SideEffectSet;
import org.bukkit.Chunk;
import org.bukkit.World;
import org.bukkit.generator.BlockPopulator;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.jetbrains.annotations.NotNull;
import java.util.Random;
final class LegacyBlockStatePopulator extends BlockPopulator {
private final IndependentPlotGenerator plotGenerator;
/**
* @since TODO
*/
public LegacyBlockStatePopulator(
final @NonNull IndependentPlotGenerator plotGenerator
) {
this.plotGenerator = plotGenerator;
}
@Override
public void populate(@NotNull final World world, @NotNull final Random random, @NotNull final Chunk source) {
int chunkMinX = source.getX() << 4;
int chunkMinZ = source.getZ() << 4;
PlotArea area = Location.at(world.getName(), chunkMinX, 0, chunkMinZ).getPlotArea();
if (area == null || (area instanceof HybridPlotWorld hpw && !hpw.populationNeeded()) || area instanceof SinglePlotArea) {
return;
}
QueueCoordinator queue = PlotSquared.platform().globalBlockQueue().getNewQueue(new BukkitWorld(world));
queue.setForceSync(true);
queue.setSideEffectSet(SideEffectSet.none());
queue.setBiomesEnabled(false);
queue.setChunkObject(source);
Location min = UncheckedWorldLocation.at(world.getName(), chunkMinX, world.getMinHeight(), chunkMinZ);
Location max = UncheckedWorldLocation.at(world.getName(), chunkMinX + 15, world.getMaxHeight(), chunkMinZ + 15);
ScopedQueueCoordinator offsetChunkQueue = new ScopedQueueCoordinator(queue, min, max);
this.plotGenerator.populateChunk(offsetChunkQueue, area);
queue.enqueue();
}
}

View File

@ -68,9 +68,7 @@ import com.plotsquared.core.util.task.TaskTime;
import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.world.block.BlockType; import com.sk89q.worldedit.world.block.BlockType;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Material; import org.bukkit.Material;
@ -287,20 +285,15 @@ public class BlockEventListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("height.height_limit"), TranslatableCaption.of("height.height_limit"),
TagResolver.builder() Template.of("minHeight", String.valueOf(area.getMinBuildHeight())),
.tag("minheight", Tag.inserting(Component.text(area.getMinBuildHeight()))) Template.of("maxHeight", String.valueOf(area.getMaxBuildHeight()))
.tag("maxheight", Tag.inserting(Component.text(area.getMaxBuildHeight())))
.build()
); );
} }
if (!plot.hasOwner()) { if (!plot.hasOwner()) {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)
)
); );
event.setCancelled(true); event.setCancelled(true);
return; return;
@ -317,10 +310,7 @@ public class BlockEventListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_OTHER)
)
); );
event.setCancelled(true); event.setCancelled(true);
plot.debug(player.getName() + " could not place " + event.getBlock().getType() plot.debug(player.getName() + " could not place " + event.getBlock().getType()
@ -347,10 +337,7 @@ public class BlockEventListener implements Listener {
} else if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_ROAD)) { } else if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_ROAD)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_ROAD)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -373,10 +360,7 @@ public class BlockEventListener implements Listener {
.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL)) { .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL)) {
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL)
)
); );
event.setCancelled(true); event.setCancelled(true);
return; return;
@ -387,10 +371,8 @@ public class BlockEventListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("height.height_limit"), TranslatableCaption.of("height.height_limit"),
TagResolver.builder() Template.of("minHeight", String.valueOf(area.getMinBuildHeight())),
.tag("minheight", Tag.inserting(Component.text(area.getMinBuildHeight()))) Template.of("maxHeight", String.valueOf(area.getMaxBuildHeight()))
.tag("maxheight", Tag.inserting(Component.text(area.getMaxBuildHeight())))
.build()
); );
} }
if (!plot.hasOwner()) { if (!plot.hasOwner()) {
@ -415,10 +397,7 @@ public class BlockEventListener implements Listener {
} }
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_OTHER)
)
); );
event.setCancelled(true); event.setCancelled(true);
} else if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { } else if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) {
@ -444,10 +423,7 @@ public class BlockEventListener implements Listener {
} }
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_ROAD)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -575,6 +551,10 @@ public class BlockEventListener implements Listener {
if (plot == null) { if (plot == null) {
return; return;
} }
if (location.getY() >= area.getMaxBuildHeight() || location.getY() < area.getMinBuildHeight()) {
event.setCancelled(true);
return;
}
switch (event.getNewState().getType()) { switch (event.getNewState().getType()) {
case SNOW: case SNOW:
case SNOW_BLOCK: case SNOW_BLOCK:
@ -774,62 +754,66 @@ public class BlockEventListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onChange(BlockFromToEvent event) { public void onChange(BlockFromToEvent event) {
Block from = event.getBlock(); Block fromBlock = event.getBlock();
// Check liquid flow flag inside of origin plot too // Check liquid flow flag inside of origin plot too
final Location fLocation = BukkitUtil.adapt(from.getLocation()); final Location fromLocation = BukkitUtil.adapt(fromBlock.getLocation());
final PlotArea fromArea = fLocation.getPlotArea(); final PlotArea fromArea = fromLocation.getPlotArea();
if (fromArea != null) { if (fromArea != null) {
final Plot plot = fromArea.getOwnedPlot(fLocation); final Plot fromPlot = fromArea.getOwnedPlot(fromLocation);
if (plot != null && plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event if (fromPlot != null && fromPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event
.getBlock() .getBlock()
.isLiquid()) { .isLiquid()) {
plot.debug("Liquid could not flow because liquid-flow = disabled"); fromPlot.debug("Liquid could not flow because liquid-flow = disabled");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
} }
Block to = event.getToBlock(); Block toBlock = event.getToBlock();
Location tLocation = BukkitUtil.adapt(to.getLocation()); Location toLocation = BukkitUtil.adapt(toBlock.getLocation());
PlotArea area = tLocation.getPlotArea(); PlotArea toArea = toLocation.getPlotArea();
if (area == null) { if (toArea == null) {
if (from.getType() == Material.DRAGON_EGG && fromArea != null) { if (fromBlock.getType() == Material.DRAGON_EGG && fromArea != null) {
event.setCancelled(true); event.setCancelled(true);
} }
return; return;
} }
Plot plot = area.getOwnedPlot(tLocation); if (toLocation.getY() >= toArea.getMaxBuildHeight() || toLocation.getY() < toArea.getMinBuildHeight()) {
event.setCancelled(true);
return;
}
Plot toPlot = toArea.getOwnedPlot(toLocation);
if (from.getType() == Material.DRAGON_EGG && fromArea != null) { if (fromBlock.getType() == Material.DRAGON_EGG && fromArea != null) {
final Plot fromPlot = fromArea.getOwnedPlot(fLocation); final Plot fromPlot = fromArea.getOwnedPlot(fromLocation);
if (fromPlot != null || plot != null) { if (fromPlot != null || toPlot != null) {
if ((fromPlot == null || !fromPlot.equals(plot)) && (plot == null || !plot.equals(fromPlot))) { if ((fromPlot == null || !fromPlot.equals(toPlot)) && (toPlot == null || !toPlot.equals(fromPlot))) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
} }
} }
if (plot != null) { if (toPlot != null) {
if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(plot, area.getOwnedPlot(fLocation))) { if (!toArea.contains(fromLocation.getX(), fromLocation.getZ()) || !Objects.equals(toPlot, toArea.getOwnedPlot(fromLocation))) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.ENABLED && event.getBlock().isLiquid()) { if (toPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.ENABLED && event.getBlock().isLiquid()) {
return; return;
} }
if (plot.getFlag(DisablePhysicsFlag.class)) { if (toPlot.getFlag(DisablePhysicsFlag.class)) {
plot.debug(event.getBlock().getType() + " could not update because disable-physics = true"); toPlot.debug(event.getBlock().getType() + " could not update because disable-physics = true");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event.getBlock().isLiquid()) { if (toPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event.getBlock().isLiquid()) {
plot.debug("Liquid could not flow because liquid-flow = disabled"); toPlot.debug("Liquid could not flow because liquid-flow = disabled");
event.setCancelled(true); event.setCancelled(true);
} }
} else if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(null, area.getOwnedPlot(fLocation))) { } else if (!toArea.contains(fromLocation.getX(), fromLocation.getZ()) || !Objects.equals(null, toArea.getOwnedPlot(fromLocation))) {
event.setCancelled(true); event.setCancelled(true);
} else if (event.getBlock().isLiquid()) { } else if (event.getBlock().isLiquid()) {
final org.bukkit.Location location = event.getBlock().getLocation(); final org.bukkit.Location location = event.getBlock().getLocation();
@ -1123,10 +1107,7 @@ public class BlockEventListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_ROAD)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_ROAD)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_ROAD)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1134,10 +1115,7 @@ public class BlockEventListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1145,10 +1123,7 @@ public class BlockEventListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_OTHER)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1272,7 +1247,7 @@ public class BlockEventListener implements Listener {
) && !(Objects.equals(currentLocation.getPlot(), plot))) { ) && !(Objects.equals(currentLocation.getPlot(), plot))) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver("node", Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_ROAD)) Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD))
); );
event.setCancelled(true); event.setCancelled(true);
break; break;
@ -1283,10 +1258,8 @@ public class BlockEventListener implements Listener {
if (currentLocation.getY() >= area.getMaxBuildHeight() || currentLocation.getY() < area.getMinBuildHeight()) { if (currentLocation.getY() >= area.getMaxBuildHeight() || currentLocation.getY() < area.getMinBuildHeight()) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("height.height_limit"), TranslatableCaption.of("height.height_limit"),
TagResolver.builder() Template.of("minHeight", String.valueOf(area.getMinBuildHeight())),
.tag("minheight", Tag.inserting(Component.text(area.getMinBuildHeight()))) Template.of("maxHeight", String.valueOf(area.getMaxBuildHeight()))
.tag("maxheight", Tag.inserting(Component.text(area.getMaxBuildHeight())))
.build()
); );
event.setCancelled(true); event.setCancelled(true);
break; break;

View File

@ -168,6 +168,7 @@ public class EntityEventListener implements Listener {
case "RAID": case "RAID":
case "SHEARED": case "SHEARED":
case "SILVERFISH_BLOCK": case "SILVERFISH_BLOCK":
case "ENDER_PEARL":
case "TRAP": case "TRAP":
case "VILLAGE_DEFENSE": case "VILLAGE_DEFENSE":
case "VILLAGE_INVASION": case "VILLAGE_INVASION":

View File

@ -47,9 +47,7 @@ import com.plotsquared.core.plot.flag.implementations.DoneFlag;
import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag; import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag;
import com.plotsquared.core.plot.world.PlotAreaManager; import com.plotsquared.core.plot.world.PlotAreaManager;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.Chunk; import org.bukkit.Chunk;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.TileState; import org.bukkit.block.TileState;
@ -198,6 +196,7 @@ public class PaperListener implements Listener {
case "RAID": case "RAID":
case "SHEARED": case "SHEARED":
case "SILVERFISH_BLOCK": case "SILVERFISH_BLOCK":
case "ENDER_PEARL":
case "TRAP": case "TRAP":
case "VILLAGE_DEFENSE": case "VILLAGE_DEFENSE":
case "VILLAGE_INVASION": case "VILLAGE_INVASION":
@ -306,7 +305,7 @@ public class PaperListener implements Listener {
final PlotPlayer<?> plotPlayer = BukkitUtil.adapt(event.getPlayer()); final PlotPlayer<?> plotPlayer = BukkitUtil.adapt(event.getPlayer());
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("errors.tile_entity_cap_reached"), TranslatableCaption.of("errors.tile_entity_cap_reached"),
TagResolver.resolver("amount", Tag.inserting(Component.text(Settings.Chunk_Processor.MAX_TILES))) Template.of("amount", String.valueOf(Settings.Chunk_Processor.MAX_TILES))
); );
event.setCancelled(true); event.setCancelled(true);
event.setBuild(false); event.setBuild(false);
@ -340,10 +339,7 @@ public class PaperListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)
)
); );
entity.remove(); entity.remove();
event.setCancelled(true); event.setCancelled(true);
@ -352,10 +348,7 @@ public class PaperListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)
)
); );
entity.remove(); entity.remove();
event.setCancelled(true); event.setCancelled(true);
@ -365,10 +358,7 @@ public class PaperListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)
)
); );
entity.remove(); entity.remove();
event.setCancelled(true); event.setCancelled(true);

View File

@ -33,9 +33,7 @@ import com.plotsquared.core.location.Location;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.world.PlotAreaManager; import com.plotsquared.core.plot.world.PlotAreaManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.block.Banner; import org.bukkit.block.Banner;
import org.bukkit.block.Beacon; import org.bukkit.block.Beacon;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
@ -86,7 +84,7 @@ public class PaperListener113 extends PaperListener {
final PlotPlayer<?> plotPlayer = BukkitUtil.adapt(event.getPlayer()); final PlotPlayer<?> plotPlayer = BukkitUtil.adapt(event.getPlayer());
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("errors.tile_entity_cap_reached"), TranslatableCaption.of("errors.tile_entity_cap_reached"),
TagResolver.resolver("amount", Tag.inserting(Component.text(Settings.Chunk_Processor.MAX_TILES))) Template.of("amount", String.valueOf(Settings.Chunk_Processor.MAX_TILES))
); );
event.setCancelled(true); event.setCancelled(true);
event.setBuild(false); event.setBuild(false);

View File

@ -84,10 +84,7 @@ import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.world.block.BlockType; import com.sk89q.worldedit.world.block.BlockType;
import io.papermc.lib.PaperLib; import io.papermc.lib.PaperLib;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import net.kyori.adventure.text.minimessage.tag.standard.StandardTags;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.FluidCollisionMode; import org.bukkit.FluidCollisionMode;
@ -155,11 +152,13 @@ import org.bukkit.util.Vector;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.regex.Pattern;
/** /**
* Player Events involving plots. * Player Events involving plots.
@ -364,15 +363,11 @@ public class PlayerEventListener extends PlotListener implements Listener {
&& PremiumVerification.isPremium() && UpdateUtility.hasUpdate) { && PremiumVerification.isPremium() && UpdateUtility.hasUpdate) {
Caption boundary = TranslatableCaption.of("update.update_boundary"); Caption boundary = TranslatableCaption.of("update.update_boundary");
Caption updateNotification = TranslatableCaption.of("update.update_notification"); Caption updateNotification = TranslatableCaption.of("update.update_notification");
Template internalVersion = Template.of("p2version", UpdateUtility.internalVersion.versionString());
Template spigotVersion = Template.of("spigotversion", UpdateUtility.spigotVersion);
Template downloadUrl = Template.of("downloadurl", "https://www.spigotmc.org/resources/77506/updates");
pp.sendMessage(boundary); pp.sendMessage(boundary);
pp.sendMessage( pp.sendMessage(updateNotification, internalVersion, spigotVersion, downloadUrl);
updateNotification,
TagResolver.builder()
.tag("p2version", Tag.inserting(Component.text(UpdateUtility.internalVersion.versionString())))
.tag("spigotversion", Tag.inserting(Component.text(UpdateUtility.spigotVersion)))
.tag("downloadurl", Tag.preProcessParsed("https://www.spigotmc.org/resources/77506/updates"))
.build()
);
pp.sendMessage(boundary); pp.sendMessage(boundary);
} }
} }
@ -424,7 +419,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
.equals(BukkitUtil.adaptComplete(to)))) { .equals(BukkitUtil.adaptComplete(to)))) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("deny.no_enter"), TranslatableCaption.of("deny.no_enter"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.toString()))) Template.of("plot", plot.toString())
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -540,10 +535,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !kickAccess.get().orElse(false)) { if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !kickAccess.get().orElse(false)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_EXIT_DENIED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_EXIT_DENIED)
)
); );
this.tmpTeleport = false; this.tmpTeleport = false;
if (lastPlot.equals(BukkitUtil.adapt(from).getPlot())) { if (lastPlot.equals(BukkitUtil.adapt(from).getPlot())) {
@ -561,7 +553,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
} else if (!plotEntry(pp, now) && this.tmpTeleport) { } else if (!plotEntry(pp, now) && this.tmpTeleport) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("deny.no_enter"), TranslatableCaption.of("deny.no_enter"),
TagResolver.resolver("plot", Tag.inserting(Component.text(now.toString()))) Template.of("plot", now.toString())
); );
this.tmpTeleport = false; this.tmpTeleport = false;
to.setX(from.getBlockX()); to.setX(from.getBlockX());
@ -633,10 +625,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !kickAccess.get().orElse(false)) { if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !kickAccess.get().orElse(false)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_EXIT_DENIED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_EXIT_DENIED)
)
); );
this.tmpTeleport = false; this.tmpTeleport = false;
if (lastPlot.equals(BukkitUtil.adapt(from).getPlot())) { if (lastPlot.equals(BukkitUtil.adapt(from).getPlot())) {
@ -654,7 +643,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
} else if (!plotEntry(pp, plot) && this.tmpTeleport) { } else if (!plotEntry(pp, plot) && this.tmpTeleport) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("deny.no_enter"), TranslatableCaption.of("deny.no_enter"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.toString()))) Template.of("plot", plot.toString())
); );
this.tmpTeleport = false; this.tmpTeleport = false;
player.teleport(from); player.teleport(from);
@ -739,34 +728,46 @@ public class PlayerEventListener extends PlotListener implements Listener {
PlotId id = plot.getId(); PlotId id = plot.getId();
String worldName = plot.getWorldName(); String worldName = plot.getWorldName();
Caption msg = TranslatableCaption.of("chat.plot_chat_format"); Caption msg = TranslatableCaption.of("chat.plot_chat_format");
TagResolver.Builder builder = TagResolver.builder(); Template msgTemplate;
builder.tag("world", Tag.inserting(Component.text(worldName))); Template worldNameTemplate = Template.of("world", worldName);
builder.tag("plot_id", Tag.inserting(Component.text(id.toString()))); Template plotTemplate = Template.of("plot_id", id.toString());
builder.tag("sender", Tag.inserting(Component.text(sender))); Template senderTemplate = Template.of("sender", sender);
// If we do/don't want colour, we need to be careful about how to go about it, as players could attempt either <gold></gold> or &6 etc.
// In both cases, we want to use a Component Template to ensure that the player cannot use any placeholders in their message on purpose
// or accidentally, as component templates are done at the end. We also need to deserialize from legacy color codes to a Component if
// allowing colour.
if (plotPlayer.hasPermission("plots.chat.color")) { if (plotPlayer.hasPermission("plots.chat.color")) {
builder.tag("msg", Tag.inserting(MiniMessage.miniMessage().deserialize( msgTemplate = Template
message, .of(
TagResolver.resolver(StandardTags.color(), StandardTags.gradient(), "msg",
StandardTags.rainbow(), StandardTags.decorations() BukkitUtil.LEGACY_COMPONENT_SERIALIZER.deserialize(ChatColor.translateAlternateColorCodes(
) '&',
))); message
))
);
} else { } else {
builder.tag("msg", Tag.inserting(Component.text(message))); msgTemplate = Template.of("msg", BukkitUtil.MINI_MESSAGE.deserialize(
ChatColor.stripColor(BukkitUtil.LEGACY_COMPONENT_SERIALIZER.serialize(Component.text(message)))));
} }
for (PlotPlayer<?> receiver : plotRecipients) { for (PlotPlayer<?> receiver : plotRecipients) {
receiver.sendMessage(msg, builder.build()); receiver.sendMessage(msg, worldNameTemplate, msgTemplate, plotTemplate, senderTemplate);
} }
if (!spies.isEmpty()) { if (!spies.isEmpty()) {
Caption spymsg = TranslatableCaption.of("chat.plot_chat_spy_format"); Caption spymsg = TranslatableCaption.of("chat.plot_chat_spy_format");
Template plotidTemplate = Template.of("plot_id", id.getX() + ";" + id.getY());
Template spysenderTemplate = Template.of("sender", sender);
Template spymessageTemplate = Template.of("msg", Component.text(message));
for (PlotPlayer<?> player : spies) { for (PlotPlayer<?> player : spies) {
player.sendMessage(spymsg, builder.tag("message", Tag.inserting(Component.text(message))).build()); player.sendMessage(spymsg, worldNameTemplate, plotidTemplate, spysenderTemplate, spymessageTemplate);
} }
} }
if (Settings.Chat.LOG_PLOTCHAT_TO_CONSOLE) { if (Settings.Chat.LOG_PLOTCHAT_TO_CONSOLE) {
Caption spymsg = TranslatableCaption.of("chat.plot_chat_spy_format"); Caption spymsg = TranslatableCaption.of("chat.plot_chat_spy_format");
ConsolePlayer.getConsole().sendMessage( Template plotidTemplate = Template.of("plot_id", id.getX() + ";" + id.getY());
spymsg, Template spysenderTemplate = Template.of("sender", sender);
builder.tag("message", Tag.inserting(Component.text(message))).build() Template spymessageTemplate = Template.of("msg", Component.text(message));
ConsolePlayer.getConsole().sendMessage(spymsg, worldNameTemplate, plotidTemplate, spysenderTemplate,
spymessageTemplate
); );
} }
} }
@ -920,10 +921,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_INTERACT_ROAD)
)
); );
cancelled = true; cancelled = true;
} }
@ -931,10 +929,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)
)
); );
cancelled = true; cancelled = true;
} }
@ -944,10 +939,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_INTERACT_OTHER)
)
); );
cancelled = true; cancelled = true;
} }
@ -985,10 +977,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) { .hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_INTERACT_ROAD)
)
); );
e.setCancelled(true); e.setCancelled(true);
} }
@ -1006,10 +995,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, "plots.admin.interact.unowned")) { if (!Permissions.hasPermission(pp, "plots.admin.interact.unowned")) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)
)
); );
e.setCancelled(true); e.setCancelled(true);
} }
@ -1024,10 +1010,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_INTERACT_OTHER)
)
); );
e.setCancelled(true); e.setCancelled(true);
plot.debug(pp.getName() + " could not interact with " + entity.getType() plot.debug(pp.getName() + " could not interact with " + entity.getType()
@ -1151,8 +1134,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
return; return;
} }
switch (type) { switch (type) {
case ACACIA_BOAT, BIRCH_BOAT, CHEST_MINECART, COMMAND_BLOCK_MINECART, DARK_OAK_BOAT, FURNACE_MINECART, HOPPER_MINECART, JUNGLE_BOAT, MINECART, OAK_BOAT, SPRUCE_BOAT, TNT_MINECART -> case ACACIA_BOAT, BIRCH_BOAT, CHEST_MINECART, COMMAND_BLOCK_MINECART, DARK_OAK_BOAT, FURNACE_MINECART, HOPPER_MINECART, JUNGLE_BOAT, MINECART, OAK_BOAT, SPRUCE_BOAT, TNT_MINECART -> eventType = PlayerBlockEventType.PLACE_VEHICLE;
eventType = PlayerBlockEventType.PLACE_VEHICLE;
case FIREWORK_ROCKET, FIREWORK_STAR -> eventType = PlayerBlockEventType.SPAWN_MOB; case FIREWORK_ROCKET, FIREWORK_STAR -> eventType = PlayerBlockEventType.SPAWN_MOB;
case BOOK, KNOWLEDGE_BOOK, WRITABLE_BOOK, WRITTEN_BOOK -> eventType = PlayerBlockEventType.READ; case BOOK, KNOWLEDGE_BOOK, WRITABLE_BOOK, WRITTEN_BOOK -> eventType = PlayerBlockEventType.READ;
case ARMOR_STAND -> { case ARMOR_STAND -> {
@ -1248,7 +1230,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
} }
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver("node", Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_ROAD)) Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD))
); );
event.setCancelled(true); event.setCancelled(true);
} else if (!plot.hasOwner()) { } else if (!plot.hasOwner()) {
@ -1257,10 +1239,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
} }
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)
)
); );
event.setCancelled(true); event.setCancelled(true);
} else if (!plot.isAdded(pp.getUUID())) { } else if (!plot.isAdded(pp.getUUID())) {
@ -1269,10 +1248,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
} }
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_OTHER)
)
); );
event.setCancelled(true); event.setCancelled(true);
} else if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { } else if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) {
@ -1319,7 +1295,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
} }
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver("node", Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_ROAD)) Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD))
); );
event.setCancelled(true); event.setCancelled(true);
} else if (!plot.hasOwner()) { } else if (!plot.hasOwner()) {
@ -1328,10 +1304,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
} }
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)
)
); );
event.setCancelled(true); event.setCancelled(true);
} else if (!plot.isAdded(plotPlayer.getUUID())) { } else if (!plot.isAdded(plotPlayer.getUUID())) {
@ -1340,10 +1313,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
} }
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_OTHER)
)
); );
event.setCancelled(true); event.setCancelled(true);
} else if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { } else if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) {
@ -1375,10 +1345,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_ROAD)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_ROAD)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_ROAD)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1387,10 +1354,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1401,10 +1365,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BUILD_OTHER)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1433,10 +1394,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_ROAD)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_ROAD)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_ROAD)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1444,10 +1402,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1458,10 +1413,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_OTHER)
)
); );
event.setCancelled(true); event.setCancelled(true);
plot.debug(p.getName() plot.debug(p.getName()
@ -1483,10 +1435,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
.hasPermission(player, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) { .hasPermission(player, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1496,10 +1445,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
.hasPermission(player, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) { .hasPermission(player, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_OTHER)
)
); );
event.setCancelled(true); event.setCancelled(true);
plot.debug(player.getName() plot.debug(player.getName()
@ -1531,10 +1477,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_INTERACT_ROAD)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1542,10 +1485,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1603,10 +1543,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_INTERACT_OTHER)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1628,10 +1565,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD)
)
); );
event.setCancelled(true); event.setCancelled(true);
} }
@ -1640,10 +1574,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED)
)
); );
event.setCancelled(true); event.setCancelled(true);
return; return;
@ -1657,10 +1588,7 @@ public class PlayerEventListener extends PlotListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER)
)
); );
event.setCancelled(true); event.setCancelled(true);
plot.debug(pp.getName() plot.debug(pp.getName()

View File

@ -38,9 +38,7 @@ import com.plotsquared.core.plot.PlotHandler;
import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag; import com.plotsquared.core.plot.flag.implementations.ProjectilesFlag;
import com.plotsquared.core.plot.world.PlotAreaManager; import com.plotsquared.core.plot.world.PlotAreaManager;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -116,10 +114,7 @@ public class ProjectileEventListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)
)
); );
entity.remove(); entity.remove();
event.setCancelled(true); event.setCancelled(true);
@ -128,10 +123,7 @@ public class ProjectileEventListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)
)
); );
entity.remove(); entity.remove();
event.setCancelled(true); event.setCancelled(true);
@ -141,10 +133,7 @@ public class ProjectileEventListener implements Listener {
if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) {
pp.sendMessage( pp.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)
)
); );
entity.remove(); entity.remove();
event.setCancelled(true); event.setCancelled(true);

View File

@ -76,10 +76,11 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator {
private final int totalSize; private final int totalSize;
private final AtomicInteger expectedSize; private final AtomicInteger expectedSize;
private final AtomicInteger loadingChunks = new AtomicInteger(); private final AtomicInteger loadingChunks = new AtomicInteger();
private final boolean forceSync;
private int batchSize; private int batchSize;
private PlotSquaredTask task; private PlotSquaredTask task;
private boolean shouldCancel; private volatile boolean shouldCancel;
private boolean finished; private boolean finished;
@Inject @Inject
@ -92,7 +93,8 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator {
@Assisted final @NonNull Runnable whenDone, @Assisted final @NonNull Runnable whenDone,
@Assisted final @NonNull Consumer<Throwable> throwableConsumer, @Assisted final @NonNull Consumer<Throwable> throwableConsumer,
@Assisted final boolean unloadAfter, @Assisted final boolean unloadAfter,
@Assisted final @NonNull Collection<ProgressSubscriber> progressSubscribers @Assisted final @NonNull Collection<ProgressSubscriber> progressSubscribers,
@Assisted final boolean forceSync
) { ) {
this.requestedChunks = new LinkedBlockingQueue<>(requestedChunks); this.requestedChunks = new LinkedBlockingQueue<>(requestedChunks);
this.availableChunks = new LinkedBlockingQueue<>(); this.availableChunks = new LinkedBlockingQueue<>();
@ -107,14 +109,27 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator {
this.plugin = JavaPlugin.getPlugin(BukkitPlatform.class); this.plugin = JavaPlugin.getPlugin(BukkitPlatform.class);
this.bukkitWorld = Bukkit.getWorld(world.getName()); this.bukkitWorld = Bukkit.getWorld(world.getName());
this.progressSubscribers.addAll(progressSubscribers); this.progressSubscribers.addAll(progressSubscribers);
this.forceSync = forceSync;
} }
@Override @Override
public void start() { public void start() {
if (!forceSync) {
// Request initial batch // Request initial batch
this.requestBatch(); this.requestBatch();
// Wait until next tick to give the chunks a chance to be loaded // Wait until next tick to give the chunks a chance to be loaded
TaskManager.runTaskLater(() -> task = TaskManager.runTaskRepeat(this, TaskTime.ticks(1)), TaskTime.ticks(1)); TaskManager.runTaskLater(() -> task = TaskManager.runTaskRepeat(this, TaskTime.ticks(1)), TaskTime.ticks(1));
} else {
try {
while (!shouldCancel && !requestedChunks.isEmpty()) {
chunkConsumer.accept(requestedChunks.poll());
}
} catch (Throwable t) {
throwableConsumer.accept(t);
} finally {
finish();
}
}
} }
@Override @Override
@ -131,7 +146,9 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator {
for (final ProgressSubscriber subscriber : this.progressSubscribers) { for (final ProgressSubscriber subscriber : this.progressSubscribers) {
subscriber.notifyEnd(); subscriber.notifyEnd();
} }
if (task != null) {
task.cancel(); task.cancel();
}
finished = true; finished = true;
} }
} }

View File

@ -63,10 +63,27 @@ import java.util.function.Consumer;
public class BukkitQueueCoordinator extends BasicQueueCoordinator { public class BukkitQueueCoordinator extends BasicQueueCoordinator {
private final SideEffectSet noSideEffectSet; private static final SideEffectSet NO_SIDE_EFFECT_SET;
private final SideEffectSet lightingSideEffectSet; private static final SideEffectSet EDGE_SIDE_EFFECT_SET;
private final SideEffectSet edgeSideEffectSet; private static final SideEffectSet LIGHTING_SIDE_EFFECT_SET;
private final SideEffectSet edgeLightingSideEffectSet; private static final SideEffectSet EDGE_LIGHTING_SIDE_EFFECT_SET;
static {
NO_SIDE_EFFECT_SET = SideEffectSet.none().with(SideEffect.LIGHTING, SideEffect.State.OFF).with(
SideEffect.NEIGHBORS,
SideEffect.State.OFF
);
EDGE_SIDE_EFFECT_SET = SideEffectSet.none().with(SideEffect.UPDATE, SideEffect.State.ON).with(
SideEffect.NEIGHBORS,
SideEffect.State.ON
);
LIGHTING_SIDE_EFFECT_SET = SideEffectSet.none().with(SideEffect.NEIGHBORS, SideEffect.State.OFF);
EDGE_LIGHTING_SIDE_EFFECT_SET = SideEffectSet.none().with(SideEffect.UPDATE, SideEffect.State.ON).with(
SideEffect.NEIGHBORS,
SideEffect.State.ON
);
}
private org.bukkit.World bukkitWorld; private org.bukkit.World bukkitWorld;
@Inject @Inject
private ChunkCoordinatorBuilderFactory chunkCoordinatorBuilderFactory; private ChunkCoordinatorBuilderFactory chunkCoordinatorBuilderFactory;
@ -77,19 +94,6 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
@Inject @Inject
public BukkitQueueCoordinator(@NonNull World world) { public BukkitQueueCoordinator(@NonNull World world) {
super(world); super(world);
noSideEffectSet = SideEffectSet.none().with(SideEffect.LIGHTING, SideEffect.State.OFF).with(
SideEffect.NEIGHBORS,
SideEffect.State.OFF
);
lightingSideEffectSet = SideEffectSet.none().with(SideEffect.NEIGHBORS, SideEffect.State.OFF);
edgeSideEffectSet = noSideEffectSet.with(SideEffect.UPDATE, SideEffect.State.ON).with(
SideEffect.NEIGHBORS,
SideEffect.State.ON
);
edgeLightingSideEffectSet = noSideEffectSet.with(SideEffect.UPDATE, SideEffect.State.ON).with(
SideEffect.NEIGHBORS,
SideEffect.State.ON
);
} }
@Override @Override
@ -202,7 +206,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
localChunk.getTiles().forEach((blockVector3, tag) -> { localChunk.getTiles().forEach((blockVector3, tag) -> {
try { try {
BaseBlock block = getWorld().getBlock(blockVector3).toBaseBlock(tag); BaseBlock block = getWorld().getBlock(blockVector3).toBaseBlock(tag);
getWorld().setBlock(blockVector3, block, noSideEffectSet); getWorld().setBlock(blockVector3, block, getSideEffectSet(SideEffectState.NONE));
} catch (WorldEditException ignored) { } catch (WorldEditException ignored) {
StateWrapper sw = new StateWrapper(tag); StateWrapper sw = new StateWrapper(tag);
sw.restoreTag(getWorld().getName(), blockVector3.getX(), blockVector3.getY(), blockVector3.getZ()); sw.restoreTag(getWorld().getName(), blockVector3.getX(), blockVector3.getY(), blockVector3.getZ());
@ -259,9 +263,9 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
} }
SideEffectSet sideEffectSet; SideEffectSet sideEffectSet;
if (lighting) { if (lighting) {
sideEffectSet = edge ? edgeLightingSideEffectSet : lightingSideEffectSet; sideEffectSet = getSideEffectSet(edge ? SideEffectState.EDGE_LIGHTING : SideEffectState.LIGHTING);
} else { } else {
sideEffectSet = edge ? edgeSideEffectSet : noSideEffectSet; sideEffectSet = getSideEffectSet(edge ? SideEffectState.EDGE : SideEffectState.NONE);
} }
getWorld().setBlock(loc, block, sideEffectSet); getWorld().setBlock(loc, block, sideEffectSet);
} catch (WorldEditException ignored) { } catch (WorldEditException ignored) {
@ -382,4 +386,23 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
return false; return false;
} }
private SideEffectSet getSideEffectSet(SideEffectState state) {
if (getSideEffectSet() != null) {
return getSideEffectSet();
}
return switch (state) {
case NONE -> NO_SIDE_EFFECT_SET;
case EDGE -> EDGE_SIDE_EFFECT_SET;
case LIGHTING -> LIGHTING_SIDE_EFFECT_SET;
case EDGE_LIGHTING -> EDGE_LIGHTING_SIDE_EFFECT_SET;
};
}
private enum SideEffectState {
NONE,
EDGE,
LIGHTING,
EDGE_LIGHTING
}
} }

View File

@ -0,0 +1,128 @@
/*
* _____ _ _ _____ _
* | __ \| | | | / ____| | |
* | |__) | | ___ | |_| (___ __ _ _ _ __ _ _ __ ___ __| |
* | ___/| |/ _ \| __|\___ \ / _` | | | |/ _` | '__/ _ \/ _` |
* | | | | (_) | |_ ____) | (_| | |_| | (_| | | | __/ (_| |
* |_| |_|\___/ \__|_____/ \__, |\__,_|\__,_|_| \___|\__,_|
* | |
* |_|
* PlotSquared plot management system for Minecraft
* Copyright (C) 2014 - 2022 IntellectualSites
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.plotsquared.bukkit.queue;
import com.plotsquared.bukkit.schematic.StateWrapper;
import com.plotsquared.core.queue.DelegateQueueCoordinator;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockState;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.bukkit.Location;
import org.bukkit.entity.EntityType;
import org.bukkit.generator.LimitedRegion;
import org.checkerframework.checker.nullness.qual.NonNull;
/**
* Wraps a {@link LimitedRegion} inside a {@link com.plotsquared.core.queue.QueueCoordinator} so it can be written to.
*
* @since TODO
*/
public class LimitedRegionWrapperQueue extends DelegateQueueCoordinator {
private static final Logger LOGGER = LogManager.getLogger("PlotSquared/" + LimitedRegionWrapperQueue.class.getSimpleName());
private final LimitedRegion limitedRegion;
/**
* @since TODO
*/
public LimitedRegionWrapperQueue(LimitedRegion limitedRegion) {
super(null);
this.limitedRegion = limitedRegion;
}
@Override
public boolean setBlock(final int x, final int y, final int z, @NonNull final Pattern pattern) {
return setBlock(x, y, z, pattern.applyBlock(BlockVector3.at(x, y, z)));
}
@Override
public boolean setBlock(final int x, final int y, final int z, @NonNull final BaseBlock id) {
boolean result = setBlock(x, y, z, id.toImmutableState());
if (result && id.hasNbtData()) {
CompoundTag tag = id.getNbtData();
StateWrapper sw = new StateWrapper(tag);
try {
sw.restoreTag(limitedRegion.getBlockState(x, y, z).getBlock());
} catch (IllegalArgumentException e) {
LOGGER.error("Error attempting to populate tile entity into the world at location {},{},{}", x, y, z, e);
return false;
}
}
return result;
}
@Override
public boolean setBlock(final int x, final int y, final int z, @NonNull final BlockState id) {
try {
limitedRegion.setType(x, y, z, BukkitAdapter.adapt(id.getBlockType()));
limitedRegion.setBlockData(x, y, z, BukkitAdapter.adapt(id));
} catch (IllegalArgumentException e) {
LOGGER.error("Error attempting to populate block into the world at location {},{},{}", x, y, z, e);
return false;
}
return true;
}
@Override
public boolean setEntity(@NonNull final Entity entity) {
EntityType type = BukkitAdapter.adapt(entity.getState().getType());
double x = entity.getLocation().getX();
double y = entity.getLocation().getY();
double z = entity.getLocation().getZ();
Location location = new Location(limitedRegion.getWorld(), x, y, z);
try {
limitedRegion.spawnEntity(location, type);
} catch (IllegalArgumentException e) {
LOGGER.error("Error attempting to populate entity into the world at location {},{},{}", (int) x, (int) y, (int) z, e);
return false;
}
return true;
}
@Override
public boolean setTile(final int x, final int y, final int z, @NonNull final CompoundTag tag) {
StateWrapper sw = new StateWrapper(tag);
try {
return sw.restoreTag(limitedRegion.getBlockState(x, y, z).getBlock());
} catch (IllegalArgumentException e) {
LOGGER.error("Error attempting to populate tile entity into the world at location {},{},{}", x, y, z, e);
return false;
}
}
@Override
public boolean isSettingTiles() {
return true;
}
}

View File

@ -35,11 +35,13 @@ import com.sk89q.jnbt.Tag;
import com.sk89q.worldedit.blocks.BaseItemStack; import com.sk89q.worldedit.blocks.BaseItemStack;
import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.item.ItemType;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.Container; import org.bukkit.block.Container;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
import org.bukkit.block.Skull;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.InventoryHolder;
@ -57,6 +59,11 @@ public class StateWrapper {
public org.bukkit.block.BlockState state = null; public org.bukkit.block.BlockState state = null;
public CompoundTag tag = null; public CompoundTag tag = null;
/**
* @deprecated in favour of using WE methods for obtaining NBT, specifically by obtaining a
* {@link com.sk89q.worldedit.world.block.BaseBlock} and then using {@link com.sk89q.worldedit.world.block.BaseBlock#getNbtData()}
*/
@Deprecated(forRemoval = true, since = "TODO")
public StateWrapper(org.bukkit.block.BlockState state) { public StateWrapper(org.bukkit.block.BlockState state) {
this.state = state; this.state = state;
} }
@ -230,10 +237,37 @@ public class StateWrapper {
} }
return false; return false;
} }
case "skull" -> {
if (state instanceof Skull skull) {
CompoundTag skullOwner = ((CompoundTag) this.tag.getValue().get("SkullOwner"));
if (skullOwner == null) {
return true;
}
String player = skullOwner.getString("Name");
if (player == null || player.isEmpty()) {
return false;
}
try {
skull.setOwningPlayer(Bukkit.getOfflinePlayer(player));
skull.update(true);
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
return false;
}
} }
return false; return false;
} }
/**
* Get a CompoundTag of the contents of a block's inventory (chest, furnace, etc.).
*
* @deprecated in favour of using WorldEdit methods for obtaining NBT, specifically by obtaining a
* {@link com.sk89q.worldedit.world.block.BaseBlock} and then using {@link com.sk89q.worldedit.world.block.BaseBlock#getNbtData()}
*/
@Deprecated(forRemoval = true, since = "TODO")
public CompoundTag getTag() { public CompoundTag getTag() {
if (this.tag != null) { if (this.tag != null) {
return this.tag; return this.tag;

View File

@ -50,9 +50,7 @@ import com.plotsquared.core.util.EntityUtil;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.entity.EntityCategories; import com.plotsquared.core.util.entity.EntityCategories;
import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.BukkitAdapter;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.entity.Arrow; import org.bukkit.entity.Arrow;
import org.bukkit.entity.Creature; import org.bukkit.entity.Creature;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@ -190,10 +188,7 @@ public class BukkitEntityUtil {
if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY + "." + stub)) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY + "." + stub)) {
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_ADMIN_DESTROY + "." + stub)
"node",
Tag.inserting(Component.text(Permission.PERMISSION_ADMIN_DESTROY + "." + stub))
)
); );
return false; return false;
} }
@ -205,10 +200,7 @@ public class BukkitEntityUtil {
if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY + "." + stub)) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY + "." + stub)) {
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_ADMIN_DESTROY + "." + stub)
"node",
Tag.inserting(Component.text(Permission.PERMISSION_ADMIN_DESTROY + "." + stub))
)
); );
if (plot != null) { if (plot != null) {
plot.debug(player.getName() plot.debug(player.getName()
@ -229,10 +221,7 @@ public class BukkitEntityUtil {
if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) {
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub)
"node",
Tag.inserting(Component.text(Permission.PERMISSION_ADMIN_PVE + "." + stub))
)
); );
if (plot != null) { if (plot != null) {
plot.debug(player.getName() + " could not attack " + entityType plot.debug(player.getName() + " could not attack " + entityType
@ -253,10 +242,7 @@ public class BukkitEntityUtil {
if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) {
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub)
"node",
Tag.inserting(Component.text(Permission.PERMISSION_ADMIN_PVE + "." + stub))
)
); );
if (plot != null) { if (plot != null) {
plot.debug(player.getName() + " could not attack " + entityType plot.debug(player.getName() + " could not attack " + entityType
@ -270,10 +256,7 @@ public class BukkitEntityUtil {
.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVP + "." + stub)) { .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVP + "." + stub)) {
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_ADMIN_PVP + "." + stub)
"node",
Tag.inserting(Component.text(Permission.PERMISSION_ADMIN_PVP + "." + stub))
)
); );
plot.debug(player.getName() + " could not attack " + entityType plot.debug(player.getName() + " could not attack " + entityType
+ " because pve = false"); + " because pve = false");
@ -287,10 +270,7 @@ public class BukkitEntityUtil {
if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVP + "." + stub)) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVP + "." + stub)) {
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_ADMIN_PVP + "." + stub)
"node",
Tag.inserting(Component.text(Permission.PERMISSION_ADMIN_PVP + "." + stub))
)
); );
return false; return false;
} }
@ -307,10 +287,7 @@ public class BukkitEntityUtil {
if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) {
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub)
"node",
Tag.inserting(Component.text(Permission.PERMISSION_ADMIN_PVE + "." + stub))
)
); );
if (plot != null) { if (plot != null) {
plot.debug(player.getName() + " could not attack " + entityType plot.debug(player.getName() + " could not attack " + entityType
@ -332,10 +309,7 @@ public class BukkitEntityUtil {
if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) {
plotPlayer.sendMessage( plotPlayer.sendMessage(
TranslatableCaption.of("permission.no_permission_event"), TranslatableCaption.of("permission.no_permission_event"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub)
"node",
Tag.inserting(Component.text(Permission.PERMISSION_ADMIN_PVE + "." + stub))
)
); );
if (plot != null) { if (plot != null) {
plot.debug(player.getName() + " could not attack " + entityType plot.debug(player.getName() + " could not attack " + entityType

View File

@ -63,7 +63,7 @@ public class BukkitInventoryUtil extends InventoryUtil {
ItemMeta meta = null; ItemMeta meta = null;
if (item.getName() != null) { if (item.getName() != null) {
meta = stack.getItemMeta(); meta = stack.getItemMeta();
Component nameComponent = BukkitUtil.MINI_MESSAGE.deserialize(item.getName()); Component nameComponent = BukkitUtil.MINI_MESSAGE.parse(item.getName());
meta.setDisplayName(BukkitUtil.LEGACY_COMPONENT_SERIALIZER.serialize(nameComponent)); meta.setDisplayName(BukkitUtil.LEGACY_COMPONENT_SERIALIZER.serialize(nameComponent));
} }
if (item.getLore() != null) { if (item.getLore() != null) {

View File

@ -278,7 +278,7 @@ public class BukkitRegionManager extends RegionManager {
int minY = value.getMin().getY(); int minY = value.getMin().getY();
for (int yIndex = 0; yIndex < ids.length; yIndex++) { for (int yIndex = 0; yIndex < ids.length; yIndex++) {
int y = yIndex + minY; int y = yIndex + minY;
BaseBlock id = ids[y]; BaseBlock id = ids[yIndex];
if (id != null) { if (id != null) {
value.setBlock(x1, y, z1, id); value.setBlock(x1, y, z1, id);
} else { } else {

View File

@ -76,7 +76,7 @@ public class BukkitSetupUtils extends SetupUtils {
@Override @Override
public void updateGenerators(final boolean force) { public void updateGenerators(final boolean force) {
if (!SetupUtils.generators.isEmpty() && !force) { if (loaded && !SetupUtils.generators.isEmpty() && !force) {
return; return;
} }
String testWorld = "CheckingPlotSquaredGenerator"; String testWorld = "CheckingPlotSquaredGenerator";
@ -100,6 +100,7 @@ public class BukkitSetupUtils extends SetupUtils {
e.printStackTrace(); e.printStackTrace();
} }
} }
loaded = true;
} }
@Override @Override

View File

@ -52,7 +52,7 @@ import com.sk89q.worldedit.world.block.BlockTypes;
import io.papermc.lib.PaperLib; import io.papermc.lib.PaperLib;
import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -339,7 +339,7 @@ public class BukkitUtil extends WorldUtil {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void setSign( public void setSign(
final @NonNull Location location, final @NonNull Caption[] lines, final @NonNull Location location, final @NonNull Caption[] lines,
final @NonNull TagResolver... replacements final @NonNull Template... replacements
) { ) {
ensureLoaded(location.getWorldName(), location.getX(), location.getZ(), chunk -> { ensureLoaded(location.getWorldName(), location.getX(), location.getZ(), chunk -> {
PlotArea area = location.getPlotArea(); PlotArea area = location.getPlotArea();
@ -372,9 +372,8 @@ public class BukkitUtil extends WorldUtil {
final org.bukkit.block.BlockState blockstate = block.getState(); final org.bukkit.block.BlockState blockstate = block.getState();
if (blockstate instanceof final Sign sign) { if (blockstate instanceof final Sign sign) {
for (int i = 0; i < lines.length; i++) { for (int i = 0; i < lines.length; i++) {
sign.setLine(i, LEGACY_COMPONENT_SERIALIZER.serialize( sign.setLine(i, LEGACY_COMPONENT_SERIALIZER
MINI_MESSAGE.deserialize(lines[i].getComponent(LocaleHolder.console()), replacements) .serialize(MINI_MESSAGE.parse(lines[i].getComponent(LocaleHolder.console()), replacements)));
));
} }
sign.update(true, false); sign.update(true, false);
} }

View File

@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
## Enforcement ## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at contact@alexander-soderberg.com. All reported by contacting the project team at contact@intellectualsites.com. All
complaints will be reviewed and investigated and will result in a response that complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident. obligated to maintain confidentiality with regard to the reporter of an incident.

View File

@ -2,18 +2,18 @@ import java.time.format.DateTimeFormatter
dependencies { dependencies {
// Expected everywhere. // Expected everywhere.
compileOnlyApi(libs.checkerqual) compileOnlyApi("org.checkerframework:checker-qual")
// Minecraft expectations // Minecraft expectations
compileOnlyApi(libs.gson) compileOnlyApi("com.google.code.gson:gson")
compileOnly(libs.guava) compileOnly("com.google.guava:guava")
// Platform expectations // Platform expectations
compileOnlyApi(libs.snakeyaml) compileOnlyApi("org.yaml:snakeyaml")
// Adventure // Adventure
api(libs.adventure) api("net.kyori:adventure-api")
api(libs.minimessage) api("net.kyori:adventure-text-minimessage")
// Guice // Guice
api(libs.guice) { api(libs.guice) {
@ -31,18 +31,18 @@ dependencies {
exclude(group = "dummypermscompat") exclude(group = "dummypermscompat")
} }
testImplementation(libs.worldeditCore) testImplementation(libs.worldeditCore)
compileOnly(libs.fastasyncworldeditCore) { isTransitive = false } compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false }
testImplementation(libs.fastasyncworldeditCore) { isTransitive = false } testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false }
// Logging // Logging
compileOnlyApi(libs.log4j) compileOnlyApi("org.apache.logging.log4j:log4j-api")
// Other libraries // Other libraries
api(libs.prtree) api(libs.prtree)
api(libs.aopalliance) api(libs.aopalliance)
api(libs.cloudServices) api(libs.cloudServices)
api(libs.arkitektonika) api(libs.arkitektonika)
api(libs.paster) api("com.intellectualsites.paster:Paster")
} }
tasks.processResources { tasks.processResources {

View File

@ -37,7 +37,7 @@ import com.plotsquared.core.util.ChunkManager;
import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.SchematicHandler; import com.plotsquared.core.util.SchematicHandler;
import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.PlotQuery;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.kyori.adventure.text.minimessage.Template;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -152,7 +152,7 @@ public class PlotAPI {
*/ */
public void sendConsoleMessage( public void sendConsoleMessage(
final @NonNull String message, final @NonNull String message,
final @NonNull TagResolver @NonNull ... replacements final @NonNull Template @NonNull ... replacements
) { ) {
ConsolePlayer.getConsole().sendMessage(StaticCaption.of(message), replacements); ConsolePlayer.getConsole().sendMessage(StaticCaption.of(message), replacements);
} }
@ -165,7 +165,7 @@ public class PlotAPI {
*/ */
public void sendConsoleMessage( public void sendConsoleMessage(
final @NonNull Caption caption, final @NonNull Caption caption,
final @NonNull TagResolver @NonNull ... replacements final @NonNull Template @NonNull ... replacements
) { ) {
ConsolePlayer.getConsole().sendMessage(caption, replacements); ConsolePlayer.getConsole().sendMessage(caption, replacements);
} }

View File

@ -207,7 +207,7 @@ public class PlayerBackupProfile implements BackupProfile {
if (value) { if (value) {
future.complete(null); future.complete(null);
} else { } else {
future.completeExceptionally(new RuntimeException(MINI_MESSAGE.escapeTags( future.completeExceptionally(new RuntimeException(MINI_MESSAGE.stripTokens(
TranslatableCaption TranslatableCaption
.of("schematics.schematic_paste_failed") .of("schematics.schematic_paste_failed")
.getComponent(ConsolePlayer.getConsole())))); .getComponent(ConsolePlayer.getConsole()))));

View File

@ -31,14 +31,13 @@ import com.google.inject.Inject;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import com.plotsquared.core.PlotSquared; import com.plotsquared.core.PlotSquared;
import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.Settings;
import com.plotsquared.core.configuration.caption.Templates;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.inject.factory.PlayerBackupProfileFactory; import com.plotsquared.core.inject.factory.PlayerBackupProfileFactory;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -108,7 +107,7 @@ public class SimpleBackupManager implements BackupManager {
if (player != null) { if (player != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_automatic_started"), TranslatableCaption.of("backups.backup_automatic_started"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
} }
profile.createBackup().whenComplete((backup, throwable) -> { profile.createBackup().whenComplete((backup, throwable) -> {
@ -116,7 +115,7 @@ public class SimpleBackupManager implements BackupManager {
if (player != null) { if (player != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_automatic_failure"), TranslatableCaption.of("backups.backup_automatic_failure"),
TagResolver.resolver("reason", Tag.inserting(Component.text(throwable.getMessage()))) Templates.of("reason", throwable.getMessage())
); );
} }
throwable.printStackTrace(); throwable.printStackTrace();

View File

@ -38,9 +38,7 @@ import com.plotsquared.core.util.PlayerManager;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Collection; import java.util.Collection;
@ -79,7 +77,7 @@ public class Add extends Command {
TranslatableCaption.of("permission.no_plot_perms") TranslatableCaption.of("permission.no_plot_perms")
); );
checkTrue(args.length == 1, TranslatableCaption.of("commandconfig.command_syntax"), checkTrue(args.length == 1, TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot add <player | *>"))) Template.of("value", "/plot add <player | *>")
); );
final CompletableFuture<Boolean> future = new CompletableFuture<>(); final CompletableFuture<Boolean> future = new CompletableFuture<>();
PlayerManager.getUUIDsFromString(args[0], (uuids, throwable) -> { PlayerManager.getUUIDsFromString(args[0], (uuids, throwable) -> {
@ -89,7 +87,7 @@ public class Add extends Command {
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
} }
future.completeExceptionally(throwable); future.completeExceptionally(throwable);
@ -97,7 +95,7 @@ public class Add extends Command {
} else { } else {
try { try {
checkTrue(!uuids.isEmpty(), TranslatableCaption.of("errors.invalid_player"), checkTrue(!uuids.isEmpty(), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
Iterator<UUID> iterator = uuids.iterator(); Iterator<UUID> iterator = uuids.iterator();
int size = plot.getTrusted().size() + plot.getMembers().size(); int size = plot.getTrusted().size() + plot.getMembers().size();
@ -108,9 +106,7 @@ public class Add extends Command {
.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_TRUST))) { .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_TRUST))) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting( Template.of("value", PlayerManager.resolveName(uuid).getComponent(player))
PlayerManager.resolveName(uuid).toComponent(player)
))
); );
iterator.remove(); iterator.remove();
continue; continue;
@ -118,9 +114,7 @@ public class Add extends Command {
if (plot.isOwner(uuid)) { if (plot.isOwner(uuid)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("member.already_added"), TranslatableCaption.of("member.already_added"),
TagResolver.resolver("player", Tag.inserting( Template.of("player", PlayerManager.resolveName(uuid).getComponent(player))
PlayerManager.resolveName(uuid).toComponent(player)
))
); );
iterator.remove(); iterator.remove();
continue; continue;
@ -128,9 +122,7 @@ public class Add extends Command {
if (plot.getMembers().contains(uuid)) { if (plot.getMembers().contains(uuid)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("member.already_added"), TranslatableCaption.of("member.already_added"),
TagResolver.resolver("player", Tag.inserting( Template.of("player", PlayerManager.resolveName(uuid).getComponent(player))
PlayerManager.resolveName(uuid).toComponent(player)
))
); );
iterator.remove(); iterator.remove();
continue; continue;
@ -143,7 +135,7 @@ public class Add extends Command {
if (localAddSize >= maxAddSize) { if (localAddSize >= maxAddSize) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("members.plot_max_members_added"), TranslatableCaption.of("members.plot_max_members_added"),
TagResolver.resolver("amount", Tag.inserting(Component.text(localAddSize))) Template.of("amount", String.valueOf(localAddSize))
); );
return; return;
} }

View File

@ -35,9 +35,7 @@ import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.util.MathMan; import com.plotsquared.core.util.MathMan;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.PlotQuery;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -101,10 +99,7 @@ public class Alias extends SubCommand {
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ALIAS_SET))
"node",
Tag.inserting(Permission.PERMISSION_ALIAS_SET)
)
); );
} }
} }
@ -120,10 +115,7 @@ public class Alias extends SubCommand {
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ALIAS_REMOVE))
"node",
Tag.inserting(Permission.PERMISSION_ALIAS_REMOVE)
)
); );
} }
} }
@ -164,16 +156,13 @@ public class Alias extends SubCommand {
.anyMatch()) { .anyMatch()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("alias.alias_is_taken"), TranslatableCaption.of("alias.alias_is_taken"),
TagResolver.resolver("alias", Tag.inserting(Component.text(alias))) Template.of("alias", alias)
); );
return; return;
} }
if (Settings.UUID.OFFLINE) { if (Settings.UUID.OFFLINE) {
plot.setAlias(alias); plot.setAlias(alias);
player.sendMessage( player.sendMessage(TranslatableCaption.of("alias.alias_set_to"), Template.of("alias", alias));
TranslatableCaption.of("alias.alias_set_to"),
TagResolver.resolver("alias", Tag.inserting(Component.text(alias)))
);
return; return;
} }
PlotSquared.get().getImpromptuUUIDPipeline().getSingle(alias, ((uuid, throwable) -> { PlotSquared.get().getImpromptuUUIDPipeline().getSingle(alias, ((uuid, throwable) -> {
@ -182,13 +171,13 @@ public class Alias extends SubCommand {
} else if (uuid != null) { } else if (uuid != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("alias.alias_is_taken"), TranslatableCaption.of("alias.alias_is_taken"),
TagResolver.resolver("alias", Tag.inserting(Component.text(alias))) Template.of("alias", alias)
); );
} else { } else {
plot.setAlias(alias); plot.setAlias(alias);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("alias.alias_set_to"), TranslatableCaption.of("alias.alias_set_to"),
TagResolver.resolver("alias", Tag.inserting(Component.text(alias))) Template.of("alias", alias)
); );
} }
})); }));
@ -200,7 +189,7 @@ public class Alias extends SubCommand {
if (!plot.getAlias().isEmpty()) { if (!plot.getAlias().isEmpty()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("alias.alias_removed"), TranslatableCaption.of("alias.alias_removed"),
TagResolver.resolver("alias", Tag.inserting(Component.text(alias))) Template.of("alias", alias)
); );
} else { } else {
player.sendMessage( player.sendMessage(

View File

@ -31,6 +31,7 @@ import com.plotsquared.core.configuration.ConfigurationSection;
import com.plotsquared.core.configuration.ConfigurationUtil; import com.plotsquared.core.configuration.ConfigurationUtil;
import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.Settings;
import com.plotsquared.core.configuration.caption.CaptionHolder; import com.plotsquared.core.configuration.caption.CaptionHolder;
import com.plotsquared.core.configuration.caption.Templates;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.configuration.file.YamlConfiguration; import com.plotsquared.core.configuration.file.YamlConfiguration;
import com.plotsquared.core.events.TeleportCause; import com.plotsquared.core.events.TeleportCause;
@ -75,9 +76,7 @@ import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.io.File; import java.io.File;
@ -149,17 +148,14 @@ public class Area extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_CREATE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_CREATE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_AREA_CREATE))
"node",
Tag.inserting(Permission.PERMISSION_AREA_CREATE)
)
); );
return false; return false;
} }
if (args.length < 2) { if (args.length < 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("single.single_area_needs_name"), TranslatableCaption.of("single.single_area_needs_name"),
TagResolver.resolver("command", Tag.inserting(Component.text("/plot area single <name>"))) Template.of("command", "/plot area single <name>")
); );
return false; return false;
} }
@ -291,7 +287,7 @@ public class Area extends SubCommand {
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.error_create"), TranslatableCaption.of("errors.error_create"),
TagResolver.resolver("world", Tag.inserting(Component.text(hybridPlotWorld.getWorldName()))) Template.of("world", hybridPlotWorld.getWorldName())
); );
} }
}; };
@ -302,10 +298,7 @@ public class Area extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_CREATE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_CREATE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_AREA_CREATE))
"node",
Tag.inserting(Permission.PERMISSION_AREA_CREATE)
)
); );
return false; return false;
} }
@ -313,10 +306,7 @@ public class Area extends SubCommand {
case 1: case 1:
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Templates.of("value", "/plot area create [world[:id]] [<modifier>=<value>]...")
"value",
Tag.inserting(Component.text("/plot area create [world[:id]] [<modifier>=<value>]..."))
)
); );
return false; return false;
case 2: case 2:
@ -330,11 +320,7 @@ public class Area extends SubCommand {
if (area == null) { if (area == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Templates.of("value", "/plot area create [world[:id]] [<modifier>=<value>]...")
"value",
Tag.inserting(Component.text(
"/plot area create [world[:id]] [<modifier>=<value>]..."))
)
); );
return false; return false;
} }
@ -345,18 +331,12 @@ public class Area extends SubCommand {
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("set.set_attribute"), TranslatableCaption.of("set.set_attribute"),
TagResolver.builder() Template.of("attribute", "area_pos1"),
.tag("attribute", Tag.inserting(Component.text("area_pos1"))) Template.of("value", location.getX() + "," + location.getZ())
.tag("value", Tag.inserting(
Component.text(location.getX())
.append(Component.text(","))
.append(Component.text(location.getZ()))
))
.build()
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("area.set_pos2"), TranslatableCaption.of("area.set_pos2"),
TagResolver.resolver("command", Tag.inserting(Component.text("/plot area create pos2"))) Template.of("command", "/plot area create pos2")
); );
return true; return true;
} }
@ -370,11 +350,7 @@ public class Area extends SubCommand {
if (area == null) { if (area == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Templates.of("value", "/plot area create [world[:id]] [<modifier>=<value>]...")
"value",
Tag.inserting(Component.text(
"/plot area create [world[:id]] [<modifier>=<value>]..."))
)
); );
return false; return false;
} }
@ -401,10 +377,7 @@ public class Area extends SubCommand {
if (!areas.isEmpty()) { if (!areas.isEmpty()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_intersection"), TranslatableCaption.of("cluster.cluster_intersection"),
TagResolver.resolver( Template.of("cluster", areas.iterator().next().toString())
"cluster",
Tag.inserting(areas.iterator().next())
)
); );
return false; return false;
} }
@ -443,7 +416,7 @@ public class Area extends SubCommand {
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.error_create"), TranslatableCaption.of("errors.error_create"),
TagResolver.resolver("world", Tag.inserting(Component.text(area.getWorldName()))) Template.of("world", area.getWorldName())
); );
} }
}; };
@ -477,7 +450,7 @@ public class Area extends SubCommand {
if (other != null && Objects.equals(pa.getId(), other.getId())) { if (other != null && Objects.equals(pa.getId(), other.getId())) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("setup.setup_world_taken"), TranslatableCaption.of("setup.setup_world_taken"),
TagResolver.resolver("value", Tag.inserting(Component.text(pa.getId()))) Template.of("value", pa.toString())
); );
return false; return false;
} }
@ -492,13 +465,8 @@ public class Area extends SubCommand {
if (pair.length != 2) { if (pair.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax_extended"), TranslatableCaption.of("commandconfig.command_syntax_extended"),
TagResolver.builder() Template.of("value1,", getCommandString()),
.tag("value1", Tag.inserting(Component.text(getCommandString()))) Template.of("value2", " create [world[:id]] [<modifier>=<value>]...")
.tag(
"value2",
Tag.inserting(Component.text("create [world[:id]] [<modifier>=<value>]..."))
)
.build()
); );
return false; return false;
} }
@ -534,14 +502,8 @@ public class Area extends SubCommand {
default -> { default -> {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax_extended"), TranslatableCaption.of("commandconfig.command_syntax_extended"),
TagResolver.builder() Template.of("value1", getCommandString()),
.tag("value1", Tag.inserting(Component.text(getCommandString()))) Template.of("value2", " create [world[:id]] [<modifier>=<value>]...")
.tag(
"value2",
Tag.inserting(Component.text(
" create [world[:id]] [<modifier>=<value>]..."))
)
.build()
); );
return false; return false;
} }
@ -551,7 +513,7 @@ public class Area extends SubCommand {
if (this.worldUtil.isWorld(pa.getWorldName())) { if (this.worldUtil.isWorld(pa.getWorldName())) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("setup.setup_world_taken"), TranslatableCaption.of("setup.setup_world_taken"),
TagResolver.resolver("value", Tag.inserting(Component.text(pa.getWorldName()))) Template.of("value", pa.getWorldName())
); );
return false; return false;
} }
@ -572,7 +534,7 @@ public class Area extends SubCommand {
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.error_create"), TranslatableCaption.of("errors.error_create"),
TagResolver.resolver("world", Tag.inserting(Component.text(pa.getWorldName()))) Template.of("world", pa.getWorldName())
); );
} }
try { try {
@ -591,18 +553,12 @@ public class Area extends SubCommand {
if (pa.getId() == null) { if (pa.getId() == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage()))) Template.of("value", getUsage())
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax_extended"), TranslatableCaption.of("commandconfig.command_syntax_extended"),
TagResolver.builder() Template.of("value1", getCommandString()),
.tag("value1", Tag.inserting(Component.text(getCommandString()))) Template.of("value2", " create [world[:id]] [<modifier>=<value>]...")
.tag(
"value2",
Tag.inserting(Component.text(
" create [world[:id]] [<modifier>=<value>]..."))
)
.build()
); );
return false; return false;
} }
@ -619,7 +575,7 @@ public class Area extends SubCommand {
metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()).put("area_create_area", pa); metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()).put("area_create_area", pa);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("single.get_position"), TranslatableCaption.of("single.get_position"),
TagResolver.resolver("command", Tag.inserting(Component.text(getCommandString()))) Template.of("command", getCommandString())
); );
break; break;
} }
@ -629,10 +585,7 @@ public class Area extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_INFO)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_INFO)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_AREA_INFO))
"node",
Tag.inserting(Permission.PERMISSION_AREA_INFO)
)
); );
return false; return false;
} }
@ -643,20 +596,15 @@ public class Area extends SubCommand {
default -> { default -> {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax_extended"), TranslatableCaption.of("commandconfig.command_syntax_extended"),
TagResolver.builder() Template.of("value1", getCommandString()),
.tag("value1", Tag.inserting(Component.text(getCommandString()))) Template.of("value2", " info [area]")
.tag("value2", Tag.inserting(Component.text(" info [area]")))
.build()
); );
return false; return false;
} }
} }
if (area == null) { if (area == null) {
if (args.length == 2) { if (args.length == 2) {
player.sendMessage( player.sendMessage(TranslatableCaption.of("errors.not_valid_plot_world"), Template.of("value", args[1]));
TranslatableCaption.of("errors.not_valid_plot_world"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[1])))
);
} else { } else {
player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world")); player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world"));
} }
@ -680,35 +628,42 @@ public class Area extends SubCommand {
percent = claimed == 0 ? 0 : 100d * claimed / Integer.MAX_VALUE; percent = claimed == 0 ? 0 : 100d * claimed / Integer.MAX_VALUE;
region = "N/A"; region = "N/A";
} }
TagResolver resolver = TagResolver.builder() Template headerTemplate = Template.of(
.tag(
"header", "header",
Tag.inserting(TranslatableCaption.of("info.plot_info_header").toComponent(player)) TranslatableCaption.of("info.plot_info_header").getComponent(player)
) );
.tag("name", Tag.inserting(Component.text(name))) Template nameTemplate = Template.of("name", name);
.tag("type", Tag.inserting(Component.text(area.getType().name()))) Template typeTemplate = Template.of("type", area.getType().name());
.tag("terrain", Tag.inserting(Component.text(area.getTerrain().name()))) Template terrainTemplate = Template.of("terrain", area.getTerrain().name());
.tag("usage", Tag.inserting(Component.text(String.format("%.2f", percent)))) Template usageTemplate = Template.of("usage", String.format("%.2f", percent));
.tag("claimed", Tag.inserting(Component.text(claimed))) Template claimedTemplate = Template.of("claimed", String.valueOf(claimed));
.tag("clusters", Tag.inserting(Component.text(clusters))) Template clustersTemplate = Template.of("clusters", String.valueOf(clusters));
.tag("region", Tag.inserting(Component.text(region))) Template regionTemplate = Template.of("region", region);
.tag("generator", Tag.inserting(Component.text(generator))) Template generatorTemplate = Template.of("generator", generator);
.tag( Template footerTemplate = Template.of(
"footer", "footer",
Tag.inserting(TranslatableCaption.of("info.plot_info_footer").toComponent(player)) TranslatableCaption.of("info.plot_info_footer").getComponent(player)
) );
.build(); player.sendMessage(
player.sendMessage(TranslatableCaption.of("info.area_info_format"), resolver); TranslatableCaption.of("info.area_info_format"),
headerTemplate,
nameTemplate,
typeTemplate,
terrainTemplate,
usageTemplate,
claimedTemplate,
clustersTemplate,
regionTemplate,
generatorTemplate,
footerTemplate
);
return true; return true;
} }
case "l", "list" -> { case "l", "list" -> {
if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_LIST)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_LIST)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_AREA_LIST))
"node",
Tag.inserting(Permission.PERMISSION_AREA_LIST)
)
); );
return false; return false;
} }
@ -725,10 +680,8 @@ public class Area extends SubCommand {
default: default:
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax_extended"), TranslatableCaption.of("commandconfig.command_syntax_extended"),
TagResolver.builder() Template.of("value1", getCommandString()),
.tag("value1", Tag.inserting(Component.text(getCommandString()))) Template.of("value2", " list [#]")
.tag("value2", Tag.inserting(Component.text(" list [#]")))
.build()
); );
return false; return false;
} }
@ -754,27 +707,37 @@ public class Area extends SubCommand {
percent = claimed == 0 ? 0 : (double) claimed / Short.MAX_VALUE * Short.MAX_VALUE; percent = claimed == 0 ? 0 : (double) claimed / Short.MAX_VALUE * Short.MAX_VALUE;
region = "N/A"; region = "N/A";
} }
Component tooltip = MINI_MESSAGE.deserialize( Template claimedTemplate = Template.of("claimed", String.valueOf(claimed));
Template usageTemplate = Template.of("usage", String.format("%.2f", percent) + "%");
Template clustersTemplate = Template.of("clusters", String.valueOf(clusters));
Template regionTemplate = Template.of("region", region);
Template generatorTemplate = Template.of("generator", generator);
String tooltip = MINI_MESSAGE.serialize(MINI_MESSAGE
.parse(
TranslatableCaption.of("info.area_list_tooltip").getComponent(player), TranslatableCaption.of("info.area_list_tooltip").getComponent(player),
TagResolver.builder() claimedTemplate,
.tag("claimed", Tag.inserting(Component.text(claimed))) usageTemplate,
.tag("usage", Tag.inserting(Component.text(String.format("%.2f", percent) + "%"))) clustersTemplate,
.tag("clusters", Tag.inserting(Component.text(clusters))) regionTemplate,
.tag("region", Tag.inserting(Component.text(region))) generatorTemplate
.tag("generator", Tag.inserting(Component.text(generator))) ));
.build() Template tooltipTemplate = Template.of("hover_info", tooltip);
); Template visitcmdTemplate = Template.of("command_tp", "/plot area tp " + area);
TagResolver resolver = TagResolver.builder() Template infocmdTemplate = Template.of("command_info", "/plot area info " + area);
.tag("hover_info", Tag.inserting(tooltip)) Template numberTemplate = Template.of("number", String.valueOf(i));
.tag("command_tp", Tag.preProcessParsed("/plot area tp " + name)) Template nameTemplate = Template.of("area_name", name);
.tag("command_info", Tag.preProcessParsed("/plot area info " + name)) Template typeTemplate = Template.of("area_type", area.getType().name());
.tag("number", Tag.inserting(Component.text(i))) Template terrainTemplate = Template.of("area_terrain", area.getTerrain().name());
.tag("area_name", Tag.inserting(Component.text(name)))
.tag("area_type", Tag.inserting(Component.text(area.getType().name())))
.tag("area_terrain", Tag.inserting(Component.text(area.getTerrain().name())))
.build();
caption.set(TranslatableCaption.of("info.area_list_item")); caption.set(TranslatableCaption.of("info.area_list_item"));
caption.setTagResolvers(resolver); caption.setTemplates(
tooltipTemplate,
visitcmdTemplate,
numberTemplate,
nameTemplate,
typeTemplate,
terrainTemplate,
infocmdTemplate
);
} }
}, "/plot area list", TranslatableCaption.of("list.area_list_header_paged")); }, "/plot area list", TranslatableCaption.of("list.area_list_header_paged"));
return true; return true;
@ -783,10 +746,7 @@ public class Area extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_REGEN)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_REGEN)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_AREA_REGEN))
"node",
Tag.inserting(Permission.PERMISSION_AREA_REGEN)
)
); );
return false; return false;
} }
@ -798,7 +758,7 @@ public class Area extends SubCommand {
if (area.getType() != PlotAreaType.PARTIAL) { if (area.getType() != PlotAreaType.PARTIAL) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("single.delete_world_region"), TranslatableCaption.of("single.delete_world_region"),
TagResolver.resolver("world", Tag.inserting(Component.text(area.getWorldName()))) Template.of("world", area.getWorldName())
); );
return false; return false;
} }
@ -819,23 +779,20 @@ public class Area extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_TP)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_TP)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Permission.PERMISSION_AREA_TP)) Template.of("node", String.valueOf(Permission.PERMISSION_AREA_TP))
); );
return false; return false;
} }
if (args.length != 2) { if (args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot area tp [area]"))) Template.of("value", "/plot area tp [area]")
); );
return false; return false;
} }
PlotArea area = this.plotAreaManager.getPlotAreaByString(args[1]); PlotArea area = this.plotAreaManager.getPlotAreaByString(args[1]);
if (area == null) { if (area == null) {
player.sendMessage( player.sendMessage(TranslatableCaption.of("errors.not_valid_plot_world"), Template.of("value", args[1]));
TranslatableCaption.of("errors.not_valid_plot_world"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[1])))
);
return false; return false;
} }
Location center; Location center;

View File

@ -51,9 +51,7 @@ import com.plotsquared.core.util.task.AutoClaimFinishTask;
import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.RunnableVal;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import io.leangen.geantyref.TypeToken; import io.leangen.geantyref.TypeToken;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -119,13 +117,13 @@ public class Auto extends SubCommand {
if (diff < 0 && grantedPlots < sizeX * sizeZ) { if (diff < 0 && grantedPlots < sizeX * sizeZ) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.cant_claim_more_plots"), TranslatableCaption.of("permission.cant_claim_more_plots"),
TagResolver.resolver("amount", Tag.inserting(Component.text(diff + grantedPlots))) Template.of("amount", String.valueOf(diff + grantedPlots))
); );
return false; return false;
} else if (diff >= 0 && grantedPlots + diff < sizeX * sizeZ) { } else if (diff >= 0 && grantedPlots + diff < sizeX * sizeZ) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.cant_claim_more_plots"), TranslatableCaption.of("permission.cant_claim_more_plots"),
TagResolver.resolver("amount", Tag.inserting(Component.text(diff + grantedPlots))) Template.of("amount", String.valueOf(diff + grantedPlots))
); );
return false; return false;
} else { } else {
@ -137,16 +135,15 @@ public class Auto extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.removed_granted_plot"), TranslatableCaption.of("economy.removed_granted_plot"),
TagResolver.builder() Template.of("usedGrants", String.valueOf(grantedPlots - left)),
.tag("usedGrants", Tag.inserting(Component.text(grantedPlots - left))) Template.of("remainingGrants", String.valueOf(left))
.tag("remainingGrants", Tag.inserting(Component.text(left)))
.build()
); );
} }
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.cant_claim_more_plots"), TranslatableCaption.of("permission.cant_claim_more_plots"),
TagResolver.resolver("amount", Tag.inserting(Component.text(player.getAllowedPlots()))) Template.of("amount", String.valueOf(player.getAllowedPlots())
)
); );
return false; return false;
} }
@ -225,7 +222,7 @@ public class Auto extends SubCommand {
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage()))) Template.of("value", getUsage())
); );
return true; return true;
} }
@ -248,7 +245,7 @@ public class Auto extends SubCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Auto claim"))) Template.of("value", "Auto claim")
); );
return true; return true;
} }
@ -259,13 +256,13 @@ public class Auto extends SubCommand {
if (!force && mega && !Permissions.hasPermission(player, Permission.PERMISSION_AUTO_MEGA)) { if (!force && mega && !Permissions.hasPermission(player, Permission.PERMISSION_AUTO_MEGA)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Permission.PERMISSION_AUTO_MEGA)) Template.of("node", String.valueOf(Permission.PERMISSION_AUTO_MEGA))
); );
} }
if (!force && sizeX * sizeZ > Settings.Claim.MAX_AUTO_AREA) { if (!force && sizeX * sizeZ > Settings.Claim.MAX_AUTO_AREA) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.cant_claim_more_plots_num"), TranslatableCaption.of("permission.cant_claim_more_plots_num"),
TagResolver.resolver("amount", Tag.inserting(Component.text(Settings.Claim.MAX_AUTO_AREA))) Template.of("amount", String.valueOf(Settings.Claim.MAX_AUTO_AREA))
); );
return false; return false;
} }
@ -283,10 +280,8 @@ public class Auto extends SubCommand {
if (!plotarea.hasSchematic(schematic)) { if (!plotarea.hasSchematic(schematic)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("schematics.schematic_invalid_named"), TranslatableCaption.of("schematics.schematic_invalid_named"),
TagResolver.builder() Template.of("schemname", schematic),
.tag("schemname", Tag.inserting(Component.text(schematic))) Template.of("reason", "non-existent")
.tag("reason", Tag.inserting(Component.text("non-existent")))
.build()
); );
return true; return true;
} }
@ -297,7 +292,7 @@ public class Auto extends SubCommand {
.hasPermission(player, "plots.admin.command.schematic")) { .hasPermission(player, "plots.admin.command.schematic")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.claim.%s0"))) Template.of("node", "plots.claim.%s0")
); );
return true; return true;
} }
@ -316,20 +311,15 @@ public class Auto extends SubCommand {
if (!force && this.econHandler.getMoney(player) < cost) { if (!force && this.econHandler.getMoney(player) < cost) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.cannot_afford_plot"), TranslatableCaption.of("economy.cannot_afford_plot"),
TagResolver.builder() Template.of("money", this.econHandler.format(cost)),
.tag("money", Tag.inserting(Component.text(this.econHandler.format(cost)))) Template.of("balance", this.econHandler.format(this.econHandler.getMoney(player)))
.tag(
"balance",
Tag.inserting(Component.text(this.econHandler.format(this.econHandler.getMoney(player))))
)
.build()
); );
return false; return false;
} }
this.econHandler.withdrawMoney(player, cost); this.econHandler.withdrawMoney(player, cost);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.removed_balance"), TranslatableCaption.of("economy.removed_balance"),
TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(cost)))) Template.of("money", this.econHandler.format(cost))
); );
} }
} }
@ -363,7 +353,7 @@ public class Auto extends SubCommand {
if (!force && mergeEvent.getEventResult() == Result.DENY) { if (!force && mergeEvent.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Auto merge"))) Template.of("value", "Auto merge")
); );
return false; return false;
} }

View File

@ -37,9 +37,7 @@ import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.nio.file.Files; import java.nio.file.Files;
@ -76,7 +74,7 @@ public final class Backup extends Command {
private static boolean sendMessage(PlotPlayer<?> player) { private static boolean sendMessage(PlotPlayer<?> player) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot backup <save | list | load>"))) Template.of("value", "/plot backup <save | list | load>")
); );
return true; return true;
} }
@ -144,45 +142,34 @@ public final class Backup extends Command {
} else if (!plot.hasOwner()) { } else if (!plot.hasOwner()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver("plot", Tag.inserting( Template.of("plot", TranslatableCaption.of("generic.generic_unowned").getComponent(player))
TranslatableCaption.of("generic.generic_unowned").toComponent(player)
))
); );
} else if (plot.getVolume() > Integer.MAX_VALUE) { } else if (plot.getVolume() > Integer.MAX_VALUE) {
player.sendMessage(TranslatableCaption.of("schematics.schematic_too_large")); player.sendMessage(TranslatableCaption.of("schematics.schematic_too_large"));
} else if (plot.isMerged()) { } else if (plot.isMerged()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver("plot", Tag.inserting( Template.of("plot", TranslatableCaption.of("generic.generic_merged").getComponent(player))
TranslatableCaption.of("generic.generic_merged").toComponent(player)
))
); );
} else if (!plot.isOwner(player.getUUID()) && !Permissions } else if (!plot.isOwner(player.getUUID()) && !Permissions
.hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) { .hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BACKUP_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BACKUP_OTHER)
)
); );
} else { } else {
final BackupProfile backupProfile = Objects.requireNonNull(this.backupManager.getProfile(plot)); final BackupProfile backupProfile = Objects.requireNonNull(this.backupManager.getProfile(plot));
if (backupProfile instanceof NullBackupProfile) { if (backupProfile instanceof NullBackupProfile) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver( Template.of("plot", TranslatableCaption.of("generic.generic_other").getComponent(player))
"plot", Tag.inserting(TranslatableCaption
.of("generic.generic_other")
.toComponent(player))
)
); );
} else { } else {
backupProfile.createBackup().whenComplete((backup, throwable) -> { backupProfile.createBackup().whenComplete((backup, throwable) -> {
if (throwable != null) { if (throwable != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_save_failed"), TranslatableCaption.of("backups.backup_save_failed"),
TagResolver.resolver("reason", Tag.inserting(Component.text(throwable.getMessage()))) Template.of("reason", throwable.getMessage())
); );
throwable.printStackTrace(); throwable.printStackTrace();
} else { } else {
@ -209,16 +196,12 @@ public final class Backup extends Command {
} else if (!plot.hasOwner()) { } else if (!plot.hasOwner()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver("plot", Tag.inserting( Template.of("plot", TranslatableCaption.of("generic.generic_unowned").getComponent(player))
TranslatableCaption.of("generic.generic_unowned").toComponent(player)
))
); );
} else if (plot.isMerged()) { } else if (plot.isMerged()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver("plot", Tag.inserting( Template.of("plot", TranslatableCaption.of("generic.generic_merged").getComponent(player))
TranslatableCaption.of("generic.generic_merged").toComponent(player)
))
); );
} else if (plot.getVolume() > Integer.MAX_VALUE) { } else if (plot.getVolume() > Integer.MAX_VALUE) {
player.sendMessage(TranslatableCaption.of("schematics.schematic_too_large")); player.sendMessage(TranslatableCaption.of("schematics.schematic_too_large"));
@ -226,48 +209,37 @@ public final class Backup extends Command {
.hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) { .hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BACKUP_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BACKUP_OTHER)
)
); );
} else { } else {
final BackupProfile backupProfile = Objects.requireNonNull(this.backupManager.getProfile(plot)); final BackupProfile backupProfile = Objects.requireNonNull(this.backupManager.getProfile(plot));
if (backupProfile instanceof NullBackupProfile) { if (backupProfile instanceof NullBackupProfile) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver("plot", Tag.inserting( Template.of("plot", TranslatableCaption.of("generic.generic_other").getComponent(player))
TranslatableCaption.of("generic.generic_other").toComponent(player)
))
); );
} else { } else {
backupProfile.listBackups().whenComplete((backups, throwable) -> { backupProfile.listBackups().whenComplete((backups, throwable) -> {
if (throwable != null) { if (throwable != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_list_failed"), TranslatableCaption.of("backups.backup_list_failed"),
TagResolver.resolver("reason", Tag.inserting(Component.text(throwable.getMessage()))) Template.of("reason", throwable.getMessage())
); );
throwable.printStackTrace(); throwable.printStackTrace();
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_list_header"), TranslatableCaption.of("backups.backup_list_header"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toCommaSeparatedString()))) Template.of("plot", plot.getId().toCommaSeparatedString())
); );
try { try {
for (int i = 0; i < backups.size(); i++) { for (int i = 0; i < backups.size(); i++) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_list_entry"), TranslatableCaption.of("backups.backup_list_entry"),
TagResolver.builder() Template.of("number", Integer.toString(i + 1)),
.tag("number", Tag.inserting(Component.text(i + 1))) Template.of("value", DateTimeFormatter.RFC_1123_DATE_TIME.format(ZonedDateTime.ofInstant(
.tag(
"value",
Tag.inserting(Component.text(DateTimeFormatter.RFC_1123_DATE_TIME.format(
ZonedDateTime.ofInstant(
Instant.ofEpochMilli(backups.get(i).getCreationTime()), Instant.ofEpochMilli(backups.get(i).getCreationTime()),
ZoneId.systemDefault() ZoneId.systemDefault()
)))) )))
)
.build()
); );
} }
} catch (final Exception e) { } catch (final Exception e) {
@ -295,16 +267,12 @@ public final class Backup extends Command {
} else if (!plot.hasOwner()) { } else if (!plot.hasOwner()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver("plot", Tag.inserting( Template.of("plot", TranslatableCaption.of("generic.generic_unowned").getComponent(player))
TranslatableCaption.of("generic.generic_unowned").toComponent(player)
))
); );
} else if (plot.isMerged()) { } else if (plot.isMerged()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver("plot", Tag.inserting( Template.of("plot", TranslatableCaption.of("generic.generic_merged").getComponent(player))
TranslatableCaption.of("generic.generic_merged").toComponent(player)
))
); );
} else if (plot.getVolume() > Integer.MAX_VALUE) { } else if (plot.getVolume() > Integer.MAX_VALUE) {
player.sendMessage(TranslatableCaption.of("schematics.schematic_too_large")); player.sendMessage(TranslatableCaption.of("schematics.schematic_too_large"));
@ -312,15 +280,12 @@ public final class Backup extends Command {
.hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) { .hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BACKUP_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_BACKUP_OTHER)
)
); );
} else if (args.length == 0) { } else if (args.length == 0) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("Usage: /plot backup save/list/load"))) Template.of("value", "Usage: /plot backup save/list/load")
); );
} else { } else {
final int number; final int number;
@ -329,7 +294,7 @@ public final class Backup extends Command {
} catch (final Exception e) { } catch (final Exception e) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.not_a_number"), TranslatableCaption.of("invalid.not_a_number"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
return; return;
} }
@ -337,27 +302,23 @@ public final class Backup extends Command {
if (backupProfile instanceof NullBackupProfile) { if (backupProfile instanceof NullBackupProfile) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver("plot", Tag.inserting( Template.of("plot", TranslatableCaption.of("generic.generic_other").getComponent(player))
TranslatableCaption.of("generic.generic_other").toComponent(player)
))
); );
} else { } else {
backupProfile.listBackups().whenComplete((backups, throwable) -> { backupProfile.listBackups().whenComplete((backups, throwable) -> {
if (throwable != null) { if (throwable != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_load_failure"), TranslatableCaption.of("backups.backup_load_failure"),
TagResolver.resolver("reason", Tag.inserting(Component.text(throwable.getMessage()))) Template.of("reason", throwable.getMessage())
); );
throwable.printStackTrace(); throwable.printStackTrace();
} else { } else {
if (number < 1 || number > backups.size()) { if (number < 1 || number > backups.size()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver( Template.of(
"plot", "plot",
Tag.inserting(TranslatableCaption TranslatableCaption.of("generic.generic_invalid_choice").getComponent(player)
.of("generic.generic_invalid_choice")
.toComponent(player))
) )
); );
} else { } else {
@ -367,11 +328,9 @@ public final class Backup extends Command {
.exists(backup.getFile())) { .exists(backup.getFile())) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_impossible"), TranslatableCaption.of("backups.backup_impossible"),
TagResolver.resolver( Template.of(
"plot", "plot",
Tag.inserting(TranslatableCaption TranslatableCaption.of("generic.generic_invalid_choice").getComponent(player)
.of("generic.generic_invalid_choice")
.toComponent(player))
) )
); );
} else { } else {
@ -381,10 +340,7 @@ public final class Backup extends Command {
if (error != null) { if (error != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("backups.backup_load_failure"), TranslatableCaption.of("backups.backup_load_failure"),
TagResolver.resolver( Template.of("reason", error.getMessage())
"reason",
Tag.inserting(Component.text(error.getMessage()))
)
); );
} else { } else {
player.sendMessage(TranslatableCaption.of("backups.backup_load_success")); player.sendMessage(TranslatableCaption.of("backups.backup_load_success"));

View File

@ -25,7 +25,6 @@
*/ */
package com.plotsquared.core.command; package com.plotsquared.core.command;
import com.plotsquared.core.configuration.caption.StaticCaption;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Plot;
@ -33,10 +32,7 @@ import com.plotsquared.core.util.StringMan;
import com.sk89q.worldedit.command.util.SuggestionHelper; import com.sk89q.worldedit.command.util.SuggestionHelper;
import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.biome.BiomeTypes;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.Collection; import java.util.Collection;
import java.util.Locale; import java.util.Locale;
@ -58,13 +54,16 @@ public class Biome extends SetCommand {
} catch (final Exception ignore) { } catch (final Exception ignore) {
} }
if (biome == null) { if (biome == null) {
String separator = TranslatableCaption.of("blocklist.block_list_separator").getComponent(player); String biomes = StringMan.join(
BiomeType.REGISTRY.values(),
MINI_MESSAGE.serialize(MINI_MESSAGE.parse(TranslatableCaption
.of("blocklist.block_list_separator")
.getComponent(player)))
);
player.sendMessage(TranslatableCaption.of("biome.need_biome")); player.sendMessage(TranslatableCaption.of("biome.need_biome"));
player.sendMessage( player.sendMessage(
StaticCaption.of( TranslatableCaption.of("commandconfig.subcommand_set_options_header"),
TranslatableCaption.of("commandconfig.subcommand_set_options_header_only").getComponent(player) Template.of("values", biomes)
+ StringMan.join(BiomeType.REGISTRY.values(), separator)
)
); );
return false; return false;
} }
@ -81,7 +80,7 @@ public class Biome extends SetCommand {
plot.removeRunning(); plot.removeRunning();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("biome.biome_set_to"), TranslatableCaption.of("biome.biome_set_to"),
TagResolver.resolver("value", Tag.inserting(Component.text(value.toLowerCase()))) Template.of("value", value.toLowerCase())
); );
}); });
return true; return true;

View File

@ -39,9 +39,7 @@ import com.plotsquared.core.util.EconHandler;
import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Set; import java.util.Set;
@ -93,7 +91,7 @@ public class Buy extends Command {
checkTrue( checkTrue(
player.getPlotCount() + plots.size() <= player.getAllowedPlots(), player.getPlotCount() + plots.size() <= player.getAllowedPlots(),
TranslatableCaption.of("permission.cant_claim_more_plots"), TranslatableCaption.of("permission.cant_claim_more_plots"),
TagResolver.resolver("amount", Tag.inserting(Component.text(player.getAllowedPlots()))) Template.of("amount", String.valueOf(player.getAllowedPlots()))
); );
double price = plot.getFlag(PriceFlag.class); double price = plot.getFlag(PriceFlag.class);
if (price <= 0) { if (price <= 0) {
@ -106,10 +104,8 @@ public class Buy extends Command {
checkTrue( checkTrue(
this.econHandler.getMoney(player) >= price, this.econHandler.getMoney(player) >= price,
TranslatableCaption.of("economy.cannot_afford_plot"), TranslatableCaption.of("economy.cannot_afford_plot"),
TagResolver.builder() Template.of("money", this.econHandler.format(price)),
.tag("money", Tag.inserting(Component.text(this.econHandler.format(price)))) Template.of("balance", this.econHandler.format(this.econHandler.getMoney(player)))
.tag("balance", Tag.inserting(Component.text(this.econHandler.format(this.econHandler.getMoney(player)))))
.build()
); );
this.econHandler.withdrawMoney(player, price); this.econHandler.withdrawMoney(player, price);
// Failure // Failure
@ -117,7 +113,7 @@ public class Buy extends Command {
confirm.run(this, () -> { confirm.run(this, () -> {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.removed_balance"), TranslatableCaption.of("economy.removed_balance"),
TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(price)))) Template.of("money", this.econHandler.format(price))
); );
this.econHandler.depositMoney(PlotSquared.platform().playerManager().getOfflinePlayer(plot.getOwnerAbs()), price); this.econHandler.depositMoney(PlotSquared.platform().playerManager().getOfflinePlayer(plot.getOwnerAbs()), price);
@ -126,11 +122,9 @@ public class Buy extends Command {
if (owner != null) { if (owner != null) {
owner.sendMessage( owner.sendMessage(
TranslatableCaption.of("economy.plot_sold"), TranslatableCaption.of("economy.plot_sold"),
TagResolver.builder() Template.of("plot", plot.getId().toString()),
.tag("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("player", player.getName()),
.tag("player", Tag.inserting(Component.text(player.getName()))) Template.of("price", this.econHandler.format(price))
.tag("price", Tag.inserting(Component.text(this.econHandler.format(price))))
.build()
); );
} }
PlotFlag<?, ?> plotFlag = plot.getFlagContainer().getFlag(PriceFlag.class); PlotFlag<?, ?> plotFlag = plot.getFlagContainer().getFlag(PriceFlag.class);
@ -141,7 +135,7 @@ public class Buy extends Command {
plot.setOwner(player.getUUID()); plot.setOwner(player.getUUID());
player.sendMessage( player.sendMessage(
TranslatableCaption.of("working.claimed"), TranslatableCaption.of("working.claimed"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
whenDone.run(Buy.this, CommandResult.SUCCESS); whenDone.run(Buy.this, CommandResult.SUCCESS);
}, () -> { }, () -> {

View File

@ -37,10 +37,7 @@ import com.plotsquared.core.plot.flag.implementations.MiscCapFlag;
import com.plotsquared.core.plot.flag.implementations.MobCapFlag; import com.plotsquared.core.plot.flag.implementations.MobCapFlag;
import com.plotsquared.core.plot.flag.implementations.VehicleCapFlag; import com.plotsquared.core.plot.flag.implementations.VehicleCapFlag;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.ComponentLike;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import static com.plotsquared.core.util.entity.EntityCategories.CAP_ANIMAL; import static com.plotsquared.core.util.entity.EntityCategories.CAP_ANIMAL;
import static com.plotsquared.core.util.entity.EntityCategories.CAP_ENTITY; import static com.plotsquared.core.util.entity.EntityCategories.CAP_ENTITY;
@ -65,7 +62,7 @@ public class Caps extends SubCommand {
.hasPermission(player, Permission.PERMISSION_ADMIN_CAPS_OTHER)) { .hasPermission(player, Permission.PERMISSION_ADMIN_CAPS_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Permission.PERMISSION_ADMIN_CAPS_OTHER)) Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_CAPS_OTHER))
); );
return false; return false;
} }
@ -92,17 +89,15 @@ public class Caps extends SubCommand {
final int current = countedEntities[type]; final int current = countedEntities[type];
final int max = plot.getFlag(capFlag); final int max = plot.getFlag(capFlag);
final String percentage = String.format("%.1f", 100 * ((float) current / max)); final String percentage = String.format("%.1f", 100 * ((float) current / max));
ComponentLike maxBeautified = max >= Integer.MAX_VALUE String maxBeautified = max >= Integer.MAX_VALUE
? TranslatableCaption.of("info.infinite").toComponent(player) ? TranslatableCaption.of("info.infinite").getComponent(player)
: Component.text(max); : String.valueOf(max);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("info.plot_caps_format"), TranslatableCaption.of("info.plot_caps_format"),
TagResolver.builder() Template.of("cap", name),
.tag("cap", Tag.inserting(Component.text(name))) Template.of("current", String.valueOf(current)),
.tag("current", Tag.inserting(Component.text(current))) Template.of("limit", maxBeautified),
.tag("limit", Tag.inserting(maxBeautified)) Template.of("percentage", percentage)
.tag("percentage", Tag.inserting(Component.text(percentage)))
.build()
); );
} }

View File

@ -28,9 +28,7 @@ package com.plotsquared.core.command;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.PlotArea;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
/** /**
* @deprecated In favor of "/plot toggle chat" and * @deprecated In favor of "/plot toggle chat" and
@ -50,7 +48,7 @@ public class Chat extends SubCommand {
check(area, TranslatableCaption.of("errors.not_in_plot_world")); check(area, TranslatableCaption.of("errors.not_in_plot_world"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.deprecated_commands"), TranslatableCaption.of("errors.deprecated_commands"),
TagResolver.resolver("replacement", Tag.inserting(Component.text("/plot toggle chat"))) Template.of("replacement", "/plot toggle chat")
); );
if (player.getPlotAreaAbs().isForcingPlotChat()) { if (player.getPlotAreaAbs().isForcingPlotChat()) {
player.sendMessage(TranslatableCaption.of("chat.plot_chat_forced")); player.sendMessage(TranslatableCaption.of("chat.plot_chat_forced"));

View File

@ -45,9 +45,7 @@ import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.PlotExpression; import com.plotsquared.core.util.PlotExpression;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@ -91,7 +89,7 @@ public class Claim extends SubCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Claim"))) Template.of("value", "Claim")
); );
return true; return true;
} }
@ -110,14 +108,14 @@ public class Claim extends SubCommand {
if (grants <= 0) { if (grants <= 0) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.cant_claim_more_plots"), TranslatableCaption.of("permission.cant_claim_more_plots"),
TagResolver.resolver("amount", Tag.inserting(Component.text(grants))) Template.of("amount", String.valueOf(grants))
); );
metaDataAccess.remove(); metaDataAccess.remove();
} }
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.cant_claim_more_plots"), TranslatableCaption.of("permission.cant_claim_more_plots"),
TagResolver.resolver("amount", Tag.inserting(Component.text(player.getAllowedPlots()))) Template.of("amount", String.valueOf(player.getAllowedPlots()))
); );
return false; return false;
} }
@ -132,10 +130,8 @@ public class Claim extends SubCommand {
if (!area.hasSchematic(schematic)) { if (!area.hasSchematic(schematic)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("schematics.schematic_invalid_named"), TranslatableCaption.of("schematics.schematic_invalid_named"),
TagResolver.builder() Template.of("schemname", schematic),
.tag("schemname", Tag.inserting(Component.text(schematic))) Template.of("reason", "non-existent")
.tag("reason", Tag.inserting(Component.text("non-existent")))
.build()
); );
} }
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLAIM_SCHEMATIC if (!Permissions.hasPermission(player, Permission.PERMISSION_CLAIM_SCHEMATIC
@ -145,7 +141,7 @@ public class Claim extends SubCommand {
) && !force) { ) && !force) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_schematic_permission"), TranslatableCaption.of("permission.no_schematic_permission"),
TagResolver.resolver("value", Tag.inserting(Component.text(schematic))) Template.of("value", schematic)
); );
} }
} }
@ -161,28 +157,16 @@ public class Claim extends SubCommand {
if (this.econHandler.getMoney(player) < cost) { if (this.econHandler.getMoney(player) < cost) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.cannot_afford_plot"), TranslatableCaption.of("economy.cannot_afford_plot"),
TagResolver.builder() Template.of("money", this.econHandler.format(cost)),
.tag("money", Tag.inserting(Component.text(this.econHandler.format(cost)))) Template.of("balance", this.econHandler.format(this.econHandler.getMoney(player)))
.tag(
"balance",
Tag.inserting(Component.text(this.econHandler.format(this.econHandler.getMoney(
player))))
)
.build()
); );
return false; return false;
} }
this.econHandler.withdrawMoney(player, cost); this.econHandler.withdrawMoney(player, cost);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.removed_balance"), TranslatableCaption.of("economy.removed_balance"),
TagResolver.builder() Template.of("money", this.econHandler.format(cost)),
.tag("money", Tag.inserting(Component.text(this.econHandler.format(cost)))) Template.of("balance", this.econHandler.format(this.econHandler.getMoney(player)))
.tag(
"balance",
Tag.inserting(Component.text(this.econHandler.format(this.econHandler.getMoney(
player))))
)
.build()
); );
} }
} }
@ -194,10 +178,8 @@ public class Claim extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.removed_granted_plot"), TranslatableCaption.of("economy.removed_granted_plot"),
TagResolver.builder() Template.of("usedGrants", String.valueOf((grants - 1))),
.tag("usedGrants", Tag.inserting(Component.text(grants - 1))) Template.of("remainingGrants", String.valueOf(grants))
.tag("remainingGrants", Tag.inserting(Component.text(grants)))
.build()
); );
} }
} }
@ -223,7 +205,7 @@ public class Claim extends SubCommand {
if (mergeEvent.getEventResult() == Result.DENY) { if (mergeEvent.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Auto merge on claim"))) Template.of("value", "Auto merge on claim")
); );
} else { } else {
if (plot.getPlotModificationManager().autoMerge( if (plot.getPlotModificationManager().autoMerge(

View File

@ -43,9 +43,7 @@ import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -88,7 +86,7 @@ public class Clear extends Command {
if (eventResult == Result.DENY) { if (eventResult == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Clear"))) Template.of("value", "Clear")
); );
return CompletableFuture.completedFuture(true); return CompletableFuture.completedFuture(true);
} }
@ -139,10 +137,8 @@ public class Clear extends Command {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("working.clearing_done"), TranslatableCaption.of("working.clearing_done"),
TagResolver.builder() Template.of("amount", String.valueOf(System.currentTimeMillis() - start)),
.tag("amount", Tag.inserting(Component.text(System.currentTimeMillis() - start))) Template.of("plot", plot.getId().toString())
.tag("plot", Tag.inserting(Component.text(plot.getId().toString())))
.build()
); );
}); });
}); });

View File

@ -39,15 +39,10 @@ import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.PlotCluster; import com.plotsquared.core.plot.PlotCluster;
import com.plotsquared.core.plot.PlotId; import com.plotsquared.core.plot.PlotId;
import com.plotsquared.core.util.ComponentHelper;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.PlotQuery;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.Style;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@ -58,7 +53,6 @@ import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
@CommandDeclaration(command = "cluster", @CommandDeclaration(command = "cluster",
aliases = "clusters", aliases = "clusters",
@ -67,19 +61,18 @@ import java.util.stream.Stream;
permission = "plots.cluster") permission = "plots.cluster")
public class Cluster extends SubCommand { public class Cluster extends SubCommand {
private static final Component[] AVAILABLE_ARGS = Stream.of(
"list", "create", "delete", "resize", "invite", "kick", "leave", "helpers", "tp", "sethome"
).map(s -> Component.text(s).style(Style.style(NamedTextColor.DARK_AQUA))).toArray(Component[]::new);
private static final Component SEPARATOR = Component.text(", ").style(Style.style(NamedTextColor.GRAY));
// list, create, delete, resize, invite, kick, leave, helpers, tp, sethome
@Override @Override
public boolean onCommand(PlotPlayer<?> player, String[] args) { public boolean onCommand(PlotPlayer<?> player, String[] args) {
// list, create, delete, resize, invite, kick, leave, helpers, tp, sethome
if (args.length == 0) { if (args.length == 0) {
// return arguments // return arguments
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_available_args"), TranslatableCaption.of("cluster.cluster_available_args"),
TagResolver.resolver("list", Tag.inserting(ComponentHelper.join(AVAILABLE_ARGS, SEPARATOR))) Template.of(
"list",
"<dark_aqua>list</dark_aqua><gray>, </gray><dark_aqua>create</dark_aqua><gray>, </gray><dark_aqua>delete</dark_aqua><gray>, </gray><dark_aqua>resize</dark_aqua><gray>, </gray><dark_aqua>invite</dark_aqua><gray>, </gray><dark_aqua>kick</dark_aqua><gray>, </gray><dark_aqua>leave</dark_aqua><gray>, </gray><dark_aqua>members</dark_aqua><gray>, </gray><dark_aqua>info</dark_aqua><gray>, </gray><dark_aqua>tp</dark_aqua><gray>, </gray><dark_aqua>sethome</dark_aqua>"
)
); );
return false; return false;
} }
@ -90,17 +83,14 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_LIST)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_LIST)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_LIST))
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_LIST)
)
); );
return false; return false;
} }
if (args.length != 1) { if (args.length != 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot cluster list"))) Template.of("value", "/plot cluster list")
); );
return false; return false;
} }
@ -112,7 +102,7 @@ public class Cluster extends SubCommand {
Set<PlotCluster> clusters = area.getClusters(); Set<PlotCluster> clusters = area.getClusters();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_list_heading"), TranslatableCaption.of("cluster.cluster_list_heading"),
TagResolver.resolver("amount", Tag.inserting(Component.text(clusters.size()))) Template.of("amount", clusters.size() + "")
); );
for (PlotCluster cluster : clusters) { for (PlotCluster cluster : clusters) {
// Ignore unmanaged clusters // Ignore unmanaged clusters
@ -120,22 +110,22 @@ public class Cluster extends SubCommand {
if (player.getUUID().equals(cluster.owner)) { if (player.getUUID().equals(cluster.owner)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_list_element_owner"), TranslatableCaption.of("cluster.cluster_list_element_owner"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(name))) Template.of("cluster", name)
); );
} else if (cluster.helpers.contains(player.getUUID())) { } else if (cluster.helpers.contains(player.getUUID())) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_list_element_helpers"), TranslatableCaption.of("cluster.cluster_list_element_helpers"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(name))) Template.of("cluster", name)
); );
} else if (cluster.invited.contains(player.getUUID())) { } else if (cluster.invited.contains(player.getUUID())) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_list_element_invited"), TranslatableCaption.of("cluster.cluster_list_element_invited"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(name))) Template.of("cluster", name)
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_list_element"), TranslatableCaption.of("cluster.cluster_list_element"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(cluster.toString()))) Template.of("cluster", cluster.toString())
); );
} }
} }
@ -146,10 +136,7 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_CREATE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_CREATE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_CREATE))
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_CREATE)
)
); );
return false; return false;
} }
@ -161,10 +148,7 @@ public class Cluster extends SubCommand {
if (args.length != 4) { if (args.length != 4) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot cluster create <name> <id-bot> <id-top>")
"value",
Tag.inserting(Component.text("/plot cluster create <name> <id-bot> <id-top>"))
)
); );
return false; return false;
} }
@ -174,7 +158,7 @@ public class Cluster extends SubCommand {
if (currentClusters >= player.getAllowedPlots()) { if (currentClusters >= player.getAllowedPlots()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.cant_claim_more_clusters"), TranslatableCaption.of("permission.cant_claim_more_clusters"),
TagResolver.resolver("amount", Tag.inserting(Component.text(player.getAllowedPlots()))) Template.of("amount", String.valueOf(player.getAllowedPlots()))
); );
} }
PlotId pos1; PlotId pos1;
@ -192,7 +176,7 @@ public class Cluster extends SubCommand {
if (area.getCluster(name) != null) { if (area.getCluster(name) != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("alias.alias_is_taken"), TranslatableCaption.of("alias.alias_is_taken"),
TagResolver.resolver("alias", Tag.inserting(Component.text(name))) Template.of("alias", name)
); );
return false; return false;
} }
@ -206,7 +190,7 @@ public class Cluster extends SubCommand {
if (cluster != null) { if (cluster != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_intersection"), TranslatableCaption.of("cluster.cluster_intersection"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(cluster.getName()))) Template.of("cluster", cluster.getName())
); );
return false; return false;
} }
@ -214,7 +198,7 @@ public class Cluster extends SubCommand {
if (!area.contains(pos1) || !area.contains(pos2)) { if (!area.contains(pos1) || !area.contains(pos2)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_outside"), TranslatableCaption.of("cluster.cluster_outside"),
TagResolver.resolver("area", Tag.inserting(Component.text(area.toString()))) Template.of("area", String.valueOf(area))
); );
return false; return false;
} }
@ -227,10 +211,7 @@ public class Cluster extends SubCommand {
if (!plot.isOwner(uuid)) { if (!plot.isOwner(uuid)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_CREATE_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_CREATE_OTHER)
)
); );
return false; return false;
} }
@ -252,10 +233,7 @@ public class Cluster extends SubCommand {
if (current + cluster.getArea() > allowed) { if (current + cluster.getArea() > allowed) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_CLUSTER_SIZE + "." + (current + cluster.getArea()))
"node",
Tag.inserting(Component.text(Permission.PERMISSION_CLUSTER_SIZE + "." + (current + cluster.getArea())))
)
); );
return false; return false;
} }
@ -274,7 +252,7 @@ public class Cluster extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_created"), TranslatableCaption.of("cluster.cluster_created"),
TagResolver.resolver("name", Tag.inserting(Component.text(name))) Template.of("name", name)
); );
return true; return true;
} }
@ -284,17 +262,14 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_DELETE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_DELETE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_DELETE))
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_DELETE)
)
); );
return false; return false;
} }
if (args.length != 1 && args.length != 2) { if (args.length != 1 && args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot cluster delete [name]"))) Template.of("value", "/plot cluster delete [name]")
); );
return false; return false;
} }
@ -309,7 +284,7 @@ public class Cluster extends SubCommand {
if (cluster == null) { if (cluster == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.invalid_cluster_name"), TranslatableCaption.of("cluster.invalid_cluster_name"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(args[1]))) Template.of("cluster", args[1])
); );
return false; return false;
} }
@ -325,18 +300,15 @@ public class Cluster extends SubCommand {
.hasPermission(player, Permission.PERMISSION_CLUSTER_DELETE_OTHER)) { .hasPermission(player, Permission.PERMISSION_CLUSTER_DELETE_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_DELETE_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_DELETE_OTHER)
)
); );
return false; return false;
} }
} }
DBFunc.delete(cluster); DBFunc.delete(cluster);
player.sendMessage(TranslatableCaption.of("cluster.cluster_deleted"), TagResolver.resolver( player.sendMessage(TranslatableCaption.of("cluster.cluster_deleted"), Template.of(
"cluster", "cluster",
Tag.inserting(Component.text(cluster.toString())) String.valueOf(cluster)
)); ));
return true; return true;
} }
@ -345,17 +317,14 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_RESIZE))
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_RESIZE)
)
); );
return false; return false;
} }
if (args.length != 3) { if (args.length != 3) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot cluster resize [name]"))) Template.of("value", "/plot cluster resize [name]")
); );
return false; return false;
} }
@ -389,10 +358,7 @@ public class Cluster extends SubCommand {
.hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_OTHER)) { .hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_RESIZE_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_RESIZE_OTHER)
)
); );
return false; return false;
} }
@ -402,12 +368,13 @@ public class Cluster extends SubCommand {
if (intersect != null) { if (intersect != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_intersection"), TranslatableCaption.of("cluster.cluster_intersection"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(intersect.getName()))) Template.of("cluster", intersect.getName())
); );
return false; return false;
} }
Set<Plot> existing = area.getPlotSelectionOwned(cluster.getP1(), cluster.getP2()); Set<Plot> existing = area.getPlotSelectionOwned(cluster.getP1(), cluster.getP2());
Set<Plot> newPlots = area.getPlotSelectionOwned(pos1, pos2); Set<Plot> newPlots = area.getPlotSelectionOwned(pos1, pos2);
// Set<Plot> removed = (HashSet<Plot>) existing.clone();
Set<Plot> removed = new HashSet<>(existing); Set<Plot> removed = new HashSet<>(existing);
removed.removeAll(newPlots); removed.removeAll(newPlots);
@ -417,10 +384,7 @@ public class Cluster extends SubCommand {
.hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_SHRINK)) { .hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_SHRINK)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_RESIZE_SHRINK))
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_RESIZE_SHRINK)
)
); );
return false; return false;
} }
@ -431,10 +395,7 @@ public class Cluster extends SubCommand {
.hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_EXPAND)) { .hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_EXPAND)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_RESIZE_EXPAND))
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_RESIZE_EXPAND)
)
); );
return false; return false;
} }
@ -453,9 +414,7 @@ public class Cluster extends SubCommand {
if (current + cluster.getArea() > allowed) { if (current + cluster.getArea() > allowed) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text( Template.of("node", Permission.PERMISSION_CLUSTER + "." + (current + cluster.getArea()))
Permission.PERMISSION_CLUSTER + "." + (current + cluster.getArea())
)))
); );
return false; return false;
} }
@ -470,17 +429,14 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_INVITE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_INVITE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_INVITE))
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_INVITE)
)
); );
return false; return false;
} }
if (args.length != 2) { if (args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot cluster invite <player>"))) Template.of("value", "/plot cluster invite <player>")
); );
return false; return false;
} }
@ -499,10 +455,7 @@ public class Cluster extends SubCommand {
.hasPermission(player, Permission.PERMISSION_CLUSTER_INVITE_OTHER)) { .hasPermission(player, Permission.PERMISSION_CLUSTER_INVITE_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_CLUSTER_INVITE_OTHER.toString())
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_INVITE_OTHER)
)
); );
return false; return false;
} }
@ -515,7 +468,7 @@ public class Cluster extends SubCommand {
} else if (throwable != null) { } else if (throwable != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[1]))) Template.of("value", args[1])
); );
} else { } else {
if (!cluster.isAdded(uuid)) { if (!cluster.isAdded(uuid)) {
@ -527,7 +480,7 @@ public class Cluster extends SubCommand {
if (otherPlayer != null) { if (otherPlayer != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_invited"), TranslatableCaption.of("cluster.cluster_invited"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(cluster.getName()))) Template.of("cluster", cluster.getName())
); );
} }
} }
@ -542,17 +495,14 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_KICK)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_KICK)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_CLUSTER_KICK.toString())
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_KICK)
)
); );
return false; return false;
} }
if (args.length != 2) { if (args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot cluster kick <player>"))) Template.of("value", "/plot cluster kick <player>")
); );
return false; return false;
} }
@ -570,10 +520,7 @@ public class Cluster extends SubCommand {
.hasPermission(player, Permission.PERMISSION_CLUSTER_KICK_OTHER)) { .hasPermission(player, Permission.PERMISSION_CLUSTER_KICK_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_CLUSTER_KICK_OTHER.toString())
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_KICK_OTHER)
)
); );
return false; return false;
} }
@ -586,7 +533,7 @@ public class Cluster extends SubCommand {
} else if (throwable != null) { } else if (throwable != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[1]))) Template.of("value", args[1])
); );
} else { } else {
// Can't kick if the player is yourself, the owner, or not added to the cluster // Can't kick if the player is yourself, the owner, or not added to the cluster
@ -594,7 +541,7 @@ public class Cluster extends SubCommand {
|| !cluster.isAdded(uuid)) { || !cluster.isAdded(uuid)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cannot_kick_player"), TranslatableCaption.of("cluster.cannot_kick_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(cluster.getName()))) Template.of("value", cluster.getName())
); );
} else { } else {
if (cluster.helpers.contains(uuid)) { if (cluster.helpers.contains(uuid)) {
@ -609,7 +556,7 @@ public class Cluster extends SubCommand {
if (player2 != null) { if (player2 != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_removed"), TranslatableCaption.of("cluster.cluster_removed"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(cluster.getName()))) Template.of("cluster", cluster.getName())
); );
} }
removePlayerPlots(cluster, uuid, player2.getLocation().getWorldName()); removePlayerPlots(cluster, uuid, player2.getLocation().getWorldName());
@ -624,17 +571,14 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_LEAVE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_LEAVE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_CLUSTER_LEAVE.toString())
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_LEAVE)
)
); );
return false; return false;
} }
if (args.length != 1 && args.length != 2) { if (args.length != 1 && args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot cluster leave [name]"))) Template.of("value", "/plot cluster leave [name]")
); );
return false; return false;
} }
@ -648,7 +592,7 @@ public class Cluster extends SubCommand {
if (cluster == null) { if (cluster == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.invalid_cluster_name"), TranslatableCaption.of("cluster.invalid_cluster_name"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(args[1]))) Template.of("cluster", args[1])
); );
return false; return false;
} }
@ -676,7 +620,7 @@ public class Cluster extends SubCommand {
DBFunc.removeInvited(cluster, uuid); DBFunc.removeInvited(cluster, uuid);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_removed"), TranslatableCaption.of("cluster.cluster_removed"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(cluster.getName()))) Template.of("cluster", cluster.getName())
); );
removePlayerPlots(cluster, uuid, player.getLocation().getWorldName()); removePlayerPlots(cluster, uuid, player.getLocation().getWorldName());
return true; return true;
@ -685,20 +629,14 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_HELPERS)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_HELPERS)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_CLUSTER_HELPERS.toString())
"node",
Tag.inserting(Component.text(Permission.PERMISSION_CLUSTER_HELPERS.toString()))
)
); );
return false; return false;
} }
if (args.length != 3) { if (args.length != 3) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot cluster members <add | remove> <player>")
"value",
Tag.inserting(Component.text("/plot cluster members <add | remove> <player>"))
)
); );
return false; return false;
} }
@ -719,7 +657,7 @@ public class Cluster extends SubCommand {
} else if (throwable != null) { } else if (throwable != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[2]))) Template.of("value", args[2])
); );
} else { } else {
if (args[1].equalsIgnoreCase("add")) { if (args[1].equalsIgnoreCase("add")) {
@ -733,9 +671,7 @@ public class Cluster extends SubCommand {
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text( Template.of("value", "/plot cluster members <add | remove> <player>")
"/plot cluster members <add | remove> <player>"
)))
); );
} }
} }
@ -748,17 +684,14 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_TP)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_TP)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_CLUSTER_TP.toString())
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_TP)
)
); );
return false; return false;
} }
if (args.length != 2) { if (args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot cluster tp <name>"))) Template.of("value", "/plot cluster tp <name>")
); );
return false; return false;
} }
@ -771,7 +704,7 @@ public class Cluster extends SubCommand {
if (cluster == null) { if (cluster == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.invalid_cluster_name"), TranslatableCaption.of("cluster.invalid_cluster_name"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(args[1]))) Template.of("cluster", args[1])
); );
return false; return false;
} }
@ -780,10 +713,7 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_TP_OTHER)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_TP_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_CLUSTER_TP_OTHER.toString())
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_TP_OTHER)
)
); );
return false; return false;
} }
@ -799,17 +729,14 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_INFO)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_INFO)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_CLUSTER_TP.toString())
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_TP)
)
); );
return false; return false;
} }
if (args.length != 1 && args.length != 2) { if (args.length != 1 && args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot cluster info [name]"))) Template.of("value", "/plot cluster info [name]")
); );
} }
PlotArea area = player.getApplicablePlotArea(); PlotArea area = player.getApplicablePlotArea();
@ -823,7 +750,7 @@ public class Cluster extends SubCommand {
if (cluster == null) { if (cluster == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.invalid_cluster_name"), TranslatableCaption.of("cluster.invalid_cluster_name"),
TagResolver.resolver("cluster", Tag.inserting(Component.text(args[1]))) Template.of("cluster", args[1])
); );
return false; return false;
} }
@ -852,14 +779,19 @@ public class Cluster extends SubCommand {
cluster.getP2().getY() - cluster.getP1().getY() + 1); cluster.getP2().getY() - cluster.getP1().getY() + 1);
String rights = cluster.isAdded(player.getUUID()) + ""; String rights = cluster.isAdded(player.getUUID()) + "";
Caption message = TranslatableCaption.of("cluster.cluster_info"); Caption message = TranslatableCaption.of("cluster.cluster_info");
TagResolver resolver = TagResolver.builder() Template idTemplate = Template.of("id", id);
.tag("id", Tag.inserting(Component.text(id))) Template ownerTemplate = Template.of("owner", owner);
.tag("owner", Tag.inserting(Component.text(owner))) Template nameTemplate = Template.of("name", name);
.tag("name", Tag.inserting(Component.text(name))) Template sizeTemplate = Template.of("size", size);
.tag("size", Tag.inserting(Component.text(size))) Template rightsTemplate = Template.of("rights", rights);
.tag("rights", Tag.inserting(Component.text(rights))) player.sendMessage(
.build(); message,
player.sendMessage(message, resolver); idTemplate,
ownerTemplate,
nameTemplate,
sizeTemplate,
rightsTemplate
);
} }
}); });
return true; return true;
@ -870,14 +802,14 @@ public class Cluster extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_SETHOME)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_SETHOME)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Permission.PERMISSION_CLUSTER_SETHOME)) Template.of("node", Permission.PERMISSION_CLUSTER_SETHOME.toString())
); );
return false; return false;
} }
if (args.length != 1 && args.length != 2) { if (args.length != 1 && args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot cluster sethome"))) Template.of("value", "/plot cluster sethome")
); );
return false; return false;
} }
@ -895,10 +827,7 @@ public class Cluster extends SubCommand {
.hasPermission(player, Permission.PERMISSION_CLUSTER_SETHOME_OTHER)) { .hasPermission(player, Permission.PERMISSION_CLUSTER_SETHOME_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_CLUSTER_SETHOME_OTHER.toString())
"node",
Tag.inserting(Permission.PERMISSION_CLUSTER_SETHOME_OTHER)
)
); );
return false; return false;
} }
@ -917,7 +846,10 @@ public class Cluster extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cluster_available_args"), TranslatableCaption.of("cluster.cluster_available_args"),
TagResolver.resolver("list", Tag.inserting(ComponentHelper.join(AVAILABLE_ARGS, SEPARATOR))) Template.of(
"list",
"<dark_aqua>list</dark_aqua><gray>, </gray><dark_aqua>create</dark_aqua><gray>, </gray><dark_aqua>delete</dark_aqua><gray>, </gray><dark_aqua>resize</dark_aqua><gray>, </gray><dark_aqua>invite</dark_aqua><gray>, </gray><dark_aqua>kick</dark_aqua><gray>, </gray><dark_aqua>leave</dark_aqua><gray>, </gray><dark_aqua>members</dark_aqua><gray>, </gray><dark_aqua>info</dark_aqua><gray>, </gray><dark_aqua>tp</dark_aqua><gray>, </gray><dark_aqua>sethome</dark_aqua>"
)
); );
return false; return false;
} }

View File

@ -32,9 +32,7 @@ import com.plotsquared.core.player.PlayerMetaDataKeys;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import com.plotsquared.core.util.task.TaskTime; import com.plotsquared.core.util.task.TaskTime;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
public class CmdConfirm { public class CmdConfirm {
@ -61,11 +59,9 @@ public class CmdConfirm {
if (commandStr != null) { if (commandStr != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("confirm.requires_confirm"), TranslatableCaption.of("confirm.requires_confirm"),
TagResolver.builder() Template.of("command", commandStr),
.tag("command", Tag.inserting(Component.text(commandStr))) Template.of("timeout", String.valueOf(Settings.Confirmation.CONFIRMATION_TIMEOUT_SECONDS)),
.tag("timeout", Tag.inserting(Component.text(Settings.Confirmation.CONFIRMATION_TIMEOUT_SECONDS))) Template.of("value", "/plot confirm")
.tag("value", Tag.inserting(Component.text("/plot confirm")))
.build()
); );
} }
TaskManager.runTaskLater(() -> { TaskManager.runTaskLater(() -> {

View File

@ -37,10 +37,8 @@ import com.plotsquared.core.util.StringComparison;
import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.StringMan;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.Tag; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
@ -265,14 +263,10 @@ public abstract class Command {
max = c.size(); max = c.size();
} }
// Send the header // Send the header
player.sendMessage( Template curTemplate = Template.of("cur", String.valueOf(page + 1));
header, Template maxTemplate = Template.of("max", String.valueOf(totalPages + 1));
TagResolver.builder() Template amountTemplate = Template.of("amount", String.valueOf(c.size()));
.tag("cur", Tag.inserting(Component.text(page + 1))) player.sendMessage(header, curTemplate, maxTemplate, amountTemplate);
.tag("max", Tag.inserting(Component.text(totalPages + 1)))
.tag("amount", Tag.inserting(Component.text(c.size())))
.build()
);
// Send the page content // Send the page content
List<T> subList = c.subList(page * size, max); List<T> subList = c.subList(page * size, max);
int i = page * size; int i = page * size;
@ -280,24 +274,13 @@ public abstract class Command {
i++; i++;
final CaptionHolder msg = new CaptionHolder(); final CaptionHolder msg = new CaptionHolder();
add.run(i, obj, msg); add.run(i, obj, msg);
player.sendMessage(msg.get(), msg.getTagResolvers()); player.sendMessage(msg.get(), msg.getTemplates());
} }
// Send the footer // Send the footer
player.sendMessage( Template command1 = Template.of("command1", baseCommand + " " + page);
TranslatableCaption.of("list.page_turn"), Template command2 = Template.of("command2", baseCommand + " " + (page + 2));
TagResolver.builder() Template clickable = Template.of("clickable", TranslatableCaption.of("list.clickable").getComponent(player));
.tag("cur", Tag.inserting(Component.text(page + 1))) player.sendMessage(TranslatableCaption.of("list.page_turn"), command1, command2, clickable);
.tag(
"command1",
Tag.preProcessParsed(baseCommand + " " + page)
)
.tag("command2", Tag.preProcessParsed(baseCommand + " " + (page + 2)))
.tag(
"clickable",
Tag.inserting(TranslatableCaption.of("list.clickable").toComponent(player))
)
.build()
);
} }
/** /**
@ -349,7 +332,7 @@ public abstract class Command {
if (commands.isEmpty()) { if (commands.isEmpty()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.did_you_mean"), TranslatableCaption.of("commandconfig.did_you_mean"),
TagResolver.resolver("value", Tag.inserting(Component.text(MainCommand.getInstance().help.getUsage()))) Template.of("value", MainCommand.getInstance().help.getUsage())
); );
return CompletableFuture.completedFuture(false); return CompletableFuture.completedFuture(false);
} }
@ -370,7 +353,7 @@ public abstract class Command {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.did_you_mean"), TranslatableCaption.of("commandconfig.did_you_mean"),
TagResolver.resolver("value", Tag.inserting(Component.text(cmd.getUsage()))) Template.of("value", cmd.getUsage())
); );
return CompletableFuture.completedFuture(false); return CompletableFuture.completedFuture(false);
} }
@ -405,7 +388,7 @@ public abstract class Command {
// TODO improve or remove the Argument system // TODO improve or remove the Argument system
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(StringMan.join(fullSplit, " ")))) Template.of("value", StringMan.join(fullSplit, " "))
); );
return false; return false;
} }
@ -494,7 +477,7 @@ public abstract class Command {
if (message) { if (message) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text(getPermission()))) Template.of("node", getPermission())
); );
} }
} else { } else {
@ -519,7 +502,7 @@ public abstract class Command {
public void sendUsage(PlotPlayer<?> player) { public void sendUsage(PlotPlayer<?> player) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage()))) Template.of("value", getUsage())
); );
} }
@ -623,13 +606,13 @@ public abstract class Command {
return this.getFullId().hashCode(); return this.getFullId().hashCode();
} }
public void checkTrue(boolean mustBeTrue, Caption message, TagResolver... args) { public void checkTrue(boolean mustBeTrue, Caption message, Template... args) {
if (!mustBeTrue) { if (!mustBeTrue) {
throw new CommandException(message, args); throw new CommandException(message, args);
} }
} }
public <T> T check(T object, Caption message, TagResolver... args) { public <T> T check(T object, Caption message, Template... args) {
if (object == null) { if (object == null) {
throw new CommandException(message, args); throw new CommandException(message, args);
} }
@ -645,10 +628,10 @@ public abstract class Command {
public static class CommandException extends RuntimeException { public static class CommandException extends RuntimeException {
private final Template[] args;
private final Caption message; private final Caption message;
private final TagResolver[] args;
public CommandException(final @Nullable Caption message, final TagResolver... args) { public CommandException(final @Nullable Caption message, final Template... args) {
this.message = message; this.message = message;
this.args = args; this.args = args;
} }

View File

@ -26,7 +26,7 @@
package com.plotsquared.core.command; package com.plotsquared.core.command;
import com.plotsquared.core.configuration.caption.Caption; import com.plotsquared.core.configuration.caption.Caption;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.kyori.adventure.text.minimessage.Template;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
/** /**
@ -41,7 +41,7 @@ public interface CommandCaller {
* @param caption Caption to send * @param caption Caption to send
* @param replacements Variable replacements * @param replacements Variable replacements
*/ */
void sendMessage(@NonNull Caption caption, @NonNull TagResolver... replacements); void sendMessage(@NonNull Caption caption, @NonNull Template... replacements);
/** /**
* Check the player's permissions. <i>Will be cached if permission caching is enabled.</i> * Check the player's permissions. <i>Will be cached if permission caching is enabled.</i>

View File

@ -29,9 +29,6 @@ import com.plotsquared.core.configuration.caption.Caption;
import com.plotsquared.core.configuration.caption.LocaleHolder; import com.plotsquared.core.configuration.caption.LocaleHolder;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.ComponentLike;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
/** /**
@ -100,11 +97,6 @@ public enum CommandCategory implements Caption {
return this.caption.getComponent(localeHolder); return this.caption.getComponent(localeHolder);
} }
@Override
public @NonNull Component toComponent(@NonNull final LocaleHolder localeHolder) {
return MiniMessage.miniMessage().deserialize(getComponent(localeHolder));
}
/** /**
* Checks if a player has access to this command category * Checks if a player has access to this command category
* *

View File

@ -34,9 +34,7 @@ import com.plotsquared.core.plot.comment.CommentInbox;
import com.plotsquared.core.plot.comment.CommentManager; import com.plotsquared.core.plot.comment.CommentManager;
import com.plotsquared.core.plot.comment.PlotComment; import com.plotsquared.core.plot.comment.PlotComment;
import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.StringMan;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.Arrays; import java.util.Arrays;
import java.util.Locale; import java.util.Locale;
@ -53,10 +51,8 @@ public class Comment extends SubCommand {
if (args.length < 2) { if (args.length < 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.comment_syntax"), TranslatableCaption.of("comment.comment_syntax"),
TagResolver.builder() Template.of("command", "/plot comment [X;Z]"),
.tag("command", Tag.inserting(Component.text("/plot comment [X;Z]"))) Template.of("list", StringMan.join(CommentManager.inboxes.keySet(), "|"))
.tag("list", Tag.inserting(Component.text(StringMan.join(CommentManager.inboxes.keySet(), "|"))))
.build()
); );
return false; return false;
} }
@ -75,10 +71,8 @@ public class Comment extends SubCommand {
if (args.length < 3) { if (args.length < 3) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.comment_syntax"), TranslatableCaption.of("comment.comment_syntax"),
TagResolver.builder() Template.of("command", "/plot comment [X;Z]"),
.tag("command", Tag.inserting(Component.text("/plot comment [X;Z]"))) Template.of("list", StringMan.join(CommentManager.inboxes.keySet(), "|"))
.tag("list", Tag.inserting(Component.text(StringMan.join(CommentManager.inboxes.keySet(), "|"))))
.build()
); );
return false; return false;
} }
@ -89,10 +83,8 @@ public class Comment extends SubCommand {
if (inbox == null) { if (inbox == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.comment_syntax"), TranslatableCaption.of("comment.comment_syntax"),
TagResolver.builder() Template.of("command", "/plot comment [X;Z]"),
.tag("command", Tag.inserting(Component.text("/plot comment [X;Z]"))) Template.of("list", StringMan.join(CommentManager.inboxes.keySet(), "|"))
.tag("list", Tag.inserting(Component.text(StringMan.join(CommentManager.inboxes.keySet(), "|"))))
.build()
); );
return false; return false;
} }
@ -112,10 +104,8 @@ public class Comment extends SubCommand {
player.sendMessage(TranslatableCaption.of("comment.no_plot_inbox")); player.sendMessage(TranslatableCaption.of("comment.no_plot_inbox"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.comment_syntax"), TranslatableCaption.of("comment.comment_syntax"),
TagResolver.builder() Template.of("command", "/plot comment [X;Z]"),
.tag("command", Tag.inserting(Component.text("/plot comment [X;Z]"))) Template.of("list", StringMan.join(CommentManager.inboxes.keySet(), "|"))
.tag("list", Tag.inserting(Component.text(StringMan.join(CommentManager.inboxes.keySet(), "|"))))
.build()
); );
return false; return false;
} }

View File

@ -36,9 +36,7 @@ import com.plotsquared.core.util.MathMan;
import com.plotsquared.core.util.WorldUtil; import com.plotsquared.core.util.WorldUtil;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import com.plotsquared.core.util.task.TaskTime; import com.plotsquared.core.util.task.TaskTime;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -77,9 +75,7 @@ public class Condense extends SubCommand {
if (args.length != 2 && args.length != 3) { if (args.length != 2 && args.length != 3) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text( Template.of("value", "/plot condense <area> <start | stop | info> [radius]")
"/plot condense <area> <start | stop | info> [radius]"
)))
); );
return false; return false;
} }
@ -93,10 +89,7 @@ public class Condense extends SubCommand {
if (args.length == 2) { if (args.length == 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot condense" + area + " start <radius>")
"value",
Tag.inserting(Component.text("/plot condense" + area + " start " + "<radius>"))
)
); );
return false; return false;
} }
@ -195,10 +188,8 @@ public class Condense extends SubCommand {
if (result.get()) { if (result.get()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("condense.moving"), TranslatableCaption.of("condense.moving"),
TagResolver.builder() Template.of("origin", String.valueOf(origin)),
.tag("origin", Tag.inserting(Component.text(origin.toString()))) Template.of("possible", String.valueOf(possible))
.tag("possible", Tag.inserting(Component.text(possible.toString())))
.build()
); );
TaskManager.runTaskLater(task, TaskTime.ticks(1L)); TaskManager.runTaskLater(task, TaskTime.ticks(1L));
} }
@ -218,7 +209,7 @@ public class Condense extends SubCommand {
if (i >= free.size()) { if (i >= free.size()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("condense.skipping"), TranslatableCaption.of("condense.skipping"),
TagResolver.resolver("plot", Tag.inserting(Component.text(origin.toString()))) Template.of("plot", String.valueOf(origin))
); );
} }
} }
@ -239,10 +230,7 @@ public class Condense extends SubCommand {
if (args.length == 2) { if (args.length == 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot condense " + area + " info <radius>")
"value",
Tag.inserting(Component.text("/plot condense " + area + " info <radius>"))
)
); );
return false; return false;
} }
@ -263,20 +251,20 @@ public class Condense extends SubCommand {
player.sendMessage(TranslatableCaption.of("condense.default_eval")); player.sendMessage(TranslatableCaption.of("condense.default_eval"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("condense.minimum_radius"), TranslatableCaption.of("condense.minimum_radius"),
TagResolver.resolver("minimumRadius", Tag.inserting(Component.text(minimumRadius))) Template.of("minimumRadius", String.valueOf(minimumRadius))
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("condense.maximum_moved"), TranslatableCaption.of("condense.minimum_radius"),
TagResolver.resolver("maxMove", Tag.inserting(Component.text(maxMove))) Template.of("maxMove", String.valueOf(maxMove))
); );
player.sendMessage(TranslatableCaption.of("condense.input_eval")); player.sendMessage(TranslatableCaption.of("condense.input_eval"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("condense.input_radius"), TranslatableCaption.of("condense.input_radius"),
TagResolver.resolver("radius", Tag.inserting(Component.text(radius))) Template.of("radius", String.valueOf(radius))
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("condense.estimated_moves"), TranslatableCaption.of("condense.estimated_moves"),
TagResolver.resolver("userMove", Tag.inserting(Component.text(userMove))) Template.of("userMove", String.valueOf(userMove))
); );
player.sendMessage(TranslatableCaption.of("condense.eta")); player.sendMessage(TranslatableCaption.of("condense.eta"));
player.sendMessage(TranslatableCaption.of("condense.radius_measured")); player.sendMessage(TranslatableCaption.of("condense.radius_measured"));
@ -285,10 +273,7 @@ public class Condense extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot condense " + area.getWorldName() + " <start | stop | info> [radius]")
"value",
Tag.inserting(Component.text("/plot condense " + area.getWorldName() + " <start | stop | info> [radius]"))
)
); );
return false; return false;
} }

View File

@ -37,9 +37,7 @@ import com.plotsquared.core.plot.flag.PlotFlag;
import com.plotsquared.core.plot.flag.implementations.DoneFlag; import com.plotsquared.core.plot.flag.implementations.DoneFlag;
import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@CommandDeclaration(command = "continue", @CommandDeclaration(command = "continue",
@ -66,9 +64,7 @@ public class Continue extends SubCommand {
.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_CONTINUE)) { .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_CONTINUE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting( Template.of("node", TranslatableCaption.of("permission.no_plot_perms").getComponent(player))
TranslatableCaption.of("permission.no_plot_perms").toComponent(player)
))
); );
return false; return false;
} }
@ -81,7 +77,7 @@ public class Continue extends SubCommand {
< player.getPlotCount() + size)) { < player.getPlotCount() + size)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.cant_claim_more_plots"), TranslatableCaption.of("permission.cant_claim_more_plots"),
TagResolver.resolver("amount", Tag.inserting(Component.text(player.getAllowedPlots()))) Template.of("amount", String.valueOf(player.getAllowedPlots()))
); );
return false; return false;
} }
@ -95,7 +91,7 @@ public class Continue extends SubCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Done flag removal"))) Template.of("value", "Done flag removal")
); );
return true; return true;
} }

View File

@ -31,9 +31,7 @@ import com.plotsquared.core.permissions.Permission;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
@CommandDeclaration(command = "copy", @CommandDeclaration(command = "copy",
permission = "plots.copy", permission = "plots.copy",
@ -59,7 +57,7 @@ public class Copy extends SubCommand {
if (args.length != 1) { if (args.length != 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot copy <X;Z>"))) Template.of("value", "/plot copy <X;Z>")
); );
return false; return false;
} }
@ -78,11 +76,8 @@ public class Copy extends SubCommand {
plot1.getPlotModificationManager().copy(plot2, player).thenAccept(result -> { plot1.getPlotModificationManager().copy(plot2, player).thenAccept(result -> {
if (result) { if (result) {
player.sendMessage(TranslatableCaption.of("move.copy_success"), player.sendMessage(TranslatableCaption.of("move.copy_success"), Template.of("origin", String.valueOf(plot1)),
TagResolver.builder() Template.of("target", String.valueOf(plot2))
.tag("origin", Tag.inserting(Component.text(plot1.toString())))
.tag("target", Tag.inserting(Component.text(plot2.toString())))
.build()
); );
} else { } else {
player.sendMessage(TranslatableCaption.of("move.requires_unowned")); player.sendMessage(TranslatableCaption.of("move.requires_unowned"));

View File

@ -32,9 +32,7 @@ import com.plotsquared.core.generator.HybridUtils;
import com.plotsquared.core.location.Location; import com.plotsquared.core.location.Location;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Plot;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@CommandDeclaration(command = "createroadschematic", @CommandDeclaration(command = "createroadschematic",
@ -70,7 +68,7 @@ public class CreateRoadSchematic extends SubCommand {
this.hybridUtils.setupRoadSchematic(plot); this.hybridUtils.setupRoadSchematic(plot);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("schematics.schematic_road_created"), TranslatableCaption.of("schematics.schematic_road_created"),
TagResolver.resolver("command", Tag.inserting(Component.text("/plot debugroadregen"))) Template.of("command", "/plot debugroadregen")
); );
return true; return true;
} }

View File

@ -47,9 +47,7 @@ import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.FileUtils; import com.plotsquared.core.util.FileUtils;
import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.PlotQuery;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.io.File; import java.io.File;
@ -110,10 +108,7 @@ public class DatabaseCommand extends SubCommand {
if (args.length < 1) { if (args.length < 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot database [area] <sqlite | mysql | import>")
"value",
Tag.inserting(Component.text("/plot database [area] <sqlite | mysql | import>"))
)
); );
return false; return false;
} }
@ -128,7 +123,7 @@ public class DatabaseCommand extends SubCommand {
if (args.length < 1) { if (args.length < 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot database [area] <sqlite|mysql|import>"))) Template.of("value", "/plot database [area] <sqlite|mysql|import>")
); );
player.sendMessage(TranslatableCaption.of("database.arg")); player.sendMessage(TranslatableCaption.of("database.arg"));
return false; return false;
@ -141,10 +136,7 @@ public class DatabaseCommand extends SubCommand {
if (args.length < 2) { if (args.length < 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot database import <sqlite file> [prefix]")
"value",
Tag.inserting(Component.text("/plot database import <sqlite file> [prefix]"))
)
); );
return false; return false;
} }
@ -155,7 +147,7 @@ public class DatabaseCommand extends SubCommand {
if (!file.exists()) { if (!file.exists()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("database.does_not_exist"), TranslatableCaption.of("database.does_not_exist"),
TagResolver.resolver("value", Tag.inserting(Component.text(file.toString()))) Template.of("value", String.valueOf(file))
); );
return false; return false;
} }
@ -199,10 +191,8 @@ public class DatabaseCommand extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("database.skipping_duplicated_plot"), TranslatableCaption.of("database.skipping_duplicated_plot"),
TagResolver.builder() Template.of("plot", String.valueOf(plot)),
.tag("plot", Tag.inserting(Component.text(plot.toString()))) Template.of("id", String.valueOf(plot.temp))
.tag("id", Tag.inserting(Component.text(plot.temp)))
.build()
); );
continue; continue;
} }

View File

@ -41,10 +41,7 @@ import com.plotsquared.core.uuid.UUIDMapping;
import com.sk89q.worldedit.world.entity.EntityType; import com.sk89q.worldedit.world.entity.EntityType;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.format.TextColor;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Collection; import java.util.Collection;
@ -78,10 +75,7 @@ public class Debug extends SubCommand {
if (args.length == 0) { if (args.length == 0) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot debug <loadedchunks | player | debug-players | entitytypes | msg>")
"value",
Tag.inserting(Component.text("/plot debug <loadedchunks | player | debug-players | entitytypes | msg>"))
)
); );
} }
if (args.length > 0) { if (args.length > 0) {
@ -108,7 +102,7 @@ public class Debug extends SubCommand {
final Collection<UUIDMapping> mappings = PlotSquared.get().getImpromptuUUIDPipeline().getAllImmediately(); final Collection<UUIDMapping> mappings = PlotSquared.get().getImpromptuUUIDPipeline().getAllImmediately();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debug.cached_uuids"), TranslatableCaption.of("debug.cached_uuids"),
TagResolver.resolver("value", Tag.inserting(Component.text(mappings.size()))) Template.of("value", String.valueOf(mappings.size()))
); );
return true; return true;
} }
@ -117,7 +111,7 @@ public class Debug extends SubCommand {
for (final PlotPlayer<?> pp : PlotPlayer.getDebugModePlayers()) { for (final PlotPlayer<?> pp : PlotPlayer.getDebugModePlayers()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debug.player_in_debugmode_list"), TranslatableCaption.of("debug.player_in_debugmode_list"),
TagResolver.resolver("value", Tag.inserting(Component.text(pp.getName()))) Template.of("value", pp.getName())
); );
} }
return true; return true;
@ -127,11 +121,10 @@ public class Debug extends SubCommand {
player.sendMessage(TranslatableCaption.of("debug.entity_categories")); player.sendMessage(TranslatableCaption.of("debug.entity_categories"));
EntityCategory.REGISTRY.forEach(category -> { EntityCategory.REGISTRY.forEach(category -> {
final StringBuilder builder = final StringBuilder builder =
new StringBuilder("<gray>-</gray> <gold>").append(category.getId()).append("</gold><gray>: <gold>"); new StringBuilder("§7- §6").append(category.getId()).append("§7: §6");
for (final EntityType entityType : category.getAll()) { for (final EntityType entityType : category.getAll()) {
builder.append(entityType.getId()).append(" "); builder.append(entityType.getId()).append(" ");
} }
builder.append("</gold>");
player.sendMessage(StaticCaption.of("<prefix>" + builder)); player.sendMessage(StaticCaption.of("<prefix>" + builder));
}); });
EntityType.REGISTRY.values().stream().sorted(Comparator.comparing(EntityType::getId)) EntityType.REGISTRY.values().stream().sorted(Comparator.comparing(EntityType::getId))
@ -151,53 +144,28 @@ public class Debug extends SubCommand {
.getCaptionMap(TranslatableCaption.DEFAULT_NAMESPACE) .getCaptionMap(TranslatableCaption.DEFAULT_NAMESPACE)
.getCaptions(); .getCaptions();
TextComponent.Builder information = Component.text(); TextComponent.Builder information = Component.text();
Component header = TranslatableCaption.of("debug.debug_header").toComponent(player) Component header = MINI_MESSAGE.parse(TranslatableCaption.of("debug.debug_header").getComponent(player) + "\n");
.append(Component.newline());
String line = TranslatableCaption.of("debug.debug_line").getComponent(player) + "\n"; String line = TranslatableCaption.of("debug.debug_line").getComponent(player) + "\n";
String section = TranslatableCaption.of("debug.debug_section").getComponent(player) + "\n"; String section = TranslatableCaption.of("debug.debug_section").getComponent(player) + "\n";
information.append(header); information.append(header);
information.append(MINI_MESSAGE.deserialize( information.append(MINI_MESSAGE.parse(section, Template.of("val", "PlotArea")));
section,
TagResolver.resolver("val", Tag.inserting(Component.text("PlotArea")))
));
information.append(MINI_MESSAGE information.append(MINI_MESSAGE
.deserialize( .parse(
line, line,
TagResolver.builder() Template.of("var", "Plot Worlds"),
.tag("var", Tag.inserting(Component.text("Plot Worlds"))) Template.of("val", StringMan.join(this.plotAreaManager.getAllPlotAreas(), ", "))
.tag(
"val",
Tag.inserting(Component.text(StringMan.join(
this.plotAreaManager.getAllPlotAreas(),
", "
)))
)
.build()
)); ));
information.append( information.append(
MINI_MESSAGE.deserialize( MINI_MESSAGE.parse(
line, line,
TagResolver.builder() Template.of("var", "Owned Plots"),
.tag("var", Tag.inserting(Component.text("Owned Plots"))) Template.of("val", String.valueOf(PlotQuery.newQuery().allPlots().count()))
.tag(
"val",
Tag.inserting(Component.text(PlotQuery.newQuery().allPlots().count()))
)
.build()
)); ));
information.append(MINI_MESSAGE.deserialize( information.append(MINI_MESSAGE.parse(section, Template.of("val", "Messages")));
section, information.append(MINI_MESSAGE.parse(
TagResolver.resolver("val", Tag.inserting(Component.text("Messages")))
));
information.append(MINI_MESSAGE.deserialize(
line, line,
TagResolver.builder() Template.of("var", "Total Messages"),
.tag("var", Tag.inserting(Component.text("Total Messages"))) Template.of("val", String.valueOf(captions.size()))
.tag(
"val",
Tag.inserting(Component.text(captions.size()))
)
.build()
)); ));
player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(information.build()))); player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(information.build())));
return true; return true;

View File

@ -43,13 +43,12 @@ import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.StringMan;
import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.PlotQuery;
import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.RunnableVal;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -104,7 +103,7 @@ public class DebugExec extends SubCommand {
if (analysis != null) { if (analysis != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugexec.changes_column"), TranslatableCaption.of("debugexec.changes_column"),
TagResolver.resolver("value", Tag.inserting(Component.text(analysis.changes))) Template.of("value", String.valueOf(analysis.changes))
); );
return true; return true;
} }
@ -114,7 +113,7 @@ public class DebugExec extends SubCommand {
public void run(PlotAnalysis value) { public void run(PlotAnalysis value) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugexec.analyze_done"), TranslatableCaption.of("debugexec.analyze_done"),
TagResolver.resolver("command", Tag.inserting(Component.text("/plot debugexec analyze"))) Template.of("command", "/plot debugexec analyze")
); );
} }
}); });
@ -124,10 +123,7 @@ public class DebugExec extends SubCommand {
if (args.length != 2) { if (args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot debugexec analyze <threshold>")
"value",
Tag.inserting(Component.text("/plot debugexec analyze <threshold>"))
)
); );
player.sendMessage(TranslatableCaption.of("debugexec.threshold_default")); player.sendMessage(TranslatableCaption.of("debugexec.threshold_default"));
return false; return false;
@ -138,7 +134,7 @@ public class DebugExec extends SubCommand {
} catch (NumberFormatException ignored) { } catch (NumberFormatException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugexec.invalid_threshold"), TranslatableCaption.of("debugexec.invalid_threshold"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[1]))) Template.of("value", args[1])
); );
player.sendMessage(TranslatableCaption.of("debugexec.threshold_default_double")); player.sendMessage(TranslatableCaption.of("debugexec.threshold_default_double"));
return false; return false;
@ -172,7 +168,7 @@ public class DebugExec extends SubCommand {
if (args.length != 2) { if (args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot debugexec remove-flag <flag>"))) Template.of("value", "/plot debugexec remove-flag <flag>")
); );
return false; return false;
} }
@ -190,7 +186,7 @@ public class DebugExec extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugexec.cleared_flag"), TranslatableCaption.of("debugexec.cleared_flag"),
TagResolver.resolver("value", Tag.inserting(Component.text(flag))) Template.of("value", flag)
); );
return true; return true;
} }
@ -198,10 +194,7 @@ public class DebugExec extends SubCommand {
if (args.length != 2) { if (args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "Invalid syntax: /plot debugexec start-rgar <world>")
"value",
Tag.inserting(Component.text("Invalid syntax: /plot debugexec start-rgar <world>"))
)
); );
return false; return false;
} }
@ -209,7 +202,7 @@ public class DebugExec extends SubCommand {
if (area == null) { if (area == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.not_valid_plot_world"), TranslatableCaption.of("errors.not_valid_plot_world"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[1]))) Template.of("value", args[1])
); );
return false; return false;
} }

View File

@ -38,9 +38,7 @@ import com.plotsquared.core.inject.annotations.WorldFile;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.util.PremiumVerification; import com.plotsquared.core.util.PremiumVerification;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.io.File; import java.io.File;
@ -140,10 +138,8 @@ public class DebugPaste extends SubCommand {
} catch (IOException ignored) { } catch (IOException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugpaste.latest_log"), TranslatableCaption.of("debugpaste.latest_log"),
TagResolver.builder() Template.of("file", "latest.log"),
.tag("file", Tag.inserting(Component.text("latest.log"))) Template.of("size", "14MB")
.tag("size", Tag.inserting(Component.text("14MB")))
.build()
); );
} }
@ -152,7 +148,7 @@ public class DebugPaste extends SubCommand {
} catch (final IllegalArgumentException ignored) { } catch (final IllegalArgumentException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugpaste.empty_file"), TranslatableCaption.of("debugpaste.empty_file"),
TagResolver.resolver("file", Tag.inserting(Component.text("settings.yml"))) Template.of("file", "settings.yml")
); );
} }
try { try {
@ -160,7 +156,7 @@ public class DebugPaste extends SubCommand {
} catch (final IllegalArgumentException ignored) { } catch (final IllegalArgumentException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugpaste.empty_file"), TranslatableCaption.of("debugpaste.empty_file"),
TagResolver.resolver("file", Tag.inserting(Component.text("worlds.yml"))) Template.of("file", "worlds.yml")
); );
} }
@ -173,7 +169,7 @@ public class DebugPaste extends SubCommand {
} catch (final IOException ignored) { } catch (final IOException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugpaste.skip_multiverse"), TranslatableCaption.of("debugpaste.skip_multiverse"),
TagResolver.resolver("file", Tag.inserting(Component.text("worlds.yml"))) Template.of("file", "worlds.yml")
); );
} }
@ -188,20 +184,20 @@ public class DebugPaste extends SubCommand {
String.format("https://athion.net/ISPaster/paste/view/%s", pasteId); String.format("https://athion.net/ISPaster/paste/view/%s", pasteId);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugpaste.debug_report_created"), TranslatableCaption.of("debugpaste.debug_report_created"),
TagResolver.resolver("url", Tag.preProcessParsed(link)) Template.of("url", link)
); );
} else { } else {
final String responseMessage = jsonObject.get("response").getAsString(); final String responseMessage = jsonObject.get("response").getAsString();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugpaste.creation_failed"), TranslatableCaption.of("debugpaste.creation_failed"),
TagResolver.resolver("value", Tag.inserting(Component.text(responseMessage))) Template.of("value", responseMessage)
); );
} }
} catch (final Throwable throwable) { } catch (final Throwable throwable) {
throwable.printStackTrace(); throwable.printStackTrace();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugpaste.creation_failed"), TranslatableCaption.of("debugpaste.creation_failed"),
TagResolver.resolver("value", Tag.inserting(Component.text(throwable.getMessage()))) Template.of("value", throwable.getMessage())
); );
} }
} catch (IOException e) { } catch (IOException e) {

View File

@ -35,9 +35,7 @@ import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.PlotManager; import com.plotsquared.core.plot.PlotManager;
import com.plotsquared.core.queue.QueueCoordinator; import com.plotsquared.core.queue.QueueCoordinator;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Arrays; import java.util.Arrays;
@ -69,7 +67,7 @@ public class DebugRoadRegen extends SubCommand {
if (args.length < 1) { if (args.length < 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(DebugRoadRegen.USAGE))) Template.of("value", DebugRoadRegen.USAGE)
); );
return false; return false;
} }
@ -89,7 +87,7 @@ public class DebugRoadRegen extends SubCommand {
default: default:
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(DebugRoadRegen.USAGE))) Template.of("value", DebugRoadRegen.USAGE)
); );
return false; return false;
} }
@ -112,11 +110,11 @@ public class DebugRoadRegen extends SubCommand {
queue.setCompleteTask(() -> { queue.setCompleteTask(() -> {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugroadregen.regen_done"), TranslatableCaption.of("debugroadregen.regen_done"),
TagResolver.resolver("value", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("value", plot.getId().toString())
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugroadregen.regen_all"), TranslatableCaption.of("debugroadregen.regen_all"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot regenallroads"))) Template.of("value", "/plot regenallroads")
); );
}); });
manager.createRoadEast(plot, queue); manager.createRoadEast(plot, queue);
@ -135,18 +133,18 @@ public class DebugRoadRegen extends SubCommand {
} catch (NumberFormatException ignored) { } catch (NumberFormatException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.not_valid_number"), TranslatableCaption.of("invalid.not_valid_number"),
TagResolver.resolver("value", Tag.inserting(Component.text("0, 256"))) Template.of("value", "0, 256")
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(DebugRoadRegen.USAGE))) Template.of("value", DebugRoadRegen.USAGE)
); );
return false; return false;
} }
} else if (args.length != 0) { } else if (args.length != 0) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(DebugRoadRegen.USAGE))) Template.of("value", DebugRoadRegen.USAGE)
); );
return false; return false;
} }
@ -164,11 +162,11 @@ public class DebugRoadRegen extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugroadregen.schematic"), TranslatableCaption.of("debugroadregen.schematic"),
TagResolver.resolver("command", Tag.inserting(Component.text("/plot createroadschematic"))) Template.of("command", "/plot createroadschematic")
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugroadregen.regenallroads"), TranslatableCaption.of("debugroadregen.regenallroads"),
TagResolver.resolver("command", Tag.inserting(Component.text("/plot regenallroads"))) Template.of("command", "/plot regenallroads")
); );
boolean result = this.hybridUtils.scheduleSingleRegionRoadUpdate(plot, height); boolean result = this.hybridUtils.scheduleSingleRegionRoadUpdate(plot, height);
if (!result) { if (!result) {

View File

@ -40,9 +40,7 @@ import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.PlotExpression; import com.plotsquared.core.util.PlotExpression;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@ -87,7 +85,7 @@ public class Delete extends SubCommand {
if (eventResult == Result.DENY) { if (eventResult == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Delete"))) Template.of("value", "Delete")
); );
return true; return true;
} }
@ -123,17 +121,14 @@ public class Delete extends SubCommand {
this.econHandler.depositMoney(player, value); this.econHandler.depositMoney(player, value);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.added_balance"), TranslatableCaption.of("economy.added_balance"),
TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(value)))) Template.of("money", this.econHandler.format(value))
); );
} }
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("working.deleting_done"), TranslatableCaption.of("working.deleting_done"),
TagResolver.resolver( Template.of("amount", String.valueOf(System.currentTimeMillis() - start)),
"amount", Template.of("plot", plot.getId().toString())
Tag.inserting(Component.text(String.valueOf(System.currentTimeMillis() - start)))
),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString())))
); );
eventDispatcher.callPostDelete(plot); eventDispatcher.callPostDelete(plot);
}); });

View File

@ -42,9 +42,7 @@ import com.plotsquared.core.util.PlayerManager;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.WorldUtil; import com.plotsquared.core.util.WorldUtil;
import com.sk89q.worldedit.world.gamemode.GameModes; import com.sk89q.worldedit.world.gamemode.GameModes;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Collection; import java.util.Collection;
@ -99,7 +97,7 @@ public class Deny extends SubCommand {
if (size >= maxDenySize) { if (size >= maxDenySize) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("members.plot_max_members_denied"), TranslatableCaption.of("members.plot_max_members_denied"),
TagResolver.resolver("amount", Tag.inserting(Component.text(size))) Template.of("amount", String.valueOf(size))
); );
return false; return false;
} }
@ -110,7 +108,7 @@ public class Deny extends SubCommand {
} else if (throwable != null || uuids.isEmpty()) { } else if (throwable != null || uuids.isEmpty()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
} else { } else {
for (UUID uuid : uuids) { for (UUID uuid : uuids) {
@ -119,7 +117,7 @@ public class Deny extends SubCommand {
.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DENY))) { .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DENY))) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
} else if (plot.isOwner(uuid)) { } else if (plot.isOwner(uuid)) {
player.sendMessage(TranslatableCaption.of("deny.cant_remove_owner")); player.sendMessage(TranslatableCaption.of("deny.cant_remove_owner"));
@ -127,10 +125,7 @@ public class Deny extends SubCommand {
} else if (plot.getDenied().contains(uuid)) { } else if (plot.getDenied().contains(uuid)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("member.already_added"), TranslatableCaption.of("member.already_added"),
TagResolver.resolver( Template.of("player", PlayerManager.resolveName(uuid).getComponent(player))
"player",
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
)
); );
return; return;
} else { } else {
@ -166,6 +161,7 @@ public class Deny extends SubCommand {
} }
private void handleKick(PlotPlayer<?> player, Plot plot) { private void handleKick(PlotPlayer<?> player, Plot plot) {
plot = plot.getBasePlot(false);
if (player == null) { if (player == null) {
return; return;
} }

View File

@ -34,9 +34,7 @@ import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.flag.implementations.DescriptionFlag; import com.plotsquared.core.plot.flag.implementations.DescriptionFlag;
import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.EventDispatcher;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@CommandDeclaration(command = "setdescription", @CommandDeclaration(command = "setdescription",
@ -63,7 +61,7 @@ public class Desc extends SetCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Description removal"))) Template.of("value", "Description removal")
); );
return false; return false;
} }
@ -78,7 +76,7 @@ public class Desc extends SetCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Description set"))) Template.of("value", "Description set")
); );
return false; return false;
} }

View File

@ -43,9 +43,7 @@ import com.plotsquared.core.plot.flag.implementations.DoneFlag;
import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.RunnableVal;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@CommandDeclaration(command = "done", @CommandDeclaration(command = "done",
@ -79,7 +77,7 @@ public class Done extends SubCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Done"))) Template.of("value", "Done")
); );
return true; return true;
} }
@ -100,7 +98,7 @@ public class Done extends SubCommand {
plot.addRunning(); plot.addRunning();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("web.generating_link"), TranslatableCaption.of("web.generating_link"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
final Settings.Auto_Clear doneRequirements = Settings.AUTO_CLEAR.get("done"); final Settings.Auto_Clear doneRequirements = Settings.AUTO_CLEAR.get("done");
if (ExpireManager.IMP == null || doneRequirements == null) { if (ExpireManager.IMP == null || doneRequirements == null) {

View File

@ -41,9 +41,7 @@ import com.plotsquared.core.util.StringMan;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.WorldUtil; import com.plotsquared.core.util.WorldUtil;
import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.RunnableVal;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.net.URL; import java.net.URL;
@ -123,10 +121,7 @@ public class Download extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_DOWNLOAD_WORLD)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_DOWNLOAD_WORLD)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_DOWNLOAD_WORLD.toString())
"node",
Tag.inserting(Permission.PERMISSION_DOWNLOAD_WORLD)
)
); );
return false; return false;
} }
@ -140,24 +135,18 @@ public class Download extends SubCommand {
if (url == null) { if (url == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("web.generating_link_failed"), TranslatableCaption.of("web.generating_link_failed"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
return; return;
} }
player.sendMessage( player.sendMessage(TranslatableCaption.of("web.generation_link_success_legacy_world"), Template.of("url", url.toString()));
TranslatableCaption.of("web.generation_link_success_legacy_world"),
TagResolver.resolver("url", Tag.inserting(Component.text(url.toString())))
);
} }
}); });
} else { } else {
sendUsage(player); sendUsage(player);
return false; return false;
} }
player.sendMessage( player.sendMessage(TranslatableCaption.of("web.generating_link"), Template.of("plot", plot.getId().toString()));
TranslatableCaption.of("web.generating_link"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString())))
);
return true; return true;
} }
@ -201,10 +190,8 @@ public class Download extends SubCommand {
public void run(URL value) { public void run(URL value) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("web.generation_link_success"), TranslatableCaption.of("web.generation_link_success"),
TagResolver.builder() Template.of("download", value.toString()),
.tag("download", Tag.preProcessParsed(value.toString())) Template.of("delete", "Not available")
.tag("delete", Tag.preProcessParsed("Not available"))
.build()
); );
player.sendMessage(StaticCaption.of(value.toString())); player.sendMessage(StaticCaption.of(value.toString()));
} }
@ -218,15 +205,13 @@ public class Download extends SubCommand {
if (throwable != null || !result.isSuccess()) { if (throwable != null || !result.isSuccess()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("web.generating_link_failed"), TranslatableCaption.of("web.generating_link_failed"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("web.generation_link_success"), TranslatableCaption.of("web.generation_link_success"),
TagResolver.builder() Template.of("download", result.getDownloadUrl()),
.tag("download", Tag.preProcessParsed(result.getDownloadUrl())) Template.of("delete", result.getDeletionUrl())
.tag("delete", Tag.preProcessParsed(result.getDeletionUrl()))
.build()
); );
} }
}); });

View File

@ -30,6 +30,7 @@ import com.plotsquared.core.PlotSquared;
import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.Settings;
import com.plotsquared.core.configuration.caption.CaptionUtility; import com.plotsquared.core.configuration.caption.CaptionUtility;
import com.plotsquared.core.configuration.caption.StaticCaption; import com.plotsquared.core.configuration.caption.StaticCaption;
import com.plotsquared.core.configuration.caption.Templates;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.events.PlotFlagAddEvent; import com.plotsquared.core.events.PlotFlagAddEvent;
import com.plotsquared.core.events.PlotFlagRemoveEvent; import com.plotsquared.core.events.PlotFlagRemoveEvent;
@ -54,9 +55,7 @@ import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -93,10 +92,7 @@ public final class FlagCommand extends Command {
private static boolean sendMessage(PlotPlayer<?> player) { private static boolean sendMessage(PlotPlayer<?> player) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot flag <set | remove | add | list | info> <flag> <value>")
"value",
Tag.inserting(Component.text("/plot flag <set | remove | add | list | info> <flag> <value>"))
)
); );
return true; return true;
} }
@ -122,9 +118,9 @@ public final class FlagCommand extends Command {
if (!result) { if (!result) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of(
"node", "node",
Tag.inserting(Component.text(perm + "." + numeric)) perm + "." + numeric
) )
); );
} }
@ -141,21 +137,16 @@ public final class FlagCommand extends Command {
); );
final boolean result = Permissions.hasPermission(player, permission); final boolean result = Permissions.hasPermission(player, permission);
if (!result) { if (!result) {
player.sendMessage( player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", permission));
TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text(permission)))
);
return false; return false;
} }
} }
} catch (final FlagParseException e) { } catch (final FlagParseException e) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("flag.flag_parse_error"), TranslatableCaption.of("flag.flag_parse_error"),
TagResolver.builder() Template.of("flag_name", flag.getName()),
.tag("flag_name", Tag.inserting(Component.text(flag.getName()))) Template.of("flag_value", e.getValue()),
.tag("flag_value", Tag.inserting(Component.text(e.getValue()))) Template.of("error", e.getErrorMessage().getComponent(player))
.tag("error", Tag.inserting(e.getErrorMessage().toComponent(player)))
.build()
); );
return false; return false;
} catch (final Exception e) { } catch (final Exception e) {
@ -172,10 +163,7 @@ public final class FlagCommand extends Command {
perm = basePerm; perm = basePerm;
} }
if (!result) { if (!result) {
player.sendMessage( player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", perm));
TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text(perm)))
);
} }
return result; return result;
} }
@ -200,7 +188,7 @@ public final class FlagCommand extends Command {
.hasPermission(player, Permission.PERMISSION_SET_FLAG_OTHER)) { .hasPermission(player, Permission.PERMISSION_SET_FLAG_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Permission.PERMISSION_SET_FLAG_OTHER)) Template.of("node", String.valueOf(Permission.PERMISSION_SET_FLAG_OTHER))
); );
return false; return false;
} }
@ -235,7 +223,7 @@ public final class FlagCommand extends Command {
if (best != null) { if (best != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("flag.not_valid_flag_suggested"), TranslatableCaption.of("flag.not_valid_flag_suggested"),
TagResolver.resolver("value", Tag.inserting(Component.text(best))) Template.of("value", best)
); );
suggested = true; suggested = true;
} }
@ -344,7 +332,7 @@ public final class FlagCommand extends Command {
if (args.length < 2) { if (args.length < 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot flag set <flag> <value>"))) Template.of("value", "/plot flag set <flag> <value>")
); );
return; return;
} }
@ -357,7 +345,7 @@ public final class FlagCommand extends Command {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Flag set"))) Template.of("value", "Flag set")
); );
return; return;
} }
@ -373,21 +361,15 @@ public final class FlagCommand extends Command {
} catch (final FlagParseException e) { } catch (final FlagParseException e) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("flag.flag_parse_error"), TranslatableCaption.of("flag.flag_parse_error"),
TagResolver.builder() Template.of("flag_name", plotFlag.getName()),
.tag("flag_name", Tag.inserting(Component.text(plotFlag.getName()))) Template.of("flag_value", e.getValue()),
.tag("flag_value", Tag.inserting(Component.text(e.getValue()))) Template.of("error", e.getErrorMessage().getComponent(player))
.tag("error", Tag.inserting(e.getErrorMessage().toComponent(player)))
.build()
); );
return; return;
} }
plot.setFlag(parsed); plot.setFlag(parsed);
player.sendMessage( player.sendMessage(TranslatableCaption.of("flag.flag_added"), Template.of("flag", String.valueOf(args[0])),
TranslatableCaption.of("flag.flag_added"), Template.of("value", String.valueOf(parsed))
TagResolver.builder()
.tag("flag", Tag.inserting(Component.text(args[0])))
.tag("value", Tag.inserting(Component.text(parsed.toString())))
.build()
); );
} }
@ -409,7 +391,7 @@ public final class FlagCommand extends Command {
if (args.length < 2) { if (args.length < 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot flag add <flag> <values>"))) Template.of("value", "/plot flag add <flag> <values>")
); );
return; return;
} }
@ -422,7 +404,7 @@ public final class FlagCommand extends Command {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Flag add"))) Template.of("value", "Flag add")
); );
return; return;
} }
@ -443,11 +425,9 @@ public final class FlagCommand extends Command {
} catch (FlagParseException e) { } catch (FlagParseException e) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("flag.flag_parse_error"), TranslatableCaption.of("flag.flag_parse_error"),
TagResolver.builder() Template.of("flag_name", plotFlag.getName()),
.tag("flag_name", Tag.inserting(Component.text(plotFlag.getName()))) Template.of("flag_value", e.getValue()),
.tag("flag_value", Tag.inserting(Component.text(e.getValue()))) Template.of("error", e.getErrorMessage().getComponent(player))
.tag("error", Tag.inserting(e.getErrorMessage().toComponent(player)))
.build()
); );
return; return;
} }
@ -457,12 +437,8 @@ public final class FlagCommand extends Command {
player.sendMessage(TranslatableCaption.of("flag.flag_not_added")); player.sendMessage(TranslatableCaption.of("flag.flag_not_added"));
return; return;
} }
player.sendMessage( player.sendMessage(TranslatableCaption.of("flag.flag_added"), Template.of("flag", String.valueOf(args[0])),
TranslatableCaption.of("flag.flag_added"), Template.of("value", String.valueOf(parsed))
TagResolver.builder()
.tag("flag", Tag.inserting(Component.text(args[0])))
.tag("value", Tag.inserting(Component.text(parsed.toString())))
.build()
); );
} }
@ -484,7 +460,7 @@ public final class FlagCommand extends Command {
if (args.length != 1 && args.length != 2) { if (args.length != 1 && args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot flag remove <flag> [values]"))) Template.of("value", "/plot flag remove <flag> [values]")
); );
return; return;
} }
@ -497,7 +473,7 @@ public final class FlagCommand extends Command {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Flag remove"))) Template.of("value", "Flag remove")
); );
return; return;
} }
@ -507,10 +483,7 @@ public final class FlagCommand extends Command {
if (args.length != 2) { if (args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_SET_FLAG_KEY.format(args[0].toLowerCase()))
"node",
Tag.inserting(Component.text(Permission.PERMISSION_SET_FLAG_KEY.format(args[0].toLowerCase())))
)
); );
return; return;
} }
@ -525,11 +498,9 @@ public final class FlagCommand extends Command {
} catch (final FlagParseException e) { } catch (final FlagParseException e) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("flag.flag_parse_error"), TranslatableCaption.of("flag.flag_parse_error"),
TagResolver.builder() Template.of("flag_name", flag.getName()),
.tag("flag_name", Tag.inserting(Component.text(flag.getName()))) Template.of("flag_value", e.getValue()),
.tag("flag_value", Tag.inserting(Component.text(e.getValue()))) Template.of("error", String.valueOf(e.getErrorMessage()))
.tag("error", Tag.inserting(e.getErrorMessage().toComponent(player)))
.build()
); );
return; return;
} }
@ -540,13 +511,10 @@ public final class FlagCommand extends Command {
if (list.removeAll((List) parsedFlag.getValue())) { if (list.removeAll((List) parsedFlag.getValue())) {
if (list.isEmpty()) { if (list.isEmpty()) {
if (plot.removeFlag(flag)) { if (plot.removeFlag(flag)) {
player.sendMessage( player.sendMessage(TranslatableCaption.of("flag.flag_removed"), Template.of("flag", args[0]), Template.of(
TranslatableCaption.of("flag.flag_removed"), "value",
TagResolver.builder() String.valueOf(flag)
.tag("flag", Tag.inserting(Component.text(args[0]))) ));
.tag("value", Tag.inserting(Component.text(flag.toString())))
.build()
);
return; return;
} else { } else {
player.sendMessage(TranslatableCaption.of("flag.flag_not_removed")); player.sendMessage(TranslatableCaption.of("flag.flag_not_removed"));
@ -558,10 +526,7 @@ public final class FlagCommand extends Command {
if (addEvent.getEventResult() == Result.DENY) { if (addEvent.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver( Template.of("value", "Re-addition of " + plotFlag.getName())
"value",
Tag.inserting(Component.text("Re-addition of " + plotFlag.getName()))
)
); );
return; return;
} }
@ -584,13 +549,10 @@ public final class FlagCommand extends Command {
return; return;
} }
} }
player.sendMessage( player.sendMessage(TranslatableCaption.of("flag.flag_removed"), Template.of("flag", args[0]), Template.of(
TranslatableCaption.of("flag.flag_removed"), "value",
TagResolver.builder() String.valueOf(flag)
.tag("flag", Tag.inserting(Component.text(args[0]))) ));
.tag("value", Tag.inserting(Component.text(flag.toString())))
.build()
);
} }
@CommandDeclaration(command = "list", @CommandDeclaration(command = "list",
@ -608,35 +570,34 @@ public final class FlagCommand extends Command {
return; return;
} }
final Map<Component, ArrayList<String>> flags = new HashMap<>(); final Map<String, ArrayList<String>> flags = new HashMap<>();
for (PlotFlag<?, ?> plotFlag : GlobalFlagContainer.getInstance().getRecognizedPlotFlags()) { for (PlotFlag<?, ?> plotFlag : GlobalFlagContainer.getInstance().getRecognizedPlotFlags()) {
if (plotFlag instanceof InternalFlag) { if (plotFlag instanceof InternalFlag) {
continue; continue;
} }
final Component category = plotFlag.getFlagCategory().toComponent(player); final String category = MINI_MESSAGE.stripTokens(plotFlag.getFlagCategory().getComponent(player));
final Collection<String> flagList = flags.computeIfAbsent(category, k -> new ArrayList<>()); final Collection<String> flagList =
flags.computeIfAbsent(category, k -> new ArrayList<>());
flagList.add(plotFlag.getName()); flagList.add(plotFlag.getName());
} }
for (final Map.Entry<Component, ArrayList<String>> entry : flags.entrySet()) { for (final Map.Entry<String, ArrayList<String>> entry : flags.entrySet()) {
Collections.sort(entry.getValue()); Collections.sort(entry.getValue());
Component category = Component category =
MINI_MESSAGE.deserialize( MINI_MESSAGE.parse(
TranslatableCaption.of("flag.flag_list_categories").getComponent(player), TranslatableCaption.of("flag.flag_list_categories").getComponent(player),
TagResolver.resolver("category", Tag.inserting(entry.getKey().style(Style.empty()))) Template.of("category", entry.getKey())
); );
TextComponent.Builder builder = Component.text().append(category); TextComponent.Builder builder = Component.text().append(category);
final Iterator<String> flagIterator = entry.getValue().iterator(); final Iterator<String> flagIterator = entry.getValue().iterator();
while (flagIterator.hasNext()) { while (flagIterator.hasNext()) {
final String flag = flagIterator.next(); final String flag = flagIterator.next();
builder.append(MINI_MESSAGE builder.append(MINI_MESSAGE
.deserialize( .parse(
TranslatableCaption.of("flag.flag_list_flag").getComponent(player), TranslatableCaption.of("flag.flag_list_flag").getComponent(player),
TagResolver.builder() Template.of("command", "/plot flag info " + flag),
.tag("command", Tag.preProcessParsed("/plot flag info " + flag)) Template.of("flag", flag),
.tag("flag", Tag.inserting(Component.text(flag))) Template.of("suffix", flagIterator.hasNext() ? ", " : "")
.tag("suffix", Tag.inserting(Component.text(flagIterator.hasNext() ? ", " : "")))
.build()
)); ));
} }
player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.build()))); player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.build())));
@ -660,7 +621,7 @@ public final class FlagCommand extends Command {
if (args.length < 1) { if (args.length < 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot flag info <flag>"))) Template.of("value", "/plot flag info <flag>")
); );
return; return;
} }
@ -668,17 +629,11 @@ public final class FlagCommand extends Command {
if (plotFlag != null) { if (plotFlag != null) {
player.sendMessage(TranslatableCaption.of("flag.flag_info_header")); player.sendMessage(TranslatableCaption.of("flag.flag_info_header"));
// Flag name // Flag name
player.sendMessage( player.sendMessage(TranslatableCaption.of("flag.flag_info_name"), Template.of("flag", plotFlag.getName()));
TranslatableCaption.of("flag.flag_info_name"),
TagResolver.resolver("flag", Tag.inserting(Component.text(plotFlag.getName())))
);
// Flag category // Flag category
player.sendMessage( player.sendMessage(
TranslatableCaption.of("flag.flag_info_category"), TranslatableCaption.of("flag.flag_info_category"),
TagResolver.resolver( Templates.of(player, "value", plotFlag.getFlagCategory())
"value",
Tag.inserting(plotFlag.getFlagCategory().toComponent(player))
)
); );
// Flag description // Flag description
// TODO maybe merge and \n instead? // TODO maybe merge and \n instead?
@ -687,18 +642,16 @@ public final class FlagCommand extends Command {
// Flag example // Flag example
player.sendMessage( player.sendMessage(
TranslatableCaption.of("flag.flag_info_example"), TranslatableCaption.of("flag.flag_info_example"),
TagResolver.builder() Template.of("command", "/plot flag set"),
.tag("command", Tag.preProcessParsed("/plot flag set")) Template.of("flag", plotFlag.getName()),
.tag("flag", Tag.preProcessParsed(plotFlag.getName())) Template.of("value", plotFlag.getExample())
.tag("value", Tag.preProcessParsed(plotFlag.getExample()))
.build()
); );
// Default value // Default value
final String defaultValue = player.getLocation().getPlotArea().getFlagContainer() final String defaultValue = player.getLocation().getPlotArea().getFlagContainer()
.getFlagErased(plotFlag.getClass()).toString(); .getFlagErased(plotFlag.getClass()).toString();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("flag.flag_info_default_value"), TranslatableCaption.of("flag.flag_info_default_value"),
TagResolver.resolver("value", Tag.inserting(Component.text(defaultValue))) Template.of("value", defaultValue)
); );
// Footer. Done this way to prevent the duplicate-message-thingy from catching it // Footer. Done this way to prevent the duplicate-message-thingy from catching it
player.sendMessage(TranslatableCaption.of("flag.flag_info_footer")); player.sendMessage(TranslatableCaption.of("flag.flag_info_footer"));

View File

@ -40,9 +40,7 @@ import com.plotsquared.core.util.task.RunnableVal;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import com.plotsquared.core.uuid.UUIDMapping; import com.plotsquared.core.uuid.UUIDMapping;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@ -73,7 +71,7 @@ public class Grant extends Command {
checkTrue( checkTrue(
args.length >= 1 && args.length <= 2, args.length >= 1 && args.length <= 2,
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot grant <check | add> [player]"))) Template.of("value", "/plot grant <check | add> [player]")
); );
final String arg0 = args[0].toLowerCase(); final String arg0 = args[0].toLowerCase();
switch (arg0) { switch (arg0) {
@ -81,7 +79,7 @@ public class Grant extends Command {
if (!Permissions.hasPermission(player, Permission.PERMISSION_GRANT.format(arg0))) { if (!Permissions.hasPermission(player, Permission.PERMISSION_GRANT.format(arg0))) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text(Permission.PERMISSION_GRANT.format(arg0)))) Template.of("node", Permission.PERMISSION_GRANT.format(arg0))
); );
return CompletableFuture.completedFuture(false); return CompletableFuture.completedFuture(false);
} }
@ -94,7 +92,7 @@ public class Grant extends Command {
} else if (throwable != null || uuids.size() != 1) { } else if (throwable != null || uuids.size() != 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(String.valueOf(uuids)))) Template.of("value", String.valueOf(uuids))
); );
} else { } else {
final UUIDMapping uuid = uuids.toArray(new UUIDMapping[0])[0]; final UUIDMapping uuid = uuids.toArray(new UUIDMapping[0])[0];
@ -105,7 +103,7 @@ public class Grant extends Command {
if (args[0].equalsIgnoreCase("check")) { if (args[0].equalsIgnoreCase("check")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("grants.granted_plots"), TranslatableCaption.of("grants.granted_plots"),
TagResolver.resolver("amount", Tag.inserting(Component.text(access.get().orElse(0)))) Template.of("amount", String.valueOf(access.get().orElse(0)))
); );
} else { } else {
access.set(access.get().orElse(0) + 1); access.set(access.get().orElse(0) + 1);
@ -125,7 +123,7 @@ public class Grant extends Command {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("grants.granted_plots"), TranslatableCaption.of("grants.granted_plots"),
TagResolver.resolver("amount", Tag.inserting(Component.text(granted))) Template.of("amount", String.valueOf(granted))
); );
} else { // add } else { // add
int amount; int amount;
@ -140,7 +138,7 @@ public class Grant extends Command {
DBFunc.addPersistentMeta(uuid.getUuid(), key, rawData, replace); DBFunc.addPersistentMeta(uuid.getUuid(), key, rawData, replace);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("grants.added"), TranslatableCaption.of("grants.added"),
TagResolver.resolver("grants", Tag.inserting(Component.text(amount))) Template.of("grants", String.valueOf(amount))
); );
} }
} }

View File

@ -35,8 +35,7 @@ import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.minimessage.tag.Tag; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -118,31 +117,27 @@ public class Help extends Command {
} }
if (cat == null && page == 0) { if (cat == null && page == 0) {
TextComponent.Builder builder = Component.text(); TextComponent.Builder builder = Component.text();
builder.append(MINI_MESSAGE.deserialize(TranslatableCaption.of("help.help_header").getComponent(player))); builder.append(MINI_MESSAGE.parse(TranslatableCaption.of("help.help_header").getComponent(player)));
for (CommandCategory c : CommandCategory.values()) { for (CommandCategory c : CommandCategory.values()) {
if (!c.canAccess(player)) { if (!c.canAccess(player)) {
continue; continue;
} }
builder.append(Component.newline()).append(MINI_MESSAGE builder.append(Component.newline()).append(MINI_MESSAGE
.deserialize( .parse(
TranslatableCaption.of("help.help_info_item").getComponent(player), TranslatableCaption.of("help.help_info_item").getComponent(player),
TagResolver.builder() Template.of("command", "/plot help"),
.tag("command", Tag.inserting(Component.text("/plot help"))) Template.of("category", c.name().toLowerCase()),
.tag("category", Tag.inserting(Component.text(c.name().toLowerCase()))) Template.of("category_desc", c.getComponent(player))
.tag("category_desc", Tag.inserting(c.toComponent(player)))
.build()
)); ));
} }
builder.append(Component.newline()).append(MINI_MESSAGE builder.append(Component.newline()).append(MINI_MESSAGE
.deserialize( .parse(
TranslatableCaption.of("help.help_info_item").getComponent(player), TranslatableCaption.of("help.help_info_item").getComponent(player),
TagResolver.builder() Template.of("command", "/plot help"),
.tag("command", Tag.inserting(Component.text("/plot help"))) Template.of("category", "all"),
.tag("category", Tag.inserting(Component.text("all"))) Template.of("category_desc", "Display all commands")
.tag("category_desc", Tag.inserting(Component.text("Display all commands")))
.build()
)); ));
builder.append(Component.newline()).append(MINI_MESSAGE.deserialize(TranslatableCaption builder.append(Component.newline()).append(MINI_MESSAGE.parse(TranslatableCaption
.of("help.help_footer") .of("help.help_footer")
.getComponent(player))); .getComponent(player)));
player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.asComponent()))); player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.asComponent())));

View File

@ -42,9 +42,7 @@ import com.plotsquared.core.util.query.PlotQuery;
import com.plotsquared.core.util.query.SortingStrategy; import com.plotsquared.core.util.query.SortingStrategy;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -81,10 +79,8 @@ public class HomeCommand extends Command {
} else if (plots.size() < page || page < 1) { } else if (plots.size() < page || page < 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.number_not_in_range"), TranslatableCaption.of("invalid.number_not_in_range"),
TagResolver.builder() Template.of("min", "1"),
.tag("min", Tag.inserting(Component.text(1))) Template.of("max", String.valueOf(plots.size()))
.tag("max", Tag.inserting(Component.text(plots.size())))
.build()
); );
return; return;
} }
@ -119,7 +115,7 @@ public class HomeCommand extends Command {
.hasPermission(player, Permission.PERMISSION_HOME)) { .hasPermission(player, Permission.PERMISSION_HOME)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text(Permission.PERMISSION_VISIT_OWNED.toString()))) Template.of("node", Permission.PERMISSION_VISIT_OWNED.toString())
); );
return CompletableFuture.completedFuture(false); return CompletableFuture.completedFuture(false);
} }
@ -141,7 +137,7 @@ public class HomeCommand extends Command {
} catch (NumberFormatException ignored) { } catch (NumberFormatException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.not_a_number"), TranslatableCaption.of("invalid.not_a_number"),
TagResolver.resolver("value", Tag.inserting(Component.text(identifier))) Template.of("value", identifier)
); );
return CompletableFuture.completedFuture(false); return CompletableFuture.completedFuture(false);
} }
@ -182,7 +178,7 @@ public class HomeCommand extends Command {
} catch (NumberFormatException ignored) { } catch (NumberFormatException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.not_a_number"), TranslatableCaption.of("invalid.not_a_number"),
TagResolver.resolver("value", Tag.inserting(Component.text(identifier))) Template.of("value", identifier)
); );
return CompletableFuture.completedFuture(false); return CompletableFuture.completedFuture(false);
} }

View File

@ -27,6 +27,7 @@ package com.plotsquared.core.command;
import com.google.inject.TypeLiteral; import com.google.inject.TypeLiteral;
import com.plotsquared.core.configuration.caption.StaticCaption; import com.plotsquared.core.configuration.caption.StaticCaption;
import com.plotsquared.core.configuration.caption.Templates;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.permissions.Permission;
import com.plotsquared.core.player.MetaDataAccess; import com.plotsquared.core.player.MetaDataAccess;
@ -42,8 +43,7 @@ import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.RunnableVal;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.minimessage.tag.Tag; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@ -79,14 +79,9 @@ public class Inbox extends SubCommand {
max = comments.length; max = comments.length;
} }
TextComponent.Builder builder = Component.text(); TextComponent.Builder builder = Component.text();
builder.append(MINI_MESSAGE.deserialize( builder.append(MINI_MESSAGE.parse(TranslatableCaption.of("list.comment_list_header_paged").getComponent(player) + '\n',
TranslatableCaption.of("list.comment_list_header_paged").getComponent(player) + '\n', Template.of("amount", String.valueOf(comments.length)), Template.of("cur", String.valueOf(page + 1)),
TagResolver.builder() Template.of("max", String.valueOf(totalPages + 1)), Template.of("word", "all")
.tag("amount", Tag.inserting(Component.text(comments.length)))
.tag("cur", Tag.inserting(Component.text(page + 1)))
.tag("max", Tag.inserting(Component.text(totalPages + 1)))
.tag("word", Tag.inserting(Component.text("all")))
.build()
)); ));
// This might work xD // This might work xD
@ -95,28 +90,30 @@ public class Inbox extends SubCommand {
Component commentColored; Component commentColored;
if (player.getName().equals(comment.senderName)) { if (player.getName().equals(comment.senderName)) {
commentColored = MINI_MESSAGE commentColored = MINI_MESSAGE
.deserialize( .parse(
TranslatableCaption.of("list.comment_list_by_lister").getComponent(player), TranslatableCaption.of("list.comment_list_by_lister").getComponent(player),
TagResolver.resolver("comment", Tag.inserting(Component.text(comment.comment))) Template.of("comment", comment.comment)
); );
} else { } else {
commentColored = MINI_MESSAGE commentColored = MINI_MESSAGE
.deserialize( .parse(
TranslatableCaption.of("list.comment_list_by_other").getComponent(player), TranslatableCaption.of("list.comment_list_by_other").getComponent(player),
TagResolver.resolver("comment", Tag.inserting(Component.text(comment.comment))) Template.of("comment", comment.comment)
); );
} }
TagResolver resolver = TagResolver.builder() Template number = Template.of("number", String.valueOf(x));
.tag("number", Tag.inserting(Component.text(x))) Template world = Template.of("world", comment.world);
.tag("world", Tag.inserting(Component.text(comment.world))) Template plot_id = Template.of("plot_id", comment.id.getX() + ";" + comment.id.getY());
.tag("plot_id", Tag.inserting(Component.text(comment.id.getX() + ";" + comment.id.getY()))) Template commenter = Template.of("commenter", comment.senderName);
.tag("commenter", Tag.inserting(Component.text(comment.senderName))) Template commentTemplate = Template.of("comment", commentColored);
.tag("comment", Tag.inserting(commentColored))
.build();
builder.append(MINI_MESSAGE builder.append(MINI_MESSAGE
.deserialize( .parse(
TranslatableCaption.of("list.comment_list_comment").getComponent(player), TranslatableCaption.of("list.comment_list_comment").getComponent(player),
resolver number,
world,
plot_id,
commenter,
commentTemplate
)); ));
} }
player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.build()))); player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.build())));
@ -153,23 +150,20 @@ public class Inbox extends SubCommand {
if (total != 0) { if (total != 0) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.inbox_item"), TranslatableCaption.of("comment.inbox_item"),
TagResolver.resolver( Template.of("value", inbox + " (" + total + '/' + unread + ')')
"value",
Tag.inserting(Component.text(inbox + " (" + total + '/' + unread + ')'))
)
); );
return; return;
} }
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.inbox_item"), TranslatableCaption.of("comment.inbox_item"),
TagResolver.resolver("value", Tag.inserting(Component.text(inbox.toString()))) Template.of("value", inbox.toString())
); );
} }
})) { })) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.inbox_item"), TranslatableCaption.of("comment.inbox_item"),
TagResolver.resolver("value", Tag.inserting(Component.text(inbox.toString()))) Template.of("value", inbox.toString())
); );
} }
} }
@ -180,10 +174,7 @@ public class Inbox extends SubCommand {
if (inbox == null) { if (inbox == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.invalid_inbox"), TranslatableCaption.of("comment.invalid_inbox"),
TagResolver.resolver( Template.of("list", StringMan.join(CommentManager.inboxes.keySet(), ", "))
"list",
Tag.inserting(Component.text(StringMan.join(CommentManager.inboxes.keySet(), ", ")))
)
); );
return false; return false;
} }
@ -206,10 +197,7 @@ public class Inbox extends SubCommand {
if (args.length != 3) { if (args.length != 3) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot inbox " + inbox + " delete <index>")
"value",
Tag.inserting(Component.text("/plot inbox " + inbox + " delete <index>"))
)
); );
return true; return true;
} }
@ -219,17 +207,14 @@ public class Inbox extends SubCommand {
if (index < 1) { if (index < 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.not_valid_inbox_index"), TranslatableCaption.of("comment.not_valid_inbox_index"),
TagResolver.resolver("number", Tag.inserting(Component.text(index))) Templates.of("number", index)
); );
return false; return false;
} }
} catch (NumberFormatException ignored) { } catch (NumberFormatException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "/plot inbox " + inbox + " delete <index>")
"value",
Tag.inserting(Component.text("/plot inbox " + inbox + " delete <index>"))
)
); );
return false; return false;
} }
@ -240,7 +225,7 @@ public class Inbox extends SubCommand {
if (index > value.size()) { if (index > value.size()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.not_valid_inbox_index"), TranslatableCaption.of("comment.not_valid_inbox_index"),
TagResolver.resolver("number", Tag.inserting(Component.text(index))) Templates.of("number", index)
); );
return; return;
} }
@ -250,7 +235,7 @@ public class Inbox extends SubCommand {
if (success) { if (success) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.comment_removed_success"), TranslatableCaption.of("comment.comment_removed_success"),
TagResolver.resolver("value", Tag.inserting(Component.text(comment.comment))) Template.of("value", comment.comment)
); );
} else { } else {
player.sendMessage( player.sendMessage(
@ -271,7 +256,7 @@ public class Inbox extends SubCommand {
if (!comments.isEmpty()) { if (!comments.isEmpty()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("comment.comment_removed_success"), TranslatableCaption.of("comment.comment_removed_success"),
TagResolver.resolver("value", Tag.inserting(Component.text("*"))) Template.of("value", String.valueOf(comments))
); );
plot.getPlotCommentContainer().removeComments(comments); plot.getPlotCommentContainer().removeComments(comments);
} }

View File

@ -36,9 +36,7 @@ import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.flag.implementations.HideInfoFlag; import com.plotsquared.core.plot.flag.implementations.HideInfoFlag;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@ -100,10 +98,7 @@ public class Info extends SubCommand {
.hasPermission(Permission.PERMISSION_AREA_INFO_FORCE.toString())) { .hasPermission(Permission.PERMISSION_AREA_INFO_FORCE.toString())) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_AREA_INFO_FORCE.toString())
"node",
Tag.inserting(Permission.PERMISSION_AREA_INFO_FORCE)
)
); );
return true; return true;
} }
@ -125,10 +120,7 @@ public class Info extends SubCommand {
if (!hasOwner && !containsEveryone && !trustedEveryone) { if (!hasOwner && !containsEveryone && !trustedEveryone) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("info.plot_info_unclaimed"), TranslatableCaption.of("info.plot_info_unclaimed"),
TagResolver.resolver( Template.of("plot", plot.getId().getX() + ";" + plot.getId().getY())
"plot",
Tag.inserting(Component.text(plot.getId().getX() + ";" + plot.getId().getY()))
)
); );
return true; return true;
} }

View File

@ -38,9 +38,7 @@ import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.PlayerManager; import com.plotsquared.core.util.PlayerManager;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.WorldUtil; import com.plotsquared.core.util.WorldUtil;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Collection; import java.util.Collection;
@ -91,7 +89,7 @@ public class Kick extends SubCommand {
} else if (throwable != null || uuids.isEmpty()) { } else if (throwable != null || uuids.isEmpty()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
} else { } else {
Set<PlotPlayer<?>> players = new HashSet<>(); Set<PlotPlayer<?>> players = new HashSet<>();
@ -115,7 +113,7 @@ public class Kick extends SubCommand {
if (players.isEmpty()) { if (players.isEmpty()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
return; return;
} }
@ -123,14 +121,14 @@ public class Kick extends SubCommand {
if (!plot.equals(player2.getCurrentPlot())) { if (!plot.equals(player2.getCurrentPlot())) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
return; return;
} }
if (Permissions.hasPermission(player2, Permission.PERMISSION_ADMIN_ENTRY_DENIED)) { if (Permissions.hasPermission(player2, Permission.PERMISSION_ADMIN_ENTRY_DENIED)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("cluster.cannot_kick_player"), TranslatableCaption.of("cluster.cannot_kick_player"),
TagResolver.resolver("name", Tag.inserting(Component.text(player2.getName()))) Template.of("name", player2.getName())
); );
return; return;
} }

View File

@ -32,9 +32,7 @@ import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.UUID; import java.util.UUID;
@ -76,7 +74,7 @@ public class Leave extends Command {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("member.plot_left"), TranslatableCaption.of("member.plot_left"),
TagResolver.resolver("player", Tag.inserting(Component.text(player.getName()))) Template.of("player", player.getName())
); );
} else { } else {
player.sendMessage( player.sendMessage(

View File

@ -41,9 +41,7 @@ import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.PlotQuery;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Collection; import java.util.Collection;
@ -162,7 +160,7 @@ public class Like extends SubCommand {
if (oldRating != null) { if (oldRating != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("ratings.rating_already_exists"), TranslatableCaption.of("ratings.rating_already_exists"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
return; return;
} }
@ -180,12 +178,12 @@ public class Like extends SubCommand {
if (like) { if (like) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("ratings.rating_liked"), TranslatableCaption.of("ratings.rating_liked"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("ratings.rating_disliked"), TranslatableCaption.of("ratings.rating_disliked"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
} }
} }

View File

@ -30,6 +30,7 @@ import com.plotsquared.core.PlotSquared;
import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.Settings;
import com.plotsquared.core.configuration.caption.Caption; import com.plotsquared.core.configuration.caption.Caption;
import com.plotsquared.core.configuration.caption.CaptionHolder; import com.plotsquared.core.configuration.caption.CaptionHolder;
import com.plotsquared.core.configuration.caption.Templates;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.database.DBFunc;
import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.permissions.Permission;
@ -54,8 +55,7 @@ import com.plotsquared.core.util.task.RunnableVal3;
import com.plotsquared.core.uuid.UUIDMapping; import com.plotsquared.core.uuid.UUIDMapping;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.minimessage.tag.Tag; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -132,7 +132,7 @@ public class ListCmd extends SubCommand {
public void noArgs(PlotPlayer<?> player) { public void noArgs(PlotPlayer<?> player) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.subcommand_set_options_header"), TranslatableCaption.of("commandconfig.subcommand_set_options_header"),
TagResolver.resolver("values", Tag.inserting(Component.text(Arrays.toString(getArgumentList(player))))) Templates.of("values", Arrays.toString(getArgumentList(player)))
); );
} }
@ -168,14 +168,9 @@ public class ListCmd extends SubCommand {
if (query == null) { if (query == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.did_you_mean"), TranslatableCaption.of("commandconfig.did_you_mean"),
TagResolver.resolver( Template.of(
"value", "value",
Tag.inserting(Component.text( new StringComparison<>(args[0], new String[]{"mine", "shared", "world", "all"}).getBestMatch()
new StringComparison<>(
args[0],
new String[]{"mine", "shared", "world", "all"}
).getBestMatch()
))
) )
); );
return; return;
@ -203,7 +198,7 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_MINE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_MINE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.mine"))) Templates.of("node", "plots.list.mine")
); );
return false; return false;
} }
@ -218,7 +213,7 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_SHARED)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_SHARED)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.shared"))) Templates.of("node", "plots.list.shared")
); );
return false; return false;
} }
@ -231,14 +226,14 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_WORLD)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_WORLD)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.world"))) Templates.of("node", "plots.list.world")
); );
return false; return false;
} }
if (!Permissions.hasPermission(player, "plots.list.world." + world)) { if (!Permissions.hasPermission(player, "plots.list.world." + world)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.world." + world))) Templates.of("node", "plots.list.world." + world)
); );
return false; return false;
} }
@ -248,7 +243,7 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_EXPIRED)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_EXPIRED)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.expired"))) Templates.of("node", "plots.list.expired")
); );
return false; return false;
} }
@ -262,14 +257,14 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_AREA)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_AREA)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.area"))) Templates.of("node", "plots.list.area")
); );
return false; return false;
} }
if (!Permissions.hasPermission(player, "plots.list.world." + world)) { if (!Permissions.hasPermission(player, "plots.list.world." + world)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.world." + world))) Templates.of("node", "plots.list.world." + world)
); );
return false; return false;
} }
@ -283,7 +278,7 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_ALL)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_ALL)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.all"))) Templates.of("node", "plots.list.all")
); );
return false; return false;
} }
@ -293,7 +288,7 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_DONE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_DONE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.done"))) Templates.of("node", "plots.list.done")
); );
return false; return false;
} }
@ -308,7 +303,7 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_TOP)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_TOP)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.top"))) Templates.of("node", "plots.list.top")
); );
return false; return false;
} }
@ -319,7 +314,7 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_FOR_SALE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_FOR_SALE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.forsale"))) Templates.of("node", "plots.list.forsale")
); );
return false; return false;
} }
@ -332,7 +327,7 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_UNOWNED)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_UNOWNED)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.unowned"))) Templates.of("node", "plots.list.unowned")
); );
return false; return false;
} }
@ -342,14 +337,14 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_FUZZY)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_FUZZY)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.fuzzy"))) Templates.of("node", "plots.list.fuzzy")
); );
return false; return false;
} }
if (args.length < (page == -1 ? 2 : 3)) { if (args.length < (page == -1 ? 2 : 3)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot list fuzzy <search...> [#]"))) Templates.of("value", "/plot list fuzzy <search...> [#]")
); );
return false; return false;
} }
@ -367,14 +362,14 @@ public class ListCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_WORLD)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_WORLD)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.world"))) Templates.of("node", "plots.list.world")
); );
return false; return false;
} }
if (!Permissions.hasPermission(player, "plots.list.world." + args[0])) { if (!Permissions.hasPermission(player, "plots.list.world." + args[0])) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.world." + args[0]))) Templates.of("node", "plots.list.world." + args[0])
); );
return false; return false;
} }
@ -393,15 +388,12 @@ public class ListCmd extends SubCommand {
} }
} }
if (uuid == null) { if (uuid == null) {
player.sendMessage( player.sendMessage(TranslatableCaption.of("errors.invalid_player"), Templates.of("value", args[0]));
TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0])))
);
} else { } else {
if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_PLAYER)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_PLAYER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.list.player"))) Templates.of("node", "plots.list.player")
); );
} else { } else {
sort[0] = false; sort[0] = false;
@ -437,34 +429,32 @@ public class ListCmd extends SubCommand {
} else { } else {
color = TranslatableCaption.of("info.plot_list_default"); color = TranslatableCaption.of("info.plot_list_default");
} }
Component trusted = MINI_MESSAGE.deserialize( Component trusted = MINI_MESSAGE.parse(
TranslatableCaption.of("info.plot_info_trusted").getComponent(player), TranslatableCaption.of("info.plot_info_trusted").getComponent(player),
TagResolver.resolver("trusted", Tag.inserting(PlayerManager.getPlayerList(plot.getTrusted(), player))) Template.of("trusted", PlayerManager.getPlayerList(plot.getTrusted(), player))
); );
Component members = MINI_MESSAGE.deserialize( Component members = MINI_MESSAGE.parse(
TranslatableCaption.of("info.plot_info_members").getComponent(player), TranslatableCaption.of("info.plot_info_members").getComponent(player),
TagResolver.resolver("members", Tag.inserting(PlayerManager.getPlayerList(plot.getMembers(), player))) Template.of("members", PlayerManager.getPlayerList(plot.getMembers(), player))
); );
TagResolver.Builder finalResolver = TagResolver.builder(); Template command_tp = Template.of("command_tp", "/plot visit " + plot.getArea() + ";" + plot.getId());
finalResolver.tag( Template command_info = Template.of("command_info", "/plot info " + plot.getArea() + ";" + plot.getId());
"command_tp", Template hover_info =
Tag.preProcessParsed("/plot visit " + plot.getArea() + ";" + plot.getId()) Template.of(
); "hover_info",
finalResolver.tag( MINI_MESSAGE.serialize(Component
"command_info", .text()
Tag.preProcessParsed("/plot info " + plot.getArea() + ";" + plot.getId())
);
finalResolver.tag("hover_info", Tag.inserting(
Component.text()
.append(trusted) .append(trusted)
.append(Component.newline()) .append(Component.newline())
.append(members) .append(members)
.asComponent() .asComponent())
)); );
finalResolver.tag("number", Tag.inserting(Component.text(i))); Template numberTemplate = Template.of("number", String.valueOf(i));
finalResolver.tag("plot", Tag.inserting(MINI_MESSAGE.deserialize( Template plotTemplate = Template.of(
color.getComponent(player), TagResolver.resolver("plot", Tag.inserting(Component.text(plot.toString()))) "plot",
))); MINI_MESSAGE.parse(color.getComponent(player), Template.of("plot", plot.toString()))
);
String prefix = ""; String prefix = "";
String online = TranslatableCaption.of("info.plot_list_player_online").getComponent(player); String online = TranslatableCaption.of("info.plot_list_player_online").getComponent(player);
String offline = TranslatableCaption.of("info.plot_list_player_offline").getComponent(player); String offline = TranslatableCaption.of("info.plot_list_player_offline").getComponent(player);
@ -473,37 +463,35 @@ public class ListCmd extends SubCommand {
String everyone = TranslatableCaption.of("info.plot_list_player_everyone").getComponent(player); String everyone = TranslatableCaption.of("info.plot_list_player_everyone").getComponent(player);
TextComponent.Builder builder = Component.text(); TextComponent.Builder builder = Component.text();
if (plot.getFlag(ServerPlotFlag.class)) { if (plot.getFlag(ServerPlotFlag.class)) {
TagResolver serverResolver = TagResolver.resolver( Template serverTemplate = Template.of(
"info.server", "info.server",
Tag.inserting(TranslatableCaption.of("info.server").toComponent(player)) TranslatableCaption.of("info.server").getComponent(player)
); );
builder.append(MINI_MESSAGE.deserialize(server, serverResolver)); builder.append(MINI_MESSAGE.parse(server, serverTemplate));
} else { } else {
try { try {
final List<UUIDMapping> names = PlotSquared.get().getImpromptuUUIDPipeline().getNames(plot.getOwners()) final List<UUIDMapping> names = PlotSquared.get().getImpromptuUUIDPipeline().getNames(plot.getOwners())
.get(Settings.UUID.BLOCKING_TIMEOUT, TimeUnit.MILLISECONDS); .get(Settings.UUID.BLOCKING_TIMEOUT, TimeUnit.MILLISECONDS);
for (final UUIDMapping uuidMapping : names) { for (final UUIDMapping uuidMapping : names) {
PlotPlayer<?> pp = PlotSquared.platform().playerManager().getPlayerIfExists(uuidMapping.getUuid()); PlotPlayer<?> pp = PlotSquared.platform().playerManager().getPlayerIfExists(uuidMapping.getUuid());
TagResolver resolver = TagResolver.builder() Template prefixTemplate = Template.of("prefix", prefix);
.tag("prefix", Tag.inserting(Component.text(prefix))) Template playerTemplate = Template.of("player", uuidMapping.getUsername());
.tag("player", Tag.inserting(Component.text(uuidMapping.getUsername())))
.build();
if (pp != null) { if (pp != null) {
builder.append(MINI_MESSAGE.deserialize(online, resolver)); builder.append(MINI_MESSAGE.parse(online, prefixTemplate, playerTemplate));
} else if (uuidMapping.getUsername().equalsIgnoreCase("unknown")) { } else if (uuidMapping.getUsername().equalsIgnoreCase("unknown")) {
TagResolver unknownResolver = TagResolver.resolver( Template unknownTemplate = Template.of(
"info.unknown", "info.unknown",
Tag.inserting(TranslatableCaption.of("info.unknown").toComponent(player)) TranslatableCaption.of("info.unknown").getComponent(player)
); );
builder.append(MINI_MESSAGE.deserialize(unknown, unknownResolver)); builder.append(MINI_MESSAGE.parse(unknown, unknownTemplate));
} else if (uuidMapping.getUuid().equals(DBFunc.EVERYONE)) { } else if (uuidMapping.getUuid().equals(DBFunc.EVERYONE)) {
TagResolver everyoneResolver = TagResolver.resolver( Template everyoneTemplate = Template.of(
"info.everyone", "info.everyone",
Tag.inserting(TranslatableCaption.of("info.everyone").toComponent(player)) TranslatableCaption.of("info.everyone").getComponent(player)
); );
builder.append(MINI_MESSAGE.deserialize(everyone, everyoneResolver)); builder.append(MINI_MESSAGE.parse(everyone, everyoneTemplate));
} else { } else {
builder.append(MINI_MESSAGE.deserialize(offline, resolver)); builder.append(MINI_MESSAGE.parse(offline, prefixTemplate, playerTemplate));
} }
prefix = ", "; prefix = ", ";
} }
@ -519,15 +507,15 @@ public class ListCmd extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(playerBuilder.toString()))) Templates.of("value", playerBuilder.toString())
); );
} catch (TimeoutException e) { } catch (TimeoutException e) {
player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout"));
} }
} }
finalResolver.tag("players", Tag.inserting(builder.asComponent())); Template players = Template.of("players", builder.asComponent());
caption.set(TranslatableCaption.of("info.plot_list_item")); caption.set(TranslatableCaption.of("info.plot_list_item"));
caption.setTagResolvers(finalResolver.build()); caption.setTemplates(command_tp, command_info, hover_info, numberTemplate, plotTemplate, players);
} }
}, "/plot list " + args[0], TranslatableCaption.of("list.plot_list_header_paged")); }, "/plot list " + args[0], TranslatableCaption.of("list.plot_list_header_paged"));
} }

View File

@ -43,9 +43,7 @@ import com.plotsquared.core.util.SchematicHandler;
import com.plotsquared.core.util.TimeUtil; import com.plotsquared.core.util.TimeUtil;
import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.RunnableVal;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.net.MalformedURLException; import java.net.MalformedURLException;
@ -108,7 +106,7 @@ public class Load extends SubCommand {
// No schematics found: // No schematics found:
player.sendMessage( player.sendMessage(
TranslatableCaption.of("web.load_null"), TranslatableCaption.of("web.load_null"),
TagResolver.resolver("command", Tag.inserting(Component.text("/plot load"))) Template.of("command", "/plot load")
); );
return false; return false;
} }
@ -119,7 +117,7 @@ public class Load extends SubCommand {
// use /plot load <index> // use /plot load <index>
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.not_valid_number"), TranslatableCaption.of("invalid.not_valid_number"),
TagResolver.resolver("value", Tag.inserting(Component.text("(1, " + schematics.size() + ')'))) Template.of("value", "(1, " + schematics.size() + ')')
); );
return false; return false;
} }
@ -139,10 +137,7 @@ public class Load extends SubCommand {
plot.removeRunning(); plot.removeRunning();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("schematics.schematic_invalid"), TranslatableCaption.of("schematics.schematic_invalid"),
TagResolver.resolver( Template.of("reason", "non-existent or not in gzip format")
"reason",
Tag.inserting(Component.text("non-existent or not in gzip format"))
)
); );
return; return;
} }
@ -173,7 +168,7 @@ public class Load extends SubCommand {
plot.removeRunning(); plot.removeRunning();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot load <index>"))) Template.of("value", "/plot load <index>")
); );
return false; return false;
} }
@ -224,7 +219,7 @@ public class Load extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("web.load_list"), TranslatableCaption.of("web.load_list"),
TagResolver.resolver("command", Tag.inserting(Component.text("/plot load #"))) Template.of("command", "/plot load #")
); );
} }
} }

View File

@ -43,9 +43,6 @@ import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.PlotExpression; import com.plotsquared.core.util.PlotExpression;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -321,7 +318,7 @@ public class MainCommand extends Command {
if (message != null) { if (message != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.error"), TranslatableCaption.of("errors.error"),
TagResolver.resolver("value", Tag.inserting(Component.text(message))) net.kyori.adventure.text.minimessage.Template.of("value", message)
); );
} else { } else {
player.sendMessage( player.sendMessage(

View File

@ -42,9 +42,7 @@ import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.PlotExpression; import com.plotsquared.core.util.PlotExpression;
import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.StringMan;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.UUID; import java.util.UUID;
@ -124,13 +122,11 @@ public class Merge extends SubCommand {
if (direction == null) { if (direction == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text( Template.of("value", "/plot merge <" + StringMan.join(values, " | ") + "> [removeroads]")
"/plot merge <" + StringMan.join(values, " | ") + "> [removeroads]"
)))
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("help.direction"), TranslatableCaption.of("help.direction"),
TagResolver.resolver("dir", Tag.inserting(Component.text(direction(location.getYaw())))) Template.of("dir", direction(location.getYaw()))
); );
return false; return false;
} }
@ -141,7 +137,7 @@ public class Merge extends SubCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Merge"))) Template.of("value", "Merge")
); );
return false; return false;
} }
@ -152,7 +148,7 @@ public class Merge extends SubCommand {
if (!force && size - 1 > maxSize) { if (!force && size - 1 > maxSize) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text(Permission.PERMISSION_MERGE + "." + (size + 1)))) Template.of("node", Permission.PERMISSION_MERGE + "." + (size + 1))
); );
return false; return false;
} }
@ -179,10 +175,7 @@ public class Merge extends SubCommand {
.hasPermission(player, Permission.PERMISSION_MERGE_KEEP_ROAD)) { .hasPermission(player, Permission.PERMISSION_MERGE_KEEP_ROAD)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_MERGE_KEEP_ROAD))
"node",
Tag.inserting(Permission.PERMISSION_MERGE_KEEP_ROAD)
)
); );
return true; return true;
} }
@ -191,11 +184,8 @@ public class Merge extends SubCommand {
this.econHandler.withdrawMoney(player, price); this.econHandler.withdrawMoney(player, price);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.removed_balance"), TranslatableCaption.of("economy.removed_balance"),
TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(price)))), Template.of("money", this.econHandler.format(price)),
TagResolver.resolver( Template.of("balance", this.econHandler.format(this.econHandler.getMoney(player)))
"balance",
Tag.inserting(Component.text(this.econHandler.format(this.econHandler.getMoney(player))))
)
); );
} }
player.sendMessage(TranslatableCaption.of("merge.success_merge")); player.sendMessage(TranslatableCaption.of("merge.success_merge"));
@ -209,7 +199,7 @@ public class Merge extends SubCommand {
&& this.econHandler.getMoney(player) < price) { && this.econHandler.getMoney(player) < price) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.cannot_afford_merge"), TranslatableCaption.of("economy.cannot_afford_merge"),
TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(price)))) Template.of("money", this.econHandler.format(price))
); );
return false; return false;
} }
@ -223,7 +213,7 @@ public class Merge extends SubCommand {
.hasPermission(player, Permission.PERMISSION_MERGE_KEEP_ROAD)) { .hasPermission(player, Permission.PERMISSION_MERGE_KEEP_ROAD)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Permission.PERMISSION_MERGE_KEEP_ROAD)) Template.of("node", String.valueOf(Permission.PERMISSION_MERGE_KEEP_ROAD))
); );
return true; return true;
} }
@ -232,7 +222,7 @@ public class Merge extends SubCommand {
this.econHandler.withdrawMoney(player, price); this.econHandler.withdrawMoney(player, price);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.removed_balance"), TranslatableCaption.of("economy.removed_balance"),
TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(price)))) Template.of("money", this.econHandler.format(price))
); );
} }
player.sendMessage(TranslatableCaption.of("merge.success_merge")); player.sendMessage(TranslatableCaption.of("merge.success_merge"));
@ -248,7 +238,7 @@ public class Merge extends SubCommand {
if (!force && !Permissions.hasPermission(player, Permission.PERMISSION_MERGE_OTHER)) { if (!force && !Permissions.hasPermission(player, Permission.PERMISSION_MERGE_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Permission.PERMISSION_MERGE_OTHER)) Template.of("node", String.valueOf(Permission.PERMISSION_MERGE_OTHER))
); );
return false; return false;
} }
@ -273,14 +263,14 @@ public class Merge extends SubCommand {
if (!force && this.econHandler.getMoney(player) < price) { if (!force && this.econHandler.getMoney(player) < price) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.cannot_afford_merge"), TranslatableCaption.of("economy.cannot_afford_merge"),
TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(price)))) Template.of("money", this.econHandler.format(price))
); );
return; return;
} }
this.econHandler.withdrawMoney(player, price); this.econHandler.withdrawMoney(player, price);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("economy.removed_balance"), TranslatableCaption.of("economy.removed_balance"),
TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(price)))) Template.of("money", this.econHandler.format(price))
); );
} }
player.sendMessage(TranslatableCaption.of("merge.success_merge")); player.sendMessage(TranslatableCaption.of("merge.success_merge"));
@ -288,15 +278,10 @@ public class Merge extends SubCommand {
}; };
if (!force && hasConfirmation(player)) { if (!force && hasConfirmation(player)) {
CmdConfirm.addPending(accepter, MINI_MESSAGE.serialize(MINI_MESSAGE CmdConfirm.addPending(accepter, MINI_MESSAGE.serialize(MINI_MESSAGE
.deserialize( .parse(
TranslatableCaption.of("merge.merge_request_confirm").getComponent(player), TranslatableCaption.of("merge.merge_request_confirm").getComponent(player),
TagResolver.builder() Template.of("player", player.getName()),
.tag("player", Tag.inserting(Component.text(player.getName()))) Template.of("location", plot.getWorldName() + ";" + plot.getId())
.tag(
"location",
Tag.inserting(Component.text(plot.getWorldName() + " " + plot.getId()))
)
.build()
)), )),
run run
); );

View File

@ -36,9 +36,7 @@ import com.plotsquared.core.plot.world.PlotAreaManager;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -116,10 +114,8 @@ public class Move extends SubCommand {
if (result) { if (result) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("move.move_success"), TranslatableCaption.of("move.move_success"),
TagResolver.builder() Template.of("origin", p1),
.tag("origin", Tag.inserting(Component.text(p1))) Template.of("target", p2)
.tag("target", Tag.inserting(Component.text(p2)))
.build()
); );
return true; return true;
} else { } else {

View File

@ -43,9 +43,7 @@ import com.plotsquared.core.util.InventoryUtil;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.item.ItemType;
import com.sk89q.worldedit.world.item.ItemTypes; import com.sk89q.worldedit.world.item.ItemTypes;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -92,10 +90,7 @@ public class Music extends SubCommand {
.hasPermission(player, Permission.PERMISSION_ADMIN_MUSIC_OTHER)) { .hasPermission(player, Permission.PERMISSION_ADMIN_MUSIC_OTHER)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_MUSIC_OTHER))
"node",
Tag.inserting(Permission.PERMISSION_ADMIN_MUSIC_OTHER)
)
); );
return true; return true;
} }
@ -118,17 +113,15 @@ public class Music extends SubCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
getPlayer().sendMessage( getPlayer().sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Music removal"))) Template.of("value", "Music removal")
); );
return true; return true;
} }
plot.removeFlag(event.getFlag()); plot.removeFlag(event.getFlag());
getPlayer().sendMessage( getPlayer().sendMessage(
TranslatableCaption.of("flag.flag_removed"), TranslatableCaption.of("flag.flag_removed"),
TagResolver.builder() Template.of("flag", "music"),
.tag("flag", Tag.inserting(Component.text("music"))) Template.of("value", "music_disc")
.tag("value", Tag.inserting(Component.text("music_disc")))
.build()
); );
} else if (item.getName().toLowerCase(Locale.ENGLISH).contains("disc")) { } else if (item.getName().toLowerCase(Locale.ENGLISH).contains("disc")) {
PlotFlag<?, ?> plotFlag = plot.getFlagContainer().getFlag(MusicFlag.class) PlotFlag<?, ?> plotFlag = plot.getFlagContainer().getFlag(MusicFlag.class)
@ -137,17 +130,13 @@ public class Music extends SubCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
getPlayer().sendMessage( getPlayer().sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Music addition"))) Template.of("value", "Music addition")
); );
return true; return true;
} }
plot.setFlag(event.getFlag()); plot.setFlag(event.getFlag());
getPlayer().sendMessage( getPlayer().sendMessage(TranslatableCaption.of("flag.flag_added"), Template.of("flag", "music"),
TranslatableCaption.of("flag.flag_added"), Template.of("value", String.valueOf(event.getFlag().getValue()))
TagResolver.builder()
.tag("flag", Tag.inserting(Component.text("music")))
.tag("value", Tag.inserting(Component.text(event.getFlag().getValue().toString())))
.build()
); );
} else { } else {
getPlayer().sendMessage(TranslatableCaption.of("flag.flag_not_added")); getPlayer().sendMessage(TranslatableCaption.of("flag.flag_not_added"));

View File

@ -31,9 +31,7 @@ import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.StringMan;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -57,7 +55,7 @@ public class Near extends Command {
final Plot plot = check(player.getCurrentPlot(), TranslatableCaption.of("errors.not_in_plot")); final Plot plot = check(player.getCurrentPlot(), TranslatableCaption.of("errors.not_in_plot"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("near.plot_near"), TranslatableCaption.of("near.plot_near"),
TagResolver.resolver("list", Tag.inserting(Component.text(StringMan.join(plot.getPlayersInPlot(), ", ")))) Template.of("list", StringMan.join(plot.getPlayersInPlot(), ", "))
); );
return CompletableFuture.completedFuture(true); return CompletableFuture.completedFuture(true);
} }

View File

@ -42,9 +42,7 @@ import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.PlayerManager; import com.plotsquared.core.util.PlayerManager;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -75,7 +73,7 @@ public class Owner extends SetCommand {
if (value == null || value.isEmpty()) { if (value == null || value.isEmpty()) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot setowner <owner>"))) Template.of("value", "/plot setowner <owner>")
); );
return false; return false;
} }
@ -87,7 +85,7 @@ public class Owner extends SetCommand {
&& !value.equalsIgnoreCase("-")) { && !value.equalsIgnoreCase("-")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(value))) Template.of("value", value)
); );
return; return;
} }
@ -101,7 +99,7 @@ public class Owner extends SetCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Owner change"))) Template.of("value", "Owner change")
); );
return; return;
} }
@ -124,7 +122,7 @@ public class Owner extends SetCommand {
if (unlinkEvent.getEventResult() == Result.DENY) { if (unlinkEvent.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Unlink on owner change"))) Template.of("value", "Unlink on owner change")
); );
return; return;
} }
@ -144,10 +142,7 @@ public class Owner extends SetCommand {
if (plot.isOwner(uuid)) { if (plot.isOwner(uuid)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("member.already_owner"), TranslatableCaption.of("member.already_owner"),
TagResolver.resolver( Template.of("player", PlayerManager.resolveName(uuid, false).getComponent(player))
"player",
Tag.inserting(PlayerManager.resolveName(uuid, false).toComponent(player))
)
); );
return; return;
} }
@ -156,10 +151,7 @@ public class Owner extends SetCommand {
if (other == null) { if (other == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player_offline"), TranslatableCaption.of("errors.invalid_player_offline"),
TagResolver.resolver( Template.of("player", PlayerManager.resolveName(uuid).getComponent(player))
"player",
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
)
); );
return; return;
} }
@ -195,10 +187,7 @@ public class Owner extends SetCommand {
if (other != null) { if (other != null) {
other.sendMessage( other.sendMessage(
TranslatableCaption.of("owner.now_owner"), TranslatableCaption.of("owner.now_owner"),
TagResolver.resolver( Template.of("plot", plot.getArea() + ";" + plot.getId())
"plot",
Tag.inserting(Component.text(plot.getArea() + ";" + plot.getId()))
)
); );
} }
} else { } else {

View File

@ -30,9 +30,7 @@ import com.plotsquared.core.configuration.caption.StaticCaption;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.util.PremiumVerification; import com.plotsquared.core.util.PremiumVerification;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
@CommandDeclaration(command = "plugin", @CommandDeclaration(command = "plugin",
permission = "plots.use", permission = "plots.use",
@ -48,7 +46,7 @@ public class PluginCmd extends SubCommand {
StaticCaption.of("<gray>>> </gray><gold><bold>" + PlotSquared StaticCaption.of("<gray>>> </gray><gold><bold>" + PlotSquared
.platform() .platform()
.pluginName() + " <reset><gray>(<gold>Version</gold><gray>: </gray><gold><version></gold><gray>)</gray>"), .pluginName() + " <reset><gray>(<gold>Version</gold><gray>: </gray><gold><version></gold><gray>)</gray>"),
TagResolver.resolver("version", Tag.inserting(Component.text(String.valueOf(PlotSquared.get().getVersion())))) Template.of("version", String.valueOf(PlotSquared.get().getVersion()))
); );
player.sendMessage(StaticCaption.of( player.sendMessage(StaticCaption.of(
"<gray>>> </gray><gold><bold>Authors<reset><gray>: </gray><gold>Citymonstret </gold><gray>& </gray><gold>Empire92 </gold><gray>& </gray><gold>MattBDev </gold><gray>& </gray><gold>dordsor21 </gold><gray>& </gray><gold>NotMyFault </gold><gray>& </gray><gold>SirYwell</gold>")); "<gray>>> </gray><gold><bold>Authors<reset><gray>: </gray><gold>Citymonstret </gold><gray>& </gray><gold>Empire92 </gold><gray>& </gray><gold>MattBDev </gold><gray>& </gray><gold>dordsor21 </gold><gray>& </gray><gold>NotMyFault </gold><gray>& </gray><gold>SirYwell</gold>"));
@ -58,7 +56,7 @@ public class PluginCmd extends SubCommand {
"<gray>>> </gray><gold><bold>Discord<reset><gray>: </gray><gold><click:open_url:https://discord.gg/intellectualsites>https://discord.gg/intellectualsites</gold>")); "<gray>>> </gray><gold><bold>Discord<reset><gray>: </gray><gold><click:open_url:https://discord.gg/intellectualsites>https://discord.gg/intellectualsites</gold>"));
player.sendMessage( player.sendMessage(
StaticCaption.of("<gray>>> </gray><gold><bold>Premium<reset><gray>: <gold><value></gold>"), StaticCaption.of("<gray>>> </gray><gold><bold>Premium<reset><gray>: <gold><value></gold>"),
TagResolver.resolver("value", Tag.inserting(Component.text(PremiumVerification.isPremium()))) Template.of("value", String.valueOf(PremiumVerification.isPremium()))
); );
}); });
return true; return true;

View File

@ -40,9 +40,7 @@ import com.plotsquared.core.util.StringMan;
import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.PlotQuery;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import com.plotsquared.core.uuid.UUIDMapping; import com.plotsquared.core.uuid.UUIDMapping;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@ -107,7 +105,7 @@ public class Purge extends SubCommand {
if (area == null) { if (area == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.not_valid_plot_world"), TranslatableCaption.of("errors.not_valid_plot_world"),
TagResolver.resolver("value", Tag.inserting(Component.text(split[1]))) Template.of("value", split[1])
); );
return false; return false;
} }
@ -119,7 +117,7 @@ public class Purge extends SubCommand {
} catch (IllegalArgumentException ignored) { } catch (IllegalArgumentException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.not_valid_plot_id"), TranslatableCaption.of("invalid.not_valid_plot_id"),
TagResolver.resolver("value", Tag.inserting(Component.text(split[1]))) Template.of("value", split[1])
); );
return false; return false;
} }
@ -130,7 +128,7 @@ public class Purge extends SubCommand {
if (ownerMapping == null) { if (ownerMapping == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(split[1]))) Template.of("value", split[1])
); );
return false; return false;
} }
@ -142,7 +140,7 @@ public class Purge extends SubCommand {
if (addedMapping == null) { if (addedMapping == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(split[1]))) Template.of("value", split[1])
); );
return false; return false;
} }
@ -267,10 +265,7 @@ public class Purge extends SubCommand {
DBFunc.purgeIds(ids); DBFunc.purgeIds(ids);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("purge.purge_success"), TranslatableCaption.of("purge.purge_success"),
TagResolver.resolver( Template.of("amount", ids.size() + "/" + toDelete.size())
"amount",
Tag.inserting(Component.text(ids.size() + "/" + toDelete.size()))
)
); );
}); });
} }

View File

@ -45,9 +45,7 @@ import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.PlotQuery;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Collection; import java.util.Collection;
@ -157,7 +155,7 @@ public class Rate extends SubCommand {
if (plot.getRatings().containsKey(player.getUUID())) { if (plot.getRatings().containsKey(player.getUUID())) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("ratings.rating_already_exists"), TranslatableCaption.of("ratings.rating_already_exists"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
return; return;
} }
@ -177,7 +175,7 @@ public class Rate extends SubCommand {
plot.addRating(this.getPlayer().getUUID(), event.getRating()); plot.addRating(this.getPlayer().getUUID(), event.getRating());
getPlayer().sendMessage( getPlayer().sendMessage(
TranslatableCaption.of("ratings.rating_applied"), TranslatableCaption.of("ratings.rating_applied"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
} }
return false; return false;
@ -250,7 +248,7 @@ public class Rate extends SubCommand {
if (plot.getRatings().containsKey(uuid)) { if (plot.getRatings().containsKey(uuid)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("ratings.rating_already_exists"), TranslatableCaption.of("ratings.rating_already_exists"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
return; return;
} }
@ -260,7 +258,7 @@ public class Rate extends SubCommand {
plot.addRating(uuid, event.getRating()); plot.addRating(uuid, event.getRating());
player.sendMessage( player.sendMessage(
TranslatableCaption.of("ratings.rating_applied"), TranslatableCaption.of("ratings.rating_applied"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
} }
}; };

View File

@ -33,9 +33,7 @@ import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.PlotManager; import com.plotsquared.core.plot.PlotManager;
import com.plotsquared.core.plot.world.PlotAreaManager; import com.plotsquared.core.plot.world.PlotAreaManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@CommandDeclaration(command = "regenallroads", @CommandDeclaration(command = "regenallroads",
@ -67,18 +65,18 @@ public class RegenAllRoads extends SubCommand {
} catch (NumberFormatException ignored) { } catch (NumberFormatException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.not_valid_number"), TranslatableCaption.of("invalid.not_valid_number"),
TagResolver.resolver("value", Tag.inserting(Component.text("(0, 256)"))) Template.of("value", "(0, 256)")
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot regenallroads <world> [height]"))) Template.of("value", "/plot regenallroads <world> [height]")
); );
return false; return false;
} }
} else if (args.length != 1) { } else if (args.length != 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot regenallroads <world> [height]"))) Template.of("value", "/plot regenallroads <world> [height]")
); );
return false; return false;
} }
@ -86,7 +84,7 @@ public class RegenAllRoads extends SubCommand {
if (area == null) { if (area == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.not_valid_plot_world"), TranslatableCaption.of("errors.not_valid_plot_world"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
return false; return false;
} }
@ -97,7 +95,7 @@ public class RegenAllRoads extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("debugroadregen.schematic"), TranslatableCaption.of("debugroadregen.schematic"),
TagResolver.resolver("command", Tag.inserting(Component.text("/plot createroadschematic"))) Template.of("command", "/plot createroadschematic")
); );
player.sendMessage(TranslatableCaption.of("debugroadregen.regenallroads_started")); player.sendMessage(TranslatableCaption.of("debugroadregen.regenallroads_started"));
boolean result = this.hybridUtils.scheduleRoadUpdate(area, height); boolean result = this.hybridUtils.scheduleRoadUpdate(area, height);

View File

@ -36,9 +36,7 @@ import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.PlayerManager; import com.plotsquared.core.util.PlayerManager;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Collection; import java.util.Collection;
@ -88,7 +86,7 @@ public class Remove extends SubCommand {
} else if (throwable != null) { } else if (throwable != null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
return; return;
} else if (!uuids.isEmpty()) { } else if (!uuids.isEmpty()) {
@ -125,12 +123,12 @@ public class Remove extends SubCommand {
if (count == 0) { if (count == 0) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("member.removed_players"), TranslatableCaption.of("member.removed_players"),
TagResolver.resolver("amount", Tag.inserting(Component.text(count))) Template.of("amount", count + "")
); );
} }
}); });

View File

@ -39,9 +39,7 @@ import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.SchematicHandler; import com.plotsquared.core.util.SchematicHandler;
import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.RunnableVal;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.net.URL; import java.net.URL;
@ -125,7 +123,7 @@ public class Save extends SubCommand {
player.sendMessage(TranslatableCaption.of("web.save_success")); player.sendMessage(TranslatableCaption.of("web.save_success"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.deprecated_commands"), TranslatableCaption.of("errors.deprecated_commands"),
TagResolver.resolver("replacement", Tag.inserting(Component.text("/plot download"))) Template.of("replacement", "/plot download")
); );
try (final MetaDataAccess<List<String>> schematicAccess = try (final MetaDataAccess<List<String>> schematicAccess =
player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_SCHEMATICS)) { player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_SCHEMATICS)) {

View File

@ -43,9 +43,7 @@ import com.plotsquared.core.util.StringMan;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.RunnableVal;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.net.URL; import java.net.URL;
@ -82,7 +80,7 @@ public class SchematicCmd extends SubCommand {
if (args.length < 1) { if (args.length < 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("Possible values: save, paste, exportall, list"))) Template.of("value", "Possible values: save, paste, exportall, list")
); );
return true; return true;
} }
@ -92,20 +90,14 @@ public class SchematicCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_SCHEMATIC_PASTE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_SCHEMATIC_PASTE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_SCHEMATIC_PASTE))
"node",
Tag.inserting(Permission.PERMISSION_SCHEMATIC_PASTE)
)
); );
return false; return false;
} }
if (args.length < 2) { if (args.length < 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "Possible values: save, paste, exportall, list")
"value",
Tag.inserting(Component.text("Possible values: save, paste, exportall, list"))
)
); );
break; break;
} }
@ -146,10 +138,7 @@ public class SchematicCmd extends SubCommand {
e.printStackTrace(); e.printStackTrace();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("schematics.schematic_invalid"), TranslatableCaption.of("schematics.schematic_invalid"),
TagResolver.resolver( Template.of("reason", "non-existent url: " + location)
"reason",
Tag.inserting(Component.text("non-existent url: " + location))
)
); );
SchematicCmd.this.running = false; SchematicCmd.this.running = false;
return; return;
@ -165,10 +154,7 @@ public class SchematicCmd extends SubCommand {
SchematicCmd.this.running = false; SchematicCmd.this.running = false;
player.sendMessage( player.sendMessage(
TranslatableCaption.of("schematics.schematic_invalid"), TranslatableCaption.of("schematics.schematic_invalid"),
TagResolver.resolver( Template.of("reason", "non-existent or not in gzip format")
"reason",
Tag.inserting(Component.text("non-existent or not in gzip format"))
)
); );
return; return;
} }
@ -203,10 +189,7 @@ public class SchematicCmd extends SubCommand {
player.sendMessage(TranslatableCaption.of("schematics.schematic_exportall_world_args")); player.sendMessage(TranslatableCaption.of("schematics.schematic_exportall_world_args"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "Use /plot schematic exportall <area>")
"value",
Tag.inserting(Component.text("Use /plot schematic exportall <area>"))
)
); );
return false; return false;
} }
@ -214,7 +197,7 @@ public class SchematicCmd extends SubCommand {
if (area == null) { if (area == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.not_valid_plot_world"), TranslatableCaption.of("errors.not_valid_plot_world"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[1]))) Template.of("value", args[1])
); );
return false; return false;
} }
@ -223,7 +206,7 @@ public class SchematicCmd extends SubCommand {
player.sendMessage(TranslatableCaption.of("schematic.schematic_exportall_world")); player.sendMessage(TranslatableCaption.of("schematic.schematic_exportall_world"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("Use /plot sch exportall <area>"))) Template.of("value", "Use /plot sch exportall <area>")
); );
return false; return false;
} }
@ -237,7 +220,7 @@ public class SchematicCmd extends SubCommand {
player.sendMessage(TranslatableCaption.of("schematics.schematic_exportall_started")); player.sendMessage(TranslatableCaption.of("schematics.schematic_exportall_started"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("schematics.plot_to_schem"), TranslatableCaption.of("schematics.plot_to_schem"),
TagResolver.resolver("amount", Tag.inserting(Component.text(plots.size()))) Template.of("amount", String.valueOf(plots.size()))
); );
} }
} }
@ -245,10 +228,7 @@ public class SchematicCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_SCHEMATIC_SAVE)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_SCHEMATIC_SAVE)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_SCHEMATIC_SAVE))
"node",
Tag.inserting(Permission.PERMISSION_SCHEMATIC_SAVE)
)
); );
return false; return false;
} }
@ -291,22 +271,19 @@ public class SchematicCmd extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_SCHEMATIC_LIST)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_SCHEMATIC_LIST)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_SCHEMATIC_LIST))
"node",
Tag.inserting(Permission.PERMISSION_SCHEMATIC_LIST)
)
); );
return false; return false;
} }
final String string = StringMan.join(this.schematicHandler.getSchematicNames(), "$2, $1"); final String string = StringMan.join(this.schematicHandler.getSchematicNames(), "$2, $1");
player.sendMessage( player.sendMessage(
TranslatableCaption.of("schematics.schematic_list"), TranslatableCaption.of("schematics.schematic_list"),
TagResolver.resolver("list", Tag.inserting(Component.text(string))) Template.of("list", string)
); );
} }
default -> player.sendMessage( default -> player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("Possible values: save, paste, exportall, list"))) Template.of("value", "Possible values: save, paste, exportall, list")
); );
} }
return true; return true;

View File

@ -47,9 +47,7 @@ import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.world.block.BlockCategory; import com.sk89q.worldedit.world.block.BlockCategory;
import com.sk89q.worldedit.world.block.BlockType; import com.sk89q.worldedit.world.block.BlockType;
import com.sk89q.worldedit.world.block.BlockTypes; import com.sk89q.worldedit.world.block.BlockTypes;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -132,7 +130,7 @@ public class Set extends SubCommand {
} }
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.component_illegal_block"), TranslatableCaption.of("invalid.component_illegal_block"),
TagResolver.resolver("value", Tag.inserting(Component.text(forbiddenType))) Template.of("value", forbiddenType)
); );
return true; return true;
} }
@ -144,10 +142,7 @@ public class Set extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_SET_COMPONENT.format(component))) { if (!Permissions.hasPermission(player, Permission.PERMISSION_SET_COMPONENT.format(component))) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_SET_COMPONENT.format(component))
"node",
Tag.inserting(Component.text(Permission.PERMISSION_SET_COMPONENT.format(component)))
)
); );
return false; return false;
} }
@ -170,7 +165,7 @@ public class Set extends SubCommand {
plot.removeRunning(); plot.removeRunning();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("working.component_complete"), TranslatableCaption.of("working.component_complete"),
TagResolver.resolver("plot", Tag.inserting(Component.text(plot.getId().toString()))) Template.of("plot", plot.getId().toString())
); );
}); });
if (Settings.QUEUE.NOTIFY_PROGRESS) { if (Settings.QUEUE.NOTIFY_PROGRESS) {

View File

@ -32,9 +32,7 @@ import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.StringMan;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
public abstract class SetCommand extends SubCommand { public abstract class SetCommand extends SubCommand {
@ -50,10 +48,7 @@ public abstract class SetCommand extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND.format(getFullId()))) { if (!Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND.format(getFullId()))) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_ADMIN_COMMAND.format(getFullId()))
"node",
Tag.inserting(Component.text(Permission.PERMISSION_ADMIN_COMMAND.format(getFullId())))
)
); );
player.sendMessage(TranslatableCaption.of("working.plot_not_claimed")); player.sendMessage(TranslatableCaption.of("working.plot_not_claimed"));
return false; return false;
@ -63,10 +58,7 @@ public abstract class SetCommand extends SubCommand {
if (!Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND.format(getFullId()))) { if (!Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND.format(getFullId()))) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", Permission.PERMISSION_ADMIN_COMMAND.format(getFullId()))
"node",
Tag.inserting(Component.text(Permission.PERMISSION_ADMIN_COMMAND.format(getFullId())))
)
); );
player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); player.sendMessage(TranslatableCaption.of("permission.no_plot_perms"));
return false; return false;

View File

@ -30,9 +30,7 @@ import com.plotsquared.core.location.BlockLoc;
import com.plotsquared.core.location.Location; import com.plotsquared.core.location.Location;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Plot;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
@CommandDeclaration(command = "sethome", @CommandDeclaration(command = "sethome",
permission = "plots.set.home", permission = "plots.set.home",
@ -73,7 +71,7 @@ public class SetHome extends SetCommand {
default -> { default -> {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("Use /plot set home [none]"))) Template.of("value", "Use /plot set home [none]")
); );
return false; return false;
} }

View File

@ -36,9 +36,7 @@ import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.setup.SetupProcess; import com.plotsquared.core.setup.SetupProcess;
import com.plotsquared.core.setup.SetupStep; import com.plotsquared.core.setup.SetupStep;
import com.plotsquared.core.util.SetupUtils; import com.plotsquared.core.util.SetupUtils;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -87,10 +85,7 @@ public class Setup extends SubCommand {
player.sendMessage(TranslatableCaption.of("setup.setup_not_started")); player.sendMessage(TranslatableCaption.of("setup.setup_not_started"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( Template.of("value", "Use /plot setup to start a setup process.")
"value",
Tag.inserting(Component.text("Use /plot setup to start a setup process."))
)
); );
return true; return true;
} }

View File

@ -33,9 +33,7 @@ import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -93,10 +91,8 @@ public class Swap extends SubCommand {
if (result) { if (result) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("swap.swap_success"), TranslatableCaption.of("swap.swap_success"),
TagResolver.builder() Template.of("origin", p1),
.tag("origin", Tag.inserting(Component.text(p1))) Template.of("target", p2)
.tag("target", Tag.inserting(Component.text(p2)))
.build()
); );
return true; return true;
} else { } else {

View File

@ -31,9 +31,7 @@ import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.StringMan;
import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.PlotQuery;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import java.util.Collection; import java.util.Collection;
import java.util.Locale; import java.util.Locale;
@ -61,7 +59,7 @@ public class Target extends SubCommand {
if (args.length == 0) { if (args.length == 0) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot target <<X;Z> | nearest>"))) Template.of("value", "/plot target <<X;Z> | nearest>")
); );
return false; return false;
} }
@ -85,7 +83,7 @@ public class Target extends SubCommand {
target.getCenter(player::setCompassTarget); target.getCenter(player::setCompassTarget);
player.sendMessage( player.sendMessage(
TranslatableCaption.of("compass.compass_target"), TranslatableCaption.of("compass.compass_target"),
TagResolver.resolver("target", Tag.inserting(Component.text(target.toString()))) Template.of("target", target.toString())
); );
return true; return true;
} }

View File

@ -51,9 +51,6 @@ import com.plotsquared.core.util.SetupUtils;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.WorldUtil; import com.plotsquared.core.util.WorldUtil;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.io.File; import java.io.File;
@ -179,16 +176,13 @@ public class Template extends SubCommand {
if (args[0].equalsIgnoreCase("export")) { if (args[0].equalsIgnoreCase("export")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot template export <world>"))) net.kyori.adventure.text.minimessage.Template.of("value", "/plot template export <world>")
); );
return true; return true;
} else if (args[0].equalsIgnoreCase("import")) { } else if (args[0].equalsIgnoreCase("import")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( net.kyori.adventure.text.minimessage.Template.of("value", "/plot template import <world> <template>")
"value",
Tag.inserting(Component.text("/plot template import <world> <template>"))
)
); );
return true; return true;
} }
@ -202,17 +196,14 @@ public class Template extends SubCommand {
if (args.length != 3) { if (args.length != 3) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver( net.kyori.adventure.text.minimessage.Template.of("value", "/plot template import <world> <template>")
"value",
Tag.inserting(Component.text("/plot template import <world> <template>"))
)
); );
return false; return false;
} }
if (this.plotAreaManager.hasPlotArea(world)) { if (this.plotAreaManager.hasPlotArea(world)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("setup.setup_world_taken"), TranslatableCaption.of("setup.setup_world_taken"),
TagResolver.resolver("value", Tag.inserting(Component.text(world))) net.kyori.adventure.text.minimessage.Template.of("value", world)
); );
return false; return false;
} }
@ -220,7 +211,7 @@ public class Template extends SubCommand {
if (!result) { if (!result) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("template.invalid_template"), TranslatableCaption.of("template.invalid_template"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[2]))) net.kyori.adventure.text.minimessage.Template.of("value", args[2])
); );
return false; return false;
} }
@ -258,7 +249,7 @@ public class Template extends SubCommand {
if (args.length != 2) { if (args.length != 2) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text("/plot template export <world>"))) net.kyori.adventure.text.minimessage.Template.of("value", "/plot template export <world>")
); );
return false; return false;
} }
@ -266,7 +257,7 @@ public class Template extends SubCommand {
if (area == null) { if (area == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.not_valid_plot_world"), TranslatableCaption.of("errors.not_valid_plot_world"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[1]))) net.kyori.adventure.text.minimessage.Template.of("value", args[1])
); );
return false; return false;
} }
@ -278,7 +269,7 @@ public class Template extends SubCommand {
e.printStackTrace(); e.printStackTrace();
player.sendMessage( player.sendMessage(
TranslatableCaption.of("template.template_failed"), TranslatableCaption.of("template.template_failed"),
TagResolver.resolver("value", Tag.inserting(Component.text(e.getMessage()))) net.kyori.adventure.text.minimessage.Template.of("value", e.getMessage())
); );
return; return;
} }

View File

@ -29,9 +29,7 @@ import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
@CommandDeclaration(command = "toggle", @CommandDeclaration(command = "toggle",
aliases = {"attribute"}, aliases = {"attribute"},
@ -56,12 +54,12 @@ public class Toggle extends Command {
if (toggle(player, "chatspy")) { if (toggle(player, "chatspy")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_disabled"), TranslatableCaption.of("toggle.toggle_disabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_enabled"), TranslatableCaption.of("toggle.toggle_enabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} }
} }
@ -77,12 +75,12 @@ public class Toggle extends Command {
if (toggle(player, "worldedit")) { if (toggle(player, "worldedit")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_disabled"), TranslatableCaption.of("toggle.toggle_disabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_enabled"), TranslatableCaption.of("toggle.toggle_enabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} }
} }
@ -97,12 +95,12 @@ public class Toggle extends Command {
if (toggle(player, "chat")) { if (toggle(player, "chat")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_disabled"), TranslatableCaption.of("toggle.toggle_disabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_enabled"), TranslatableCaption.of("toggle.toggle_enabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} }
} }
@ -117,12 +115,12 @@ public class Toggle extends Command {
if (toggle(player, "ignoreExpireTask")) { if (toggle(player, "ignoreExpireTask")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_enabled"), TranslatableCaption.of("toggle.toggle_enabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_disabled"), TranslatableCaption.of("toggle.toggle_disabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} }
} }
@ -137,12 +135,12 @@ public class Toggle extends Command {
if (toggle(player, "disabletitles")) { if (toggle(player, "disabletitles")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_enabled"), TranslatableCaption.of("toggle.toggle_enabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_disabled"), TranslatableCaption.of("toggle.toggle_disabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} }
} }
@ -157,12 +155,12 @@ public class Toggle extends Command {
if (toggle(player, "disabletime")) { if (toggle(player, "disabletime")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_enabled"), TranslatableCaption.of("toggle.toggle_enabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_disabled"), TranslatableCaption.of("toggle.toggle_disabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} }
} }
@ -177,12 +175,12 @@ public class Toggle extends Command {
if (toggle(player, "debug")) { if (toggle(player, "debug")) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_disabled"), TranslatableCaption.of("toggle.toggle_disabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("toggle.toggle_enabled"), TranslatableCaption.of("toggle.toggle_enabled"),
TagResolver.resolver("setting", Tag.inserting(Component.text(command.toString()))) Template.of("setting", command.toString())
); );
} }
player.refreshDebug(); player.refreshDebug();

View File

@ -27,6 +27,7 @@ package com.plotsquared.core.command;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.Settings;
import com.plotsquared.core.configuration.caption.Templates;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.database.DBFunc;
import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.permissions.Permission;
@ -38,9 +39,7 @@ import com.plotsquared.core.util.PlayerManager;
import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.TabCompletions;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Collection; import java.util.Collection;
@ -83,7 +82,7 @@ public class Trust extends Command {
); );
checkTrue(args.length == 1, TranslatableCaption.of("commandconfig.command_syntax"), checkTrue(args.length == 1, TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage()))) Templates.of("value", getUsage())
); );
final CompletableFuture<Boolean> future = new CompletableFuture<>(); final CompletableFuture<Boolean> future = new CompletableFuture<>();
@ -94,14 +93,14 @@ public class Trust extends Command {
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Template.of("value", args[0])
); );
} }
future.completeExceptionally(throwable); future.completeExceptionally(throwable);
return; return;
} else { } else {
checkTrue(!uuids.isEmpty(), TranslatableCaption.of("errors.invalid_player"), checkTrue(!uuids.isEmpty(), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[0]))) Templates.of("value", args[0])
); );
Iterator<UUID> iterator = uuids.iterator(); Iterator<UUID> iterator = uuids.iterator();
@ -113,10 +112,7 @@ public class Trust extends Command {
.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_TRUST))) { .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_TRUST))) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver( Template.of("value", PlayerManager.resolveName(uuid).getComponent(player))
"value",
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
)
); );
iterator.remove(); iterator.remove();
continue; continue;
@ -124,10 +120,7 @@ public class Trust extends Command {
if (currentPlot.isOwner(uuid)) { if (currentPlot.isOwner(uuid)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("member.already_added"), TranslatableCaption.of("member.already_added"),
TagResolver.resolver( Template.of("value", PlayerManager.resolveName(uuid).getComponent(player))
"value",
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
)
); );
iterator.remove(); iterator.remove();
continue; continue;
@ -135,10 +128,7 @@ public class Trust extends Command {
if (currentPlot.getTrusted().contains(uuid)) { if (currentPlot.getTrusted().contains(uuid)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("member.already_added"), TranslatableCaption.of("member.already_added"),
TagResolver.resolver( Template.of("value", PlayerManager.resolveName(uuid).getComponent(player))
"value",
Tag.inserting(PlayerManager.resolveName(uuid).toComponent(player))
)
); );
iterator.remove(); iterator.remove();
continue; continue;
@ -151,7 +141,7 @@ public class Trust extends Command {
if (localTrustSize >= maxTrustSize) { if (localTrustSize >= maxTrustSize) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("members.plot_max_members_trusted"), TranslatableCaption.of("members.plot_max_members_trusted"),
TagResolver.resolver("amount", Tag.inserting(Component.text(localTrustSize))) Template.of("amount", String.valueOf(localTrustSize))
); );
return; return;
} }

View File

@ -37,9 +37,7 @@ import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.StringMan;
import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@CommandDeclaration(command = "unlink", @CommandDeclaration(command = "unlink",
@ -95,7 +93,7 @@ public class Unlink extends SubCommand {
if (event.getEventResult() == Result.DENY) { if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Unlink"))) Template.of("value", "Unlink")
); );
return true; return true;
} }

View File

@ -28,6 +28,7 @@ package com.plotsquared.core.command;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.plotsquared.core.PlotSquared; import com.plotsquared.core.PlotSquared;
import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.Settings;
import com.plotsquared.core.configuration.caption.Templates;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.events.TeleportCause; import com.plotsquared.core.events.TeleportCause;
import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.permissions.Permission;
@ -44,9 +45,7 @@ import com.plotsquared.core.util.query.PlotQuery;
import com.plotsquared.core.util.query.SortingStrategy; import com.plotsquared.core.util.query.SortingStrategy;
import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.Tag;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -108,10 +107,8 @@ public class Visit extends Command {
} else if (plots.size() < page || page < 1) { } else if (plots.size() < page || page < 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.number_not_in_range"), TranslatableCaption.of("invalid.number_not_in_range"),
TagResolver.builder() Template.of("min", "1"),
.tag("min", Tag.inserting(Component.text(1))) Template.of("max", String.valueOf(plots.size()))
.tag("max", Tag.inserting(Component.text(plots.size())))
.build()
); );
return; return;
} }
@ -121,7 +118,7 @@ public class Visit extends Command {
if (!Permissions.hasPermission(player, Permission.PERMISSION_VISIT_UNOWNED)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_VISIT_UNOWNED)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.visit.unowned"))) Templates.of("node", "plots.visit.unowned")
); );
return; return;
} }
@ -130,7 +127,7 @@ public class Visit extends Command {
.hasPermission(player, Permission.PERMISSION_HOME)) { .hasPermission(player, Permission.PERMISSION_HOME)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.visit.owned"))) Templates.of("node", "plots.visit.owned")
); );
return; return;
} }
@ -138,7 +135,7 @@ public class Visit extends Command {
if (!Permissions.hasPermission(player, Permission.PERMISSION_SHARED)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_SHARED)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.visit.shared"))) Templates.of("node", "plots.visit.shared")
); );
return; return;
} }
@ -149,7 +146,7 @@ public class Visit extends Command {
&& !Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_VISIT_UNTRUSTED)) { && !Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_VISIT_UNTRUSTED)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver("node", Tag.inserting(Component.text("plots.visit.other"))) Templates.of("node", "plots.visit.other")
); );
return; return;
} }
@ -157,10 +154,7 @@ public class Visit extends Command {
if (!Permissions.hasPermission(player, Permission.PERMISSION_VISIT_DENIED)) { if (!Permissions.hasPermission(player, Permission.PERMISSION_VISIT_DENIED)) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("permission.no_permission"), TranslatableCaption.of("permission.no_permission"),
TagResolver.resolver( Template.of("node", String.valueOf(Permission.PERMISSION_VISIT_DENIED))
"node",
Tag.inserting(Permission.PERMISSION_VISIT_DENIED)
)
); );
return; return;
} }
@ -202,11 +196,11 @@ public class Visit extends Command {
if (!MathMan.isInteger(args[2])) { if (!MathMan.isInteger(args[2])) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.not_valid_number"), TranslatableCaption.of("invalid.not_valid_number"),
TagResolver.resolver("value", Tag.inserting(Component.text("(1, ∞)"))) Templates.of("value", "(1, ∞)")
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage()))) Templates.of("value", getUsage())
); );
return CompletableFuture.completedFuture(false); return CompletableFuture.completedFuture(false);
} }
@ -219,11 +213,11 @@ public class Visit extends Command {
if (sortByArea == null) { if (sortByArea == null) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.not_valid_number"), TranslatableCaption.of("invalid.not_valid_number"),
TagResolver.resolver("value", Tag.inserting(Component.text("(1, ∞)"))) Templates.of("value", "(1, ∞)")
); );
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage()))) Templates.of("value", getUsage())
); );
return CompletableFuture.completedFuture(false); return CompletableFuture.completedFuture(false);
} }
@ -236,7 +230,7 @@ public class Visit extends Command {
} else if (throwable != null || uuids.size() != 1) { } else if (throwable != null || uuids.size() != 1) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage()))) Templates.of("value", getUsage())
); );
} else { } else {
final UUID uuid = uuids.toArray(new UUID[0])[0]; final UUID uuid = uuids.toArray(new UUID[0])[0];
@ -263,7 +257,7 @@ public class Visit extends Command {
} catch (NumberFormatException ignored) { } catch (NumberFormatException ignored) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("invalid.not_a_number"), TranslatableCaption.of("invalid.not_a_number"),
TagResolver.resolver("value", Tag.inserting(Component.text(args[1]))) Template.of("value", args[1])
); );
return CompletableFuture.completedFuture(false); return CompletableFuture.completedFuture(false);
} }
@ -298,7 +292,7 @@ public class Visit extends Command {
} else { } else {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("errors.invalid_player"), TranslatableCaption.of("errors.invalid_player"),
TagResolver.resolver("value", Tag.inserting(Component.text(finalArgs[0]))) Template.of("value", finalArgs[0])
); );
} }
} else { } else {
@ -326,7 +320,7 @@ public class Visit extends Command {
// /p v is invalid // /p v is invalid
player.sendMessage( player.sendMessage(
TranslatableCaption.of("commandconfig.command_syntax"), TranslatableCaption.of("commandconfig.command_syntax"),
TagResolver.resolver("value", Tag.inserting(Component.text(getUsage()))) Templates.of("value", getUsage())
); );
return CompletableFuture.completedFuture(false); return CompletableFuture.completedFuture(false);
default: default:

View File

@ -45,10 +45,8 @@ import com.plotsquared.core.util.PatternUtil;
import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.Permissions;
import com.sk89q.worldedit.function.pattern.Pattern; import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.world.item.ItemTypes; import com.sk89q.worldedit.world.item.ItemTypes;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.Tag; import net.kyori.adventure.text.minimessage.Template;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@ -189,8 +187,7 @@ public class ComponentPresetManager {
} }
final int size = (int) Math.ceil((double) allowedPresets.size() / 9.0D); final int size = (int) Math.ceil((double) allowedPresets.size() / 9.0D);
final PlotInventory plotInventory = new PlotInventory(this.inventoryUtil, player, size, final PlotInventory plotInventory = new PlotInventory(this.inventoryUtil, player, size,
TranslatableCaption.of("preset.title").getComponent(player) TranslatableCaption.of("preset.title").getComponent(player)) {
) {
@Override @Override
public boolean onClick(final int index) { public boolean onClick(final int index) {
if (!getPlayer().getCurrentPlot().equals(plot)) { if (!getPlayer().getCurrentPlot().equals(plot)) {
@ -221,8 +218,7 @@ public class ComponentPresetManager {
if (!econHandler.isEnabled(plot.getArea())) { if (!econHandler.isEnabled(plot.getArea())) {
getPlayer().sendMessage( getPlayer().sendMessage(
TranslatableCaption.of("preset.economy_disabled"), TranslatableCaption.of("preset.economy_disabled"),
TagResolver.resolver("preset", Tag.inserting(Component.text(componentPreset.getDisplayName()))) Template.of("preset", componentPreset.getDisplayName()));
);
return false; return false;
} }
if (econHandler.getMoney(getPlayer()) < componentPreset.getCost()) { if (econHandler.getMoney(getPlayer()) < componentPreset.getCost()) {
@ -232,10 +228,7 @@ public class ComponentPresetManager {
econHandler.withdrawMoney(getPlayer(), componentPreset.getCost()); econHandler.withdrawMoney(getPlayer(), componentPreset.getCost());
getPlayer().sendMessage( getPlayer().sendMessage(
TranslatableCaption.of("economy.removed_balance"), TranslatableCaption.of("economy.removed_balance"),
TagResolver.resolver( Template.of("money", econHandler.format(componentPreset.getCost()))
"money",
Tag.inserting(Component.text(econHandler.format(componentPreset.getCost())))
)
); );
} }
} }
@ -265,21 +258,19 @@ public class ComponentPresetManager {
final List<String> lore = new ArrayList<>(); final List<String> lore = new ArrayList<>();
if (preset.getCost() > 0) { if (preset.getCost() > 0) {
if (!this.econHandler.isEnabled(plot.getArea())) { if (!this.econHandler.isEnabled(plot.getArea())) {
lore.add(MINI_MESSAGE.serialize(MINI_MESSAGE.deserialize( lore.add(MINI_MESSAGE.serialize(MINI_MESSAGE.parse(
TranslatableCaption.of("preset.preset_lore_economy_disabled").getComponent(player)))); TranslatableCaption.of("preset.preset_lore_economy_disabled").getComponent(player))));
} else { } else {
lore.add(MINI_MESSAGE.serialize(MINI_MESSAGE.deserialize( lore.add(MINI_MESSAGE.serialize(MINI_MESSAGE.parse(
TranslatableCaption.of("preset.preset_lore_cost").getComponent(player), TranslatableCaption.of("preset.preset_lore_cost").getComponent(player),
TagResolver.resolver("cost", Tag.inserting(Component.text(String.format("%.2f", preset.getCost())))) Template.of("cost", String.format("%.2f", preset.getCost()))
))); )));
} }
} }
lore.add(MINI_MESSAGE.serialize(MINI_MESSAGE.deserialize( lore.add(MINI_MESSAGE.serialize(MINI_MESSAGE.parse(
TranslatableCaption.of("preset.preset_lore_component").getComponent(player), TranslatableCaption.of("preset.preset_lore_component").getComponent(player),
TagResolver.builder() Template.of("component", preset.getComponent().name().toLowerCase()),
.tag("component", Tag.inserting(Component.text(preset.getComponent().name().toLowerCase()))) Template.of("prefix", TranslatableCaption.of("core.prefix").getComponent(player))
.tag("prefix", Tag.inserting(TranslatableCaption.of("core.prefix").toComponent(player)))
.build()
))); )));
lore.removeIf(String::isEmpty); lore.removeIf(String::isEmpty);
lore.addAll(preset.getDescription()); lore.addAll(preset.getDescription());

View File

@ -25,8 +25,6 @@
*/ */
package com.plotsquared.core.configuration.caption; package com.plotsquared.core.configuration.caption;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.ComponentLike;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
/** /**
@ -42,13 +40,4 @@ public interface Caption {
*/ */
@NonNull String getComponent(@NonNull LocaleHolder localeHolder); @NonNull String getComponent(@NonNull LocaleHolder localeHolder);
/**
* Get the Adventure {@link ComponentLike} for this caption
*
* @param localeHolder Locale holder
* @return ComponentLike
* @since TODO
*/
@NonNull Component toComponent(@NonNull LocaleHolder localeHolder);
} }

View File

@ -25,53 +25,27 @@
*/ */
package com.plotsquared.core.configuration.caption; package com.plotsquared.core.configuration.caption;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.kyori.adventure.text.minimessage.Template;
/**
* A holder for a caption.
* Useful when constructing messages in multiple steps with {@link TagResolver}s.
*/
public class CaptionHolder { public class CaptionHolder {
private Caption caption = StaticCaption.of(""); private Caption caption = StaticCaption.of("");
private TagResolver[] tagResolvers = new TagResolver[0]; private Template[] templates = new Template[0];
/**
* Set the {@link Caption} to send.
*
* @param caption The new caption.
*/
public void set(Caption caption) { public void set(Caption caption) {
this.caption = caption; this.caption = caption;
} }
/**
* Get the {@link Caption} to send.
*
* @return The caption to send.
*/
public Caption get() { public Caption get() {
return this.caption; return this.caption;
} }
/** public Template[] getTemplates() {
* Get the {@link TagResolver}s to use when resolving tags in the {@link Caption}. return this.templates;
*
* @return The tag resolvers to use.
* @since TODO
*/
public TagResolver[] getTagResolvers() {
return this.tagResolvers;
} }
/** public void setTemplates(Template... templates) {
* Set the {@link TagResolver}s to use when resolving tags in the {@link Caption}. this.templates = templates;
*
* @param tagResolvers The tag resolvers to use.
* @since TODO
*/
public void setTagResolvers(TagResolver... tagResolvers) {
this.tagResolvers = tagResolvers;
} }
} }

View File

@ -107,9 +107,9 @@ public class CaptionUtility {
*/ */
public static String stripClickEvents(final @NonNull String miniMessageString) { public static String stripClickEvents(final @NonNull String miniMessageString) {
// parse, transform and serialize again // parse, transform and serialize again
Component component = MiniMessage.miniMessage().deserialize(miniMessageString); Component component = MiniMessage.get().parse(miniMessageString);
component = CLICK_STRIP_TRANSFORM.transform(component); component = CLICK_STRIP_TRANSFORM.transform(component);
return MiniMessage.miniMessage().serialize(component); return MiniMessage.get().serialize(component);
} }
/** /**

View File

@ -26,9 +26,6 @@
package com.plotsquared.core.configuration.caption; package com.plotsquared.core.configuration.caption;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.ComponentLike;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
public final class StaticCaption implements Caption { public final class StaticCaption implements Caption {
@ -54,9 +51,4 @@ public final class StaticCaption implements Caption {
return this.value; // can't be translated return this.value; // can't be translated
} }
@Override
public @NonNull Component toComponent(@NonNull final LocaleHolder localeHolder) {
return MiniMessage.miniMessage().deserialize(this.value);
}
} }

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