From 622d0b6d6dce2c9f1a17848acd116fc0eb1d428f Mon Sep 17 00:00:00 2001 From: Alex-the-666 Date: Fri, 1 May 2020 13:41:57 -0700 Subject: [PATCH] Shall we begin? --- .gitignore | 3 + CREDITS.txt | 65 +++ LICENSE.txt | 520 ++++++++++++++++++ README.txt | 54 +- build.gradle | 219 ++++---- changelog.txt | 508 +++++++++++++++++ gradle.properties | 1 + gradle/wrapper/gradle-wrapper.jar | Bin 54417 -> 54708 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- src/META-INF/MANIFEST.MF | 4 - src/main/resources/META-INF/mods.toml | 56 ++ .../lang/bestiary/zh_cn_0/alchemy_0.txt | 21 +- .../assets/iceandfire/lang/zh_cn.lang | 10 +- src/main/resources/mcmod.info | 40 +- src/main/resources/pack.mcmeta | 5 +- 15 files changed, 1355 insertions(+), 153 deletions(-) create mode 100644 CREDITS.txt create mode 100644 LICENSE.txt create mode 100644 changelog.txt delete mode 100644 src/META-INF/MANIFEST.MF create mode 100644 src/main/resources/META-INF/mods.toml diff --git a/.gitignore b/.gitignore index 2c770e09fe..12f864471f 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,6 @@ build # other eclipse run + +# Files from Forge MDK +forge*changelog.txt diff --git a/CREDITS.txt b/CREDITS.txt new file mode 100644 index 0000000000..a70c53d5a9 --- /dev/null +++ b/CREDITS.txt @@ -0,0 +1,65 @@ +Minecraft Forge: Credits/Thank You + +Forge is a set of tools and modifications to the Minecraft base game code to assist +mod developers in creating new and exciting content. It has been in development for +several years now, but I would like to take this time thank a few people who have +helped it along it's way. + +First, the people who originally created the Forge projects way back in Minecraft +alpha. Eloraam of RedPower, and SpaceToad of Buildcraft, without their acceptiance +of me taking over the project, who knows what Minecraft modding would be today. + +Secondly, someone who has worked with me, and developed some of the core features +that allow modding to be as functional, and as simple as it is, cpw. For developing +FML, which stabelized the client and server modding ecosystem. As well as the base +loading system that allows us to modify Minecraft's code as elegently as possible. + +Mezz, who has stepped up as the issue and pull request manager. Helping to keep me +sane as well as guiding the community into creating better additions to Forge. + +Searge, Bspks, Fesh0r, ProfMobious, and all the rest over on the MCP team {of which +I am a part}. For creating some of the core tools needed to make Minecraft modding +both possible, and as stable as can be. + On that note, here is some specific information of the MCP data we use: + * Minecraft Coder Pack (MCP) * + Forge Mod Loader and Minecraft Forge have permission to distribute and automatically + download components of MCP and distribute MCP data files. This permission is not + transitive and others wishing to redistribute the Minecraft Forge source independently + should seek permission of MCP or remove the MCP data files and request their users + to download MCP separately. + +And lastly, the countless community members who have spent time submitting bug reports, +pull requests, and just helping out the community in general. Thank you. + +--LexManos + +========================================================================= + +This is Forge Mod Loader. + +You can find the source code at all times at https://github.com/MinecraftForge/MinecraftForge/tree/1.12.x/src/main/java/net/minecraftforge/fml + +This minecraft mod is a clean open source implementation of a mod loader for minecraft servers +and minecraft clients. + +The code is authored by cpw. + +It began by partially implementing an API defined by the client side ModLoader, authored by Risugami. +http://www.minecraftforum.net/topic/75440- +This support has been dropped as of Minecraft release 1.7, as Risugami no longer maintains ModLoader. + +It also contains suggestions and hints and generous helpings of code from LexManos, author of MinecraftForge. +http://www.minecraftforge.net/ + +Additionally, it contains an implementation of topological sort based on that +published at http://keithschwarz.com/interesting/code/?dir=topological-sort + +It also contains code from the Maven project for performing versioned dependency +resolution. http://maven.apache.org/ + +It also contains a partial repackaging of the javaxdelta library from http://sourceforge.net/projects/javaxdelta/ +with credit to it's authors. + +Forge Mod Loader downloads components from the Minecraft Coder Pack +(http://mcp.ocean-labs.de/index.php/Main_Page) with kind permission from the MCP team. + diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000000..b0cbe2b391 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,520 @@ +Unless noted below, Minecraft Forge, Forge Mod Loader, and all +parts herein are licensed under the terms of the LGPL 2.1 found +here http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt and +copied below. + +Homepage: http://minecraftforge.net/ + https://github.com/MinecraftForge/MinecraftForge + + +A note on authorship: +All source artifacts are property of their original author, with +the exclusion of the contents of the patches directory and others +copied from it from time to time. Authorship of the contents of +the patches directory is retained by the Minecraft Forge project. +This is because the patches are partially machine generated +artifacts, and are changed heavily due to the way forge works. +Individual attribution within them is impossible. + +Consent: +All contributions to Forge must consent to the release of any +patch content to the Forge project. + +A note on infectivity: +The LGPL is chosen specifically so that projects may depend on Forge +features without being infected with its license. That is the +purpose of the LGPL. Mods and others using this code via ordinary +Java mechanics for referencing libraries are specifically not bound +by Forge's license for the Mod code. + + +=== MCP Data === +This software includes data from the Minecraft Coder Pack (MCP), with kind permission +from them. The license to MCP data is not transitive - distribution of this data by +third parties requires independent licensing from the MCP team. This data is not +redistributable without permission from the MCP team. + +=== Sharing === +I grant permission for some parts of FML to be redistributed outside the terms of the LGPL, for the benefit of +the minecraft modding community. All contributions to these parts should be licensed under the same additional grant. + +-- Runtime patcher -- +License is granted to redistribute the runtime patcher code (src/main/java/net/minecraftforge/fml/common/patcher +and subdirectories) under any alternative open source license as classified by the OSI (http://opensource.org/licenses) + +-- ASM transformers -- +License is granted to redistribute the ASM transformer code (src/main/java/net/minecraftforge/common/asm/ and subdirectories) +under any alternative open source license as classified by the OSI (http://opensource.org/licenses) + +========================================================================= +This software includes portions from the Apache Maven project at +http://maven.apache.org/ specifically the ComparableVersion.java code. It is +included based on guidelines at +http://www.softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html +with notices intact. The only change is a non-functional change of package name. + +This software contains a partial repackaging of javaxdelta, a BSD licensed program for generating +binary differences and applying them, sourced from the subversion at http://sourceforge.net/projects/javaxdelta/ +authored by genman, heikok, pivot. +The only changes are to replace some Trove collection types with standard Java collections, and repackaged. +========================================================================= + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +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 this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser 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 Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "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 +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY 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 +LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/README.txt b/README.txt index 3f4a78baca..6904b37735 100644 --- a/README.txt +++ b/README.txt @@ -1 +1,53 @@ -Dragons, Hypogriffs, Pixies, Oh my! +------------------------------------------- +Source installation information for modders +------------------------------------------- +This code follows the Minecraft Forge installation methodology. It will apply +some small patches to the vanilla MCP source code, giving you and it access +to some of the data and functions you need to build a successful mod. + +Note also that the patches are built against "unrenamed" MCP source code (aka +srgnames) - this means that you will not be able to read them directly against +normal code. + +Source pack installation information: + +Standalone source installation +============================== + +See the Forge Documentation online for more detailed instructions: +http://mcforge.readthedocs.io/en/latest/gettingstarted/ + +Step 1: Open your command-line and browse to the folder where you extracted the zip file. + +Step 2: You're left with a choice. +If you prefer to use Eclipse: +1. Run the following command: "gradlew genEclipseRuns" (./gradlew genEclipseRuns if you are on Mac/Linux) +2. Open Eclipse, Import > Existing Gradle Project > Select Folder + or run "gradlew eclipse" to generate the project. +(Current Issue) +4. Open Project > Run/Debug Settings > Edit runClient and runServer > Environment +5. Edit MOD_CLASSES to show [modid]%%[Path]; 2 times rather then the generated 4. + +If you prefer to use IntelliJ: +1. Open IDEA, and import project. +2. Select your build.gradle file and have it import. +3. Run the following command: "gradlew genIntellijRuns" (./gradlew genIntellijRuns if you are on Mac/Linux) +4. Refresh the Gradle Project in IDEA if required. + +If at any point you are missing libraries in your IDE, or you've run into problems you can run "gradlew --refresh-dependencies" to refresh the local cache. "gradlew clean" to reset everything {this does not affect your code} and then start the processs again. + +Should it still not work, +Refer to #ForgeGradle on EsperNet for more information about the gradle environment. +or the Forge Project Discord discord.gg/UvedJ9m + +Forge source installation +========================= +MinecraftForge ships with this code and installs it as part of the forge +installation process, no further action is required on your part. + +LexManos' Install Video +======================= +https://www.youtube.com/watch?v=8VEdtQLuLO0&feature=youtu.be + +For more details update more often refer to the Forge Forums: +http://www.minecraftforge.net/forum/index.php/topic,14048.0.html diff --git a/build.gradle b/build.gradle index 225690e93c..fea4f8b08f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,133 +1,142 @@ buildscript { - repositories { - mavenCentral() + repositories { + maven { url = 'https://files.minecraftforge.net/maven' } + jcenter() + mavenCentral() + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true + } +} +repositories{ maven { - name = "forge" - url = "http://files.minecraftforge.net/maven" + name = "CurseForge" + url = "https://minecraft.curseforge.com/api/maven/" } maven { - name = "sonatype" - url = "https://oss.sonatype.org/content/repositories/snapshots/" + name = "Progwml6 maven" + url = "https://dvs1.progwml6.com/files/maven/" } maven { - name = "CurseForge" - url = "https://minecraft.curseforge.com/api/maven/" + name = "ModMaven" + url = "https://modmaven.k-4u.nl" } - } - dependencies { - classpath "net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT" - } } -apply plugin: 'net.minecraftforge.gradle.forge' -//Only edit below this line, the above code adds and enables the nessasary things for Forge to be setup. -version = "1.9.1" -group= "iceandfire" -archivesBaseName = "iceandfire" -sourceCompatibility = targetCompatibility = "1.8" +apply plugin: 'net.minecraftforge.gradle' +// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. +apply plugin: 'eclipse' +apply plugin: 'maven-publish' + +version = '2.0.0' +group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html +archivesBaseName = 'iceandfire' + +sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. minecraft { - version = "1.12.2-14.23.5.2768" - runDir = "run" - mappings = "stable_39" - makeObfSourceJar = true -} + // The mappings can be changed at any time, and must be in the following format. + // snapshot_YYYYMMDD Snapshot are built nightly. + // stable_# Stables are built at the discretion of the MCP team. + // Use non-default mappings at your own risk. they may not always work. + // Simply re-run your setup task after changing the mappings to update your workspace. + mappings channel: 'snapshot', version: '20200225-1.15.1' + // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. + + // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') -repositories { - mavenCentral() - maven { - url = "http://maven.mcmoddev.com" - } - maven { - name = "Mobius Repo" - url = "http://tehnut.info/maven" - } - maven { - name = "JEI" - url = "http://dvs1.progwml6.com/files/maven" - } - maven { - name = "gegy1000" - url = "https://maven.gegy1000.net" - } - maven { - name "Jared" - url "http://maven.blamejared.com/" - } - maven { // mcjty - name 'tterrag' - url "https://maven.tterrag.com/" - } - maven { - // location of the maven that hosts JEI files - name = "Progwml6 maven" - url = "http://dvs1.progwml6.com/files/maven" - } - maven { - name = 'DVS1 Maven FS' - url = 'http://dvs1.progwml6.com/files/maven' - } + // Default run configurations. + // These can be tweaked, removed, or duplicated as needed. + runs { + client { + workingDirectory project.file('run') - maven { - url = "https://minecraft.curseforge.com/api/maven/" - } - maven { - // location of a maven mirror for JEI files, as a fallback - name = "ModMaven" - url = "modmaven.k-4u.nl" - } + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' -} + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' -dependencies { - deobfCompile "net.ilexiconn:llibrary:1.7.9-1.12.2" - deobfCompile "slimeknights.mantle:Mantle:1.12-1.3.1.21" - deobfCompile "slimeknights:TConstruct:1.12.2-2.9.1.70" - deobfCompile "mcp.mobius.waila:Hwyla:1.8.25-B40_1.12" - runtime "mezz.jei:jei_1.12.2:4.9.1.181" - deobfProvided "mezz.jei:jei_1.12.2:4.9.1.181:api" - compile "baubles:Baubles:1.12:1.5.2" - deobfCompile "thaumcraft:Thaumcraft:1.12.2:6.1.BETA26" - compile "CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.1.6.465" - deobfCompile "mcjty.theoneprobe:TheOneProbe-1.12:1.12-1.4.28-17" -} + mods { + examplemod { + source sourceSets.main + } + } + } -processResources -{ - // this will ensure that this task is redone when the versions change. - inputs.property "version", project.version - inputs.property "mcversion", project.minecraft.version - - // replace stuff in mcmod.info, nothing else - from(sourceSets.main.resources.srcDirs) { - include 'mcmod.info' - - // replace version and mcversion - expand 'version':project.version, 'mcversion':project.minecraft.version - } - - // copy everything else, thats not the mcmod.info - from(sourceSets.main.resources.srcDirs) { - exclude 'mcmod.info' + server { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' + + mods { + examplemod { + source sourceSets.main + } + } + } + + data { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + + // Recommended logging level for the console + property 'forge.logging.console.level', 'debug' + + args '--mod', 'examplemod', '--all', '--output', file('src/generated/resources/') + + mods { + examplemod { + source sourceSets.main + } + } + } } } -minecraft.coreMod = "com.github.alexthe666.iceandfire.asm.IceAndFirePlugin" +dependencies { + minecraft 'net.minecraftforge:forge:1.15.2-31.1.18' + compileOnly fg.deobf("mezz.jei:jei-1.15.2:6.0.0.2:api") + runtimeOnly fg.deobf("mezz.jei:jei-1.15.2:6.0.0.2") + compile 'citadel:citadel:1.1.4:deobf' +} +// Example for how to get properties into the manifest for reading by the runtime.. jar { manifest { - attributes 'FMLCorePlugin': "com.github.alexthe666.iceandfire.asm.IceAndFirePlugin", 'FMLCorePluginContainsFMLMod': true + attributes([ + "Specification-Title": "examplemod", + "Specification-Vendor": "examplemodsareus", + "Specification-Version": "1", // We are version 1 of ourselves + "Implementation-Title": project.name, + "Implementation-Version": "${version}", + "Implementation-Vendor" :"examplemodsareus", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") + ]) } } +// Example configuration to allow publishing using the maven-publish task +// This is the preferred method to reobfuscate your jar file +jar.finalizedBy('reobfJar') +// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing +//publish.dependsOn('reobfJar') -task devJar(type: Jar) { - classifier = "dev" - from sourceSets.main.output -} - -jar { - manifest { - attributes "FMLAT": "iceandfire_at.cfg" +publishing { + publications { + mavenJava(MavenPublication) { + artifact jar + } + } + repositories { + maven { + url "file:///${project.projectDir}/mcmodsrepo" + } } } \ No newline at end of file diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 0000000000..503175726c --- /dev/null +++ b/changelog.txt @@ -0,0 +1,508 @@ +Build: 1.15.2-31.1.18 - Thu Feb 27 06:13:47 GMT 2020 + draco18s: + Global Loot Functions (#6401) + +========= +Build: 1.15.2-31.1.17 - Wed Feb 26 03:45:24 GMT 2020 + DaemonUmbra: + Updated ForgeDev MCP Mapping Version (#6532) + +========= +Build: 1.15.2-31.1.16 - Mon Feb 24 03:17:00 GMT 2020 + cpw: + Fix up alarming security crisis with network handling that allowed for wrong code execution on the server, resulting in CRASHED SERVERS. AWFUL stuff. + + Also fixed a silly log message from the login handler. + + This change introduces a mechanism to direct certain packets to only process on one side or another. Invalid sidedness will result in the connection being terminated. + + Signed-off-by: cpw + +========= +Build: 1.15.2-31.1.15 - Sun Feb 23 17:32:42 GMT 2020 + julian.dunskus: + Make TransformationHelper.slerp for quaternions public (#6528) + +========= +Build: 1.15.2-31.1.14 - Mon Feb 17 19:01:48 GMT 2020 + DaemonUmbra: + Fixed Conduit and Beacon Activation on Vanilla Servers (#6438) + +========= +Build: 1.15.2-31.1.13 - Mon Feb 17 16:16:56 GMT 2020 + richard: + Fix ITeleporter being ignored when teleporting from the end to the overworld (#6505) + + * Fix custom teleporters triggering end credits when returning from the end + * Fix setdimension command ignoring position + +========= +Build: 1.15.2-31.1.12 - Fri Feb 14 21:43:40 GMT 2020 + williewillus: + Fix missing call to itemstack TER (#6445) + +========= +Build: 1.15.2-31.1.11 - Fri Feb 14 21:33:36 GMT 2020 + williewillus: + Fix missed modeldata passing in BlockModelRenderer (#6442) + +========= +Build: 1.15.2-31.1.10 - Fri Feb 14 20:34:50 GMT 2020 + treborx555: + Fix NPE when players rejoin the server in a dimension that was deleted (#6511) + +========= +Build: 1.15.2-31.1.9 - Fri Feb 14 20:16:05 GMT 2020 + loic.frasse-mathon: + Fix a wrong RenderState name MC-167447 (#6501) + +========= +Build: 1.15.2-31.1.8 - Fri Feb 14 20:09:19 GMT 2020 + malte0811: + Fixed ChunkWatchEvent.(Un)Watch not firing correctly (#6453) + + ewewukek: + Fix wrong arguments passed to ForgeHooksClient.renderSpecificFirstPersonHand() (#6496) + + 12281102+Aeltumn: + Fix client not informing server when it attempts to interact with things, and is canceled by a client side handler. + +========= +Build: 1.15.2-31.1.5 - Fri Feb 14 20:02:26 GMT 2020 + joetarbit: + Fixed Food not using effect suppliers, to better support delayed initialization and registry replacements. (#6411) + + Unnoen: + Update version and support data on README. (#6429) + +========= +Build: 1.15.2-31.1.3 - Fri Feb 14 19:55:38 GMT 2020 + hawkeboyz2: + Fixed displaying item names when only more sensitive version changes (#6402) + +========= +Build: 1.15.2-31.1.2 - Fri Feb 14 18:28:35 GMT 2020 + David Quintana: + Fix gui_light for forge's item parent models. + +========= +Build: 1.15.2-31.1.1 - Thu Feb 06 22:53:49 GMT 2020 + richard: + Allows custom blocks to define if they should use the fluid overlay instead of the flowing texture when in a fluid (#6493) + +========= +Build: 1.15.2-31.1.0 - Mon Feb 03 21:24:29 GMT 2020 + lex: + Fix a small patch misalignment. + +========= +Build: 1.15.2-31.0.19 - Mon Feb 03 20:52:28 GMT 2020 + richard: + Add FluidStack support to the Forge packet buffer. (#6353) (#6485) + + richard: + Make Minecarts work with modded powered/activator rails. (#6486) + + Re-adds functionality for rails to have different maximum speeds. + +========= +Build: 1.15.2-31.0.17 - Mon Feb 03 20:21:20 GMT 2020 + ichttt: + Revert game data to frozen on disconnect from a remote server or when terminating a local server. Closes #6487 (#6497) + +========= +Build: 1.15.2-31.0.16 - Sun Feb 02 22:11:19 GMT 2020 + David Quintana: + Remove unintended changes. + +========= +Build: 1.15.2-31.0.15 - Sun Feb 02 22:03:15 GMT 2020 + David Quintana: + Implement fluid overlay texture rendering for custom fluids. + +========= +Build: 1.15.2-31.0.14 - Thu Jan 30 06:12:15 GMT 2020 + DaemonUmbra: + Fixed Attacks/Punches not Registering (#6481) + + Replaced incorrect magic number with constant + +========= +Build: 1.15.2-31.0.13 - Wed Jan 29 23:46:30 GMT 2020 + williewillus: + Clean up a bunch of render events (#6444) + + * Delete RenderHandEvent as RenderSpecificHandEvent can do everything it does and more. Rename RenderSpecificHandEvent to RenderHandEvent as it's now the only hand rendering event. + * Pass MatrixStack and IRenderTypeBuffer into the event whenever they are available. If they're available, that means we're in a batching environment and the modder should not be using the tessellator or other buffers on their own, or they risk "Already building" crashes. + +========= +Build: 1.15.2-31.0.12 - Wed Jan 29 21:55:18 GMT 2020 + Barteks2x: + Fix NullPointerException on java 8u242 in dev environment. (#6473) + + Java 8u242 no longer re-initializes internal sys_paths and usr_paths fields in loadLibrary when they are null, so the value can't be set to null. + +========= +Build: 1.15.2-31.0.11 - Wed Jan 29 21:18:05 GMT 2020 + 12281102+Aeltumn: + Fix RightClickBlock code differences between client and server implementation (#6451) + + williewillus: + Fix incorrectly ported patch for restoreBlurMipmap (#6450) + +========= +Build: 1.15.2-31.0.9 - Wed Jan 29 21:11:24 GMT 2020 + 40495288+Yamahari: + Defer material getting for ChestTileEntityRenderer into seperate function (#6465) + +========= +Build: 1.15.2-31.0.8 - Wed Jan 29 21:04:44 GMT 2020 + 37298044+Cadiboo: + Small Forge config fixes (#6466) + +========= +Build: 1.15.2-31.0.7 - Wed Jan 29 20:50:44 GMT 2020 + lex: + Fix PlayerChangedDimensionEvent using incorrect from dimension argument in ServerPlayerEntity.teleport. Closes #6457 + + lex: + Fix incorrect keybinding modifiers patch. Closes #6478 + + lex: + Fix ChunkDataEvent.Load not firing, it now fires in the aync thread. Be careful. Closes #6471 + +========= +Build: 1.15.2-31.0.4 - Wed Jan 29 19:31:50 GMT 2020 + lex: + Fix WakeupEvent patch misalign. Closes #6474 + + lex: + Fix default mod resources loosing it's sort order. + +========= +Build: 1.15.2-31.0.2 - Wed Jan 29 17:26:58 GMT 2020 + goto.minecraft: + [1.15] Reimplemented the ITeleporter interface (#6404) + +========= +Build: 1.15.2-31.0.1 - Thu Jan 23 21:59:18 GMT 2020 + David Quintana: + Hook "gui_light" value from the model into the IBakedModel implementations. + Apply some of the suggestions from the 1.14 models PR. + +========= +Build: 1.15.2-31.0.0 - Wed Jan 22 21:47:51 GMT 2020 + lex: + 1.15.2 Initial Update + +========= +Build: 1.15.1-30.0.51 - Wed Jan 22 21:10:07 GMT 2020 + ichttt: + Cleanup fml packages removing old deprecated classes related to GUIs/Configs and fix HoverChecker (#6437) + + Fixed ModListWidget name to avoid confusion and collision. + Delete CheckBox, as vanilla has it's own CheckBox now which looks much better + Rename ModConfigEvent.ConfigReloading to ModConfigEvent.Reloading + +========= +Build: 1.15.1-30.0.50 - Wed Jan 22 20:38:22 GMT 2020 + 12281102+Aeltumn: + Fixed parameter name issue in ISTER rename. #6461 (#6468) + +========= +Build: 1.15.1-30.0.49 - Wed Jan 22 19:56:16 GMT 2020 + lex: + Fix default widget foreground color. + +========= +Build: 1.15.1-30.0.48 - Wed Jan 22 19:30:35 GMT 2020 + diesieben07: + Use extended version of getLightValue in all places (#6433) + + Bward7864: + Fixed RenderTypeLookup loosing mappings for registry replacements. (#6452) + + wynprice999: + Fixed rounding issue with entity navigation fix (#6455) (#6456) + + 37298044+Cadiboo: + Fix Widget Foreground Color not allowing pure black (#6460) + + 12281102+Aeltumn: + Updated method names referencing ItemStackTileEntityRenderer (#6461) + +========= +Build: 1.15.1-30.0.43 - Wed Jan 22 19:22:15 GMT 2020 + scottehboeh: + [1.15.x] Added entity nameplate rendering event hook (#6416) + +========= +Build: 1.15.1-30.0.42 - Tue Jan 21 03:47:02 GMT 2020 + tterrag: + Remove emissive items hook, add small utility for bakedquad lighting + +========= +Build: 1.15.1-30.0.41 - Thu Jan 16 02:30:04 GMT 2020 + David Quintana: + Fix breaking overlay weirdness. applyBakedNormals was not transforming the baked normals when applying them. Fixes #6432 + +========= +Build: 1.15.1-30.0.40 - Thu Jan 16 00:30:10 GMT 2020 + 12281102+Aeltumn: + [1.15] Add new InputEvent.ClickInputEvent, addresses #5802 (#6047) + +========= +Build: 1.15.1-30.0.39 - Mon Jan 13 22:21:01 GMT 2020 + David Quintana: + Fix dark spots in fullbright quad rendering. + Fix multi-layer model not declaring dependency on the particle texture. + Fix mistake in 2c054fca which I didn't intend to push when I did. + +========= +Build: 1.15.1-30.0.38 - Mon Jan 13 18:39:06 GMT 2020 + David Quintana: + Attempt to fix fullbright lighting. + + Fix lightmap value calculation. + + David Quintana: + Fix multi-layer model loader to actually work in a sane way. No more "base" model involved, and now transforms and overrides work as expected. + +========= +Build: 1.15.1-30.0.36 - Thu Jan 09 22:28:02 GMT 2020 + tterrag: + Add constructor for FishBucketItem that accepts suppliers + +========= +Build: 1.15.1-30.0.35 - Tue Jan 07 22:58:54 GMT 2020 + David Quintana: + Fix QuadTransformer normal processing. + + Choonster.2010: + Fix validation in RotationBuilder#angle (fixes #6323) (#6408) + +========= +Build: 1.15.1-30.0.33 - Tue Jan 07 22:20:46 GMT 2020 + richard: + Add support for custom nether portal frame blocks (#6389) + +========= +Build: 1.15.1-30.0.32 - Tue Jan 07 21:22:49 GMT 2020 + RANKSHANK: + InputEvent.RawMouseEvent fix (#6395) + +========= +Build: 1.15.1-30.0.31 - Tue Jan 07 21:15:19 GMT 2020 + DaemonUmbra: + Fixed Big Mushrooms not generating (#6390) + + Removed vanilla negation from Forge logic that negated the vanilla logic it was replacing + also ran datagen to update the dirt tag to reflect changes that were previously made in the datagen code + +========= +Build: 1.15.1-30.0.30 - Mon Jan 06 00:04:17 GMT 2020 + tterrag: + Fix dyes tag containing dye items instead of tags + + Update generated data + +========= +Build: 1.15.1-30.0.29 - Sun Jan 05 19:36:08 GMT 2020 + Choonster.2010: + [1.15.x] Remove unused parameter from ElementBuilder#rotation (fixes #6321) (#6407) + +========= +Build: 1.15.1-30.0.28 - Sun Jan 05 19:29:10 GMT 2020 + tterrag: + Refactor BlockStateProvider to encapsulate a BlockModelProvider + + Make most protected methods of data generators public + +========= +Build: 1.15.1-30.0.27 - Sun Jan 05 18:39:00 GMT 2020 + tterrag: + Fix crash when building BakedQuadBuilder + + Add javadocs and move sprite to constructor where possible + +========= +Build: 1.15.1-30.0.26 - Sun Jan 05 05:05:58 GMT 2020 + tterrag: + Fix incorrect check for missing texture in DynamicBucketModel + +========= +Build: 1.15.1-30.0.25 - Sun Jan 05 04:38:48 GMT 2020 + tterrag: + Remove custom vertex format from BakedQuad + +========= +Build: 1.15.1-30.0.24 - Sat Jan 04 16:19:24 GMT 2020 + David Quintana: + Cherry-pick ca819e09 from the 1.14.x branch. Removes a patch from NativeImage which was invalid. + + David Quintana: + A few more binary-breaking changes, before it's too late: + - Move CompositeModel out of its package. + - Move a few inner classes from the OBJ loader. + - Rename the bucket model and fluid model classes to match the naming convention. + - Remove BiomeEvent.* and WorldTypeEvent.InitBiomeGens as they are not currently implemented and they haven't been in the previous version either. + +========= +Build: 1.15.1-30.0.22 - Fri Jan 03 03:02:54 GMT 2020 + lex: + Fix the particle renderer not setting GL state between each type. MC-168672 + +========= +Build: 1.15.1-30.0.21 - Thu Jan 02 05:21:55 GMT 2020 + David Quintana: + Fix CompositeModel not respecting "display" transforms. + Remove leftovers from discarded feature. + +========= +Build: 1.15.1-30.0.20 - Wed Jan 01 16:41:59 GMT 2020 + David Quintana: + Allow model jsons to override the material library used by OBJ models. + Fix model loader test mod resources. + Update licenses. + +========= +Build: 1.15.1-30.0.19 - Mon Dec 30 21:14:20 GMT 2019 + tterrag: + Apply baked-in lightmap data to rendering + + - Fix ForgeHooksClient.fillNormal injecting data to lightmap + - Fix OBJModel not filling lightmap data + - Fix NewModelLoaderTest blockitem not linking with block + +========= +Build: 1.15.1-30.0.18 - Sun Dec 29 16:16:44 GMT 2019 + David Quintana: + Fix LightUtil.unpack to set the 4th component to 1 when expanding an xyz position into a 4-component vector. + Add TRSRTransformer test mod. + Fix signature of the bindTileEntityRenderer method, to account for covariance. + +========= +Build: 1.15.1-30.0.17 - Sun Dec 29 01:16:20 GMT 2019 + David Quintana: + More model/rendering fixes: + - Breaking change: Change ClientRegistry.bindTileEntityRenderer to a factory, so mods don't have to manually specify the dispatcher. + - Breaking change: Delete obsolete SimpleModelState (the class was duplicated by mistake, see SimpleModelTransform) and ICustomModelState (part of the old loader API). + - Breaking change: Rename getTextureDependencies to getTextures, for consistency. + - Reinstate the getRenderLayer method, fixed appropriately to return the new RenderType value. + - Fix OBJ loader applying the model transform in the wrong reference frame. + - Fix vanilla bug in TransformationMatrix#func_227986_a_ + - Fix QuadTransformer logic. + - Added new method to IModelConfiguration to retrieve the owner IUnbakedModel, needed in order to construct ItemOverrideLists when baking custom models. + - Reintroduce multi-layer model through the new model loader system. + +========= +Build: 1.15.1-30.0.16 - Tue Dec 24 12:16:17 GMT 2019 + David Quintana: + New batch of Model/rendering fixes: + - PerspectiveMapWrapper did not pass IModelData through to the wrapped model. + - CompositeModel did not store the returned textures from getTextureDependencies. + - VertexFormat used COLOR instead of UV to detect UV presence. + - QuadTransformer would crash due to index out of bounds. + - Small cleanup of TransformationHelper + +========= +Build: 1.15.1-30.0.15 - Fri Dec 20 17:15:21 GMT 2019 + David Quintana: + Fix obj models having all faces in the same mesh, breaking material assignments and visibility in the process. + Reintroduce lost patch from the model loader, which would cause the custom values to be missing from generated models. + +========= +Build: 1.15.1-30.0.14 - Fri Dec 20 04:14:34 GMT 2019 + tterrag: + Fix diffuse lighting being baked into models, fixes dark items + +========= +Build: 1.15.1-30.0.13 - Fri Dec 20 03:50:53 GMT 2019 + David Quintana: + Fix item quads not using the existing vertex color when applying tint colors. + +========= +Build: 1.15.1-30.0.12 - Fri Dec 20 01:44:40 GMT 2019 + David Quintana: + Fix bucket model. Some mask textures were not added to the repository, and the bucket override generation was broken. + Fix OBJ loading crash due to a float value being parsed as int. + Fixes 6377 + +========= +Build: 1.15.1-30.0.11 - Thu Dec 19 05:56:10 GMT 2019 + bl4ckscor33: + Fix game crashing when modded entities are present (#6364) + +========= +Build: 1.15.1-30.0.10 - Thu Dec 19 05:02:29 GMT 2019 + ichttt: + Fix warning screen about missing minecraft registry entries (#6363) + + richard: + Fix capabilities becoming inaccessible on returning from end (#6368) + +========= +Build: 1.15.1-30.0.8 - Thu Dec 19 04:39:52 GMT 2019 + ichttt: + Some code cleanup for 1.15 (#6362) + +========= +Build: 1.15.1-30.0.7 - Wed Dec 18 02:11:01 GMT 2019 + tterrag: + Fix MainMenuScreen patch + + tterrag: + Mod list GUI detail pass + + - Make padding consistent on all elements + - Properly horizontally center the "Search" text + - Update and resize forge/mcp logos + - Enable linear filtering on logo rendering by default + - Can be disabled with the "logoBlur" mods.toml property + +========= +Build: 1.15.1-30.0.5 - Wed Dec 18 01:03:20 GMT 2019 + ichttt: + Fix mod list screen (#6367) + +========= +Build: 1.15.1-30.0.4 - Tue Dec 17 23:47:00 GMT 2019 + David Quintana: + Fix items in ground being too small, we were applying perspectives twice. + Restore forge patch and fix a tiny mistake in it. + + tobias.hotz: + Fix keybinds not loading/saving correctly + +========= +Build: 1.15.1-30.0.2 - Tue Dec 17 22:38:00 GMT 2019 + tterrag: + Remove uvlock hook, fixes broken stair/fence/etc models + + tterrag: + Update fallback spec version + +========= +Build: 1.15.1-30.0.0 - Tue Dec 17 19:42:28 GMT 2019 + tterrag: + Update to 1.15.1 + +========= +Build: 1.15-29.0.4 - Tue Dec 17 18:15:10 GMT 2019 + David Quintana: + Finish converting the code from javax.vecmath to the vanilla vector classes. Forge is now vecmath-free! + +========= +Build: 1.15-29.0.3 - Tue Dec 17 09:50:53 GMT 2019 + tterrag: + Remove deprecations + +========= +Build: 1.15-29.0.2 - Tue Dec 17 04:47:01 GMT 2019 + tterrag: + Fix incorrect item lighting + +========= +Build: 1.15-29.0.1 - Tue Dec 17 04:22:29 GMT 2019 + tterrag: + Revert fluid change to use Material, fixes server crash diff --git a/gradle.properties b/gradle.properties index e9b9fd5ac1..878bf1f7ec 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,4 @@ # Sets default memory used for gradle commands. Can be overridden by user or command line properties. # This is required to provide enough memory for the Minecraft decompilation process. org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 758de960ec7947253b058ff79c88ce51f3abe08a..7a3265ee94c0ab25cf079ac8ccdf87f41d455d42 100644 GIT binary patch delta 23310 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 lv_yyfWdpa?w36n65=6@+niTCwLyU5 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 delta 23109 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

