From e3ef43ecff805a99bb8453741a83329a2db44690 Mon Sep 17 00:00:00 2001 From: BitHeaven Date: Wed, 25 Sep 2024 23:19:00 +0500 Subject: [PATCH] First working version --- .gitignore | 118 +++ LICENSE.txt | 692 ++++++++++++++++++ build.gradle | 103 +++ gradle.properties | 14 + gradle/wrapper/gradle-wrapper.properties | 1 + settings.gradle | 9 + .../ru/bitheaven/donpayinteg/DonPayInteg.java | 49 ++ .../bitheaven/donpayinteg/DonateThread.java | 59 ++ .../ru/bitheaven/donpayinteg/command/DPI.java | 48 ++ .../bitheaven/donpayinteg/config/Action.java | 31 + .../bitheaven/donpayinteg/config/Config.java | 36 + .../donpayinteg/config/ConfigHandler.java | 58 ++ .../resources/assets/donpayinteg/icon.png | Bin 0 -> 65724 bytes src/main/resources/fabric.mod.json | 24 + 14 files changed, 1242 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE.txt create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 settings.gradle create mode 100644 src/main/java/ru/bitheaven/donpayinteg/DonPayInteg.java create mode 100644 src/main/java/ru/bitheaven/donpayinteg/DonateThread.java create mode 100644 src/main/java/ru/bitheaven/donpayinteg/command/DPI.java create mode 100644 src/main/java/ru/bitheaven/donpayinteg/config/Action.java create mode 100644 src/main/java/ru/bitheaven/donpayinteg/config/Config.java create mode 100644 src/main/java/ru/bitheaven/donpayinteg/config/ConfigHandler.java create mode 100644 src/main/resources/assets/donpayinteg/icon.png create mode 100644 src/main/resources/fabric.mod.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c37caf --- /dev/null +++ b/.gitignore @@ -0,0 +1,118 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-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 + +# Dump file +*.stackdump + +# 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 diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..a4d1509 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,692 @@ +Copyright (c) 2024 BitHeaven + +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 + + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..540ba1f --- /dev/null +++ b/build.gradle @@ -0,0 +1,103 @@ +plugins { + id 'fabric-loom' version '1.7-SNAPSHOT' + id 'maven-publish' +} + +version = project.mod_version +group = project.maven_group + +base { + archivesName = project.archives_base_name +} + +loom { + splitEnvironmentSourceSets() + + mods { + "donpayinteg" { + sourceSet sourceSets.main + sourceSet sourceSets.client + } + } +} + +repositories { + // Add repositories to retrieve artifacts from in here. + // You should only use this when depending on other mods because + // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. + // See https://docs.gradle.org/current/userguide/declaring_repositories.html + // for more information about repositories. +} + +dependencies { + // To change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + + // Fabric API. This is technically optional, but you probably want it anyway. + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + implementation group: 'org.yaml', name: 'snakeyaml', version: '2.3' + implementation group: 'org.json', name: 'json', version: '20240303' +} + +processResources { + inputs.property "version", project.version + inputs.property "minecraft_version", project.minecraft_version + inputs.property "loader_version", project.loader_version + filteringCharset "UTF-8" + + filesMatching("fabric.mod.json") { + expand "version": project.version, + "minecraft_version": project.minecraft_version, + "loader_version": project.loader_version + } +} + +def targetJavaVersion = 21 +tasks.withType(JavaCompile).configureEach { + // ensure that the encoding is set to UTF-8, no matter what the system default is + // this fixes some edge cases with special characters not displaying correctly + // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html + // If Javadoc is generated, this must be specified in that task too. + it.options.encoding = "UTF-8" + if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) { + it.options.release.set(targetJavaVersion) + } +} + +java { + def javaVersion = JavaVersion.toVersion(targetJavaVersion) + if (JavaVersion.current() < javaVersion) { + toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion) + } + // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task + // if it is present. + // If you remove this line, sources will not be generated. + withSourcesJar() +} + +jar { + from("LICENSE") { + rename { "${it}_${project.archivesBaseName}" } + } +} + +// configure the maven publication +publishing { + publications { + create("mavenJava", MavenPublication) { + artifactId = project.archives_base_name + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + // Notice: This block does NOT have the same function as the block in the top level. + // The repositories here will be used for publishing your artifact, not for + // retrieving dependencies. + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..d5b5daa --- /dev/null +++ b/gradle.properties @@ -0,0 +1,14 @@ +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx1G +# Fabric Properties +# check these on https://modmuss50.me/fabric.html +minecraft_version=1.21.1 +yarn_mappings=1.21.1+build.3 +loader_version=0.16.5 +# Mod Properties +mod_version=1.0-SNAPSHOT +maven_group=ru.bitheaven +archives_base_name=donpayinteg +# Dependencies +# check this on https://modmuss50.me/fabric.html +fabric_version=0.105.0+1.21.1 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..0d8ab51 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..f91a4fe --- /dev/null +++ b/settings.gradle @@ -0,0 +1,9 @@ +pluginManagement { + repositories { + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} diff --git a/src/main/java/ru/bitheaven/donpayinteg/DonPayInteg.java b/src/main/java/ru/bitheaven/donpayinteg/DonPayInteg.java new file mode 100644 index 0000000..dc45e24 --- /dev/null +++ b/src/main/java/ru/bitheaven/donpayinteg/DonPayInteg.java @@ -0,0 +1,49 @@ +package ru.bitheaven.donpayinteg; + +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ru.bitheaven.donpayinteg.command.DPI; +import ru.bitheaven.donpayinteg.config.ConfigHandler; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; + +public class DonPayInteg implements ModInitializer { + public static final String MOD_ID = "donpayinteg"; + public static final String NAME = "DonatePayIntegration"; + public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + public static List commands = new ArrayList(); + + @Override + public void onInitialize() { + LOGGER.info("Mod [{}] is loading!", NAME); + + ConfigHandler.register(); + + DPI.register(); + + AtomicInteger i = new AtomicInteger(); + AtomicInteger j = new AtomicInteger(); + AtomicReference thread = new AtomicReference<>(new DonateThread()); + + ServerTickEvents.START_SERVER_TICK.register((world) -> { + if(!thread.get().isAlive()) { + if(i.getAndIncrement() % (20 * 15) == 0) { + thread.set(new DonateThread()); + thread.get().start(); + } + } + + if(i.getAndIncrement() % (20 * 2) == 0) { + if (!commands.isEmpty()) { + world.getCommandManager().executeWithPrefix(world.getCommandSource(), commands.getFirst()); + commands.removeFirst(); + } + } + }); + } +} diff --git a/src/main/java/ru/bitheaven/donpayinteg/DonateThread.java b/src/main/java/ru/bitheaven/donpayinteg/DonateThread.java new file mode 100644 index 0000000..557817d --- /dev/null +++ b/src/main/java/ru/bitheaven/donpayinteg/DonateThread.java @@ -0,0 +1,59 @@ +package ru.bitheaven.donpayinteg; + +import org.json.JSONArray; +import org.json.JSONObject; +import ru.bitheaven.donpayinteg.config.Action; +import ru.bitheaven.donpayinteg.config.Config; +import ru.bitheaven.donpayinteg.config.ConfigHandler; + +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +import static ru.bitheaven.donpayinteg.DonPayInteg.LOGGER; + +public class DonateThread extends Thread { + private int lastDonate = ConfigHandler.load().getLastDonate(); + public void run() { + String token = ConfigHandler.load().getDonpayToken(); + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create("https://donatepay.ru/api/v1/notifications?access_token=" + token + "&type=donation&order=ASC&after=" + lastDonate)) + .GET() + .build(); + + HttpResponse response; + try { + response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); + } catch (IOException | InterruptedException e) { + throw new RuntimeException(e); + } + + JSONArray array = new JSONObject(response.body()).getJSONArray("data"); + for(int i = 0; i < array.length(); i++) { + JSONObject objects = array.getJSONObject(i); + boolean finded = false; + String cmd = "", msg = ""; + for(Action element : ConfigHandler.load().getActions()) { + if(element.getSum() == objects.getJSONObject("vars").getFloat("sum")) { + cmd = element.getCommand(); + msg = element.getMessage(); + finded = true; + break; + } + } + if(!finded) continue; + + lastDonate = objects.getInt("id"); + + DonPayInteg.commands.addLast("title @a title \"" + msg.replace("{username}", objects.getJSONObject("vars").getString("name")) + "\""); + DonPayInteg.commands.addLast(cmd.replace("{username}", objects.getJSONObject("vars").getString("name"))); + + LOGGER.info("Exec donate #{}", lastDonate); + Config config = ConfigHandler.load(); + config.setLastDonate(lastDonate); + ConfigHandler.save(config); + } + } +} diff --git a/src/main/java/ru/bitheaven/donpayinteg/command/DPI.java b/src/main/java/ru/bitheaven/donpayinteg/command/DPI.java new file mode 100644 index 0000000..e14ca87 --- /dev/null +++ b/src/main/java/ru/bitheaven/donpayinteg/command/DPI.java @@ -0,0 +1,48 @@ +package ru.bitheaven.donpayinteg.command; + +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.arguments.StringArgumentType; +import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; +import net.minecraft.server.command.CommandManager; +import net.minecraft.text.Text; +import ru.bitheaven.donpayinteg.config.Config; +import ru.bitheaven.donpayinteg.config.ConfigHandler; + +public class DPI { + public DPI() { + throw new AssertionError(); + } + public static void register() { + CommandRegistrationCallback.EVENT.register((((dispatcher, registryAccess, environment) -> + { + dispatcher.register(CommandManager.literal("dpi") + .then(CommandManager.literal("set_token") + .then(CommandManager.argument("token", StringArgumentType.string()) + .executes(context -> { + String token = StringArgumentType.getString(context, "token"); + + Config config = ConfigHandler.load(); + config.setDonpayToken(token); + ConfigHandler.save(config); + + context.getSource().sendFeedback(() -> Text.literal("DonatePay token set!"), false); + + return 1; + }))) + .then(CommandManager.literal("add") + .then(CommandManager.argument("sum", IntegerArgumentType.integer()) + .then(CommandManager.argument("command", StringArgumentType.string()) + .then(CommandManager.argument("message", StringArgumentType.string()) + .executes(context -> { + int sum = IntegerArgumentType.getInteger(context, "command"); + String command = StringArgumentType.getString(context, "command"); + String message = StringArgumentType.getString(context, "message"); + Config config = ConfigHandler.load(); +// config.setDonpayToken(token); +// ConfigHandler.save(config); + return 1; + }))))) + ); + }))); + } +} diff --git a/src/main/java/ru/bitheaven/donpayinteg/config/Action.java b/src/main/java/ru/bitheaven/donpayinteg/config/Action.java new file mode 100644 index 0000000..f324eb7 --- /dev/null +++ b/src/main/java/ru/bitheaven/donpayinteg/config/Action.java @@ -0,0 +1,31 @@ +package ru.bitheaven.donpayinteg.config; + +public class Action { + private int sum = 1; + private String message = "{username} donated"; + private String command = "give @a dirt"; + + public int getSum() { + return sum; + } + + public void setSum(int sum) { + this.sum = sum; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } +} diff --git a/src/main/java/ru/bitheaven/donpayinteg/config/Config.java b/src/main/java/ru/bitheaven/donpayinteg/config/Config.java new file mode 100644 index 0000000..e43444f --- /dev/null +++ b/src/main/java/ru/bitheaven/donpayinteg/config/Config.java @@ -0,0 +1,36 @@ +package ru.bitheaven.donpayinteg.config; + +import java.util.Arrays; +import java.util.List; + +public class Config { + private String donpayToken = ""; + private int lastDonate = 0; + private List actions = List.of(new Action()); + + + public String getDonpayToken() { + return donpayToken; + } + + public void setDonpayToken(String donpayToken) { + this.donpayToken = donpayToken; + } + + public int getLastDonate() { + return lastDonate; + } + + public void setLastDonate(int lastDonate) { + this.lastDonate = lastDonate; + } + + public List getActions() { + return actions; + } + + public void setActions(List actions) { + this.actions = actions; + } +} + diff --git a/src/main/java/ru/bitheaven/donpayinteg/config/ConfigHandler.java b/src/main/java/ru/bitheaven/donpayinteg/config/ConfigHandler.java new file mode 100644 index 0000000..072ea0c --- /dev/null +++ b/src/main/java/ru/bitheaven/donpayinteg/config/ConfigHandler.java @@ -0,0 +1,58 @@ +package ru.bitheaven.donpayinteg.config; + +import net.fabricmc.loader.api.FabricLoader; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.LoaderOptions; +import org.yaml.snakeyaml.Yaml; + +import org.yaml.snakeyaml.constructor.Constructor; +import org.yaml.snakeyaml.inspector.TagInspector; +import ru.bitheaven.donpayinteg.DonPayInteg; + +import java.io.*; + +import static ru.bitheaven.donpayinteg.DonPayInteg.LOGGER; + + +public class ConfigHandler { + + private static final String PATH = FabricLoader.getInstance().getConfigDir().resolve(DonPayInteg.MOD_ID + ".yaml").toString(); + + public static void register() { + if(!new File(PATH).exists()) + std(); + } + + public static Config load() { + LoaderOptions loaderOptions = new LoaderOptions(); + loaderOptions.setTagInspector(tag -> tag.getClassName().equals(Config.class.getName())); + Yaml yaml = new Yaml(new Constructor(Config.class, loaderOptions)); + Config config; + try { + config = yaml.load(new FileInputStream(PATH)); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + + return config; + } + + public static void save(Config config) { + DumperOptions options = new DumperOptions(); + options.setIndent(2); + options.setPrettyFlow(true); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml yaml = new Yaml(options); + + try { + yaml.dump(config, new FileWriter(PATH)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static void std() { + save(new Config()); + LOGGER.info("Created new config file"); + } +} \ No newline at end of file diff --git a/src/main/resources/assets/donpayinteg/icon.png b/src/main/resources/assets/donpayinteg/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5ca3db826514a8315f1836f432e1dfd9b0f06898 GIT binary patch literal 65724 zcmYhi1yCH#_XRq;xVsbFoj{P_?iw@@TmuQ3;OycO+$A^!OYk7U-8}>kZUKV(vir#Q z`@dK3R&CAf)a{`^>YX{Y{f52T4&?gXTkWbfy<3EFTBp~6 z*IhB?U5VRtw(1$Jcwot2dGRX9RRDaolwnGPIjFz2$&n|uM4d%#r0$OVXQ9^Z2T{av>2-@tk1n5Gg|M@}kUB4c6U0)%Ea zKWQ%LYNeeBv75w8d1IQzbt~PCNKVd6X3x6aTJy6F#>U3PAGWryxw~Bw))M|=;ceN4 z)cbB@&OYR88!BuXKAF`Xhw*_0cW``Ij^l+#lVkRQLKM`9u~rDbPP)y29Leg9w7%Rc=#^a$}ARL7nj9E zlo)b=AU4Qo5N>eWN)Kc!0hd1E9$ho>DDz#N58=|Q+R?*ELqUT!GI!cM6HvD8&!&@k zuzOAko0@MH=v|~JF>R`ST0UHry%`Z?B3IW>#16-{C&*DOoqF)08mPthihm=g+{3qKW&d8ZC= zz5brVhunn^#bE$$pi�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%0Dpy& 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..04a801f --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,24 @@ +{ + "schemaVersion": 1, + "id": "donpayinteg", + "version": "${version}", + "name": "DonatePay Integration", + "description": "Mod add integration with donate system", + "authors": [ + "BitHeaven" + ], + "contact": {}, + "license": "GPL-3.0", + "icon": "assets/donpayinteg/icon.png", + "environment": "server", + "entrypoints": { + "main": [ + "ru.bitheaven.donpayinteg.DonPayInteg" + ] + }, + "depends": { + "fabricloader": ">=${loader_version}", + "fabric": "*", + "minecraft": "${minecraft_version}" + } +}