Compare commits

..

2 Commits

Author SHA1 Message Date
6aa3f7c1b7 Update Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitQueueCoordinator.java
Co-authored-by: Hannes Greule <SirYwell@users.noreply.github.com>
2022-05-10 09:02:57 +02:00
9f3507ea85 Actually implement chunkObject into queueing
- This should only be used in generation
 - The chunk will be used as fallback to set to using bukkit API if WNA fails
2022-05-10 01:53:22 +01:00
36 changed files with 262 additions and 602 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 - uses: release-drafter/release-drafter@v5.19.0
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

4
.gitignore vendored
View File

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

49
.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" 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"> <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">
<metadata id="metadata8"> <metadata id="metadata8">
<rdf:RDF> <rdf:RDF>
<cc:Work rdf:about=""> <cc:Work rdf:about="">
@ -9,42 +9,41 @@
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
<defs id="defs6"> <defs id="defs6">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"> <clipPath id="clipPath18" clipPathUnits="userSpaceOnUse">
<path d="M 0,2500 H 3000 V 0 H 0 Z" id="path16" /> <path id="path16" d="M 0,2500 H 3000 V 0 H 0 Z" />
</clipPath> </clipPath>
</defs> </defs>
<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 transform="matrix(1.3333333,0,0,-1.3333333,0,3333.3333)" id="g10">
<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 id="g14" clip-path="url(#clipPath18)"> <g clip-path="url(#clipPath18)" id="g14">
<g id="g20" transform="translate(1486.1511,2242.6453)"> <g transform="translate(1486.1511,2242.6453)" id="g20">
<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" /> <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" />
</g> </g>
<g id="g24" transform="translate(1201.7948,1741.5303)"> <g transform="translate(1201.7948,1741.5303)" id="g24">
<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" /> <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" />
</g> </g>
<g id="g28" transform="translate(919.3342,1429.7462)"> <g transform="translate(919.3342,1429.7462)" id="g28">
<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" /> <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" />
</g> </g>
<g id="g32" transform="translate(1649.134,1700.6166)"> <g transform="translate(1649.134,1700.6166)" id="g32">
<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" /> <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" />
</g> </g>
<g id="g36" transform="translate(1262.7214,1613.126)"> <g transform="translate(1262.7214,1613.126)" id="g36">
<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" /> <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" />
</g> </g>
<g id="g40" transform="translate(1966.3174,1675.6364)"> <g transform="translate(1966.3174,1675.6364)" id="g40">
<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" /> <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" />
</g> </g>
<g id="g44" transform="translate(1499.3971,1669.1094)"> <g transform="translate(1499.3971,1669.1094)" id="g44">
<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" /> <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" />
</g> </g>
<g id="g48" transform="translate(1748.0469,1601.6797)"> <g transform="translate(1748.0469,1601.6797)" id="g48">
<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" /> <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" />
</g> </g>
<g id="g52" transform="translate(1262.7214,1613.126)"> <g transform="translate(1262.7214,1613.126)" id="g52">
<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" /> <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" />
</g> </g>
</g> </g>
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 10 KiB

4
.lift.toml Normal file
View File