>Y0qoIt?wB%nO@p&gUI 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 +updateJSONURL="http://myurl.me/" #optional +# A URL for the "homepage" for this mod, displayed in the mod UI +displayURL="http://example.com/" #optional +# A file name (in the root of the mod JAR) containing a logo for display +logoFile="examplemod.png" #optional +# A text field displayed in the mod UI +credits="Thanks for this example mod goes to Java" #optional +# A text field displayed in the mod UI +authors="Love, Cheese and small house plants" #optional +# The description text for the mod (multi line!) (#mandatory) +description=''' +This is a long form description of the mod. You can write whatever you want here + +Have some lorem ipsum. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magna. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed sagittis luctus odio eu tempus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque volutpat ligula eget lacus auctor sagittis. In hac habitasse platea dictumst. Nunc gravida elit vitae sem vehicula efficitur. Donec mattis ipsum et arcu lobortis, eleifend sagittis sem rutrum. Cras pharetra quam eget posuere fermentum. Sed id tincidunt justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. +''' +# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. +[[dependencies.examplemod]] #optional + # the modid of the dependency + modId="forge" #mandatory + # Does this dependency have to exist - if not, ordering below must be specified + mandatory=true #mandatory + # The version range of the dependency + versionRange="[31,)" #mandatory + # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory + ordering="NONE" + # Side this dependency is applied on - BOTH, CLIENT or SERVER + side="BOTH" +# Here's another dependency +[[dependencies.examplemod]] + modId="minecraft" + mandatory=true + versionRange="[1.15.2]" + ordering="NONE" + side="BOTH" diff --git a/src/main/resources/assets/iceandfire/lang/bestiary/zh_cn_0/alchemy_0.txt b/src/main/resources/assets/iceandfire/lang/bestiary/zh_cn_0/alchemy_0.txt index 382c10d8fd..db3e2dbf94 100644 --- a/src/main/resources/assets/iceandfire/lang/bestiary/zh_cn_0/alchemy_0.txt +++ b/src/main/resources/assets/iceandfire/lang/bestiary/zh_cn_0/alchemy_0.txt @@ -1,7 +1,5 @@ -在用玻璃瓶盛取龙血后, -经过研究,我最终掌握 -了用龙血淬炼武器的技 -艺。 +将龙尸中的血液装瓶后,经过研究, +我最终掌握了利用龙血淬炼武器的技艺. @@ -12,11 +10,10 @@ -在龙骨剑上涂满任意一种龙血, -就能让剑上拥有龙血的魔力,并 -成为斩杀另一属性飞龙的利器。 +通过合成,龙血的力量会注入龙骨剑中, +使它们成为斩杀相反属性龙的利器。 @@ -25,16 +22,14 @@ -附有龙炎的剑能让敌人陷入熊熊 -烈火之中,并能克制冰龙;附有 -龙霜的剑则能把敌人变成坚冰, -并能克制火龙。两种剑都拥有很 -强的击退能力。 +火龙之刃能够引燃目标,并且对冰龙有克制效果; +相应地,冰龙之刃能够使得目标减速,并能克制火龙。 +无论哪种剑,都具有可观的攻击力。 + -龙血也能用来守护你的龙。 diff --git a/src/main/resources/assets/iceandfire/lang/zh_cn.lang b/src/main/resources/assets/iceandfire/lang/zh_cn.lang index fb1fc78879..93a103e728 100644 --- a/src/main/resources/assets/iceandfire/lang/zh_cn.lang +++ b/src/main/resources/assets/iceandfire/lang/zh_cn.lang @@ -363,12 +363,6 @@ item.iceandfire.hydra_heart.desc_0=在快捷栏中时,依据持有者受伤的 item.iceandfire.hydra_heart.desc_1=为持有者附加一定等级的生命恢复状态 item.iceandfire.hydra_arrow.name=九头蛇毒箭 item.iceandfire.hydra_arrow.desc=施加中毒并从目标身上吸取生命值 -item.iceandfire.summoning_crystal_ice.name=唤龙冰晶石 -item.iceandfire.summoning_crystal_fire.name=唤龙火晶石 -item.iceandfire.summoning_crystal.desc_0=右击一条龙与之绑定 -item.iceandfire.summoning_crystal.desc_1=绑定后右击可将龙唤至身边 -item.iceandfire.summoning_crystal.bound=已与%s绑定 - entity.firedragon.name=火龙 entity.icedragon.name=冰龙 entity.dragonegg.name=龙蛋 @@ -584,8 +578,6 @@ message.iceandfire.dragonFollow=这条龙跟你走。 message.iceandfire.dragonSit=这条龙正坐着。 message.iceandfire.dragonSleep=这条龙睡着了。 message.iceandfire.knownAs=这条龙名为 -message.iceandfire.dragonTeleport=这条龙已被召唤到你身边。 -message.iceandfire.noDragonTeleport=§c找不到与这颗晶石绑定的龙。 message.iceandfire.dragonWanderName=自在闲逛。 message.iceandfire.dragonFollowName=跟随着你。 message.iceandfire.dragonSitName=坐下小憩。 @@ -735,7 +727,7 @@ material.amphithere_feather.name=翼蚺翎羽 modifier.arrow_knockback.name=飞速退远 modifier.arrow_knockback.desc=赶紧远遁吧!§r\n这支箭命中时会远远地击飞敌人。 fluid.tconstruct.dragonsteel_fire.name=熔融龙炎钢 -fluid.tconstruct.dragonsteel_ice.name=熔融龙霜钢 +fluid.tconstruct.dragonsteel_ice.name=熔融龙霜钢 material.weezer.name=Weezer modifier.sweater_song.name=Undone modifier.sweater_song.desc="If you want to destroy my sweater..."§r\n暴击时,有30%的概率打掉装备有护甲的目标的装备。 diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 8373c8db2b..58e0dee463 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -1,18 +1,22 @@ -[ -{ - "modid": "iceandfire", - "name": "Ice and Fire", - "description": "Ice and Fire adds dragons and other mythological creatures to Minecraft.", - "version": "1.9.1", - "mcversion": "1.12.2", - "url": "", - "updateUrl": "", - "authorList": ["Alexthe666", "Raptorfarian"], - "credits": "gegy1000, Paul Fulham, Zyranna, 4f6f3b, iLexiconn, Sunconure11, Elucent", - "logoFile": "assets/iceandfire/textures/logo.png", - "screenshots": [], - "requiredMods": [ "llibrary", "forge" ], - "dependencies": [ "llibrary", "forge" ], - "useDependencyInformation": true -} -] +modLoader="javafml" #mandatory +loaderVersion="[31,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +issueTrackerURL="https://github.com/Alex-the-666/Rats/issues" #optional +[[mods]] #mandatory +modId="iceandfire" #mandatory +version="2.0.0" #mandatory +displayName="Ice and Fire" #mandatory +displayURL="https://www.curseforge.com/minecraft/mc-mods/rats" #optional +logoFile="rats_logo.png" #optional +authors="Alexthe666" #optional +description='''Dragons and other mythological creatures in minecraft.''' +[[dependencies.iceandfire]] #optional + # the modid of the dependency + modId="citadel" #mandatory + # Does this dependency have to exist - if not, ordering below must be specified + mandatory=true #mandatory + # The version range of the dependency + versionRange="[1.1.4,)" #mandatory + # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory + ordering="AFTER" + # Side this dependency is applied on - BOTH, CLIENT or SERVER + side="BOTH" \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 4ccde8572b..700e07e436 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,6 +1,7 @@ { "pack": { - "description": "iceandfire", - "pack_format": 3 + "description": "examplemod resources", + "pack_format": 5, + "_comment": "A pack_format of 5 requires json lang files and some texture changes from 1.15. Note: we require v5 pack meta for all mods." } }