commit
d973c839cf
@ -0,0 +1,42 @@ |
||||
## install |
||||
|
||||
**Warning**: [ProtocolLib](https://www.spigotmc.org/resources/protocollib.1997/) is required. |
||||
|
||||
**Note: this mod is server side only and won't work on clients** |
||||
|
||||
Place this mod's `.jar` file inside your `mods` folder |
||||
|
||||
**Recommended Plugins** |
||||
|
||||
- NoCheatsPlus |
||||
- LuckPerms |
||||
- ExploitFixer |
||||
- ViaVersion |
||||
- ProtocolLib |
||||
- AnarchyX ♥ |
||||
|
||||
## development |
||||
|
||||
Requires openjdk 11 |
||||
|
||||
```shell |
||||
$ git clone https://code.juke.fr/kay/anarchyx.git |
||||
|
||||
$ cd anarchyx |
||||
|
||||
$ ./gradlew build |
||||
``` |
||||
|
||||
## features |
||||
|
||||
See the `config.yml` file for an idea of the features. Performance hit is currently 1.5% of total tick time, you can check yourself. I aim to keep it below 5. |
||||
|
||||
- packet checks (limit chunk packet abuses, colored chat with prefix) |
||||
- commands (dupe, stats, discord...) |
||||
- events (motds, full customizable cheat checks...) |
||||
|
||||
https://code.juke.fr/kay/anarchyx/-/blob/main/src/main/resources/config.yml |
||||
|
||||
See the `plugin.yml` file for an idea of the permissions. |
||||
|
||||
https://code.juke.fr/kay/anarchyx/-/blob/main/src/main/resources/plugin.yml |
@ -0,0 +1,118 @@ |
||||
# User-specific stuff |
||||
.idea/ |
||||
|
||||
*.iml |
||||
*.ipr |
||||
*.iws |
||||
|
||||
# IntelliJ |
||||
out/ |
||||
# mpeltonen/sbt-idea plugin |
||||
.idea_modules/ |
||||
|
||||
# JIRA plugin |
||||
atlbadian-ide-plugin.xml |
||||
|
||||
# Compiled class file |
||||
*.class |
||||
|
||||
# Log file |
||||
*.log |
||||
|
||||
# BlueJ files |
||||
*.ctxt |
||||
|
||||
# Package Files # |
||||
*.jar |
||||
*.war |
||||
*.nar |
||||
*.ear |
||||
*.zip |
||||
*.tar.gz |
||||
*.rar |
||||
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml |
||||
hs_err_pid* |
||||
|
||||
*~ |
||||
|
||||
# temporary files which can be created if a process still has a handle open of a deleted file |
||||
.fuse_hidden* |
||||
|
||||
# KDE directory preferences |
||||
.directory |
||||
|
||||
# Linux trash folder which might appear on any partition or disk |
||||
.Trash-* |
||||
|
||||
# .nfs files are created when an open file is removed but is still being accessed |
||||
.nfs* |
||||
|
||||
# General |
||||
.DS_Store |
||||
.AppleDouble |
||||
.LSOverride |
||||
|
||||
# Icon must end with two \r |
||||
Icon |
||||
|
||||
# Thumbnails |
||||
._* |
||||
|
||||
# Files that might appear in the root of a volume |
||||
.DocumentRevisions-V100 |
||||
.fseventsd |
||||
.Spotlight-V100 |
||||
.TemporaryItems |
||||
.Trashes |
||||
.VolumeIcon.icns |
||||
.com.apple.timemachine.donotpresent |
||||
|
||||
# Directories potentially created on remote AFP share |
||||
.AppleDB |
||||
.AppleDesktop |
||||
Network Trash Folder |
||||
Temporary Items |
||||
.apdisk |
||||
|
||||
# Windows thumbnail cache files |
||||
Thumbs.db |
||||
Thumbs.db:encryptable |
||||
ehthumbs.db |
||||
ehthumbs_vista.db |
||||
|
||||
# happyp file |
||||
*.stackhappyp |
||||
|
||||
# Folder config file |
||||
[Dd]esktop.ini |
||||
|
||||
# Recycle Bin used on file shares |
||||
$RECYCLE.BIN/ |
||||
|
||||
# Windows Installer files |
||||
*.cab |
||||
*.msi |
||||
*.msix |
||||
*.msm |
||||
*.msp |
||||
|
||||
# Windows shortcuts |
||||
*.lnk |
||||
|
||||
.gradle |
||||
build/ |
||||
|
||||
# Ignore Gradle GUI config |
||||
gradle-app.setting |
||||
|
||||
# Cache of project |
||||
.gradletasknamecache |
||||
|
||||
**/build/ |
||||
|
||||
# Common working directory |
||||
run/ |
||||
|
||||
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) |
||||
!gradle-wrapper.jar |
@ -0,0 +1,30 @@ |
||||
--- |
||||
include: |
||||
- project: "kay/ci-templates" |
||||
file: |
||||
- "/Semantic-Release.gitlab-ci.yml" |
||||
|
||||
stages: |
||||
- build |
||||
- review |
||||
|
||||
image: ubuntu:latest |
||||
|
||||
before_script: |
||||
- export GRADLE_USER_HOME=`pwd`/.gradle |
||||
|
||||
cache: |
||||
paths: |
||||
- .gradle/wrapper |
||||
- .gradle/caches |
||||
|
||||
build: |
||||
stage: build |
||||
script: |
||||
- apt update && apt install -y openjdk-11-jdk-headless |
||||
- ./gradlew build |
||||
artifacts: |
||||
paths: |
||||
- build/libs/*.jar |
||||
only: |
||||
- main |
@ -0,0 +1,13 @@ |
||||
# [1.1.0](https://code.eutychia.org/kay/anarchyx/compare/v1.0.0...v1.1.0) (2022-06-26) |
||||
|
||||
|
||||
### Features |
||||
|
||||
* Update readme ([0b9031c](https://code.eutychia.org/kay/anarchyx/commit/0b9031c069ef8c7c2171922a63dac1ddf8a93a78)) |
||||
|
||||
# 1.0.0 (2022-06-26) |
||||
|
||||
|
||||
### Features |
||||
|
||||
* Add semantic release ([cc3445d](https://code.eutychia.org/kay/anarchyx/commit/cc3445dabcce93fa5d98f6c34855582ba4c16e23)) |
@ -0,0 +1,459 @@ |
||||
Attribution-NonCommercial-ShareAlike 4.0 International AntiFascistEdit |
||||
|
||||
======================================================================= |
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and |
||||
does not provide legal services or legal advice. Distribution of |
||||
Creative Commons public licenses does not create a lawyer-client or |
||||
other relationship. Creative Commons makes its licenses and related |
||||
information available on an "as-is" basis. Creative Commons gives no |
||||
warranties regarding its licenses, any material licensed under their |
||||
terms and conditions, or any related information. Creative Commons |
||||
disclaims all liability for damages resulting from their use to the |
||||
fullest extent possible. |
||||
|
||||
Using Creative Commons Public Licenses |
||||
|
||||
Creative Commons public licenses provide a standard set of terms and |
||||
conditions that creators and other rights holders may use to share |
||||
original works of authorship and other material subject to copyright |
||||
and certain other rights specified in the public license below. The |
||||
following considerations are for informational purposes only, are not |
||||
exhaustive, and do not form part of our licenses. |
||||
|
||||
Considerations for licensors: Our public licenses are |
||||
intended for use by those authorized to give the public |
||||
permission to use material in ways otherwise restricted by |
||||
copyright and certain other rights. Our licenses are |
||||
irrevocable. Licensors should read and understand the terms |
||||
and conditions of the license they choose before applying it. |
||||
Licensors should also secure all rights necessary before |
||||
applying our licenses so that the public can reuse the |
||||
material as expected. Licensors should clearly mark any |
||||
material not subject to the license. This includes other CC- |
||||
licensed material, or material used under an exception or |
||||
limitation to copyright. More considerations for licensors: |
||||
wiki.creativecommons.org/Considerations_for_licensors |
||||
|
||||
Considerations for the public: By using one of our public |
||||
licenses, a licensor grants the public permission to use the |
||||
licensed material under specified terms and conditions. If |
||||
the licensor's permission is not necessary for any reason--for |
||||
example, because of any applicable exception or limitation to |
||||
copyright--then that use is not regulated by the license. Our |
||||
licenses grant only permissions under copyright and certain |
||||
other rights that a licensor has authority to grant. Use of |
||||
the licensed material may still be restricted for other |
||||
reasons, including because others have copyright or other |
||||
rights in the material. A licensor may make special requests, |
||||
such as asking that all changes be marked or described. |
||||
Although not required by our licenses, you are encouraged to |
||||
respect those requests where reasonable. More considerations |
||||
for the public: |
||||
wiki.creativecommons.org/Considerations_for_licensees |
||||
|
||||
======================================================================= |
||||
|
||||
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International |
||||
Public License |
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree |
||||
to be bound by the terms and conditions of this Creative Commons |
||||
Attribution-NonCommercial-ShareAlike 4.0 International Public License |
||||
("Public License"). To the extent this Public License may be |
||||
interpreted as a contract, You are granted the Licensed Rights in |
||||
consideration of Your acceptance of these terms and conditions, and the |
||||
Licensor grants You such rights in consideration of benefits the |
||||
Licensor receives from making the Licensed Material available under |
||||
these terms and conditions. |
||||
|
||||
|
||||
Section 1 -- Definitions. |
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar |
||||
Rights that is derived from or based upon the Licensed Material |
||||
and in which the Licensed Material is translated, altered, |
||||
arranged, transformed, or otherwise modified in a manner requiring |
||||
permission under the Copyright and Similar Rights held by the |
||||
Licensor. For purposes of this Public License, where the Licensed |
||||
Material is a musical work, performance, or sound recording, |
||||
Adapted Material is always produced where the Licensed Material is |
||||
synched in timed relation with a moving image. |
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright |
||||
and Similar Rights in Your contributions to Adapted Material in |
||||
accordance with the terms and conditions of this Public License. |
||||
|
||||
c. BY-NC-SA Compatible License means a license listed at |
||||
creativecommons.org/compatiblelicenses, approved by Creative |
||||
Commons as essentially the equivalent of this Public License. |
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights |
||||
closely related to copyright including, without limitation, |
||||
performance, broadcast, sound recording, and Sui Generis Database |
||||
Rights, without regard to how the rights are labeled or |
||||
categorized. For purposes of this Public License, the rights |
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar |
||||
Rights. |
||||
|
||||
e. Effective Technological Measures means those measures that, in the |
||||
absence of proper authority, may not be circumvented under laws |
||||
fulfilling obligations under Article 11 of the WIPO Copyright |
||||
Treaty adopted on December 20, 1996, and/or similar international |
||||
agreements. |
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or |
||||
any other exception or limitation to Copyright and Similar Rights |
||||
that applies to Your use of the Licensed Material. |
||||
|
||||
g. License Elements means the license attributes listed in the name |
||||
of a Creative Commons Public License. The License Elements of this |
||||
Public License are Attribution, NonCommercial, and ShareAlike. |
||||
|
||||
h. Licensed Material means the artistic or literary work, database, |
||||
or other material to which the Licensor applied this Public |
||||
License. |
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the |
||||
terms and conditions of this Public License, which are limited to |
||||
all Copyright and Similar Rights that apply to Your use of the |
||||
Licensed Material and that the Licensor has authority to license. |
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights |
||||
under this Public License. |
||||
|
||||
k. NonCommercial means not primarily intended for or directed towards |
||||
commercial advantage or monetary compensation. For purposes of |
||||
this Public License, the exchange of the Licensed Material for |
||||
other material subject to Copyright and Similar Rights by digital |
||||
file-sharing or similar means is NonCommercial provided there is |
||||
no payment of monetary compensation in connection with the |
||||
exchange. |
||||
|
||||
l. Share means to provide material to the public by any means or |
||||
process that requires permission under the Licensed Rights, such |
||||
as reproduction, public display, public performance, distribution, |
||||
dissemination, communication, or importation, and to make material |
||||
available to the public including in ways that members of the |
||||
public may access the material from a place and at a time |
||||
individually chosen by them. |
||||
|
||||
m. Sui Generis Database Rights means rights other than copyright |
||||
resulting from Directive 96/9/EC of the European Parliament and of |
||||
the Council of 11 March 1996 on the legal protection of databases, |
||||
as amended and/or succeeded, as well as other essentially |
||||
equivalent rights anywhere in the world. |
||||
|
||||
n. You means the individual or entity exercising the Licensed Rights |
||||
under this Public License. Your has a corresponding meaning. |
||||
|
||||
|
||||
Section 2 -- Scope. |
||||
|
||||
a. License grant. |
||||
|
||||
1. Subject to the terms and conditions of this Public License, |
||||
the Licensor hereby grants You a worldwide, royalty-free, |
||||
non-sublicensable, non-exclusive, irrevocable license to |
||||
exercise the Licensed Rights in the Licensed Material to: |
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or |
||||
in part, for NonCommercial purposes only; and |
||||
|
||||
b. produce, reproduce, and Share Adapted Material for |
||||
NonCommercial purposes only. |
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where |
||||
Exceptions and Limitations apply to Your use, this Public |
||||
License does not apply, and You do not need to comply with |
||||
its terms and conditions. |
||||
|
||||
3. Term. The term of this Public License is specified in Section |
||||
6(a). |
||||
|
||||
4. Media and formats; technical modifications allowed. The |
||||
Licensor authorizes You to exercise the Licensed Rights in |
||||
all media and formats whether now known or hereafter created, |
||||
and to make technical modifications necessary to do so. The |
||||
Licensor waives and/or agrees not to assert any right or |
||||
authority to forbid You from making technical modifications |
||||
necessary to exercise the Licensed Rights, including |
||||
technical modifications necessary to circumvent Effective |
||||
Technological Measures. For purposes of this Public License, |
||||
simply making modifications authorized by this Section 2(a) |
||||
(4) never produces Adapted Material. |
||||
|
||||
5. Downstream recipients. |
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every |
||||
recipient of the Licensed Material automatically |
||||
receives an offer from the Licensor to exercise the |
||||
Licensed Rights under the terms and conditions of this |
||||
Public License. |
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material. |
||||
Every recipient of Adapted Material from You |
||||
automatically receives an offer from the Licensor to |
||||
exercise the Licensed Rights in the Adapted Material |
||||
under the conditions of the Adapter's License You apply. |
||||
|
||||
c. No downstream restrictions. You may not offer or impose |
||||
any additional or different terms or conditions on, or |
||||
apply any Effective Technological Measures to, the |
||||
Licensed Material if doing so restricts exercise of the |
||||
Licensed Rights by any recipient of the Licensed |
||||
Material. |
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or |
||||
may be construed as permission to assert or imply that You |
||||
are, or that Your use of the Licensed Material is, connected |
||||
with, or sponsored, endorsed, or granted official status by, |
||||
the Licensor or others designated to receive attribution as |
||||
provided in Section 3(a)(1)(A)(i). |
||||
|
||||
b. Other rights. |
||||
|
||||
1. Moral rights, such as the right of integrity, are not |
||||
licensed under this Public License, nor are publicity, |
||||
privacy, and/or other similar personality rights; however, to |
||||
the extent possible, the Licensor waives and/or agrees not to |
||||
assert any such rights held by the Licensor to the limited |
||||
extent necessary to allow You to exercise the Licensed |
||||
Rights, but not otherwise. |
||||
|
||||
2. Patent and trademark rights are not licensed under this |
||||
Public License. |
||||
|
||||
3. To the extent possible, the Licensor waives any right to |
||||
collect royalties from You for the exercise of the Licensed |
||||
Rights, whether directly or through a collecting society |
||||
under any voluntary or waivable statutory or compulsory |
||||
licensing scheme. In all other cases the Licensor expressly |
||||
reserves any right to collect such royalties, including when |
||||
the Licensed Material is used other than for NonCommercial |
||||
purposes. |
||||
|
||||
|
||||
Section 3 -- License Conditions. |
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the |
||||
following conditions. |
||||
|
||||
a. Attribution. |
||||
|
||||
1. If You Share the Licensed Material (including in modified |
||||
form), You must: |
||||
|
||||
a. retain the following if it is supplied by the Licensor |
||||
with the Licensed Material: |
||||
|
||||
i. identification of the creator(s) of the Licensed |
||||
Material and any others designated to receive |
||||
attribution, in any reasonable manner requested by |
||||
the Licensor (including by pseudonym if |
||||
designated); |
||||
|
||||
ii. a copyright notice; |
||||
|
||||
iii. a notice that refers to this Public License; |
||||
|
||||
iv. a notice that refers to the disclaimer of |
||||
warranties; |
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the |
||||
extent reasonably practicable; |
||||
|
||||
b. indicate if You modified the Licensed Material and |
||||
retain an indication of any previous modifications; and |
||||
|
||||
c. indicate the Licensed Material is licensed under this |
||||
Public License, and include the text of, or the URI or |
||||
hyperlink to, this Public License. |
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any |
||||
reasonable manner based on the medium, means, and context in |
||||
which You Share the Licensed Material. For example, it may be |
||||
reasonable to satisfy the conditions by providing a URI or |
||||
hyperlink to a resource that includes the required |
||||
information. |
||||
3. If requested by the Licensor, You must remove any of the |
||||
information required by Section 3(a)(1)(A) to the extent |
||||
reasonably practicable. |
||||
|
||||
b. ShareAlike. |
||||
|
||||
In addition to the conditions in Section 3(a), if You Share |
||||
Adapted Material You produce, the following conditions also apply. |
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons |
||||
license with the same License Elements, this version or |
||||
later, or a BY-NC-SA Compatible License. |
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the |
||||
Adapter's License You apply. You may satisfy this condition |
||||
in any reasonable manner based on the medium, means, and |
||||
context in which You Share Adapted Material. |
||||
|
||||
3. You may not offer or impose any additional or different terms |
||||
or conditions on, or apply any Effective Technological |
||||
Measures to, Adapted Material that restrict exercise of the |
||||
rights granted under the Adapter's License You apply. |
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights. |
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that |
||||
apply to Your use of the Licensed Material: |
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right |
||||
to extract, reuse, reproduce, and Share all or a substantial |
||||
portion of the contents of the database for NonCommercial purposes |
||||
only; |
||||
|
||||
b. if You include all or a substantial portion of the database |
||||
contents in a database in which You have Sui Generis Database |
||||
Rights, then the database in which You have Sui Generis Database |
||||
Rights (but not its individual contents) is Adapted Material, |
||||
including for purposes of Section 3(b); and |
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share |
||||
all or a substantial portion of the contents of the database. |
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not |
||||
replace Your obligations under this Public License where the Licensed |
||||
Rights include other Copyright and Similar Rights. |
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability. |
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE |
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS |
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF |
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, |
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, |
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR |
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, |
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT |
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT |
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. |
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE |
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, |
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, |
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, |
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR |
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN |
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR |
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR |
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. |
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided |
||||
above shall be interpreted in a manner that, to the extent |
||||
possible, most closely approximates an absolute disclaimer and |
||||
waiver of all liability. |
||||
|
||||
|
||||
Section 6 -- Term and Termination. |
||||
|
||||
a. This Public License applies for the term of the Copyright and |
||||
Similar Rights licensed here. However, if You fail to comply with |
||||
this Public License, then Your rights under this Public License |
||||
terminate automatically. |
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under |
||||
Section 6(a), it reinstates: |
||||
|
||||
1. automatically as of the date the violation is cured, provided |
||||
it is cured within 30 days of Your discovery of the |
||||
violation; or |
||||
|
||||
2. upon express reinstatement by the Licensor. |
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any |
||||
right the Licensor may have to seek remedies for Your violations |
||||
of this Public License. |
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the |
||||
Licensed Material under separate terms or conditions or stop |
||||
distributing the Licensed Material at any time; however, doing so |
||||
will not terminate this Public License. |
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public |
||||
License. |
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions. |
||||
|
||||
a. The Licensor shall not be bound by any additional or different |
||||
terms or conditions communicated by You unless expressly agreed. |
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the |
||||
Licensed Material not stated herein are separate from and |
||||
independent of the terms and conditions of this Public License. |
||||
|
||||
c. The License does not apply and no license is granted for |
||||
taking action on behalf of a Nation or State or Government, |
||||
be it military, law enforcement, agent, spy, hacker, developer, |
||||
this list is not exhaustive. |
||||
|
||||
d. The License does not apply and no license is granted to actors |
||||
taking action to oppress, harm, injure, kill, whether |
||||
physically or psycholocially. |
||||
|
||||
e. The License does not apply and no license is granted to actors |
||||
acting on behalf of any party previously found guilty of committing |
||||
war crimes at any point in time. |
||||
|
||||
f. The License does not apply and no license is granted to actors |
||||
acting on behalf of any party previously found not respecting the |
||||
Universal Declaration of Human Rights at any point in time. |
||||
|
||||
g. The License does not apply and no license is granted to actors |
||||
acting with the intent of surveilling a population or the intent of |
||||
gathering information on spefific or non-specific populations and/or |
||||
target demographics. |
||||
|
||||
|
||||
Section 8 -- Interpretation. |
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and |
||||
shall not be interpreted to, reduce, limit, restrict, or impose |
||||
conditions on any use of the Licensed Material that could lawfully |
||||
be made without permission under this Public License. |
||||
|
||||
b. To the extent possible, if any provision of this Public License is |
||||
deemed unenforceable, it shall be automatically reformed to the |
||||
minimum extent necessary to make it enforceable. If the provision |
||||
cannot be reformed, it shall be severed from this Public License |
||||
without affecting the enforceability of the remaining terms and |
||||
conditions. |
||||
|
||||
c. No term or condition of this Public License will be waived and no |
||||
failure to comply consented to unless expressly agreed to by the |
||||
Licensor. |
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted |
||||
as a limitation upon, or waiver of, any privileges and immunities |
||||
that apply to the Licensor or You, including from the legal |
||||
processes of any jurisdiction or authority. |
||||
|
||||
======================================================================= |
||||
|
||||
Creative Commons is not a party to its public |
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of |
||||
its public licenses to material it publishes and in those instances |
||||
will be considered the “Licensor.” The text of the Creative Commons |
||||
public licenses is dedicated to the public domain under the CC0 Public |
||||
Domain Dedication. Except for the limited purpose of indicating that |
||||
material is shared under a Creative Commons public license or as |
||||
otherwise permitted by the Creative Commons policies published at |
||||
creativecommons.org/policies, Creative Commons does not authorize the |
||||
use of the trademark "Creative Commons" or any other trademark or logo |
||||
of Creative Commons without its prior written consent including, |
||||
without limitation, in connection with any unauthorized modifications |
||||
to any of its public licenses or any other arrangements, |
||||
understandings, or agreements concerning use of licensed material. For |
||||
the avoidance of doubt, this paragraph does not form part of the |
||||
public licenses. |
||||
|
||||
Creative Commons may be contacted at creativecommons.org. |
@ -0,0 +1,100 @@ |
||||
# [anarchyx](https://code.juke.fr/kay/anarchyx) |
||||
minecraft anarchy server plugin |
||||
|
||||
## install |
||||
|
||||
**Warning**: [ProtocolLib](https://www.spigotmc.org/resources/protocollib.1997/) is required. |
||||
|
||||
**Note: this mod is server side only and won't work on clients** |
||||
|
||||
Place this mod's `.jar` file inside your `mods` folder |
||||
|
||||
**Recommended Plugins** |
||||
|
||||
- NoCheatsPlus |
||||
- LuckPerms |
||||
- ExploitFixer |
||||
- ViaVersion |
||||
- ProtocolLib |
||||
- AnarchyX ♥ |
||||
|
||||
## development |
||||
|
||||
Requires openjdk 11 |
||||
|
||||
```shell |
||||
$ git clone https://code.juke.fr/kay/anarchyx.git |
||||
|
||||
$ cd anarchyx |
||||
|
||||
$ ./gradlew build |
||||
``` |
||||
|
||||
## features |
||||
|
||||
See the `config.yml` file for an idea of the features. Performance hit is currently 1.5% of total tick time, you can check yourself. I aim to keep it below 5. |
||||
|
||||
- packet checks (limit chunk packet abuses, colored chat with prefix) |
||||
- commands (dupe, stats, discord...) |
||||
- events (motds, full customizable cheat checks...) |
||||
|
||||
https://code.juke.fr/kay/anarchyx/-/blob/main/src/main/resources/config.yml |
||||
|
||||
See the `plugin.yml` file for an idea of the permissions. |
||||
|
||||
https://code.juke.fr/kay/anarchyx/-/blob/main/src/main/resources/plugin.yml |
||||
|
||||
|
||||
## License |
||||
|
||||
Most all of my work is now licensed under **a modified** [CC-BY-NC-SA 4.0 AFEdit](https://code.juke.fr/kay/license/raw/branch/main/LICENSE) plus accounting for states existing in our world on top of capitalism. |
||||
|
||||
This is a weird choice for code right? |
||||
|
||||
Here are a few key reasons: |
||||
- my definition of "open" involves being able to share and modify, you are able to do such things, just not make money off of it, or oppress people |
||||
- my definition of "free" involves being able to share and modify, you are able to do such things, not just make money off of it, or oppressing people |
||||
|
||||
So no, amongst other things, this list is not exhaustive, |
||||
- you cannot have somebody work on my tool and redistribute it to your employees |
||||
- you cannot resell copies of this because in this age distribution is not done with floppy disks and the internet is a thing |
||||
- you cannot use it to generate revenue yourself |
||||
- you cannot use it to "generate value" in a capitalistic sense |
||||
- you cannot use it in any military capacity |
||||
- you cannot use it in any law enforcement capacity |
||||
- you cannot use it in any state backed capacity |
||||
- you cannot use it in any surveillance capacity |
||||
- you cannot use it if you represent the interests of a state |
||||
- you cannot use it to oppress, spy, control in any capacity |
||||
- you cannot use it to injure, harm, kill, whether physically or psychologically |
||||
|
||||
You can, however, |
||||
- change it to do whatever you please |
||||
- share it to anyone you please with attribution and under the same license |
||||
- use it as much as you please |
||||
- and probably a bunch of other cool things that are possible outside of a capitalistic, imperialistic frame of reference that permeates the tech scene |
||||
|
||||
Most of the "arguments" for how "free" and "open" source licenses are done still to this day stem from archaic concepts that might not even be relevant these days and I fail to see the issue with this license not being "interoperable" with a bunch of what I deem to be "bad" licenses, as they all allow for commercial usage. |
||||
|
||||
I also will not make any attempts to monetize these works and will at most ever offer the possibility to donate to me directly if you enjoy what I do. |
||||
|
||||
Thank you that is all. |
||||
|
||||
## Development |
||||
|
||||
To clone the repository locally: |
||||
|
||||
```bash |
||||
$ git clone https://code.juke.fr/kay/anarchyx.git |
||||
``` |
||||
|
||||
## Contributing |
||||
|
||||
More to come later. |
||||
|
||||
### Issues |
||||
Open new issues by mailing [eutychia.gitlab+anarchyx-issue@gmail.com](mailto:eutychia.gitlab+anarchyx-issue@gmail.com) |
||||
|
||||
--- |
||||
beep boop |
||||
|
@ -0,0 +1,48 @@ |
||||
import org.apache.tools.ant.filters.ReplaceTokens |
||||
|
||||
plugins { |
||||
id 'java' |
||||
} |
||||
|
||||
group = 'fr.juke' |
||||
version = '2.27.0' |
||||
|
||||
sourceCompatibility = '1.8' |
||||
targetCompatibility = '1.8' |
||||
|
||||
repositories { |
||||
mavenCentral() |
||||
maven { |
||||
name = 'papermc-repo' |
||||
url = 'https://papermc.io/repo/repository/maven-public/' |
||||
} |
||||
maven { |
||||
name = 'sonatype' |
||||
url = 'https://oss.sonatype.org/content/groups/public/' |
||||
} |
||||
maven { url "https://repo.dmulloy2.net/repository/public/" } |
||||
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/public/' } |
||||
} |
||||
|
||||
dependencies { |
||||
compileOnly 'com.destroystokyo.paper:paper-api:1.16.5-R0.1-SNAPSHOT' |
||||
compileOnly group: "com.comphenix.protocol", name: "ProtocolLib", version: "4.6.0"; |
||||
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1' |
||||
testImplementation 'com.github.seeseemelk:MockBukkit-v1.16:0.25.0' |
||||
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1' |
||||
testRuntimeOnly group: "com.comphenix.protocol", name: "ProtocolLib", version: "4.6.0"; |
||||
} |
||||
|
||||
compileJava.options.encoding = 'UTF-8' |
||||
tasks.withType(JavaCompile) { |
||||
options.encoding = 'UTF-8' |
||||
} |
||||
|
||||
processResources { |
||||
from(sourceSets.main.resources.srcDirs) { |
||||
filter ReplaceTokens, tokens: [version: version] |
||||
} |
||||
} |
||||
test { |
||||
useJUnitPlatform() |
||||
} |
@ -0,0 +1,48 @@ |
||||
# This workflow will build a Java project with Gradle |
||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle |
||||
|
||||
name: Java CI with Gradle |
||||
|
||||
on: |
||||
push: |
||||
branches: [ main ] |
||||
tags: |
||||
- '*' |
||||
pull_request: |
||||
branches: [ main ] |
||||
|
||||
jobs: |
||||
build: |
||||
|
||||
runs-on: ubuntu-latest |
||||
|
||||
steps: |
||||
- uses: actions/checkout@v2 |
||||
- name: Set up JDK 1.8 |
||||
uses: actions/setup-java@v1 |
||||
with: |
||||
java-version: 1.8 |
||||
- name: Cache Gradle packages |
||||
uses: actions/cache@v2 |
||||
with: |
||||
path: | |
||||
~/.gradle/caches |
||||
~/.gradle/wrapper |
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} |
||||
restore-keys: | |
||||
${{ runner.os }}-gradle- |
||||
- name: Grant execute permission for gradlew |
||||
run: chmod +x gradlew |
||||
- name: Build with Gradle |
||||
run: ./gradlew build |
||||
- uses: actions/upload-artifact@v2 |
||||
with: |
||||
name: AnarchyX |
||||
path: build/libs/*.jar |
||||
- name: Release |
||||
uses: softprops/action-gh-release@v1 |
||||
if: startsWith(github.ref, 'refs/tags/') |
||||
with: |
||||
files: build/libs/*.jar |
||||
env: |
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
Binary file not shown.
@ -0,0 +1,5 @@ |
||||
distributionBase=GRADLE_USER_HOME |
||||
distributionPath=wrapper/dists |
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.1-bin.zip |
||||
zipStoreBase=GRADLE_USER_HOME |
||||
zipStorePath=wrapper/dists |
@ -0,0 +1,188 @@ |
||||
#!/usr/bin/env sh |
||||
|
||||
# |
||||
# Copyright 2015 the original author or authors. |
||||
# |
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
# |
||||
# https://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
# |
||||
|
||||
############################################################################## |
||||
## |
||||
## Gradle start up script for UN*X |
||||
## |
||||
############################################################################## |
||||
|
||||
# Attempt to set APP_HOME |
||||
# Resolve links: $0 may be a link |
||||
PRG="$0" |
||||
# Need this for relative symlinks. |
||||
while [ -h "$PRG" ] ; do |
||||
ls=`ls -ld "$PRG"` |
||||
link=`expr "$ls" : '.*-> \(.*\)$'` |
||||
if expr "$link" : '/.*' > /dev/null; then |
||||
PRG="$link" |
||||
else |
||||
PRG=`dirname "$PRG"`"/$link" |
||||
fi |
||||
done |
||||
SAVED="`pwd`" |
||||
cd "`dirname \"$PRG\"`/" >/dev/null |
||||
APP_HOME="`pwd -P`" |
||||
cd "$SAVED" >/dev/null |
||||
|
||||
APP_NAME="Gradle" |
||||
APP_BASE_NAME=`basename "$0"` |
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pbad JVM options to this script. |
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' |
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value. |
||||
MAX_FD="maximum" |
||||
|
||||
warn () { |
||||
echo "$*" |
||||
} |
||||
|
||||
die () { |
||||
echo |
||||
echo "$*" |
||||
echo |
||||
exit 1 |
||||
} |
||||
|
||||
# OS specific support (must be 'true' or 'false'). |
||||
cygwin=false |
||||
msys=false |
||||
darwin=false |
||||
nonstop=false |
||||
case "`uname`" in |
||||
CYGWIN* ) |
||||
cygwin=true |
||||
;; |
||||
Darwin* ) |
||||
darwin=true |
||||
;; |
||||
MINGW* ) |
||||
msys=true |
||||
;; |
||||
NONSTOP* ) |
||||
nonstop=true |
||||
;; |
||||
esac |
||||
|
||||
classPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar |
||||
|
||||
# Determine the Java command to use to start the JVM. |
||||
if [ -n "$JAVA_HOME" ] ; then |
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then |
||||
# IBM's JDK on AIX uses strange locations for the executables |
||||
JAVACMD="$JAVA_HOME/jre/sh/java" |
||||
else |
||||
JAVACMD="$JAVA_HOME/bin/java" |
||||
fi |
||||
if [ ! -x "$JAVACMD" ] ; then |
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME |
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the |
||||
location of your Java installation." |
||||
fi |
||||
else |
||||
JAVACMD="java" |
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. |
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the |
||||
location of your Java installation." |
||||
fi |
||||
|
||||
# Increase the maximum file descriptors if we can. |
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then |
||||
MAX_FD_LIMIT=`ulimit -H -n` |
||||
if [ $? -eq 0 ] ; then |
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then |
||||
MAX_FD="$MAX_FD_LIMIT" |
||||
fi |
||||
ulimit -n $MAX_FD |
||||
if [ $? -ne 0 ] ; then |
||||
warn "Could not set maximum file descriptor limit: $MAX_FD" |
||||
fi |
||||
else |
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" |
||||
fi |
||||
fi |
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock |
||||
if $darwin; then |
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" |
||||
fi |
||||
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java |
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then |
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"` |
||||
classPATH=`cygpath --path --mixed "$classPATH"` |
||||
JAVACMD=`cygpath --unix "$JAVACMD"` |
||||
|
||||
# We build the pattern for arguments to be converted via cygpath |
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` |
||||
SEP="" |
||||
for dir in $ROOTDIRSRAW ; do |
||||
ROOTDIRS="$ROOTDIRS$SEP$dir" |
||||
SEP="|" |
||||
done |
||||
OURCYGPATTERN="(^($ROOTDIRS))" |
||||
# Add a user-defined pattern to the cygpath arguments |
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then |
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" |
||||
fi |
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh |
||||
i=0 |
||||
for arg in "$@" ; do |
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` |
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option |
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition |
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` |
||||
else |
||||
eval `echo args$i`="\"$arg\"" |
||||
fi |
||||
i=$((i+1)) |
||||
done |
||||
case $i in |
||||
(0) set -- ;; |
||||
(1) set -- "$args0" ;; |
||||
(2) set -- "$args0" "$args1" ;; |
||||
(3) set -- "$args0" "$args1" "$args2" ;; |
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;; |
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; |
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; |
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; |
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; |
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; |
||||
esac |
||||
fi |
||||
|
||||
# Escape application args |
||||
save () { |
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done |
||||
echo " " |
||||
} |
||||
APP_ARGS=$(save "$@") |
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules |
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$classPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" |
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong |
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then |
||||
cd "$(dirname "$0")" |
||||
fi |
||||
|
||||
exec "$JAVACMD" "$@" |
@ -0,0 +1,100 @@ |
||||
@rem |
||||
@rem Copyright 2015 the original author or authors. |
||||
@rem |
||||
@rem Licensed under the Apache License, Version 2.0 (the "License"); |
||||
@rem you may not use this file except in compliance with the License. |
||||
@rem You may obtain a copy of the License at |
||||
@rem |
||||
@rem https://www.apache.org/licenses/LICENSE-2.0 |
||||
@rem |
||||
@rem Unless required by applicable law or agreed to in writing, software |
||||
@rem distributed under the License is distributed on an "AS IS" BASIS, |
||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
@rem See the License for the specific language governing permissions and |
||||
@rem limitations under the License. |
||||
@rem |
||||
|
||||
@if "%DEBUG%" == "" @echo off |
||||
@rem ########################################################################## |
||||
@rem |
||||
@rem Gradle startup script for Windows |
||||
@rem |
||||
@rem ########################################################################## |
||||
|
||||
@rem Set local scope for the variables with windows NT shell |
||||
if "%OS%"=="Windows_NT" setlocal |
||||
|
||||
set DIRNAME=%~dp0 |
||||
if "%DIRNAME%" == "" set DIRNAME=. |
||||
set APP_BASE_NAME=%~n0 |
||||
set APP_HOME=%DIRNAME% |
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pbad JVM options to this script. |
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" |
||||
|
||||
@rem Find java.exe |
||||
if defined JAVA_HOME goto findJavaFromJavaHome |
||||
|
||||
set JAVA_EXE=java.exe |
||||
%JAVA_EXE% -version >NUL 2>&1 |
||||
if "%ERRORLEVEL%" == "0" goto init |
||||
|
||||
echo. |
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. |
||||
echo. |
||||
echo Please set the JAVA_HOME variable in your environment to match the |
||||
echo location of your Java installation. |
||||
|
||||
goto fail |
||||
|
||||
:findJavaFromJavaHome |
||||
set JAVA_HOME=%JAVA_HOME:"=% |
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe |
||||
|
||||
if exist "%JAVA_EXE%" goto init |
||||
|
||||
echo. |
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% |
||||
echo. |
||||
echo Please set the JAVA_HOME variable in your environment to match the |
||||
echo location of your Java installation. |
||||
|
||||
goto fail |
||||
|
||||
:init |
||||
@rem Get command-line arguments, handling Windows variants |
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args |
||||
|
||||
:win9xME_args |
||||
@rem Slurp the command line arguments. |
||||
set CMD_LINE_ARGS= |
||||
set _SKIP=2 |
||||
|
||||
:win9xME_args_slurp |
||||
if "x%~1" == "x" goto execute |
||||
|
||||
set CMD_LINE_ARGS=%* |
||||
|
||||
:execute |
||||
@rem Setup the command line |
||||
|
||||
set classPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar |
||||
|
||||
@rem Execute Gradle |
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%classPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% |
||||
|
||||
:end |
||||
@rem End local scope for the variables with windows NT shell |
||||
if "%ERRORLEVEL%"=="0" goto mainEnd |
||||
|
||||
:fail |
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of |
||||
rem the _cmd.exe /c_ return code! |
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 |
||||
exit /b 1 |
||||
|
||||
:mainEnd |
||||
if "%OS%"=="Windows_NT" endlocal |
||||
|
||||
:omega |
@ -0,0 +1 @@ |
||||
rootProject.name = 'AnarchyX' |
@ -0,0 +1,28 @@ |
||||
package fr.juke.anarchyx.Commands.Client; |
||||
|
||||
import fr.juke.anarchyx.Main; |
||||
import org.bukkit.command.Command; |
||||
import org.bukkit.command.CommandExecutor; |
||||
import org.bukkit.command.CommandSender; |
||||
import org.bukkit.entity.Player; |
||||
|
||||
public class Discord implements CommandExecutor { |
||||
private final Main plugin; |
||||
|
||||
public Discord(Main plugin) { |
||||
this.plugin = plugin; |
||||
} |
||||
|
||||
@Override |
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { |
||||
if (!this.plugin.getConfig().getBoolean("Commands.Client.Discord.enabled")) { |
||||
return true; |
||||
} |
||||
if (sender instanceof Player) { |
||||
sender.sendMessage(this.plugin.templater.getColoredConfig("Commands.Client.Discord.message")); |
||||
return true; |
||||
} |
||||
return true; |
||||
|
||||
} |
||||
} |
@ -0,0 +1,28 @@ |
||||
package fr.juke.anarchyx.Commands.Client; |
||||
|
||||
import fr.juke.anarchyx.Main; |
||||
import org.bukkit.command.Command; |
||||
import org.bukkit.command.CommandExecutor; |
||||
import org.bukkit.command.CommandSender; |
||||
import org.bukkit.entity.Player; |
||||
|
||||
public class Donate implements CommandExecutor { |
||||
private final Main plugin; |
||||
|
||||
public Donate(Main plugin) { |
||||
this.plugin = plugin; |
||||
} |
||||
|
||||
@Override |
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { |
||||
if (!this.plugin.getConfig().getBoolean("Commands.Client.Donate.enabled")) { |
||||
return true; |
||||
} |
||||
if (sender instanceof Player) { |
||||
sender.sendMessage(this.plugin.templater.getColoredConfig("Commands.Client.Donate.message")); |
||||
return true; |
||||
} |
||||
return true; |
||||
|
||||
} |
||||
} |
@ -0,0 +1,76 @@ |
||||
package fr.juke.anarchyx.Commands.Client; |
||||
|
||||
import fr.juke.anarchyx.Main; |
||||
import org.bukkit.Bukkit; |
||||
import org.bukkit.Material; |
||||
import org.bukkit.Sound; |
||||
import org.bukkit.command.Command; |
||||
import org.bukkit.command.CommandExecutor; |
||||
import org.bukkit.command.CommandSender; |
||||
import org.bukkit.entity.Player; |
||||
import org.bukkit.inventory.ItemStack; |
||||
import org.bukkit.inventory.PlayerInventory; |
||||
|
||||
import java.util.HashSet; |
||||
import java.util.Objects; |
||||
import java.util.UUID; |
||||
|
||||
public class Dupe implements CommandExecutor { |
||||
private final Main plugin; |
||||
private final HashSet<UUID> dupeCounts = new HashSet<>(); |
||||
|
||||
|
||||
public Dupe(Main plugin) { |
||||
this.plugin = plugin; |
||||
Bukkit.getScheduler().runTaskTimer(plugin, dupeCounts::clear, 0L, this.plugin.getConfig().getLong("Commands.Client.Dupe.timer")); |
||||
} |
||||
|
||||
@Override |
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { |
||||
if (!this.plugin.getConfig().getBoolean("Commands.Client.Dupe.enabled")) { |
||||
return true; |
||||
} |
||||
if (sender instanceof Player && !dupeCounts.contains(((Player) sender).getUniqueId())) { |
||||
dupeCounts.add(((Player) sender).getUniqueId()); |
||||
PlayerInventory playerInventory = ((Player) sender).getInventory(); |
||||
ItemStack playerStack = playerInventory.getItemInMainHand(); |
||||
int playerStackCount = playerStack.getAmount(); |
||||
double melonRNG = this.plugin.getConfig().getDouble("Commands.Client.Dupe.fail.chance"); |
||||
String itemName = playerStack.getI18NDisplayName(); |
||||
|
||||
if (playerInventory.firstEmpty() == -1 && (playerStackCount * 2) > playerStack.getMaxStackSize()) { |
||||
return true; |
||||
} |
||||
|
||||
if (!playerStack.getType().equals(Material.AIR)) { |
||||
if (Math.random() > melonRNG) { |
||||
playerInventory.addItem(playerStack); |
||||
if (this.plugin.debug) |
||||
this.plugin.getLogger().info(sender.getName() + " duped " + playerStackCount + " " + itemName); |
||||
sender.sendMessage(this.plugin.templater.getColoredConfig("Commands.Client.Dupe.success.message") |
||||
.replace("%brand%", Objects.requireNonNull(this.plugin.getConfig().getString("AnarchyX.brand"))) |
||||
.replace("%item%", Objects.requireNonNull(itemName)) |
||||
.replace("%count%", Integer.toString(playerStackCount))); |
||||
} else { |
||||
Material failure = Material.valueOf(Objects.requireNonNull(this.plugin.getConfig().getString("Commands.Client.Dupe.fail.item"))); |
||||
ItemStack newStack = new ItemStack(Objects.requireNonNull(failure), playerStackCount); |
||||
playerInventory.addItem(newStack); |
||||
playerInventory.removeItem(playerStack); |
||||
if (this.plugin.debug) |
||||
this.plugin.getLogger().info(sender.getName() + " lost " + playerStackCount + " " + itemName); |
||||
sender.sendMessage(this.plugin.templater.getColoredConfig("Commands.Client.Dupe.fail.message") |
||||
.replace("%brand%", Objects.requireNonNull(this.plugin.getConfig().getString("AnarchyX.brand"))) |
||||
.replace("%item%", Objects.requireNonNull(itemName)) |
||||
.replace("%count%", Integer.toString(playerStackCount)) |
||||
.replace("%fail%", Objects.requireNonNull(newStack.getI18NDisplayName())) |
||||
.replace("%luck%", Integer.toString((int) Math.round(melonRNG * 100)))); |
||||
} |
||||
Objects.requireNonNull(((Player) sender).getPlayer()).playSound(Objects.requireNonNull(((Player) sender).getPlayer()).getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0F, 1.0F); |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
return true; |
||||
} |
||||
} |
||||
|
@ -0,0 +1,28 @@ |
||||
package fr.juke.anarchyx.Commands.Client; |
||||
|
||||
import fr.juke.anarchyx.Main; |
||||
import org.bukkit.command.Command; |
||||
import org.bukkit.command.CommandExecutor; |
||||
import org.bukkit.command.CommandSender; |
||||
import org.bukkit.entity.Player; |
||||
|
||||
public class Mute implements CommandExecutor { |
||||
private final Main plugin; |
||||
|
||||
public Mute(Main plugin) { |
||||
this.plugin = plugin; |
||||
} |
||||
|
||||
@Override |
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { |
||||
if (!this.plugin.getConfig().getBoolean("Commands.Client.Mute.enabled")) { |
||||
return true; |
||||
} |
||||
if (sender instanceof Player) { |
||||
sender.sendMessage(this.plugin.templater.getColoredConfig("Commands.Client.Mute.message")); |
||||
return true; |
||||
} |
||||
return true; |
||||
|
||||
} |
||||
} |
@ -0,0 +1,52 @@ |
||||
package fr.juke.anarchyx.Commands.Client; |
||||
|
||||
import fr.juke.anarchyx.Main; |
||||
import org.bukkit.Bukkit; |
||||
import org.bukkit.ChatColor; |
||||
import org.bukkit.command.Command; |
||||
import org.bukkit.command.CommandExecutor; |
||||
import org.bukkit.command.CommandSender; |
||||
import org.bukkit.entity.Player; |
||||
|
||||
import java.text.ParseException; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Calendar; |
||||
import java.util.Date; |
||||
import java.util.Objects; |
||||
|
||||
public class Stats implements CommandExecutor { |
||||
private final Main plugin; |
||||
|
||||
public Stats(Main plugin) { |
||||
this.plugin = plugin; |
||||
} |
||||
|
||||
@Override |
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { |
||||
if (!this.plugin.getConfig().getBoolean("Commands.Client.Stats.enabled")) { |
||||
return true; |
||||
} |
||||
if (sender instanceof Player) { |
||||
Calendar c = Calendar.getInstance(); |
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
||||
Date parsedDate = new Date(); |
||||
try { |
||||
parsedDate = dateFormat.parse(this.plugin.getConfig().getString("Commands.Client.Stats.created")); |
||||
} catch (ParseException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
c.setTimeInMillis(System.currentTimeMillis() - parsedDate.getTime()); |
||||
for (String s : this.plugin.getConfig().getStringList("Commands.Client.Stats.messages")) |
||||
sender.sendMessage(ChatColor.translateAlternateColorCodes('§', s) |
||||
.replace("%years%", String.valueOf(c.get(Calendar.YEAR) - 1970)) |
||||
.replace("%months%", String.valueOf(c.get(Calendar.MONTH))) |
||||
.replace("%days%", String.valueOf(c.get(Calendar.DATE) - 1)) |
||||
.replace("%totalPlayers%", String.valueOf(Bukkit.getOfflinePlayers().length)) |
||||
.replace("%brand%", Objects.requireNonNull(this.plugin.getConfig().getString("AnarchyX.brand")))); |
||||
if (this.plugin.debug) this.plugin.getLogger().info("Stats requested by " + sender.getName()); |
||||
return true; |
||||
} |
||||
return true; |
||||
|
||||
} |
||||
} |
@ -0,0 +1,18 @@ |
||||
package fr.juke.anarchyx.Commands; |
||||
|
||||
import fr.juke.anarchyx.Commands.Client.*; |
||||
import fr.juke.anarchyx.Commands.Server.AnarchyX; |
||||
import fr.juke.anarchyx.Main; |
||||
|
||||
import java.util.Objects; |
||||
|
||||
public class Commands { |
||||
public static void register(Main plugin) { |
||||
Objects.requireNonNull(plugin.getCommand("dupe")).setExecutor(new Dupe(plugin)); |
||||
Objects.requireNonNull(plugin.getCommand("anarchyx")).setExecutor(new AnarchyX(plugin)); |
||||
Objects.requireNonNull(plugin.getCommand("stats")).setExecutor(new Stats(plugin)); |
||||
Objects.requireNonNull(plugin.getCommand("mute")).setExecutor(new Mute(plugin)); |
||||
Objects.requireNonNull(plugin.getCommand("discord")).setExecutor(new Discord(plugin)); |
||||
Objects.requireNonNull(plugin.getCommand("donate")).setExecutor(new Donate(plugin)); |
||||
} |
||||
} |
@ -0,0 +1,34 @@ |
||||
package fr.juke.anarchyx.Commands.Server; |
||||
|
||||
import fr.juke.anarchyx.Main; |
||||
import org.bukkit.command.Command; |
||||
import org.bukkit.command.CommandExecutor; |
||||
import org.bukkit.command.CommandSender; |
||||
import org.bukkit.command.ConsoleCommandSender; |
||||
import org.bukkit.entity.Player; |
||||
|
||||
public class AnarchyX implements CommandExecutor { |
||||
private final Main plugin; |
||||
|
||||
public AnarchyX(Main plugin) { |
||||
this.plugin = plugin; |
||||
} |
||||
|
||||
@Override |
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { |
||||
if (sender instanceof Player || sender instanceof ConsoleCommandSender) { |
||||
if (args.length == 0) { |
||||
return true; |
||||
} else if (args[0].equalsIgnoreCase("reload")) { |
||||
this.plugin.reloadConfig(); |
||||
this.plugin.debug = this.plugin.getConfig().getBoolean("AnarchyX.debug"); |
||||
sender.sendMessage(this.plugin.templater.getColored("§aConfiguration reloaded")); |
||||
this.plugin.getLogger().info("Configuration reloaded"); |
||||
return true; |
||||
} |
||||
} |
||||
return true; |
||||
|
||||
} |
||||
} |
||||
|
@ -0,0 +1,16 @@ |
||||
package fr.juke.anarchyx.Events; |
||||
|
||||
import fr.juke.anarchyx.Events.Server.EntityLimits; |
||||
import fr.juke.anarchyx.Events.Server.RandomMOTD; |
||||
import fr.juke.anarchyx.Events.ToMoveToPackets.AntiBackdoor; |
||||
import fr.juke.anarchyx.Events.ToMoveToPackets.PatchSnakeOilACsElytra; |
||||
import fr.juke.anarchyx.Main; |
||||
|
||||
public class Events { |
||||
public static void register(Main plugin) { |
||||
plugin.getServer().getPluginManager().registerEvents(new RandomMOTD(plugin), plugin); |
||||
plugin.getServer().getPluginManager().registerEvents(new PatchSnakeOilACsElytra(plugin), plugin); |
||||
plugin.getServer().getPluginManager().registerEvents(new EntityLimits(plugin), plugin); |
||||
plugin.getServer().getPluginManager().registerEvents(new AntiBackdoor(plugin), plugin); |
||||
} |
||||
} |
@ -0,0 +1,31 @@ |
||||
package fr.juke.anarchyx.Events.Server; |
||||
|
||||
import fr.juke.anarchyx.Main; |
||||
import org.bukkit.configuration.file.FileConfiguration; |
||||
import org.bukkit.entity.Entity; |
||||
import org.bukkit.entity.EntityType; |
||||
import org.bukkit.event.EventHandler; |
||||
import org.bukkit.event.Listener; |
||||
import org.bukkit.event.world.ChunkLoadEvent; |
||||
|
||||
// credits to [moom0o](https://github.com/moom0o/AnarchyExploitFixes)
|
||||
public class EntityLimits implements Listener { |
||||
private final Main plugin; |
||||
|
||||
public EntityLimits(Main plugin) { |
||||
this.plugin = plugin; |
||||
} |
||||
|
||||
@EventHandler |
||||
public void onChunkLoad(ChunkLoadEvent evt) { |
||||
FileConfiguration config = plugin.getConfig(); |
||||
for (Entity e : evt.getChunk().getEntities()) { |
||||
|
||||
if (e.getType() == EntityType.WITHER_SKULL && config.getBoolean("Events.Server.EntityLimits.withers_skulls.enabled")) { |
||||
e.remove(); |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,27 @@ |
||||
package fr.juke.anarchyx.Events.Server; |
||||
|
||||
import fr.juke.anarchyx.Main; |
||||
import org.bukkit.event.EventHandler; |
||||
import org.bukkit.event.Listener; |
||||
import org.bukkit.event.server.ServerListPingEvent; |
||||
|
||||
import java.util.List; |
||||
import java.util.Random; |
||||
|
||||
public class RandomMOTD implements Listener { |
||||
private final Main plugin; |
||||
|
||||
public RandomMOTD(Main plugin) { |
||||
this.plugin = plugin; |
||||
} |
||||
|
||||
@EventHandler |
||||
public void on(ServerListPingEvent event) { |
||||
if (this.plugin.getConfig().getBoolean("Events.Server.RabdomMOTD.enabled")) { |
||||
List<String> list = this.plugin.getConfig().getStringList("Events.Server.RabdomMOTD.messages"); |
||||
event.setMotd( |
||||
this.plugin.templater.get(list.get(new Random().nextInt(list.size()))) |
||||
); |
||||
} |
||||
} |
||||
} |