@ -0,0 +1,4 @@
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://repo.papermc.io/repository/maven-public/") url = uri("https://papermc.io/repo/repository/maven-public/")
} }
maven { maven {
@ -85,8 +85,6 @@ 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()
@ -97,7 +95,7 @@ tasks.named<ShadowJar>("shadowJar") {
tasks { tasks {
withType<Javadoc> { withType<Javadoc> {
val opt = options as StandardJavadocDocletOptions val opt = options as StandardJavadocDocletOptions
opt.links("https://jd.papermc.io/paper/1.18/") opt.links("https://papermc.io/javadocs/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

@ -513,10 +513,8 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
this.backgroundPipeline.registerService(essentialsUUIDService); this.backgroundPipeline.registerService(essentialsUUIDService);
} }
if (Settings.UUID.IMPROMPTU_SERVICE_MOJANG_API) {
final SquirrelIdUUIDService impromptuMojangService = new SquirrelIdUUIDService(Settings.UUID.IMPROMPTU_LIMIT); final SquirrelIdUUIDService impromptuMojangService = new SquirrelIdUUIDService(Settings.UUID.IMPROMPTU_LIMIT);
this.impromptuPipeline.registerService(impromptuMojangService); this.impromptuPipeline.registerService(impromptuMojangService);
}
final SquirrelIdUUIDService backgroundMojangService = new SquirrelIdUUIDService(Settings.UUID.BACKGROUND_LIMIT); final SquirrelIdUUIDService backgroundMojangService = new SquirrelIdUUIDService(Settings.UUID.BACKGROUND_LIMIT);
this.backgroundPipeline.registerService(backgroundMojangService); this.backgroundPipeline.registerService(backgroundMojangService);
} else { } else {

View File

@ -25,11 +25,7 @@
*/ */
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;
@ -56,14 +52,7 @@ 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) {
QueueCoordinator queue = PlotSquared.platform().globalBlockQueue().getNewQueue(BukkitAdapter.adapt(world)); AugmentedUtils.generate(source, world.getName(), source.getX(), source.getZ(), null);
// 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

@ -551,10 +551,6 @@ 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:
@ -754,66 +750,62 @@ 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 fromBlock = event.getBlock(); Block from = event.getBlock();
// Check liquid flow flag inside of origin plot too // Check liquid flow flag inside of origin plot too
final Location fromLocation = BukkitUtil.adapt(fromBlock.getLocation()); final Location fLocation = BukkitUtil.adapt(from.getLocation());
final PlotArea fromArea = fromLocation.getPlotArea(); final PlotArea fromArea = fLocation.getPlotArea();
if (fromArea != null) { if (fromArea != null) {
final Plot fromPlot = fromArea.getOwnedPlot(fromLocation); final Plot plot = fromArea.getOwnedPlot(fLocation);
if (fromPlot != null && fromPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event if (plot != null && plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event
.getBlock() .getBlock()
.isLiquid()) { .isLiquid()) {
fromPlot.debug("Liquid could not flow because liquid-flow = disabled"); plot.debug("Liquid could not flow because liquid-flow = disabled");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
} }
Block toBlock = event.getToBlock(); Block to = event.getToBlock();
Location toLocation = BukkitUtil.adapt(toBlock.getLocation()); Location tLocation = BukkitUtil.adapt(to.getLocation());
PlotArea toArea = toLocation.getPlotArea(); PlotArea area = tLocation.getPlotArea();
if (toArea == null) { if (area == null) {
if (fromBlock.getType() == Material.DRAGON_EGG && fromArea != null) { if (from.getType() == Material.DRAGON_EGG && fromArea != null) {
event.setCancelled(true); event.setCancelled(true);
} }
return; return;
} }
if (toLocation.getY() >= toArea.getMaxBuildHeight() || toLocation.getY() < toArea.getMinBuildHeight()) { Plot plot = area.getOwnedPlot(tLocation);
event.setCancelled(true);
return;
}
Plot toPlot = toArea.getOwnedPlot(toLocation);
if (fromBlock.getType() == Material.DRAGON_EGG && fromArea != null) { if (from.getType() == Material.DRAGON_EGG && fromArea != null) {
final Plot fromPlot = fromArea.getOwnedPlot(fromLocation); final Plot fromPlot = fromArea.getOwnedPlot(fLocation);
if (fromPlot != null || toPlot != null) { if (fromPlot != null || plot != null) {
if ((fromPlot == null || !fromPlot.equals(toPlot)) && (toPlot == null || !toPlot.equals(fromPlot))) { if ((fromPlot == null || !fromPlot.equals(plot)) && (plot == null || !plot.equals(fromPlot))) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
} }
} }
if (toPlot != null) { if (plot != null) {
if (!toArea.contains(fromLocation.getX(), fromLocation.getZ()) || !Objects.equals(toPlot, toArea.getOwnedPlot(fromLocation))) { if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(plot, area.getOwnedPlot(fLocation))) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (toPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.ENABLED && event.getBlock().isLiquid()) { if (plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.ENABLED && event.getBlock().isLiquid()) {
return; return;
} }
if (toPlot.getFlag(DisablePhysicsFlag.class)) { if (plot.getFlag(DisablePhysicsFlag.class)) {
toPlot.debug(event.getBlock().getType() + " could not update because disable-physics = true"); plot.debug(event.getBlock().getType() + " could not update because disable-physics = true");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (toPlot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event.getBlock().isLiquid()) { if (plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event.getBlock().isLiquid()) {
toPlot.debug("Liquid could not flow because liquid-flow = disabled"); plot.debug("Liquid could not flow because liquid-flow = disabled");
event.setCancelled(true); event.setCancelled(true);
} }
} else if (!toArea.contains(fromLocation.getX(), fromLocation.getZ()) || !Objects.equals(null, toArea.getOwnedPlot(fromLocation))) { } else if (!area.contains(fLocation.getX(), fLocation.getZ()) || !Objects.equals(null, area.getOwnedPlot(fLocation))) {
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();

View File

@ -168,7 +168,6 @@ 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

@ -196,7 +196,6 @@ 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":

View File

@ -76,11 +76,10 @@ 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 volatile boolean shouldCancel; private boolean shouldCancel;
private boolean finished; private boolean finished;
@Inject @Inject
@ -93,8 +92,7 @@ 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<>();
@ -109,27 +107,14 @@ 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
@ -146,9 +131,7 @@ 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,27 +63,10 @@ import java.util.function.Consumer;
public class BukkitQueueCoordinator extends BasicQueueCoordinator { public class BukkitQueueCoordinator extends BasicQueueCoordinator {
private static final SideEffectSet NO_SIDE_EFFECT_SET; private final SideEffectSet noSideEffectSet;
private static final SideEffectSet EDGE_SIDE_EFFECT_SET; private final SideEffectSet lightingSideEffectSet;
private static final SideEffectSet LIGHTING_SIDE_EFFECT_SET; private final SideEffectSet edgeSideEffectSet;
private static final SideEffectSet EDGE_LIGHTING_SIDE_EFFECT_SET; private final SideEffectSet edgeLightingSideEffectSet;
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;
@ -94,6 +77,19 @@ 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
@ -206,7 +202,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, getSideEffectSet(SideEffectState.NONE)); getWorld().setBlock(blockVector3, block, noSideEffectSet);
} 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());
@ -263,9 +259,9 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
} }
SideEffectSet sideEffectSet; SideEffectSet sideEffectSet;
if (lighting) { if (lighting) {
sideEffectSet = getSideEffectSet(edge ? SideEffectState.EDGE_LIGHTING : SideEffectState.LIGHTING); sideEffectSet = edge ? edgeLightingSideEffectSet : lightingSideEffectSet;
} else { } else {
sideEffectSet = getSideEffectSet(edge ? SideEffectState.EDGE : SideEffectState.NONE); sideEffectSet = edge ? edgeSideEffectSet : noSideEffectSet;
} }
getWorld().setBlock(loc, block, sideEffectSet); getWorld().setBlock(loc, block, sideEffectSet);
} catch (WorldEditException ignored) { } catch (WorldEditException ignored) {
@ -293,7 +289,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator {
CompoundTag tag = block.getNbtData(); CompoundTag tag = block.getNbtData();
StateWrapper sw = new StateWrapper(tag); StateWrapper sw = new StateWrapper(tag);
sw.restoreTag(existing); sw.restoreTag(getWorld().getName(), existing.getX(), existing.getY(), existing.getZ());
} }
} }
} }
@ -386,23 +382,4 @@ 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

@ -44,7 +44,6 @@ 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;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -167,32 +166,14 @@ public class StateWrapper {
return str; return str;
} }
/** @SuppressWarnings("deprecation") // #setLine is needed for Spigot compatibility
* Restore the TileEntity data to the given world at the given coordinates.
*
* @param worldName World name
* @param x x position
* @param y y position
* @param z z position
* @return true if successful
*/
public boolean restoreTag(String worldName, int x, int y, int z) { public boolean restoreTag(String worldName, int x, int y, int z) {
World world = BukkitUtil.getWorld(worldName); if (this.tag == null) {
if (world == null) {
return false; return false;
} }
return restoreTag(world.getBlockAt(x, y, z)); World world = BukkitUtil.getWorld(worldName);
} Block block = world.getBlockAt(x, y, z);
if (block == null) {
/**
* Restore the TileEntity data to the given block
*
* @param block Block to restore to
* @return true if successful
*/
@SuppressWarnings("deprecation") // #setLine is needed for Spigot compatibility
public boolean restoreTag(@NonNull Block block) {
if (this.tag == null) {
return false; return false;
} }
org.bukkit.block.BlockState state = block.getState(); org.bukkit.block.BlockState state = block.getState();

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[yIndex]; BaseBlock id = ids[y];
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 (loaded && !SetupUtils.generators.isEmpty() && !force) { if (!SetupUtils.generators.isEmpty() && !force) {
return; return;
} }
String testWorld = "CheckingPlotSquaredGenerator"; String testWorld = "CheckingPlotSquaredGenerator";
@ -100,7 +100,6 @@ public class BukkitSetupUtils extends SetupUtils {
e.printStackTrace(); e.printStackTrace();
} }
} }
loaded = true;
} }
@Override @Override

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@intellectualsites.com. All reported by contacting the project team at contact@alexander-soderberg.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

@ -161,7 +161,6 @@ 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

@ -32,7 +32,6 @@ 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.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.permissions.Permission; 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;
@ -40,7 +39,6 @@ import com.plotsquared.core.plot.PlotArea;
import com.plotsquared.core.plot.expiration.ExpireManager; import com.plotsquared.core.plot.expiration.ExpireManager;
import com.plotsquared.core.plot.flag.implementations.DoneFlag; import com.plotsquared.core.plot.flag.implementations.DoneFlag;
import com.plotsquared.core.plot.flag.implementations.PriceFlag; import com.plotsquared.core.plot.flag.implementations.PriceFlag;
import com.plotsquared.core.plot.flag.implementations.ServerPlotFlag;
import com.plotsquared.core.plot.world.PlotAreaManager; import com.plotsquared.core.plot.world.PlotAreaManager;
import com.plotsquared.core.util.EconHandler; import com.plotsquared.core.util.EconHandler;
import com.plotsquared.core.util.MathMan; import com.plotsquared.core.util.MathMan;
@ -420,7 +418,7 @@ public class ListCmd extends SubCommand {
Caption color; Caption color;
if (plot.getOwner() == null) { if (plot.getOwner() == null) {
color = TranslatableCaption.of("info.plot_list_no_owner"); color = TranslatableCaption.of("info.plot_list_no_owner");
} else if (plot.isOwner(player.getUUID()) || plot.getOwner().equals(DBFunc.EVERYONE)) { } else if (plot.isOwner(player.getUUID())) {
color = TranslatableCaption.of("info.plot_list_owned_by"); color = TranslatableCaption.of("info.plot_list_owned_by");
} else if (plot.isAdded(player.getUUID())) { } else if (plot.isAdded(player.getUUID())) {
color = TranslatableCaption.of("info.plot_list_added_to"); color = TranslatableCaption.of("info.plot_list_added_to");
@ -458,17 +456,7 @@ public class ListCmd extends SubCommand {
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);
String unknown = TranslatableCaption.of("info.plot_list_player_unknown").getComponent(player);
String server = TranslatableCaption.of("info.plot_list_player_server").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)) {
Template serverTemplate = Template.of(
"info.server",
TranslatableCaption.of("info.server").getComponent(player)
);
builder.append(MINI_MESSAGE.parse(server, serverTemplate));
} 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);
@ -478,18 +466,6 @@ public class ListCmd extends SubCommand {
Template playerTemplate = Template.of("player", uuidMapping.getUsername()); Template playerTemplate = Template.of("player", uuidMapping.getUsername());
if (pp != null) { if (pp != null) {
builder.append(MINI_MESSAGE.parse(online, prefixTemplate, playerTemplate)); builder.append(MINI_MESSAGE.parse(online, prefixTemplate, playerTemplate));
} else if (uuidMapping.getUsername().equalsIgnoreCase("unknown")) {
Template unknownTemplate = Template.of(
"info.unknown",
TranslatableCaption.of("info.unknown").getComponent(player)
);
builder.append(MINI_MESSAGE.parse(unknown, unknownTemplate));
} else if (uuidMapping.getUuid().equals(DBFunc.EVERYONE)) {
Template everyoneTemplate = Template.of(
"info.everyone",
TranslatableCaption.of("info.everyone").getComponent(player)
);
builder.append(MINI_MESSAGE.parse(everyone, everyoneTemplate));
} else { } else {
builder.append(MINI_MESSAGE.parse(offline, prefixTemplate, playerTemplate)); builder.append(MINI_MESSAGE.parse(offline, prefixTemplate, playerTemplate));
} }
@ -512,7 +488,6 @@ public class ListCmd extends SubCommand {
} catch (TimeoutException e) { } catch (TimeoutException e) {
player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout"));
} }
}
Template players = Template.of("players", 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.setTemplates(command_tp, command_info, hover_info, numberTemplate, plotTemplate, players); caption.setTemplates(command_tp, command_info, hover_info, numberTemplate, plotTemplate, players);

View File

@ -249,9 +249,6 @@ public class Settings extends Config {
public static int UUID_CACHE_SIZE = 100000; public static int UUID_CACHE_SIZE = 100000;
@Comment("Rate limit (per 10 minutes) for background UUID fetching from the Mojang API") @Comment("Rate limit (per 10 minutes) for background UUID fetching from the Mojang API")
public static int BACKGROUND_LIMIT = 200; public static int BACKGROUND_LIMIT = 200;
@Comment("Whether the Mojang API service is enabled for impromptu api calls. If false only the Background task will use" +
" http requests to fill the UUID cache (requires restart)")
public static boolean IMPROMPTU_SERVICE_MOJANG_API = true;
@Comment("Rate limit (per 10 minutes) for random UUID fetching from the Mojang API") @Comment("Rate limit (per 10 minutes) for random UUID fetching from the Mojang API")
public static int IMPROMPTU_LIMIT = 300; public static int IMPROMPTU_LIMIT = 300;
@Comment("Timeout (in milliseconds) for non-blocking UUID requests (mostly commands)") @Comment("Timeout (in milliseconds) for non-blocking UUID requests (mostly commands)")
@ -694,7 +691,6 @@ public class Settings extends Config {
@Comment({"If blocks at the edges of queued operations should be set causing updates", @Comment({"If blocks at the edges of queued operations should be set causing updates",
" - Slightly slower, but prevents issues such as fences left connected to nothing"}) " - Slightly slower, but prevents issues such as fences left connected to nothing"})
public static boolean UPDATE_EDGES = true; public static boolean UPDATE_EDGES = true;
} }
@Comment("Settings related to tab completion") @Comment("Settings related to tab completion")

View File

@ -54,23 +54,12 @@ public class AugmentedUtils {
enabled = true; enabled = true;
} }
/** public static boolean generate(
* Generate an augmented world chunk at the given location. If a queue is given, the data will be written to it, else a new @Nullable Object chunkObject,
* queue will be created and written to world. Returns true if generation occurred.
*
* @param world World name to generate data for. Must be a PlotSquared world containing one or more areas else nothing will
* happen.
* @param chunkX Chunk X position
* @param chunkZ Chunk Z position
* @param queue Queue to write to, if desired.
* @return true if generation occurred.
* @since 6.8.0
*/
public static boolean generateChunk(
final @NonNull String world, final @NonNull String world,
final int chunkX, final int chunkX,
final int chunkZ, final int chunkZ,
@Nullable QueueCoordinator queue QueueCoordinator queue
) { ) {
if (!enabled) { if (!enabled) {
return false; return false;
@ -108,6 +97,9 @@ public class AugmentedUtils {
.platform() .platform()
.worldUtil() .worldUtil()
.getWeWorld(world)); .getWeWorld(world));
if (chunkObject != null) {
queue.setChunkObject(chunkObject);
}
} }
QueueCoordinator primaryMask; QueueCoordinator primaryMask;
// coordinates // coordinates
@ -165,9 +157,13 @@ public class AugmentedUtils {
} }
generationResult = true; generationResult = true;
} }
if (chunkObject != null) {
primaryMask.setChunkObject(chunkObject);
}
if (chunkObject != null) {
secondaryMask.setChunkObject(chunkObject);
}
// This queue should not be enqueued as it is simply used to restrict block setting, and then delegate to the
// actual queue
ScopedQueueCoordinator scoped = ScopedQueueCoordinator scoped =
new ScopedQueueCoordinator( new ScopedQueueCoordinator(
secondaryMask, secondaryMask,
@ -176,6 +172,8 @@ public class AugmentedUtils {
); );
generator.generateChunk(scoped, area); generator.generateChunk(scoped, area);
generator.populateChunk(scoped, area); generator.populateChunk(scoped, area);
scoped.setForceSync(true);
scoped.enqueue();
} }
if (enqueue) { if (enqueue) {
queue.enqueue(); queue.enqueue();
@ -183,19 +181,4 @@ public class AugmentedUtils {
return generationResult; return generationResult;
} }
/**
* @deprecated Use {@link AugmentedUtils#generateChunk(String, int, int, QueueCoordinator)} as chunkObject is not required
* in the above method
*/
@Deprecated(forRemoval = true, since = "6.8.0")
public static boolean generate(
@Nullable Object chunkObject,
final @NonNull String world,
final int chunkX,
final int chunkZ,
QueueCoordinator queue
) {
return generateChunk(world, chunkX, chunkZ, queue);
}
} }

View File

@ -41,7 +41,7 @@ import com.plotsquared.core.plot.flag.GlobalFlagContainer;
import com.plotsquared.core.plot.flag.PlotFlag; import com.plotsquared.core.plot.flag.PlotFlag;
import com.plotsquared.core.plot.flag.implementations.AnalysisFlag; import com.plotsquared.core.plot.flag.implementations.AnalysisFlag;
import com.plotsquared.core.plot.world.PlotAreaManager; import com.plotsquared.core.plot.world.PlotAreaManager;
import com.plotsquared.core.queue.BlockArrayCacheScopedQueueCoordinator; import com.plotsquared.core.queue.ChunkQueueCoordinator;
import com.plotsquared.core.queue.GlobalBlockQueue; import com.plotsquared.core.queue.GlobalBlockQueue;
import com.plotsquared.core.queue.QueueCoordinator; import com.plotsquared.core.queue.QueueCoordinator;
import com.plotsquared.core.util.ChunkManager; import com.plotsquared.core.util.ChunkManager;
@ -83,7 +83,6 @@ import java.util.concurrent.atomic.AtomicInteger;
public class HybridUtils { public class HybridUtils {
private static final Logger LOGGER = LogManager.getLogger("PlotSquared/" + HybridUtils.class.getSimpleName()); private static final Logger LOGGER = LogManager.getLogger("PlotSquared/" + HybridUtils.class.getSimpleName());
private static final BlockState AIR = BlockTypes.AIR.getDefaultState();
public static HybridUtils manager; public static HybridUtils manager;
public static Set<BlockVector2> regions; public static Set<BlockVector2> regions;
@ -137,11 +136,6 @@ public class HybridUtils {
* *
*/ */
TaskManager.runTaskAsync(() -> { TaskManager.runTaskAsync(() -> {
final PlotArea area = this.plotAreaManager.getPlotArea(world, null);
if (!(area instanceof HybridPlotWorld hpw)) {
return;
}
final BlockVector3 bot = region.getMinimumPoint(); final BlockVector3 bot = region.getMinimumPoint();
final BlockVector3 top = region.getMaximumPoint(); final BlockVector3 top = region.getMaximumPoint();
@ -158,28 +152,37 @@ public class HybridUtils {
final int height = area.getMaxGenHeight() - area.getMinGenHeight() + 1; final int height = area.getMaxGenHeight() - area.getMinGenHeight() + 1;
final int minHeight = area.getMinGenHeight(); final int minHeight = area.getMinGenHeight();
final PlotArea area = this.plotAreaManager.getPlotArea(world, null);
if (!(area instanceof HybridPlotWorld hpw)) {
return;
}
ChunkQueueCoordinator chunk = new ChunkQueueCoordinator(worldUtil.getWeWorld(world), bot, top, false);
hpw.getGenerator().generateChunk(chunk, hpw);
final BlockState airBlock = BlockTypes.AIR.getDefaultState();
final BlockState[][][] oldBlocks = chunk.getBlocks();
final BlockState[][][] newBlocks = new BlockState[height][width][length]; final BlockState[][][] newBlocks = new BlockState[height][width][length];
for (final BlockState[][] newBlock : newBlocks) {
for (final BlockState[] blockStates : newBlock) {
Arrays.fill(blockStates, airBlock);
}
}
for (final BlockState[][] oldBlock : oldBlocks) {
for (final BlockState[] blockStates : oldBlock) {
Arrays.fill(blockStates, airBlock);
}
}
BlockArrayCacheScopedQueueCoordinator oldBlockQueue = new BlockArrayCacheScopedQueueCoordinator( System.gc();
Location.at("", region.getMinimumPoint().withY(hpw.getMinGenHeight())), System.gc();
Location.at("", region.getMaximumPoint().withY(hpw.getMaxGenHeight()))
);
region.getChunks().forEach(chunkPos -> {
int relChunkX = chunkPos.getX() - cbx;
int relChunkZ = chunkPos.getZ() - cbz;
oldBlockQueue.setOffsetX(relChunkX << 4);
oldBlockQueue.setOffsetZ(relChunkZ << 4);
hpw.getGenerator().generateChunk(oldBlockQueue, hpw);
});
final BlockState[][][] oldBlocks = oldBlockQueue.getBlockStates();
QueueCoordinator queue = area.getQueue(); QueueCoordinator queue = area.getQueue();
queue.addReadChunks(region.getChunks()); queue.addReadChunks(region.getChunks());
queue.setChunkConsumer(chunkPos -> { queue.setChunkConsumer(blockVector2 -> {
int X = chunkPos.getX(); int X = blockVector2.getX();
int Z = chunkPos.getZ(); int Z = blockVector2.getZ();
int minX; int minX;
if (X == cbx) { if (X == cbx) {
minX = bx & 15; minX = bx & 15;
@ -217,9 +220,6 @@ public class HybridUtils {
for (int yIndex = 0; yIndex < height; yIndex++) { for (int yIndex = 0; yIndex < height; yIndex++) {
int y = yIndex + minHeight; int y = yIndex + minHeight;
BlockState block = queue.getBlock(xx, y, zz); BlockState block = queue.getBlock(xx, y, zz);
if (block == null) {
block = AIR;
}
int xr = xb + x; int xr = xb + x;
int zr = zb + z; int zr = zb + z;
newBlocks[yIndex][xr][zr] = block; newBlocks[yIndex][xr][zr] = block;
@ -240,10 +240,10 @@ public class HybridUtils {
for (int z = 0; z < length; z++) { for (int z = 0; z < length; z++) {
Set<BlockType> types = new HashSet<>(); Set<BlockType> types = new HashSet<>();
for (int yIndex = 0; yIndex < height; yIndex++) { for (int yIndex = 0; yIndex < height; yIndex++) {
BlockState old = oldBlocks[yIndex][x][z]; // Nullable BlockState old = oldBlocks[yIndex][x][z];
try { try {
BlockState now = newBlocks[yIndex][x][z]; // Not null BlockState now = newBlocks[yIndex][x][z];
if (!now.equals(old) && !(old == null && now.getBlockType().equals(BlockTypes.AIR))) { if (!old.equals(now)) {
changes[i]++; changes[i]++;
} }
if (now.getBlockType().getMaterial().isAir()) { if (now.getBlockType().getMaterial().isAir()) {
@ -301,6 +301,8 @@ public class HybridUtils {
analysis.data_sd = (int) (MathMan.getSD(data, analysis.data) * 100); analysis.data_sd = (int) (MathMan.getSD(data, analysis.data) * 100);
analysis.air_sd = (int) (MathMan.getSD(air, analysis.air) * 100); analysis.air_sd = (int) (MathMan.getSD(air, analysis.air) * 100);
analysis.variety_sd = (int) (MathMan.getSD(variety, analysis.variety) * 100); analysis.variety_sd = (int) (MathMan.getSD(variety, analysis.variety) * 100);
System.gc();
System.gc();
whenDone.value = analysis; whenDone.value = analysis;
whenDone.run(); whenDone.run();
}); });

View File

@ -1420,7 +1420,15 @@ public class Plot {
0 0
); );
} }
Location location = toHomeLocation(bottom, home); Location location = Location
.at(
bottom.getWorldName(),
bottom.getX() + home.getX(),
bottom.getY() + home.getY(),
bottom.getZ() + home.getZ(),
home.getYaw(),
home.getPitch()
);
if (!this.worldUtil.getBlockSynchronous(location).getBlockType().getMaterial().isAir()) { if (!this.worldUtil.getBlockSynchronous(location).getBlockType().getMaterial().isAir()) {
location = location.withY( location = location.withY(
Math.max(1 + this.worldUtil.getHighestBlockSynchronous( Math.max(1 + this.worldUtil.getHighestBlockSynchronous(
@ -1453,7 +1461,15 @@ public class Plot {
return; return;
} }
Location bottom = this.getBottomAbs(); Location bottom = this.getBottomAbs();
Location location = toHomeLocation(bottom, home); Location location = Location
.at(
bottom.getWorldName(),
bottom.getX() + home.getX(),
home.getY(), // y is absolute
bottom.getZ() + home.getZ(),
home.getYaw(),
home.getPitch()
);
this.worldUtil.getBlock(location, block -> { this.worldUtil.getBlock(location, block -> {
if (!block.getBlockType().getMaterial().isAir()) { if (!block.getBlockType().getMaterial().isAir()) {
this.worldUtil.getHighestBlock(this.getWorldName(), location.getX(), location.getZ(), this.worldUtil.getHighestBlock(this.getWorldName(), location.getX(), location.getZ(),
@ -1466,17 +1482,6 @@ public class Plot {
} }
} }
private Location toHomeLocation(Location bottom, BlockLoc relativeHome) {
return Location.at(
bottom.getWorldName(),
bottom.getX() + relativeHome.getX(),
relativeHome.getY(), // y is absolute
bottom.getZ() + relativeHome.getZ(),
relativeHome.getYaw(),
relativeHome.getPitch()
);
}
/** /**
* Sets the home location * Sets the home location
* *

View File

@ -75,9 +75,9 @@ public class ExpiryTask {
plots = plots != null ? plots : getPlotsToCheck(); plots = plots != null ? plots : getPlotsToCheck();
int diff = settings.REQUIRED_PLOTS; int diff = settings.REQUIRED_PLOTS;
boolean min = true; boolean min = true;
if (plots.size() > settings.REQUIRED_PLOTS) { if (settings.REQUIRED_PLOTS - plots.size() < settings.REQUIRED_PLOTS) {
min = false; min = false;
diff = plots.size() - settings.REQUIRED_PLOTS; diff = settings.REQUIRED_PLOTS - plots.size();
} }
List<Long> entireList = List<Long> entireList =
plots.stream().map(plot -> ExpireManager.IMP.getAge(plot, settings.DELETE_IF_OWNER_IS_UNKNOWN)) plots.stream().map(plot -> ExpireManager.IMP.getAge(plot, settings.DELETE_IF_OWNER_IS_UNKNOWN))

View File

@ -34,7 +34,6 @@ import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.util.SideEffectSet;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BaseBlock;
@ -62,7 +61,6 @@ public abstract class BasicQueueCoordinator extends QueueCoordinator {
private int lastX = Integer.MIN_VALUE; private int lastX = Integer.MIN_VALUE;
private int lastZ = Integer.MIN_VALUE; private int lastZ = Integer.MIN_VALUE;
private boolean settingBiomes = false; private boolean settingBiomes = false;
private boolean disableBiomes = false;
private boolean settingTiles = false; private boolean settingTiles = false;
private boolean regen = false; private boolean regen = false;
private int[] regenStart; private int[] regenStart;
@ -70,8 +68,7 @@ public abstract class BasicQueueCoordinator extends QueueCoordinator {
private CuboidRegion regenRegion = null; private CuboidRegion regenRegion = null;
private Consumer<BlockVector2> consumer = null; private Consumer<BlockVector2> consumer = null;
private boolean unloadAfter = true; private boolean unloadAfter = true;
private Runnable whenDone = null; private Runnable whenDone;
private SideEffectSet sideEffectSet = null;
@Nullable @Nullable
private LightingMode lightingMode = LightingMode.valueOf(Settings.QUEUE.LIGHTING_MODE); private LightingMode lightingMode = LightingMode.valueOf(Settings.QUEUE.LIGHTING_MODE);
@ -123,9 +120,6 @@ public abstract class BasicQueueCoordinator extends QueueCoordinator {
@SuppressWarnings("removal") @SuppressWarnings("removal")
@Override @Override
public boolean setBiome(int x, int z, @NonNull BiomeType biomeType) { public boolean setBiome(int x, int z, @NonNull BiomeType biomeType) {
if (disableBiomes) {
return false;
}
LocalChunk chunk = getChunk(x >> 4, z >> 4); LocalChunk chunk = getChunk(x >> 4, z >> 4);
for (int y = world.getMinY(); y <= world.getMaxY(); y++) { for (int y = world.getMinY(); y <= world.getMaxY(); y++) {
chunk.setBiome(x & 15, y, z & 15, biomeType); chunk.setBiome(x & 15, y, z & 15, biomeType);
@ -136,9 +130,6 @@ public abstract class BasicQueueCoordinator extends QueueCoordinator {
@Override @Override
public final boolean setBiome(int x, int y, int z, @NonNull BiomeType biomeType) { public final boolean setBiome(int x, int y, int z, @NonNull BiomeType biomeType) {
if (disableBiomes) {
return false;
}
LocalChunk chunk = getChunk(x >> 4, z >> 4); LocalChunk chunk = getChunk(x >> 4, z >> 4);
chunk.setBiome(x & 15, y, z & 15, biomeType); chunk.setBiome(x & 15, y, z & 15, biomeType);
settingBiomes = true; settingBiomes = true;
@ -150,12 +141,6 @@ public abstract class BasicQueueCoordinator extends QueueCoordinator {
return this.settingBiomes; return this.settingBiomes;
} }
@Override
public void setBiomesEnabled(boolean settingBiomes) {
this.settingBiomes = settingBiomes;
this.disableBiomes = true;
}
@Override @Override
public boolean setTile(int x, int y, int z, @NonNull CompoundTag tag) { public boolean setTile(int x, int y, int z, @NonNull CompoundTag tag) {
LocalChunk chunk = getChunk(x >> 4, z >> 4); LocalChunk chunk = getChunk(x >> 4, z >> 4);
@ -330,29 +315,6 @@ public abstract class BasicQueueCoordinator extends QueueCoordinator {
this.whenDone = whenDone; this.whenDone = whenDone;
} }
@Override
public SideEffectSet getSideEffectSet() {
return sideEffectSet;
}
@Override
public void setSideEffectSet(SideEffectSet sideEffectSet) {
this.sideEffectSet = sideEffectSet;
}
// Don't ask about the @NonNull placement. That's how it needs to be else it errors.
@Override
public void setBiomeCuboid(
final com.plotsquared.core.location.@NonNull Location pos1,
final com.plotsquared.core.location.@NonNull Location pos2,
@NonNull final BiomeType biome
) {
if (disableBiomes) {
return;
}
super.setBiomeCuboid(pos1, pos2, biome);
}
/** /**
* Get the {@link LocalChunk} from the queue at the given chunk coordinates. Returns a new instance if one doesn't exist * Get the {@link LocalChunk} from the queue at the given chunk coordinates. Returns a new instance if one doesn't exist
*/ */

View File

@ -1,175 +0,0 @@
/*
* _____ _ _ _____ _
* | __ \| | | | / ____| | |
* | |__) | | ___ | |_| (___ __ _ _ _ __ _ _ __ ___ __| |
* | ___/| |/ _ \| __|\___ \ / _` | | | |/ _` | '__/ _ \/ _` |
* | | | | (_) | |_ ____) | (_| | |_| | (_| | | | __/ (_| |
* |_| |_|\___/ \__|_____/ \__, |\__,_|\__,_|_| \___|\__,_|
* | |
* |_|
* 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.core.queue;
import com.plotsquared.core.location.Location;
import com.plotsquared.core.util.AnnotationHelper;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BaseBlock;
import com.sk89q.worldedit.world.block.BlockState;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
/**
* {@link QueueCoordinator} that caches all blocks set to it in a given array of form BlockState[][][]. An offset can be
* applied to blocks set to it, and the scope limited. This should have blocks set to it one chunk at a time, based on the
* result of {@link BlockArrayCacheScopedQueueCoordinator#getMin()} and {@link BlockArrayCacheScopedQueueCoordinator#getMax()}.
* The min and max points of this queue are offset according to the minimum point given in the constructor, and the offsets set
* in {@link BlockArrayCacheScopedQueueCoordinator#setOffsetX(int)} and
* {@link BlockArrayCacheScopedQueueCoordinator#setOffsetZ(int)}
*/
@AnnotationHelper.ApiDescription(info = "Internal use only. Subject to change at any time and created for specific use cases.")
public class BlockArrayCacheScopedQueueCoordinator extends ScopedQueueCoordinator {
private final BlockState[][][] blockStates;
private final int height;
private final int width;
private final int length;
private final int minY;
private final int maxY;
private final int scopeMinX;
private final int scopeMinZ;
private final int scopeMaxX;
private final int scopeMaxZ;
private int offsetX = 0;
private int offsetZ = 0;
/**
* Construct a new instance
*
* @param min Inclusive location of the minimum point to limit the scope to.
* @param max Inclusive location of the maximum point to limit the scope to.
* @since 6.8.0
*/
public BlockArrayCacheScopedQueueCoordinator(Location min, Location max) {
super(null, min, max);
this.width = max.getX() - min.getX() + 1;
this.length = max.getZ() - min.getZ() + 1;
this.minY = min.getY();
this.maxY = max.getY();
this.height = maxY - minY + 1;
this.scopeMinX = min.getX() & 15;
this.scopeMinZ = min.getZ() & 15;
this.scopeMaxX = scopeMinX + width;
this.scopeMaxZ = scopeMinZ + length;
this.blockStates = new BlockState[height][width][length];
}
public BlockState[][][] getBlockStates() {
return blockStates;
}
@Override
public boolean setBlock(int x, final int y, int z, final @NonNull BlockState id) {
x += offsetX;
z += offsetZ;
if (x >= scopeMinX && x < scopeMaxX && y >= minY && y <= maxY && z >= scopeMinZ && z < scopeMaxZ) {
blockStates[y - minY][x - scopeMinX][z - scopeMinZ] = id;
}
return false;
}
@Override
public boolean setBlock(final int x, final int y, final int z, @NonNull final Pattern pattern) {
int rx = x + offsetX;
int rz = z + offsetZ;
if (rx >= scopeMinX && rx < scopeMaxX && y >= minY && y <= maxY && rz >= scopeMinZ && rz < scopeMaxZ) {
BlockState state = pattern
.applyBlock(super.getMin().getBlockVector3().add(BlockVector3.at(x, y, z)))
.toImmutableState();
blockStates[y - minY][rx - scopeMinX][rz - scopeMinZ] = state;
}
return false;
}
@Override
public @NonNull Location getMin() {
return super.getMin().add(offsetX - scopeMinX, 0, offsetZ - scopeMinZ);
}
@Override
public @NonNull Location getMax() {
return getMin().add(15, 0, 15).withY(maxY);
}
@Override
public boolean setBlock(int x, int y, int z, final @NonNull BaseBlock id) {
x += offsetX;
z += offsetZ;
if (x >= scopeMinX && x < scopeMaxX && y >= minY && y <= maxY && z >= scopeMinZ && z < scopeMaxZ) {
blockStates[y - minY][x][z] = id.toImmutableState();
}
return false;
}
@Override
public @Nullable BlockState getBlock(final int x, final int y, final int z) {
if (x >= 0 && x < width && y >= minY && y <= maxY && z >= 0 && z < length) {
return blockStates[y - minY][x][z];
}
return null;
}
public void setOffsetX(final int offsetX) {
this.offsetX = offsetX;
}
public void setOffsetZ(final int offsetZ) {
this.offsetZ = offsetZ;
}
@Override
public int size() {
return height * width * length;
}
@Override
public boolean setBiome(final int x, final int z, @NonNull final BiomeType biome) {
//do nothing
return false;
}
@Override
public boolean setBiome(final int x, final int y, final int z, @NonNull final BiomeType biome) {
//do nothing
return false;
}
@Override
public void fillBiome(final BiomeType biome) {
//do nothing
}
@Override
public boolean setTile(final int x, final int y, final int z, @NonNull final CompoundTag tag) {
//do nothing
return false;
}
}

View File

@ -36,12 +36,8 @@ import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
/** /**
* Queue that is limited to a single chunk. It does not allow a delegate queue and should be treated as a cache for changes to * Queue that is limited to a single chunk
* be set to. Does not support tile entities or entities.
*
* @deprecated This class is poorly designed and will no longer be used in P2
*/ */
@Deprecated(forRemoval = true, since = "6.8.0")
public class ChunkQueueCoordinator extends ScopedQueueCoordinator { public class ChunkQueueCoordinator extends ScopedQueueCoordinator {
public final BiomeType[][][] biomeResult; public final BiomeType[][][] biomeResult;

View File

@ -32,7 +32,6 @@ import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.function.pattern.Pattern; import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.util.SideEffectSet;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BaseBlock;
@ -136,13 +135,6 @@ public class DelegateQueueCoordinator extends QueueCoordinator {
return false; return false;
} }
@Override
public void setBiomesEnabled(final boolean enabled) {
if (parent != null) {
parent.setBiomesEnabled(enabled);
}
}
@Override @Override
public boolean setEntity(@NonNull Entity entity) { public boolean setEntity(@NonNull Entity entity) {
if (parent != null) { if (parent != null) {
@ -256,21 +248,6 @@ public class DelegateQueueCoordinator extends QueueCoordinator {
} }
} }
@Override
public SideEffectSet getSideEffectSet() {
if (parent != null) {
return parent.getSideEffectSet();
}
return null;
}
@Override
public void setSideEffectSet(final SideEffectSet sideEffectSet) {
if (parent != null) {
parent.setSideEffectSet(sideEffectSet);
}
}
@Override @Override
public @NonNull List<BlockVector2> getReadChunks() { public @NonNull List<BlockVector2> getReadChunks() {
if (parent != null) { if (parent != null) {

View File

@ -35,7 +35,6 @@ import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.function.pattern.Pattern; import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.CuboidRegion;
import com.sk89q.worldedit.util.SideEffectSet;
import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.World;
import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BaseBlock;
@ -249,14 +248,6 @@ public abstract class QueueCoordinator {
*/ */
public abstract boolean isSettingBiomes(); public abstract boolean isSettingBiomes();
/**
* If the queue should accept biome placement
*
* @param enabled If biomes should be enabled
* @since 6.8.0
*/
public abstract void setBiomesEnabled(boolean enabled);
/** /**
* Add entities to be created * Add entities to be created
* *
@ -422,20 +413,6 @@ public abstract class QueueCoordinator {
*/ */
public abstract void setLightingMode(@Nullable LightingMode mode); public abstract void setLightingMode(@Nullable LightingMode mode);
/**
* Get the overriding {@link SideEffectSet} to be used by the queue if it exists, else null
*
* @return Overriding {@link SideEffectSet} or null
*/
public abstract @Nullable SideEffectSet getSideEffectSet();
/**
* Set the overriding {@link SideEffectSet} to be used by the queue. Null to use default side effects.
*
* @param sideEffectSet side effects to override with, or null to use default
*/
public abstract void setSideEffectSet(@Nullable SideEffectSet sideEffectSet);
/** /**
* Fill a cuboid between two positions with a BlockState * Fill a cuboid between two positions with a BlockState
* *

View File

@ -35,23 +35,22 @@ import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
/** /**
* Queue that only sets blocks with a designated X-Z area, will accept any Y values. Requires all blocks be set normalized in * Queue that only sets blocks with a designated area
* the x and z directions, i.e. starting from 0,0. An offset of the minimum point of the region will then be applied to x and z.
*
* @deprecated This should be renamed to NormalizedScopedQueueCoordinator or something.
*/ */
@Deprecated(forRemoval = true, since = "6.8.0")
public class ScopedQueueCoordinator extends DelegateQueueCoordinator { public class ScopedQueueCoordinator extends DelegateQueueCoordinator {
private final Location min; private final Location min;
private final Location max; private final Location max;
private final int minX; private final int minX;
private final int minY;
private final int minZ; private final int minZ;
private final int maxX; private final int maxX;
private final int maxY;
private final int maxZ; private final int maxZ;
private final int dx; private final int dx;
private final int dy;
private final int dz; private final int dz;
/** /**
@ -62,12 +61,15 @@ public class ScopedQueueCoordinator extends DelegateQueueCoordinator {
this.min = min; this.min = min;
this.max = max; this.max = max;
this.minX = min.getX(); this.minX = min.getX();
this.minY = min.getY();
this.minZ = min.getZ(); this.minZ = min.getZ();
this.maxX = max.getX(); this.maxX = max.getX();
this.maxY = max.getY();
this.maxZ = max.getZ(); this.maxZ = max.getZ();
this.dx = maxX - minX; this.dx = maxX - minX;
this.dy = maxY - minY;
this.dz = maxZ - minZ; this.dz = maxZ - minZ;
} }
@ -78,11 +80,11 @@ public class ScopedQueueCoordinator extends DelegateQueueCoordinator {
@Override @Override
public boolean setBiome(int x, int y, int z, @NonNull BiomeType biome) { public boolean setBiome(int x, int y, int z, @NonNull BiomeType biome) {
return x >= 0 && x <= dx && z >= 0 && z <= dz && super.setBiome(x + minX, y, z + minZ, biome); return x >= 0 && x <= dx && y >= 0 && y <= dy && z >= 0 && z <= dz && super.setBiome(x + minX, y + minY, z + minZ, biome);
} }
public void fillBiome(BiomeType biome) { public void fillBiome(BiomeType biome) {
for (int y = min.getY(); y <= max.getY(); y++) { for (int y = 0; y <= dy; y++) {
for (int x = 0; x <= dx; x++) { for (int x = 0; x <= dx; x++) {
for (int z = 0; z < dz; z++) { for (int z = 0; z < dz; z++) {
setBiome(x, y, z, biome); setBiome(x, y, z, biome);
@ -93,22 +95,27 @@ public class ScopedQueueCoordinator extends DelegateQueueCoordinator {
@Override @Override
public boolean setBlock(int x, int y, int z, @NonNull BaseBlock id) { public boolean setBlock(int x, int y, int z, @NonNull BaseBlock id) {
return x >= 0 && x <= dx && z >= 0 && z <= dz && super.setBlock(x + minX, y, z + minZ, id); return x >= 0 && x <= dx && y >= 0 && y <= dy && z >= 0 && z <= dz && super.setBlock(x + minX, y + minY, z + minZ, id);
} }
@Override @Override
public boolean setBlock(int x, int y, int z, @NonNull BlockState id) { public boolean setBlock(int x, int y, int z, @NonNull BlockState id) {
return x >= 0 && x <= dx && z >= 0 && z <= dz && super.setBlock(x + minX, y, z + minZ, id); return x >= 0 && x <= dx && y >= 0 && y <= dy && z >= 0 && z <= dz && super.setBlock(x + minX, y + minY, z + minZ, id);
} }
@Override @Override
public boolean setBlock(int x, int y, int z, @NonNull Pattern pattern) { public boolean setBlock(int x, int y, int z, @NonNull Pattern pattern) {
return x >= 0 && x <= dx && z >= 0 && z <= dz && super.setBlock(x + minX, y, z + minZ, pattern); return x >= 0 && x <= dx && y >= 0 && y <= dy && z >= 0 && z <= dz && super.setBlock(
x + minX,
y + minY,
z + minZ,
pattern
);
} }
@Override @Override
public boolean setTile(int x, int y, int z, @NonNull CompoundTag tag) { public boolean setTile(int x, int y, int z, @NonNull CompoundTag tag) {
return x >= 0 && x <= dx && z >= 0 && z <= dz && super.setTile(x + minX, y, z + minZ, tag); return x >= 0 && x <= dx && y >= 0 && y <= dy && z >= 0 && z <= dz && super.setTile(x + minX, y + minY, z + minZ, tag);
} }
public @NonNull Location getMin() { public @NonNull Location getMin() {

View File

@ -34,7 +34,6 @@ import java.util.HashMap;
public abstract class SetupUtils { public abstract class SetupUtils {
public static HashMap<String, GeneratorWrapper<?>> generators = new HashMap<>(); public static HashMap<String, GeneratorWrapper<?>> generators = new HashMap<>();
protected boolean loaded = false;
/** /**
* @since 6.1.0 * @since 6.1.0

View File

@ -38,7 +38,6 @@ import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.flag.GlobalFlagContainer; import com.plotsquared.core.plot.flag.GlobalFlagContainer;
import com.plotsquared.core.plot.flag.PlotFlag; import com.plotsquared.core.plot.flag.PlotFlag;
import com.plotsquared.core.plot.flag.implementations.ServerPlotFlag;
import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.EventDispatcher;
import com.plotsquared.core.util.PlayerManager; import com.plotsquared.core.util.PlayerManager;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
@ -111,9 +110,6 @@ public final class PlaceholderRegistry {
return plot.getAlias(); return plot.getAlias();
}); });
this.createPlaceholder("currentplot_owner", (player, plot) -> { this.createPlaceholder("currentplot_owner", (player, plot) -> {
if (plot.getFlag(ServerPlotFlag.class)){
return legacyComponent(TranslatableCaption.of("info.server"), player);
}
final UUID plotOwner = plot.getOwnerAbs(); final UUID plotOwner = plot.getOwnerAbs();
if (plotOwner == null) { if (plotOwner == null) {
return legacyComponent(TranslatableCaption.of("generic.generic_unowned"), player); return legacyComponent(TranslatableCaption.of("generic.generic_unowned"), player);

View File

@ -381,9 +381,6 @@
"info.plot_list_default": "<gold><plot></gold>", "info.plot_list_default": "<gold><plot></gold>",
"info.plot_list_player_online": "<dark_aqua><prefix></dark_aqua><hover:show_text:\"<dark_aqua>Online</dark_aqua>\"><gold><player></gold></hover>", "info.plot_list_player_online": "<dark_aqua><prefix></dark_aqua><hover:show_text:\"<dark_aqua>Online</dark_aqua>\"><gold><player></gold></hover>",
"info.plot_list_player_offline": "<dark_aqua><prefix></dark_aqua><hover:show_text:\"<dark_gray>Offline</dark_gray>\"><gold><player></gold></hover>", "info.plot_list_player_offline": "<dark_aqua><prefix></dark_aqua><hover:show_text:\"<dark_gray>Offline</dark_gray>\"><gold><player></gold></hover>",
"info.plot_list_player_unknown": "<hover:show_text:\"<red>The owner of this plot is unknown</red>\"><white><info.unknown></white></hover>",
"info.plot_list_player_server": "<hover:show_text:\"<red>The plot is owned by the server</red>\"><white><info.server></white></hover>",
"info.plot_list_player_everyone": "<hover:show_text:\"<blue>The plot is owned by everyone</blue>\"><white><info.everyone></white></hover>",
"info.area_info_format": "<header>\n<reset><gold>Name: </gold><gray><name></gray>\n<gold>Type: </gold><gray><type></gray>\n<gold>Terrain: </gold><gray><terrain></gray>\n<gold>Usage: </gold><gray><usage>%</gray>\n<gold>Claimed: </gold><gray><claimed></gray>\n<gold>Clusters: </gold><gray><clusters></gray>\n<gold>Region: </gold><gray><region></gray>\n<gold>Generator: </gold><gray><generator></gray>\n<footer>", "info.area_info_format": "<header>\n<reset><gold>Name: </gold><gray><name></gray>\n<gold>Type: </gold><gray><type></gray>\n<gold>Terrain: </gold><gray><terrain></gray>\n<gold>Usage: </gold><gray><usage>%</gray>\n<gold>Claimed: </gold><gray><claimed></gray>\n<gold>Clusters: </gold><gray><clusters></gray>\n<gold>Region: </gold><gray><region></gray>\n<gold>Generator: </gold><gray><generator></gray>\n<footer>",
"info.area_list_tooltip": "<gold>Claimed=</gold><gray><claimed></gray>\n<gold>Usage=</gold><gray><usage></gray>\n<gold>Clusters=</gold><gray><clusters></gray>\n<gold>Region=</gold><gray><region></gray>\n<gold>Generator=</gold><gray><generator></gray>", "info.area_list_tooltip": "<gold>Claimed=</gold><gray><claimed></gray>\n<gold>Usage=</gold><gray><usage></gray>\n<gold>Clusters=</gold><gray><clusters></gray>\n<gold>Region=</gold><gray><region></gray>\n<gold>Generator=</gold><gray><generator></gray>",
"info.area_list_item": "<click:run_command:<command_tp>><hover:show_text:\"<command_tp>\"><dark_gray>[</dark_gray><gold><number></gold><dark_gray>]</dark_gray></hover></click> <click:run_command:<command_info>><hover:show_text:\"<hover_info>\"><gold><area_name></gold></hover></click><gray> - </gray><gray><area_type>:<area_terrain></gray>", "info.area_list_item": "<click:run_command:<command_tp>><hover:show_text:\"<command_tp>\"><dark_gray>[</dark_gray><gold><number></gold><dark_gray>]</dark_gray></hover></click> <click:run_command:<command_info>><hover:show_text:\"<hover_info>\"><gold><area_name></gold></hover></click><gray> - </gray><gray><area_type>:<area_terrain></gray>",

View File

@ -1,5 +1,5 @@
<p align="center"> <p align="center">
<img src="https://raw.githubusercontent.com/IntellectualSites/Assets/main/plugins/PlotSquared/PlotSquared.svg" width="300"> <img src="https://i.imgur.com/33Y65YL.png" width="150">
</p> </p>
--- ---

View File

@ -18,7 +18,7 @@ plugins {
idea idea
} }
version = "6.8.2-SNAPSHOT" version = "6.7.1-SNAPSHOT"
allprojects { allprojects {
group = "com.plotsquared" group = "com.plotsquared"
@ -66,6 +66,7 @@ subprojects {
} }
} }
val javadocDir = rootDir.resolve("docs").resolve("javadoc").resolve(project.name)
allprojects { allprojects {
dependencies { dependencies {
// Tests // Tests
@ -171,6 +172,11 @@ allprojects {
} }
tasks { tasks {
named<Delete>("clean") {
doFirst {
javadocDir.deleteRecursively()
}
}
compileJava { compileJava {
options.compilerArgs.addAll(arrayOf("-Xmaxerrs", "1000")) options.compilerArgs.addAll(arrayOf("-Xmaxerrs", "1000"))
@ -181,6 +187,16 @@ allprojects {
options.encoding = "UTF-8" options.encoding = "UTF-8"
} }
javadoc {
val opt = options as StandardJavadocDocletOptions
opt.addStringOption("Xdoclint:none", "-quiet")
opt.tags(
"apiNote:a:API Note:",
"implSpec:a:Implementation Requirements:",
"implNote:a:Implementation Note:"
)
}
shadowJar { shadowJar {
this.archiveClassifier.set(null as String?) this.archiveClassifier.set(null as String?)
this.archiveFileName.set("${project.name}-${project.version}.${this.archiveExtension.getOrElse("jar")}") this.archiveFileName.set("${project.name}-${project.version}.${this.archiveExtension.getOrElse("jar")}")
@ -205,3 +221,37 @@ nexusPublishing {
} }
} }
} }
tasks {
val aggregatedJavadocs = create<Javadoc>("aggregatedJavadocs") {
title = "${project.name} ${project.version} API"
setDestinationDir(javadocDir)
options.destinationDirectory = javadocDir
doFirst {
javadocDir.deleteRecursively()
}
}.also {
it.group = "Documentation"
it.description = "Generate javadocs from all child projects as if it was a single project"
}
subprojects.forEach { subProject ->
subProject.afterEvaluate {
subProject.tasks.withType<Javadoc>().forEach { task ->
aggregatedJavadocs.source += task.source
aggregatedJavadocs.classpath += task.classpath
aggregatedJavadocs.excludes += task.excludes
aggregatedJavadocs.includes += task.includes
val rootOptions = aggregatedJavadocs.options as StandardJavadocDocletOptions
val subOptions = task.options as StandardJavadocDocletOptions
rootOptions.links(*subOptions.links.orEmpty().minus(rootOptions.links.orEmpty().toSet()).toTypedArray())
}
}
}
build {
dependsOn(aggregatedJavadocs)
}
}

View File

@ -18,7 +18,7 @@ adventure-platform-bukkit = "4.0.1"
# Plugins # Plugins
worldedit = "7.2.10" worldedit = "7.2.10"
fawe = "2.2.0" fawe = "2.1.2"
vault = "1.7.1" vault = "1.7.1"
placeholderapi = "2.11.1" placeholderapi = "2.11.1"
luckperms = "5.4" luckperms = "5.4"

BIN
plotsquared-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB