Compare commits

...

10 Commits

Author SHA1 Message Date
e8df722ae7 stable forge 1.3.1+1.21.11
Some checks failed
Development Builds / build (push) Has been cancelled
2026-01-07 19:56:40 -06:00
11f3d68031 1.21.11 first part 2026-01-05 17:24:05 -06:00
9beb9ef1e5 Update README.MD 2025-01-07 10:59:56 -06:00
f3302684f8 Update README.MD 2025-01-07 10:59:07 -06:00
277d3f68a8 change mod output 2025-01-06 20:36:51 -06:00
8eca7686c7 Change Armor Stats to be like netherite 2025-01-06 17:04:28 -06:00
236d5be823 Stone Pickaxe to mine Nugget BLOCK 2025-01-06 16:13:42 -06:00
7602fb947c Nugget Tools are faster (as diamond)
4.5f to 8f
2025-01-06 15:55:46 -06:00
35c86a1fd2 Update LICENSE.txt 2025-01-06 14:25:17 -06:00
73a0a33f1e i forgot to put neo in neoforge 2025-01-05 22:28:00 -06:00
226 changed files with 1457 additions and 2294 deletions

View File

@@ -1,22 +0,0 @@
# Changelog
## 1.1.1
## 1.10
- added tools, and sword
- datagen for no more json files*
- new textures for the tools
- adds horse armor, and player armor
* kinda
## 1.02
adds ores both deepslate and regular and it drops you can smelt the raw nugget it drops into nuggets and makes it so you can create raw nugget blocks and nugget block
## 1.01
add two new blocks
- raw nugget block
- nugget block
## 1.00
version 1 adds the nugget item

View File

@@ -1,523 +1,21 @@
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.
This software includes the Monocraft font from https://github.com/IdreesInc/Monocraft/ for use in the early loading
display.
=========================================================================
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
MIT License
Copyright (c) 2025 sillyangel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,6 +1,6 @@
![image](https://cloud-of05tw1vn-hack-club-bot.vercel.app/0nugget_mod.png)
# Nugget Mod (Forge)
> [Fabric](https://github.com/sillyangel/nuggetfabric) | [NeoForge](https://github.com/sillyangel/nuggetforge)
> [Fabric](https://github.com/sillyangel/nuggetfabric) | [NeoForge](https://github.com/sillyangel/nuggetneoforge)
Nugget Mod is a Minecraft mod that adds "gegagedigedagedago" to the game, the Nugget. The Nugget is a powerful item that can be used to craft new tools, weapons, and armor. The mod also adds new ores to the game, including Nugget Ore, which can be mined to obtain Nuggets. The mod is still in development, but you can download the latest version from the releases page.

View File

@@ -2,7 +2,7 @@ plugins {
id 'eclipse'
id 'idea'
id 'maven-publish'
id 'net.minecraftforge.gradle' version '[6.0.24,6.2)'
id 'net.minecraftforge.gradle' version '[6.0.46,6.2)'
id 'org.parchmentmc.librarian.forgegradle' version '1.+'
}
@@ -23,17 +23,13 @@ minecraft {
// official MCVersion Official field/method names from Mojang mapping files
// parchment YYYY.MM.DD-MCVersion Open community-sourced parameter names and javadocs layered on top of official
//
// You must be aware of the Mojang license when using the 'official' or 'parchment' mappings.
// See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md
//
// Parchment is an unofficial project maintained by ParchmentMC, separate from MinecraftForge
// Additional setup is needed to use their mappings: https://parchmentmc.org/docs/getting-started
//
// 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: mapping_channel, version: mapping_version
// Tell FG to not automtically create the reobf tasks, as we now use Official mappings at runtime, If you don't use them at dev time then you'll have to fix your reobf yourself.
// Forge 1.20.6 and newer use official mappings at runtime, so we shouldn't reobf from official to SRG
reobf = false
// When true, this property will have all Eclipse/IntelliJ IDEA run configurations run the "prepareX" task for the given run configuration before launching the game.
@@ -51,8 +47,7 @@ minecraft {
// By default, the folder name of a run configuration is the name of the Gradle project containing it.
// generateRunFolders = true
// This property enables access transformers for use in development.
// They will be applied to the Minecraft artifact.
// This property enables access transformers for use in development, applied to the Minecraft artifact.
// The access transformer file can be anywhere in the project.
// However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge.
// This default location is a best practice to automatically put the file in the right place in the final jar.
@@ -66,17 +61,18 @@ minecraft {
configureEach {
workingDirectory project.file('run')
// Recommended logging data for a userdev environment
// The markers can be added/remove as needed separated by commas.
// Optional additional logging. The markers can be added/remove as needed, separated by commas.
// "SCAN": For mods scan.
// "REGISTRIES": For firing of registry events.
// "REGISTRYDUMP": For getting the contents of all registries.
property 'forge.logging.markers', 'REGISTRIES'
// property 'forge.logging.markers', 'REGISTRIES'
// Recommended logging level for the console
// You can set various levels here.
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
property 'forge.logging.console.level', 'debug'
// Recommended for development - enables more descriptive errors at the cost of slower startup and registration.
property 'eventbus.api.strictRuntimeChecks', 'true'
// arg "-mixin.config=${mod_id}.mixins.json"
}
client {
@@ -111,7 +107,26 @@ sourceSets.main.resources { srcDir 'src/generated/resources' }
repositories {
// Put repositories for dependencies here
// ForgeGradle automatically adds the Forge maven and Maven Central for you
mavenCentral()
maven {
name = 'Forge'
url = 'https://maven.minecraftforge.net'
}
maven {
name = 'Minecraft libraries'
url = 'https://libraries.minecraft.net'
}
exclusiveContent {
forRepository {
maven {
name = 'Sponge'
url = 'https://repo.spongepowered.org/repository/maven-public'
}
}
filter {
includeGroupAndSubgroups('org.spongepowered')
}
}
// If you have mod jar dependencies in ./libs, you can declare them as a repository like so.
// See https://docs.gradle.org/current/userguide/declaring_repositories.html#sub:flat_dir_resolver
@@ -128,6 +143,11 @@ dependencies {
// then special handling is done to allow a setup of a vanilla dependency without the use of an external repository.
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
// Forge 1.21.6+ uses EventBus 7, which shifts most of its runtime validation to compile-time via an annotation processor
// to improve performance in production environments. This line is required to enable said compile-time validation
// in your development environment, helping you catch issues early.
annotationProcessor 'net.minecraftforge:eventbus-validator:7.0-beta.12'
// Example mod dependency with JEI
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
// compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}"
@@ -142,16 +162,13 @@ dependencies {
// For more info:
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
// http://www.gradle.org/docs/current/userguide/dependency_management.html
// Hack fix for now, force jopt-simple to be exactly 5.0.4 because Mojang ships that version, but some transitive dependencies request 6.0+
implementation('net.sf.jopt-simple:jopt-simple:5.0.4') { version { strictly '5.0.4' } }
}
// This block of code expands all declared replace properties in the specified resource targets.
// A missing property will result in an error. Properties are expanded using ${} Groovy notation.
// When "copyIdeResources" is enabled, this will also run before the game launches in IDE environments.
// See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html
tasks.named('processResources', ProcessResources).configure {
tasks.named('processResources', ProcessResources) {
var replaceProperties = [
minecraft_version: minecraft_version, minecraft_version_range: minecraft_version_range,
forge_version: forge_version, forge_version_range: forge_version_range,
@@ -167,16 +184,17 @@ tasks.named('processResources', ProcessResources).configure {
}
// Example for how to get properties into the manifest for reading at runtime.
tasks.named('jar', Jar).configure {
tasks.named('jar', Jar) {
manifest {
attributes([
'Specification-Title' : mod_id,
'Specification-Vendor' : mod_authors,
'Specification-Version' : '1', // We are version 1 of ourselves
'Implementation-Title' : project.name,
'Implementation-Version' : project.jar.archiveVersion,
'Implementation-Vendor' : mod_authors
'Specification-Title' : mod_id,
'Specification-Vendor' : mod_authors,
'Specification-Version' : '1', // We are version 1 of ourselves
'Implementation-Title' : project.name,
'Implementation-Version' : project.jar.archiveVersion,
'Implementation-Vendor' : mod_authors
])
// attributes['MixinConfigs'] = "${mod_id}.mixins.json"
}
}
@@ -198,6 +216,9 @@ tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
}
// IntelliJ no longer downloads javadocs and sources by default, this tells Gradle to force IntelliJ to do it.
idea.module { downloadJavadoc = downloadSources = true }
eclipse {
// Run everytime eclipse builds the code
//autoBuildTasks genEclipseRuns
@@ -205,8 +226,7 @@ eclipse {
synchronizationTasks 'genEclipseRuns'
}
// Merge the resources and classes into the same directory.
// This is done because java expects modules to be in a single directory.
// Merge the resources and classes into the same directory, because Java expects modules to be in a single directory.
// And if we have it in multiple we have to do performance intensive hacks like having the UnionFileSystem
// This will eventually be migrated to ForgeGradle so modders don't need to manually do it. But that is later.
sourceSets.each {

View File

@@ -1,23 +1,30 @@
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
# 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
# In the case that Gradle needs to fork to recompile, this will set the memory for that process.
systemProp.net.minecraftforge.gradle.repo.recompile.fork=true
systemProp.net.minecraftforge.gradle.repo.recompile.fork.args=-Xmx5G
# Opts-out of ForgeGradle automatically adding mavenCentral(), Forge's maven and MC libs maven to the repositories block
systemProp.net.minecraftforge.gradle.repo.attach=false
## Environment Properties
# The Minecraft version must agree with the Forge version to get a valid artifact
minecraft_version=1.21.3
minecraft_version=1.21.11
# The Minecraft version range can use any release version of Minecraft as bounds.
# Snapshots, pre-releases, and release candidates are not guaranteed to sort properly
# as they do not follow standard versioning conventions.
minecraft_version_range=[1.21,1.22)
minecraft_version_range=[1.21.11,1.22)
# The Forge version must agree with the Minecraft version to get a valid artifact
forge_version=53.0.25
forge_version=61.0.3
# The Forge version range can use any version of Forge as bounds or match the loader version range
forge_version_range=[0,)
forge_version_range=[61,)
# The loader version range can only use the major version of Forge/FML as bounds
loader_version_range=[0,)
loader_version_range=[61,)
# The mapping channel to use for mappings.
# The default set of supported mapping channels are ["official", "snapshot", "snapshot_nodoc", "stable", "stable_nodoc"].
# Additional mapping channels can be registered through the "channelProviders" extension in a Gradle plugin.
@@ -35,7 +42,7 @@ loader_version_range=[0,)
mapping_channel=parchment
# The mapping version to query from the mapping channel.
# This must match the format required by the mapping channel.
mapping_version=1.21-2024.11.10-1.21.3
mapping_version=2025.12.20-1.21.11
## Mod Properties
@@ -48,11 +55,11 @@ mod_name=Nugget Mod
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
mod_license=MIT
# The mod version. See https://semver.org/
mod_version=1.2.1
mod_version=1.3.1
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
# This should match the base package used for the mod sources.
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
mod_group_id=xyz.sillyangel.nugget
mod_group_id=dev.sillyangel.nuggetmod
# The authors of the mod. This is a simple text string that is used for display purposes in the mod list.
mod_authors=sillyangel
# The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list.

View File

@@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

22
gradlew vendored
View File

@@ -83,7 +83,8 @@ done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -130,10 +131,13 @@ location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
@@ -141,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
@@ -149,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -198,11 +202,11 @@ fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \

20
gradlew.bat vendored
View File

@@ -43,11 +43,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
@@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail

View File

@@ -307,8 +307,8 @@
[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Creating FMLModContainer instance for net.minecraftforge.common.ForgeMod
[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Loaded modclass net.minecraftforge.forge/net.minecraftforge.common.ForgeMod with TransformingClassLoader[TRANSFORMER]@155829656
[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLJavaModLanguageProvider/LOADING]: Loading FMLModContainer from classloader TransformingClassLoader[TRANSFORMER]@155829656 - got SecureModuleClassLoader[LAYER PLUGIN]@92941132
[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Creating FMLModContainer instance for xyz.sillyangel.nugget.NuggetMod
[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Loaded modclass nuggetmod/xyz.sillyangel.nugget.NuggetMod with TransformingClassLoader[TRANSFORMER]@155829656
[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Creating FMLModContainer instance for dev.sillyangel.nuggetmod.NuggetMod
[05Jan2025 22:08:43.805] [main/DEBUG] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Loaded modclass nuggetmod/dev.sillyangel.nuggetmod.NuggetMod with TransformingClassLoader[TRANSFORMER]@155829656
[05Jan2025 22:08:43.886] [modloading-worker-0/DEBUG] [net.minecraftforge.versions.forge.ForgeVersion/CORE]: Forge Version package package net.minecraftforge.versions.forge, Forge, version 0.0 from TransformingClassLoader[TRANSFORMER]@155829656
[05Jan2025 22:08:43.886] [modloading-worker-0/DEBUG] [net.minecraftforge.versions.forge.ForgeVersion/CORE]: Found Forge version 53.0.25
[05Jan2025 22:08:43.886] [modloading-worker-0/DEBUG] [net.minecraftforge.versions.forge.ForgeVersion/CORE]: Found Forge spec 0.0
@@ -320,10 +320,10 @@
[05Jan2025 22:08:43.886] [modloading-worker-0/INFO] [net.minecraftforge.common.MinecraftForge/FORGE]: MinecraftForge v53.0.25 Initialized
[05Jan2025 22:08:43.965] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.config.ConfigTracker/CONFIG]: Config file nuggetmod-common.toml for nuggetmod tracking
[05Jan2025 22:08:43.998] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Attempting to inject @EventBusSubscriber classes into the eventbus for nuggetmod
[05Jan2025 22:08:43.998] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing xyz.sillyangel.nugget.Config to MOD
[05Jan2025 22:08:43.998] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing dev.sillyangel.nuggetmod.Config to MOD
[05Jan2025 22:08:44.013] [modloading-worker-0/INFO] [net.minecraftforge.common.ForgeMod/FORGEMOD]: Opening jdk.naming.dns/com.sun.jndi.dns to java.naming
[05Jan2025 22:08:44.029] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing xyz.sillyangel.nugget.datagen.DataGenerators to MOD
[05Jan2025 22:08:44.029] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing xyz.sillyangel.nugget.NuggetMod$ClientModEvents to MOD
[05Jan2025 22:08:44.029] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing datagen.dev.sillyangel.nuggetmod.DataGenerators to MOD
[05Jan2025 22:08:44.029] [modloading-worker-0/DEBUG] [net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber/LOADING]: Auto-subscribing dev.sillyangel.nuggetmod.NuggetMod$ClientModEvents to MOD
[05Jan2025 22:08:44.061] [modloading-worker-0/DEBUG] [io.netty.util.internal.PlatformDependent0/]: -Dio.netty.noUnsafe: false
[05Jan2025 22:08:44.061] [modloading-worker-0/DEBUG] [io.netty.util.internal.PlatformDependent0/]: Java version: 21
[05Jan2025 22:08:44.061] [modloading-worker-0/DEBUG] [io.netty.util.internal.PlatformDependent0/]: sun.misc.Unsafe.theUnsafe: available

View File

@@ -5,10 +5,13 @@ pluginManagement {
name = 'MinecraftForge'
url = 'https://maven.minecraftforge.net/'
}
maven { url = 'https://maven.parchmentmc.org' }
maven {
name = 'ParchmentMC'
url = 'https://maven.parchmentmc.org'
}
}
}
plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
}
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.10.0'
}

View File

@@ -1,6 +0,0 @@
// 1.21.3 2025-01-05T20:56:27.110625 Tags for minecraft:item mod id nuggetmod
4dd3e16112d5950861571bb8b5212983e5192dfc data/minecraft/tags/item/trimmable_armor.json
bb7be5aa0b582860d2d8dd7a0f2115ac4dc842a9 data/minecraft/tags/item/trim_materials.json
ab6bd31a8063a99913c4a6fc41bde37ff0564389 data/minecraft/tags/item/trim_templates.json
bb7be5aa0b582860d2d8dd7a0f2115ac4dc842a9 data/nuggetmod/tags/item/nugget_repairs.json
562be55fb606ffa455100bd2a6942846dcd124cb data/nuggetmod/tags/item/transformable_items.json

View File

@@ -1,6 +0,0 @@
// 1.21.3 2025-01-05T20:56:27.1418921 Registries
53aea7bfe12c9e17903617fdc8946ce53057c9da data/nuggetmod/forge/biome_modifier/add_nugget_ore.json
12edbe7dddaf2b8379bdf3bc1f3552c83a86e3b2 data/nuggetmod/trim_material/nugget.json
c26c02f523d403aa4352b30b1a97a95a69a4d97c data/nuggetmod/trim_pattern/nugget.json
8b0873c1ad86c61c7c0dfd0749909cc9982639de data/nuggetmod/worldgen/configured_feature/nugget_ore.json
c86e299467433ed0c44ce94a9a75e4352f8ce6ca data/nuggetmod/worldgen/placed_feature/nugget_ore_placed.json

View File

@@ -1,5 +0,0 @@
// 1.21.3 2025-01-05T20:56:27.127889 Tags for minecraft:block mod id nuggetmod
265fffb09f55ddbd810e4aca08e95427b6f8abb8 data/minecraft/tags/block/mineable/pickaxe.json
d3afbade112106a4f7dba97fc08964398669700a data/minecraft/tags/block/needs_stone_tool.json
768d28c36c35fda7aa9d014ae9d9ce7ba23fdfb8 data/nuggetmod/tags/block/incorrect_for_nugget_tool.json
9c48de48f12ecaae54ddd4a48ea1ac229e0bcaa4 data/nuggetmod/tags/block/needs_nugget_tool.json

View File

@@ -1,5 +0,0 @@
// 1.21.3 2025-01-05T20:56:27.127889 Loot Tables
74a43d938ccd280fff25bd66ec0f55a3e2c30ad0 data/nuggetmod/loot_table/blocks/nugget_block.json
206de236ad19cf2d06cf21b0f282e5b64bd5918d data/nuggetmod/loot_table/blocks/nugget_deepslate_ore.json
d65584c1286a06f15f88db5682372d78e8e0ebf7 data/nuggetmod/loot_table/blocks/nugget_ore.json
2b4a937626ec0aa515a8a78663ce0f6142b843a6 data/nuggetmod/loot_table/blocks/raw_nugget_block.json

View File

@@ -1,55 +0,0 @@
// 1.21.3 2025-01-05T20:56:27.110625 Item Models: nuggetmod
90b22d61432e35fb68e2232a3eb76e15d2a77d89 assets/nuggetmod/models/item/nugget.json
b8f9c1135f1af8d77201d51866966ba73f3dbbfc assets/nuggetmod/models/item/nugget_armor_trim_smithing_template.json
cac221f8a7659366628c3b429c22ebd27f5adadd assets/nuggetmod/models/item/nugget_axe.json
dbadf09a9e221788b2cef71600701e4400e7a5ac assets/nuggetmod/models/item/nugget_boots.json
7dca863c633a328b682607342061c24fa359317c assets/nuggetmod/models/item/nugget_boots_amethyst_trim.json
1dacd5f685c47004a55cbae6d955b2e710b3f07d assets/nuggetmod/models/item/nugget_boots_copper_trim.json
d1de5dad49d95556fa2fab70a7890d878200beea assets/nuggetmod/models/item/nugget_boots_diamond_trim.json
ae67748e68ad7bbcec748b6ee7f1f4791660ce8e assets/nuggetmod/models/item/nugget_boots_emerald_trim.json
a52575c6328635ee70967a31244336ae5a5aa669 assets/nuggetmod/models/item/nugget_boots_gold_trim.json
dcb69986d03a024a176d38dfcb495362ffeac193 assets/nuggetmod/models/item/nugget_boots_iron_trim.json
0ff4a87f97bbaaa1c4124fc43df140d29082a383 assets/nuggetmod/models/item/nugget_boots_lapis_trim.json
cba310d5939725d84f409fb6ea91432495da218b assets/nuggetmod/models/item/nugget_boots_netherite_trim.json
6b56d9ec6ca6d379030db32774c9a725e76c7005 assets/nuggetmod/models/item/nugget_boots_quartz_trim.json
af0f965c4b451cecbbc056ba5019bcc44ab9ec6f assets/nuggetmod/models/item/nugget_boots_redstone_trim.json
277e491adbc77bbf30fb263b1c6b14951f6cd84a assets/nuggetmod/models/item/nugget_chestplate.json
afa48d58bfe8a41e52947389eadacf1d54aa201e assets/nuggetmod/models/item/nugget_chestplate_amethyst_trim.json
34db4371091135f3d8ea5f9bf60472ac120614d2 assets/nuggetmod/models/item/nugget_chestplate_copper_trim.json
e0a4e96ecac9b8664d7b28332ad40b3a976d80d5 assets/nuggetmod/models/item/nugget_chestplate_diamond_trim.json
99b4bbeb361c600e1d3136857084094a17e83f89 assets/nuggetmod/models/item/nugget_chestplate_emerald_trim.json
1cd1064b3355e6da5b83cb569202962534cea5f1 assets/nuggetmod/models/item/nugget_chestplate_gold_trim.json
01f17a408f386d0a9658d5efd184e187616dd40e assets/nuggetmod/models/item/nugget_chestplate_iron_trim.json
01ee5bbd07e896aca474564bb64720a97a5f1146 assets/nuggetmod/models/item/nugget_chestplate_lapis_trim.json
9fdc651171a846a9c2815002709a33f0919821b2 assets/nuggetmod/models/item/nugget_chestplate_netherite_trim.json
2ab1f9773c249568d33a78622d39b9baf7eb193b assets/nuggetmod/models/item/nugget_chestplate_quartz_trim.json
15620acb506fa42a1d914768a2d4fca28a1ad4c7 assets/nuggetmod/models/item/nugget_chestplate_redstone_trim.json
55eac09e1c7132d02b0aac04c3a8ed8b1777833a assets/nuggetmod/models/item/nugget_helmet.json
15d62a07a0a79876c483ed4e9c60f3e474cc8ad0 assets/nuggetmod/models/item/nugget_helmet_amethyst_trim.json
000fb83913689a98c5973f78e51219cd9b646ceb assets/nuggetmod/models/item/nugget_helmet_copper_trim.json
0d5e6916288fb5a4bca41d87e1f6f02c99300032 assets/nuggetmod/models/item/nugget_helmet_diamond_trim.json
ee78e385f9e4ab937298a5e2ad81ebe75a81cb45 assets/nuggetmod/models/item/nugget_helmet_emerald_trim.json
1283c96f9f373f7657a8188b69107430d658c51b assets/nuggetmod/models/item/nugget_helmet_gold_trim.json
f9e9efc27bcaad6628e0f2bd73bfdb41ed8490d3 assets/nuggetmod/models/item/nugget_helmet_iron_trim.json
7e6b4feb55d2e5ddf35ac9a47b2ad2dadba8a0aa assets/nuggetmod/models/item/nugget_helmet_lapis_trim.json
032d8a3a745bf6b2931609f60073b527a9e304c7 assets/nuggetmod/models/item/nugget_helmet_netherite_trim.json
82fc614cc45ec6d645b943a390d630102f332a59 assets/nuggetmod/models/item/nugget_helmet_quartz_trim.json
62a7de8cca1d782c0f8071f66fe9adc90d637228 assets/nuggetmod/models/item/nugget_helmet_redstone_trim.json
cc6e0d754901f7397916b947124acf6ba8467153 assets/nuggetmod/models/item/nugget_hoe.json
585ab18ac9b18eff5dd487a2c30c3448915dd5cb assets/nuggetmod/models/item/nugget_horse_armor.json
33af7bddeab67677dc62cd5e92d5b8973b24106b assets/nuggetmod/models/item/nugget_leggings.json
3e5b37dd9163b929d93012d11d2ef7ec968606da assets/nuggetmod/models/item/nugget_leggings_amethyst_trim.json
3a0993a40e57bfed0b2bd9818ea191b8a779b30b assets/nuggetmod/models/item/nugget_leggings_copper_trim.json
3917c35fd1454de92ae457b1362f98f07a8b8721 assets/nuggetmod/models/item/nugget_leggings_diamond_trim.json
93da5f00ac4604464454ca88d23634974f2a904a assets/nuggetmod/models/item/nugget_leggings_emerald_trim.json
f2b8f7782a1248c2e8de7eeb981a0e7abcf5cc23 assets/nuggetmod/models/item/nugget_leggings_gold_trim.json
c52faa339653807513edd9c61b99e9311df33e30 assets/nuggetmod/models/item/nugget_leggings_iron_trim.json
6fe0d511015bb76193f85d598a2db9a73f15c5a6 assets/nuggetmod/models/item/nugget_leggings_lapis_trim.json
597e2fb3857aeb6c2a7b4c464c0e2d91b13581a0 assets/nuggetmod/models/item/nugget_leggings_netherite_trim.json
d3c9108105a1732366550c88e524fd2ae4a15c7a assets/nuggetmod/models/item/nugget_leggings_quartz_trim.json
d5eb4a552e79ff6bfe770e092abfb48e88e58f06 assets/nuggetmod/models/item/nugget_leggings_redstone_trim.json
ee757b7f51aa5703ac735ac748f433503c4f2596 assets/nuggetmod/models/item/nugget_music_disc.json
1453d89f622ad5616505f248996b1715b196af76 assets/nuggetmod/models/item/nugget_pickaxe.json
f67a964a8a74c61df4d090dc5b250ad03bb16d8f assets/nuggetmod/models/item/nugget_shovel.json
dcc1dd8bb95c5c088212a9584d952a11ac2a840d assets/nuggetmod/models/item/nugget_sword.json
762606d79e485c8a5e4447e8a1236bee89185245 assets/nuggetmod/models/item/raw_nugget.json

View File

@@ -1,13 +0,0 @@
// 1.21.3 2025-01-05T20:56:27.127889 Block States: nuggetmod
e458b67af79198beb28149bb003b81fd70269977 assets/nuggetmod/blockstates/nugget_block.json
878193901a69171263432147c8d69dc3ad6a3329 assets/nuggetmod/blockstates/nugget_deepslate_ore.json
97b7f829a5952c457a7bd71a23fd2e40c9e41afd assets/nuggetmod/blockstates/nugget_ore.json
fc3b3199be08abb9ba378b6500ae96db0336a2ac assets/nuggetmod/blockstates/raw_nugget_block.json
5cd8b360f3c316bc790a0a08cca2902f5494ecb1 assets/nuggetmod/models/block/nugget_block.json
04a6c3905fc9bebb1701de7bf870efea11648a0e assets/nuggetmod/models/block/nugget_deepslate_ore.json
d8685b96ce2399042e685f5a0d52cc6f93aa2f7c assets/nuggetmod/models/block/nugget_ore.json
22ddcb7a66f04ae207af491a5e9264556726fec1 assets/nuggetmod/models/block/raw_nugget_block.json
87d953ce0211f8d1ae9e2f0411c38e6a937db408 assets/nuggetmod/models/item/nugget_block.json
1cbd017c90351ede4f571a9e6efd9b78640fed67 assets/nuggetmod/models/item/nugget_deepslate_ore.json
e8d9aff343954c5f248feb0b5fda5d9719aff29e assets/nuggetmod/models/item/nugget_ore.json
54f4c1e65c7687038adaf302a6471a1591ec2c2e assets/nuggetmod/models/item/raw_nugget_block.json

View File

@@ -1,41 +0,0 @@
// 1.21.3 2025-01-05T20:56:27.127889 Recipes
0fd5b77716dc45e332dc36b7f60aed900e725668 data/minecraft/advancement/recipes/misc/nugget_armor_trim_smithing_template_smithing_trim.json
eee047ea671dd65353f1d8da201bc2436d4df8ce data/minecraft/recipe/nugget_armor_trim_smithing_template_smithing_trim.json
1c4efbad060c0d91ce6e6c1cb6d1d1669bbcc6b4 data/nuggetmod/advancement/recipes/combat/nugget_boots.json
588a665982f97f016a8945b507f6a03d310f4090 data/nuggetmod/advancement/recipes/combat/nugget_chestplate.json
63d4a98bae280da5308f5011f4dce19970e727f9 data/nuggetmod/advancement/recipes/combat/nugget_helmet.json
5fd0412d9575823d882ec6e844021f2bdf83dc7c data/nuggetmod/advancement/recipes/combat/nugget_leggings.json
587bf7befb4b1be77e7002038b9faf0eb5bb4ce5 data/nuggetmod/advancement/recipes/combat/nugget_sword.json
39a320d3e238f524a92dae1eaa1c60d0e45ba296 data/nuggetmod/advancement/recipes/misc/nugget.json
8160ae7d8117c0cc293fcd40e22d1072c16ca478 data/nuggetmod/advancement/recipes/misc/nugget_block.json
ebf761f6dad07dac9f3ac9f8732d291cf7930611 data/nuggetmod/advancement/recipes/misc/nugget_from_blasting_nugget_deepslate_ore.json
e10188670de3a7a815f73a66fc5f4e92a648b51e data/nuggetmod/advancement/recipes/misc/nugget_from_blasting_nugget_ore.json
6138abcf020eb5235f574a65048b88a03b8dc057 data/nuggetmod/advancement/recipes/misc/nugget_from_blasting_raw_nugget.json
16fc56222bdb61afa3618038ee189f405fd20922 data/nuggetmod/advancement/recipes/misc/nugget_from_smelting_nugget_deepslate_ore.json
7b9dcb92c1af9c1982292c1efd6b4fb27513b3f5 data/nuggetmod/advancement/recipes/misc/nugget_from_smelting_nugget_ore.json
762af010e4f2c6dbf4b54f5f7c4575f28b47c524 data/nuggetmod/advancement/recipes/misc/nugget_from_smelting_raw_nugget.json
59e41b4b30c51f225ccb673f401839ec7e77fe20 data/nuggetmod/advancement/recipes/misc/raw_nugget.json
0eac4876a225ba434ebefcecb2d9a3d5b1af5cc3 data/nuggetmod/advancement/recipes/misc/raw_nugget_block.json
a159ddd57f6c263d4862f5ee479f3df3595379d9 data/nuggetmod/advancement/recipes/tools/nugget_axe.json
1889633531251f9d32df839f13041a7839569079 data/nuggetmod/advancement/recipes/tools/nugget_hoe.json
e6dbb4576802c7009518fe2bc4dbe541f16b6687 data/nuggetmod/advancement/recipes/tools/nugget_pickaxe.json
f63988753316f6848707a1bebb9004bff2f6d5e4 data/nuggetmod/advancement/recipes/tools/nugget_shovel.json
f18984bdec26f4f333b5ec20dcd09fe9dac918d5 data/nuggetmod/recipe/nugget.json
c7c3acba2cdae39001c97944e1a1eae52005bd21 data/nuggetmod/recipe/nugget_axe.json
aa4ff76dcf9a17b5d90446ef62241e4c7361e4a9 data/nuggetmod/recipe/nugget_block.json
4b405f3dad7ae6b25cf1d2eddfc27ddbe1ce19f6 data/nuggetmod/recipe/nugget_boots.json
b3ce51675061ff49c9b94b9f8d15dc87dcf9d089 data/nuggetmod/recipe/nugget_chestplate.json
be70886b617dbe8cdcb814a4d2f754fe3abbc659 data/nuggetmod/recipe/nugget_from_blasting_nugget_deepslate_ore.json
45cac40fe007c51d5b6e1d197c395975d2655def data/nuggetmod/recipe/nugget_from_blasting_nugget_ore.json
5c3110d1dd220a719fc151cc9067a4a53ee690c5 data/nuggetmod/recipe/nugget_from_blasting_raw_nugget.json
c21c2f595a958d26505b7615307edc354d890505 data/nuggetmod/recipe/nugget_from_smelting_nugget_deepslate_ore.json
33c1f170f1bb2e409858a4953b957abf9c3de9a1 data/nuggetmod/recipe/nugget_from_smelting_nugget_ore.json
731c7b164832de8e43bf6e9f900026a43ce5ee1a data/nuggetmod/recipe/nugget_from_smelting_raw_nugget.json
421bd212f8c4995d52f9818aa393a18003442ffc data/nuggetmod/recipe/nugget_helmet.json
c833522c310026665d6aa35a7d356f977e08b500 data/nuggetmod/recipe/nugget_hoe.json
10dbf3cb9b95e5bf98b10b7f2c68c24fb6fe0404 data/nuggetmod/recipe/nugget_leggings.json
dc1605410ae247b2a5ee0f94c3914b3c8a6f01a2 data/nuggetmod/recipe/nugget_pickaxe.json
9ef92db13ca907ab529a954bf53fe21e2fdd65c3 data/nuggetmod/recipe/nugget_shovel.json
9a9aa6724cc4ccc22c3cf0f7fb52b59e91e47215 data/nuggetmod/recipe/nugget_sword.json
4788404672bb103c1ac8572be4e1d17db06c31c1 data/nuggetmod/recipe/raw_nugget.json
73fcf373c40d2d9c3e8e5d6ccacbac0f4a2efa55 data/nuggetmod/recipe/raw_nugget_block.json

View File

@@ -1,3 +0,0 @@
{
"parent": "nuggetmod:block/nugget_block"
}

View File

@@ -1,68 +0,0 @@
{
"parent": "minecraft:item/generated",
"overrides": [
{
"model": "nuggetmod:item/nugget_boots_quartz_trim",
"predicate": {
"minecraft:trim_type": 0.1
}
},
{
"model": "nuggetmod:item/nugget_boots_iron_trim",
"predicate": {
"minecraft:trim_type": 0.2
}
},
{
"model": "nuggetmod:item/nugget_boots_netherite_trim",
"predicate": {
"minecraft:trim_type": 0.3
}
},
{
"model": "nuggetmod:item/nugget_boots_redstone_trim",
"predicate": {
"minecraft:trim_type": 0.4
}
},
{
"model": "nuggetmod:item/nugget_boots_copper_trim",
"predicate": {
"minecraft:trim_type": 0.5
}
},
{
"model": "nuggetmod:item/nugget_boots_gold_trim",
"predicate": {
"minecraft:trim_type": 0.6
}
},
{
"model": "nuggetmod:item/nugget_boots_emerald_trim",
"predicate": {
"minecraft:trim_type": 0.7
}
},
{
"model": "nuggetmod:item/nugget_boots_diamond_trim",
"predicate": {
"minecraft:trim_type": 0.8
}
},
{
"model": "nuggetmod:item/nugget_boots_lapis_trim",
"predicate": {
"minecraft:trim_type": 0.9
}
},
{
"model": "nuggetmod:item/nugget_boots_amethyst_trim",
"predicate": {
"minecraft:trim_type": 1.0
}
}
],
"textures": {
"layer0": "nuggetmod:item/nugget_boots"
}
}

View File

@@ -1,68 +0,0 @@
{
"parent": "minecraft:item/generated",
"overrides": [
{
"model": "nuggetmod:item/nugget_chestplate_quartz_trim",
"predicate": {
"minecraft:trim_type": 0.1
}
},
{
"model": "nuggetmod:item/nugget_chestplate_iron_trim",
"predicate": {
"minecraft:trim_type": 0.2
}
},
{
"model": "nuggetmod:item/nugget_chestplate_netherite_trim",
"predicate": {
"minecraft:trim_type": 0.3
}
},
{
"model": "nuggetmod:item/nugget_chestplate_redstone_trim",
"predicate": {
"minecraft:trim_type": 0.4
}
},
{
"model": "nuggetmod:item/nugget_chestplate_copper_trim",
"predicate": {
"minecraft:trim_type": 0.5
}
},
{
"model": "nuggetmod:item/nugget_chestplate_gold_trim",
"predicate": {
"minecraft:trim_type": 0.6
}
},
{
"model": "nuggetmod:item/nugget_chestplate_emerald_trim",
"predicate": {
"minecraft:trim_type": 0.7
}
},
{
"model": "nuggetmod:item/nugget_chestplate_diamond_trim",
"predicate": {
"minecraft:trim_type": 0.8
}
},
{
"model": "nuggetmod:item/nugget_chestplate_lapis_trim",
"predicate": {
"minecraft:trim_type": 0.9
}
},
{
"model": "nuggetmod:item/nugget_chestplate_amethyst_trim",
"predicate": {
"minecraft:trim_type": 1.0
}
}
],
"textures": {
"layer0": "nuggetmod:item/nugget_chestplate"
}
}

View File

@@ -1,3 +0,0 @@
{
"parent": "nuggetmod:block/nugget_deepslate_ore"
}

View File

@@ -1,68 +0,0 @@
{
"parent": "minecraft:item/generated",
"overrides": [
{
"model": "nuggetmod:item/nugget_helmet_quartz_trim",
"predicate": {
"minecraft:trim_type": 0.1
}
},
{
"model": "nuggetmod:item/nugget_helmet_iron_trim",
"predicate": {
"minecraft:trim_type": 0.2
}
},
{
"model": "nuggetmod:item/nugget_helmet_netherite_trim",
"predicate": {
"minecraft:trim_type": 0.3
}
},
{
"model": "nuggetmod:item/nugget_helmet_redstone_trim",
"predicate": {
"minecraft:trim_type": 0.4
}
},
{
"model": "nuggetmod:item/nugget_helmet_copper_trim",
"predicate": {
"minecraft:trim_type": 0.5
}
},
{
"model": "nuggetmod:item/nugget_helmet_gold_trim",
"predicate": {
"minecraft:trim_type": 0.6
}
},
{
"model": "nuggetmod:item/nugget_helmet_emerald_trim",
"predicate": {
"minecraft:trim_type": 0.7
}
},
{
"model": "nuggetmod:item/nugget_helmet_diamond_trim",
"predicate": {
"minecraft:trim_type": 0.8
}
},
{
"model": "nuggetmod:item/nugget_helmet_lapis_trim",
"predicate": {
"minecraft:trim_type": 0.9
}
},
{
"model": "nuggetmod:item/nugget_helmet_amethyst_trim",
"predicate": {
"minecraft:trim_type": 1.0
}
}
],
"textures": {
"layer0": "nuggetmod:item/nugget_helmet"
}
}

View File

@@ -1,68 +0,0 @@
{
"parent": "minecraft:item/generated",
"overrides": [
{
"model": "nuggetmod:item/nugget_leggings_quartz_trim",
"predicate": {
"minecraft:trim_type": 0.1
}
},
{
"model": "nuggetmod:item/nugget_leggings_iron_trim",
"predicate": {
"minecraft:trim_type": 0.2
}
},
{
"model": "nuggetmod:item/nugget_leggings_netherite_trim",
"predicate": {
"minecraft:trim_type": 0.3
}
},
{
"model": "nuggetmod:item/nugget_leggings_redstone_trim",
"predicate": {
"minecraft:trim_type": 0.4
}
},
{
"model": "nuggetmod:item/nugget_leggings_copper_trim",
"predicate": {
"minecraft:trim_type": 0.5
}
},
{
"model": "nuggetmod:item/nugget_leggings_gold_trim",
"predicate": {
"minecraft:trim_type": 0.6
}
},
{
"model": "nuggetmod:item/nugget_leggings_emerald_trim",
"predicate": {
"minecraft:trim_type": 0.7
}
},
{
"model": "nuggetmod:item/nugget_leggings_diamond_trim",
"predicate": {
"minecraft:trim_type": 0.8
}
},
{
"model": "nuggetmod:item/nugget_leggings_lapis_trim",
"predicate": {
"minecraft:trim_type": 0.9
}
},
{
"model": "nuggetmod:item/nugget_leggings_amethyst_trim",
"predicate": {
"minecraft:trim_type": 1.0
}
}
],
"textures": {
"layer0": "nuggetmod:item/nugget_leggings"
}
}

View File

@@ -1,3 +0,0 @@
{
"parent": "nuggetmod:block/nugget_ore"
}

View File

@@ -1,3 +0,0 @@
{
"parent": "nuggetmod:block/raw_nugget_block"
}

View File

@@ -1,8 +0,0 @@
{
"values": [
"nuggetmod:nugget_block",
"nuggetmod:raw_nugget_block",
"nuggetmod:nugget_ore",
"nuggetmod:nugget_deepslate_ore"
]
}

View File

@@ -1,6 +0,0 @@
{
"values": [
"nuggetmod:nugget_deepslate_ore",
"nuggetmod:raw_nugget_block"
]
}

View File

@@ -1,5 +0,0 @@
{
"values": [
"nuggetmod:nugget_armor_trim_smithing_template"
]
}

View File

@@ -1,8 +0,0 @@
{
"values": [
"nuggetmod:nugget_helmet",
"nuggetmod:nugget_chestplate",
"nuggetmod:nugget_leggings",
"nuggetmod:nugget_boots"
]
}

View File

@@ -1,6 +0,0 @@
{
"type": "forge:add_features",
"biomes": "#minecraft:is_overworld",
"features": "nuggetmod:nugget_ore_placed",
"step": "underground_ores"
}

View File

@@ -1,6 +0,0 @@
{
"values": [
"nuggetmod:raw_nugget_block",
"#minecraft:needs_diamond_tool"
]
}

View File

@@ -1,9 +0,0 @@
{
"values": [
"nuggetmod:nugget",
"nuggetmod:raw_nugget",
"minecraft:coal",
"minecraft:stick",
"minecraft:compass"
]
}

View File

@@ -0,0 +1,32 @@
package dev.sillyangel.nuggetmod;
import net.minecraft.resources.Identifier;
import net.minecraft.world.item.Item;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.eventbus.api.listener.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.config.ModConfigEvent;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.Set;
@Mod.EventBusSubscriber(modid = NuggetMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class Config
{
private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder();
static final ForgeConfigSpec SPEC = BUILDER.build();
public static Set<Item> items;
private static boolean validateItemName(final Object obj)
{
return obj instanceof final String itemName && ForgeRegistries.ITEMS.containsKey(Identifier.tryParse(itemName));
}
@SubscribeEvent
static void onLoad(final ModConfigEvent event)
{
}
}

View File

@@ -1,73 +1,68 @@
package xyz.sillyangel.nugget;
import com.mojang.logging.LogUtils;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.event.server.ServerStartingEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import org.slf4j.Logger;
import xyz.sillyangel.nugget.item.ModCreativeModeTabs;
import xyz.sillyangel.nugget.item.ModItems;
import xyz.sillyangel.nugget.block.ModBlocks;
import xyz.sillyangel.nugget.sound.ModSounds;
// Very important Comment
// The value here should match an entry in the META-INF/mods.toml file
@Mod(NuggetMod.MOD_ID)
public class NuggetMod {
// Define mod id in a common place for everything to reference
public static final String MOD_ID = "nuggetmod";
// Directly reference a slf4j logger
public static final Logger LOGGER = LogUtils.getLogger();
public NuggetMod() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
modEventBus.addListener(this::commonSetup);
// Register ourselves for server and other game events we are interested in
MinecraftForge.EVENT_BUS.register(this);
ModCreativeModeTabs.register(modEventBus);
ModItems.register(modEventBus);
ModBlocks.register(modEventBus);
ModSounds.register(modEventBus);
// Register the item to a creative tab
modEventBus.addListener(this::addCreative);
// Register our mod's ForgeConfigSpec so that Forge can create and load the config file for us
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.SPEC);
}
private void commonSetup(final FMLCommonSetupEvent event) {
}
// Add the example block item to the building blocks tab
private void addCreative(BuildCreativeModeTabContentsEvent event) {
}
// You can use SubscribeEvent and let the Event Bus discover methods to call
@SubscribeEvent
public void onServerStarting(ServerStartingEvent event) {
}
// You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent
@Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public static class ClientModEvents {
@SubscribeEvent
public static void onClientSetup(FMLClientSetupEvent event) {
}
}
package dev.sillyangel.nuggetmod;
import com.mojang.logging.LogUtils;
import dev.sillyangel.nuggetmod.villager.ModVillagers;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.eventbus.api.listener.SubscribeEvent;
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import org.slf4j.Logger;
import dev.sillyangel.nuggetmod.item.ModCreativeModeTabs;
import dev.sillyangel.nuggetmod.item.ModItems;
import dev.sillyangel.nuggetmod.block.ModBlocks;
import dev.sillyangel.nuggetmod.sound.ModSounds;
// Very important Comment
// The value here should match an entry in the META-INF/mods.toml file
@Mod(NuggetMod.MOD_ID)
public class NuggetMod {
// Define mod id in a common place for everything to reference
public static final String MOD_ID = "nuggetmod";
// Directly reference a slf4j logger
public static final Logger LOGGER = LogUtils.getLogger();
public NuggetMod(FMLJavaModLoadingContext context) {
var modBusGroup = context.getModBusGroup();
// Register the commonSetup method for modloading
FMLCommonSetupEvent.getBus(modBusGroup).addListener(this::commonSetup);
// Register the Deferred Register to the mod event bus so blocks get registered
ModBlocks.register(modBusGroup);
// Register the Deferred Register to the mod event bus so items get registered
ModItems.register(modBusGroup);
// Register the Deferred Register to the mod event bus so tabs get registered
ModCreativeModeTabs.register(modBusGroup);
// Register the Deferred Register to the mod event bus so sounds get registered
ModSounds.register(modBusGroup);
//
ModVillagers.register(modBusGroup);
// Register the item to a creative tab
BuildCreativeModeTabContentsEvent.BUS.addListener(this::addCreative);
// Register our mod's ForgeConfigSpec so that Forge can create and load the config file for us
context.registerConfig(ModConfig.Type.COMMON, Config.SPEC);
}
private void commonSetup(final FMLCommonSetupEvent event) {
}
// Add the example block item to the building blocks tab
private void addCreative(BuildCreativeModeTabContentsEvent event) {
}
// You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent
@Mod.EventBusSubscriber(modid = MOD_ID, value = Dist.CLIENT)
public static class ClientModEvents {
@SubscribeEvent
public static void onClientSetup(FMLClientSetupEvent event) {
}
}
}

View File

@@ -1,60 +1,60 @@
package xyz.sillyangel.nugget.block;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.item.ModItems;
import net.minecraft.util.valueproviders.UniformInt;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.DropExperienceBlock;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import java.util.function.Supplier;
public class ModBlocks {
public static final DeferredRegister<Block> BLOCKS =
DeferredRegister.create(ForgeRegistries.BLOCKS, NuggetMod.MOD_ID);
public static final RegistryObject<Block> NUGGET_BLOCK = registerBlock("nugget_block",
() -> new Block(BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_block")))
.strength(4f).requiresCorrectToolForDrops().sound(SoundType.AMETHYST)));
public static final RegistryObject<Block> RAW_NUGGET_BLOCK = registerBlock("raw_nugget_block",
() -> new Block(BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "raw_nugget_block")))
.strength(3f).requiresCorrectToolForDrops()));
// ores
public static final RegistryObject<Block> NUGGET_ORE = registerBlock("nugget_ore",
() -> new DropExperienceBlock(UniformInt.of(2, 4), BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_ore")))
.strength(4f).requiresCorrectToolForDrops()));
public static final RegistryObject<Block> NUGGET_DEEPSLATE_ORE = registerBlock("nugget_deepslate_ore",
() -> new DropExperienceBlock(UniformInt.of(2, 4), BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_deepslate_ore")))
.strength(5f).requiresCorrectToolForDrops().sound(SoundType.DEEPSLATE)));
private static <T extends Block> RegistryObject<T> registerBlock(String name, Supplier<T> block) {
RegistryObject<T> toReturn = BLOCKS.register(name, block);
registerBlockItem(name, toReturn);
return toReturn;
}
private static <T extends Block> void registerBlockItem(String name, RegistryObject<T> block) {
ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name)))));
}
public static void register(IEventBus eventBus) {
BLOCKS.register(eventBus);
}
package dev.sillyangel.nuggetmod.block;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.Identifier;
import dev.sillyangel.nuggetmod.NuggetMod;
import dev.sillyangel.nuggetmod.item.ModItems;
import net.minecraft.util.valueproviders.UniformInt;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.DropExperienceBlock;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import java.util.function.Supplier;
public class ModBlocks {
public static final DeferredRegister<Block> BLOCKS =
DeferredRegister.create(ForgeRegistries.BLOCKS, NuggetMod.MOD_ID);
public static final RegistryObject<Block> NUGGET_BLOCK = registerBlock("nugget_block",
() -> new Block(BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_block")))
.strength(4f).requiresCorrectToolForDrops().sound(SoundType.AMETHYST)));
public static final RegistryObject<Block> RAW_NUGGET_BLOCK = registerBlock("raw_nugget_block",
() -> new Block(BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "raw_nugget_block")))
.strength(3f).requiresCorrectToolForDrops()));
// ores
public static final RegistryObject<Block> NUGGET_ORE = registerBlock("nugget_ore",
() -> new DropExperienceBlock(UniformInt.of(2, 4), BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_ore")))
.strength(4f).requiresCorrectToolForDrops()));
public static final RegistryObject<Block> NUGGET_DEEPSLATE_ORE = registerBlock("nugget_deepslate_ore",
() -> new DropExperienceBlock(UniformInt.of(2, 4), BlockBehaviour.Properties.of()
.setId(ResourceKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_deepslate_ore")))
.strength(5f).requiresCorrectToolForDrops().sound(SoundType.DEEPSLATE)));
private static <T extends Block> RegistryObject<T> registerBlock(String name, Supplier<T> block) {
RegistryObject<T> toReturn = BLOCKS.register(name, block);
registerBlockItem(name, toReturn);
return toReturn;
}
private static <T extends Block> void registerBlockItem(String name, RegistryObject<T> block) {
ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name)))));
}
public static void register(BusGroup busGroup) {
BLOCKS.register(busGroup);
}
}

View File

@@ -0,0 +1,109 @@
package dev.sillyangel.nuggetmod.event;
import dev.sillyangel.nuggetmod.NuggetMod;
import dev.sillyangel.nuggetmod.item.ModItems;
import dev.sillyangel.nuggetmod.villager.ModVillagers;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import net.minecraft.world.entity.npc.villager.VillagerProfession;
import net.minecraft.world.entity.npc.villager.VillagerTrades;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.trading.ItemCost;
import net.minecraft.world.item.trading.MerchantOffer;
import net.minecraftforge.event.village.VillagerTradesEvent;
import net.minecraftforge.event.village.WandererTradesEvent;
import net.minecraftforge.eventbus.api.listener.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import java.util.List;
@Mod.EventBusSubscriber(modid = NuggetMod.MOD_ID)
public class ModEvents {
@SubscribeEvent
public static void addCustomTrades(VillagerTradesEvent event) {
// Add trades to vanilla FARMER profession
if(event.getType() == VillagerProfession.FARMER) {
Int2ObjectMap<List<VillagerTrades.ItemListing>> trades = event.getTrades();
trades.get(1).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.EMERALD, 3),
new ItemStack(ModItems.NUGGET.get(), 8), 7, 2, 0.04f));
}
// Add trades to custom NUGGETER profession
if(event.getType().equals(ModVillagers.NUGGETER_KEY)) {
Int2ObjectMap<List<VillagerTrades.ItemListing>> trades = event.getTrades();
// Level 1 trades
trades.get(1).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.EMERALD, 5),
new ItemStack(ModItems.NUGGET.get(), 20), 4, 7, 0.04f));
trades.get(1).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.DIAMOND, 2),
new ItemStack(ModItems.RAW_NUGGET.get(), 12), 6, 5, 0.05f));
// Level 2 trades
trades.get(2).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.GOLD_INGOT, 8),
new ItemStack(ModItems.NUGGET_SWORD.get(), 1), 3, 10, 0.05f));
trades.get(2).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.EMERALD, 10),
new ItemStack(ModItems.NUGGET_PICKAXE.get(), 1), 3, 10, 0.05f));
// Level 3 trades
trades.get(3).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.EMERALD, 15),
new ItemStack(ModItems.NUGGET_HELMET.get(), 1), 2, 15, 0.05f));
trades.get(3).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.EMERALD, 20),
new ItemStack(ModItems.NUGGET_CHESTPLATE.get(), 1), 2, 15, 0.05f));
// Level 4 trades
trades.get(4).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.DIAMOND, 5),
new ItemStack(ModItems.NUGGET_LEGGINGS.get(), 1), 2, 20, 0.05f));
trades.get(4).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.EMERALD, 12),
new ItemStack(ModItems.NUGGET_BOOTS.get(), 1), 2, 20, 0.05f));
// Level 5 trades (Master)
trades.get(5).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.EMERALD, 30),
new ItemStack(ModItems.NUGGET_HORSE_ARMOR.get(), 1), 1, 30, 0.1f));
trades.get(5).add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.DIAMOND, 10),
new ItemStack(ModItems.NUGGET_SMITHING_TEMPLATE.get(), 1), 1, 30, 0.1f));
}
}
@SubscribeEvent
public static void addWanderingTrades(WandererTradesEvent event) {
List<WandererTradesEvent.Pool> pools = event.getPools();
if (pools.size() >= 1) {
// Add generic wandering trader trades (first pool)
List<VillagerTrades.ItemListing> genericTrades = pools.get(0).getEntries();
genericTrades.add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.EMERALD, 12),
new ItemStack(ModItems.NUGGET.get(), 3), 2, 8, 0.2f));
}
if (pools.size() >= 2) {
// Add rare wandering trader trades (second pool)
List<VillagerTrades.ItemListing> rareTrades = pools.get(1).getEntries();
rareTrades.add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.DIAMOND, 8),
new ItemStack(ModItems.NUGGET_MUSIC_DISC.get(), 1), 1, 12, 0.2f));
rareTrades.add((pTrader, pRandom, pLevel) -> new MerchantOffer(
new ItemCost(Items.EMERALD, 25),
new ItemStack(ModItems.NUGGET_SMITHING_TEMPLATE.get(), 1), 1, 12, 0.2f));
}
}
}

View File

@@ -0,0 +1,30 @@
package dev.sillyangel.nuggetmod.item;
import dev.sillyangel.nuggetmod.NuggetMod;
import dev.sillyangel.nuggetmod.util.ModTags;
import net.minecraft.util.Util;
import net.minecraft.resources.Identifier;
import net.minecraft.resources.ResourceKey;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.world.item.equipment.ArmorMaterial;
import net.minecraft.world.item.equipment.ArmorType;
import net.minecraft.world.item.equipment.EquipmentAsset;
import java.util.EnumMap;
public class ModArmorMaterials {
public static final ResourceKey<EquipmentAsset> NUGGET_EQUIPMENT_ASSET =
ResourceKey.create(ResourceKey.createRegistryKey(Identifier.withDefaultNamespace("equipment_asset")),
Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget"));
public static final ArmorMaterial NUGGET_ARMOR_MATERIAL = new ArmorMaterial(1200, Util.make(new EnumMap<>(ArmorType.class),
attribute -> {
attribute.put(ArmorType.BOOTS, 5);
attribute.put(ArmorType.LEGGINGS, 7);
attribute.put(ArmorType.CHESTPLATE, 9);
attribute.put(ArmorType.HELMET, 5);
attribute.put(ArmorType.BODY, 11);
}), 20, SoundEvents.ARMOR_EQUIP_NETHERITE,
4f, 0.1f, ModTags.Items.NUGGET_REPAIRS, NUGGET_EQUIPMENT_ASSET);
}

View File

@@ -1,59 +1,60 @@
package xyz.sillyangel.nugget.item;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.block.ModBlocks;
public class ModCreativeModeTabs {
public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS =
DeferredRegister.create(Registries.CREATIVE_MODE_TAB, NuggetMod.MOD_ID);
public static final RegistryObject<CreativeModeTab> NUGGET_ITEMS_TAB = CREATIVE_MODE_TABS.register("nuggetmod_items_tab",
() -> CreativeModeTab.builder().icon(() -> new ItemStack(ModItems.NUGGET.get()))
.title(Component.translatable("creativetab.nuggetmod.nugget_items"))
.displayItems((itemDisplayParameters, output) -> {
output.accept(ModItems.NUGGET.get());
output.accept(ModItems.RAW_NUGGET.get());
output.accept(ModItems.NUGGET_SWORD.get());
output.accept(ModItems.NUGGET_PICKAXE.get());
output.accept(ModItems.NUGGET_SHOVEL.get());
output.accept(ModItems.NUGGET_AXE.get());
output.accept(ModItems.NUGGET_HOE.get());
output.accept(ModItems.NUGGET_HELMET.get());
output.accept(ModItems.NUGGET_CHESTPLATE.get());
output.accept(ModItems.NUGGET_LEGGINGS.get());
output.accept(ModItems.NUGGET_BOOTS.get());
output.accept(ModItems.NUGGET_HORSE_ARMOR.get());
output.accept(ModItems.NUGGET_SMITHING_TEMPLATE.get());
output.accept(ModItems.NUGGET_MUSIC_DISC.get());
}).build());
public static final RegistryObject<CreativeModeTab> NUGGET_BLOCKS_TAB = CREATIVE_MODE_TABS.register("nuggetmod_blocks_tab",
() -> CreativeModeTab.builder().icon(() -> new ItemStack(ModBlocks.NUGGET_BLOCK.get()))
.withTabsBefore(NUGGET_ITEMS_TAB.getId())
.title(Component.translatable("creativetab.nuggetmod.nugget_blocks"))
.displayItems((itemDisplayParameters, output) -> {
output.accept(ModBlocks.NUGGET_BLOCK.get());
output.accept(ModBlocks.RAW_NUGGET_BLOCK.get());
output.accept(ModBlocks.NUGGET_ORE.get());
output.accept(ModBlocks.NUGGET_DEEPSLATE_ORE.get());
}).build());
public static void register(IEventBus eventBus) {
CREATIVE_MODE_TABS.register(eventBus);
}
}
package dev.sillyangel.nuggetmod.item;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
import dev.sillyangel.nuggetmod.NuggetMod;
import dev.sillyangel.nuggetmod.block.ModBlocks;
public class ModCreativeModeTabs {
public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS =
DeferredRegister.create(Registries.CREATIVE_MODE_TAB, NuggetMod.MOD_ID);
public static final RegistryObject<CreativeModeTab> NUGGET_ITEMS_TAB = CREATIVE_MODE_TABS.register("nuggetmod_items_tab",
() -> CreativeModeTab.builder().icon(() -> new ItemStack(ModItems.NUGGET.get()))
.title(Component.translatable("creativetab.nuggetmod.nugget_items"))
.displayItems((itemDisplayParameters, output) -> {
output.accept(ModItems.NUGGET.get());
output.accept(ModItems.RAW_NUGGET.get());
output.accept(ModItems.NUGGET_SWORD.get());
output.accept(ModItems.NUGGET_PICKAXE.get());
output.accept(ModItems.NUGGET_SHOVEL.get());
output.accept(ModItems.NUGGET_AXE.get());
output.accept(ModItems.NUGGET_HOE.get());
output.accept(ModBlocks.NUGGET_BLOCK.get());
output.accept(ModItems.NUGGET_HELMET.get());
output.accept(ModItems.NUGGET_CHESTPLATE.get());
output.accept(ModItems.NUGGET_LEGGINGS.get());
output.accept(ModItems.NUGGET_BOOTS.get());
output.accept(ModItems.NUGGET_HORSE_ARMOR.get());
output.accept(ModItems.NUGGET_SMITHING_TEMPLATE.get());
output.accept(ModItems.NUGGET_MUSIC_DISC.get());
}).build());
public static final RegistryObject<CreativeModeTab> NUGGET_BLOCKS_TAB = CREATIVE_MODE_TABS.register("nuggetmod_blocks_tab",
() -> CreativeModeTab.builder().icon(() -> new ItemStack(ModBlocks.NUGGET_BLOCK.get()))
.withTabsBefore(NUGGET_ITEMS_TAB.getId())
.title(Component.translatable("creativetab.nuggetmod.nugget_blocks"))
.displayItems((itemDisplayParameters, output) -> {
output.accept(ModBlocks.NUGGET_BLOCK.get());
output.accept(ModBlocks.RAW_NUGGET_BLOCK.get());
output.accept(ModBlocks.NUGGET_ORE.get());
output.accept(ModBlocks.NUGGET_DEEPSLATE_ORE.get());
}).build());
public static void register(BusGroup busGroup) {
CREATIVE_MODE_TABS.register(busGroup);
}
}

View File

@@ -1,8 +1,8 @@
package xyz.sillyangel.nugget.item;
import net.minecraft.world.food.FoodProperties;
public class ModFoodProperties {
public static final FoodProperties Nugget = new FoodProperties.Builder().nutrition(5).saturationModifier(0.5f)
.build();
}
package dev.sillyangel.nuggetmod.item;
import net.minecraft.world.food.FoodProperties;
public class ModFoodProperties {
public static final FoodProperties Nugget = new FoodProperties.Builder().nutrition(5).saturationModifier(0.5f)
.build();
}

View File

@@ -0,0 +1,101 @@
package dev.sillyangel.nuggetmod.item;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.equipment.ArmorType;
import dev.sillyangel.nuggetmod.NuggetMod;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraft.resources.Identifier;
import net.minecraftforge.registries.RegistryObject;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ShovelItem;
import net.minecraft.world.item.AxeItem;
import net.minecraft.world.item.HoeItem;
import net.minecraft.world.item.SmithingTemplateItem;
import dev.sillyangel.nuggetmod.sound.ModSounds;
public class ModItems {
public static final DeferredRegister<Item> ITEMS =
DeferredRegister.create(ForgeRegistries.ITEMS, NuggetMod.MOD_ID);
public static final RegistryObject<Item> NUGGET = ITEMS.register("nugget",
() -> new Item(new Item.Properties().setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")))
.food(ModFoodProperties.Nugget)));
public static final RegistryObject<Item> RAW_NUGGET = ITEMS.register("raw_nugget",
() -> new Item(new Item.Properties().setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "raw_nugget")))));
public static final RegistryObject<Item> NUGGET_SWORD = ITEMS.register("nugget_sword",
() -> new Item(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_sword")))
.sword(ModToolTiers.NUGGET, 3.0F, -2.4F)));
public static final RegistryObject<Item> NUGGET_PICKAXE = ITEMS.register("nugget_pickaxe",
() -> new Item(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_pickaxe")))
.pickaxe(ModToolTiers.NUGGET, 1.0F, -2.8F)));
public static final RegistryObject<Item> NUGGET_SHOVEL = ITEMS.register("nugget_shovel",
() -> new ShovelItem(ModToolTiers.NUGGET, 1.5f, -3.0f, new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_shovel")))));
public static final RegistryObject<Item> NUGGET_AXE = ITEMS.register("nugget_axe",
() -> new AxeItem(ModToolTiers.NUGGET, 6, -3.2f, new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_axe")))));
public static final RegistryObject<Item> NUGGET_HOE = ITEMS.register("nugget_hoe",
() -> new HoeItem(ModToolTiers.NUGGET, 0, -3.0f, new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_hoe")))));
public static final RegistryObject<Item> NUGGET_SPEAR = ITEMS.register("nugget_sword",
() -> new Item(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_sword")))
.sword(ModToolTiers.NUGGET, 3.0F, -1F)));
// armor things
public static final RegistryObject<Item> NUGGET_HELMET = ITEMS.register("nugget_helmet",
() -> new Item(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_helmet")))
.humanoidArmor(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.HELMET)));
public static final RegistryObject<Item> NUGGET_CHESTPLATE = ITEMS.register("nugget_chestplate",
() -> new Item(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_chestplate")))
.humanoidArmor(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.CHESTPLATE)));
public static final RegistryObject<Item> NUGGET_LEGGINGS = ITEMS.register("nugget_leggings",
() -> new Item(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_leggings")))
.humanoidArmor(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.LEGGINGS)));
public static final RegistryObject<Item> NUGGET_BOOTS = ITEMS.register("nugget_boots",
() -> new Item(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_boots")))
.humanoidArmor(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.BOOTS)));
// horse armor
public static final RegistryObject<Item> NUGGET_HORSE_ARMOR = ITEMS.register("nugget_horse_armor",
() -> new Item(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_horse_armor")))
.horseArmor(ModArmorMaterials.NUGGET_ARMOR_MATERIAL)
.stacksTo(1)));
// smithing temp
public static final RegistryObject<Item> NUGGET_SMITHING_TEMPLATE = ITEMS.register("nugget_armor_trim_smithing_template",
() -> SmithingTemplateItem.createArmorTrimTemplate(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_armor_trim_smithing_template")))));
public static final RegistryObject<Item> NUGGET_MUSIC_DISC = ITEMS.register("nugget_music_disc",
() -> new Item(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_music_disc")))
.jukeboxPlayable(ModSounds.NUGGET_THEME_KEY).stacksTo(1)));
public static void register(BusGroup busGroup) {
ITEMS.register(busGroup);
}
}

View File

@@ -1,9 +1,9 @@
package xyz.sillyangel.nugget.item;
import net.minecraft.world.item.ToolMaterial;
import xyz.sillyangel.nugget.util.ModTags;
public class ModToolTiers {
public static final ToolMaterial NUGGET = new ToolMaterial(ModTags.Blocks.INCORRECT_FOR_NUGGET_TOOL,
1500, 4.5f, 3.5f, 22, ModTags.Items.NUGGET_REPAIRS);
}
package dev.sillyangel.nuggetmod.item;
import net.minecraft.world.item.ToolMaterial;
import dev.sillyangel.nuggetmod.util.ModTags;
public class ModToolTiers {
public static final ToolMaterial NUGGET = new ToolMaterial(ModTags.Blocks.INCORRECT_FOR_NUGGET_TOOL,
1500, 8f, 3.5f, 22, ModTags.Items.NUGGET_REPAIRS);
}

View File

@@ -1,12 +1,12 @@
package xyz.sillyangel.nugget.sound;
package dev.sillyangel.nuggetmod.sound;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.JukeboxSong;
import xyz.sillyangel.nugget.NuggetMod;
import net.minecraft.resources.ResourceLocation;
import dev.sillyangel.nuggetmod.NuggetMod;
import net.minecraft.resources.Identifier;
import net.minecraft.sounds.SoundEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
@@ -18,14 +18,14 @@ public class ModSounds {
public static final RegistryObject<SoundEvent> NUGGET_THEME = registerSoundEvent("nugget_theme");
public static final ResourceKey<JukeboxSong> NUGGET_THEME_KEY = ResourceKey.create(Registries.JUKEBOX_SONG,
ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_theme"));
Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_theme"));
private static RegistryObject<SoundEvent> registerSoundEvent(String name) {
return SOUND_EVENT.register(name, () -> SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name)));
return SOUND_EVENT.register(name, () -> SoundEvent.createVariableRangeEvent(Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name)));
}
public static void register(IEventBus eventBus) {
SOUND_EVENT.register(eventBus);
public static void register(BusGroup busGroup) {
SOUND_EVENT.register(busGroup);
}
}

View File

@@ -0,0 +1,36 @@
package dev.sillyangel.nuggetmod.trim;
import dev.sillyangel.nuggetmod.NuggetMod;
import dev.sillyangel.nuggetmod.item.ModArmorMaterials;
import net.minecraft.util.Util;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.worldgen.BootstrapContext;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style;
import net.minecraft.network.chat.TextColor;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.Identifier;
import net.minecraft.world.item.equipment.trim.MaterialAssetGroup;
import net.minecraft.world.item.equipment.trim.TrimMaterial;
import java.util.Map;
public class ModTrimMaterials {
private static final Identifier NUGGET_LOCATION = Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget");
public static final ResourceKey<TrimMaterial> NUGGET =
ResourceKey.create(Registries.TRIM_MATERIAL, NUGGET_LOCATION);
public static void bootstrap(BootstrapContext<TrimMaterial> context) {
register(context, NUGGET, NUGGET_LOCATION, Style.EMPTY.withColor(TextColor.parseColor("#f9b042").getOrThrow()));
}
private static void register(BootstrapContext<TrimMaterial> context, ResourceKey<TrimMaterial> trimKey,
Identifier assetId, Style style) {
MaterialAssetGroup.AssetInfo assetInfo = new MaterialAssetGroup.AssetInfo(assetId.getPath());
TrimMaterial trimmaterial = new TrimMaterial(
new MaterialAssetGroup(assetInfo, Map.of(ModArmorMaterials.NUGGET_EQUIPMENT_ASSET, assetInfo)),
Component.translatable(Util.makeDescriptionId("trim_material", assetId)).withStyle(style));
context.register(trimKey, trimmaterial);
}
}

View File

@@ -1,28 +1,28 @@
package xyz.sillyangel.nugget.trim;
package dev.sillyangel.nuggetmod.trim;
import net.minecraft.world.item.equipment.trim.TrimPattern;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.item.ModItems;
import net.minecraft.Util;
import dev.sillyangel.nuggetmod.NuggetMod;
import dev.sillyangel.nuggetmod.item.ModItems;
import net.minecraft.util.Util;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.worldgen.BootstrapContext;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.resources.Identifier;
import net.minecraft.world.item.Item;
import net.minecraftforge.registries.ForgeRegistries;
public class ModTrimPatterns {
public static final ResourceKey<TrimPattern> NUGGET = ResourceKey.create(Registries.TRIM_PATTERN,
ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget"));
private static final Identifier NUGGET_LOCATION = Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget");
public static final ResourceKey<TrimPattern> NUGGET = ResourceKey.create(Registries.TRIM_PATTERN, NUGGET_LOCATION);
public static void bootstrap(BootstrapContext<TrimPattern> context) {
register(context, ModItems.NUGGET_SMITHING_TEMPLATE.get(), NUGGET);
register(context, ModItems.NUGGET_SMITHING_TEMPLATE.get(), NUGGET, NUGGET_LOCATION);
}
private static void register(BootstrapContext<TrimPattern> context, Item item, ResourceKey<TrimPattern> key) {
TrimPattern trimPattern = new TrimPattern(key.location(), ForgeRegistries.ITEMS.getHolder(item).get(),
Component.translatable(Util.makeDescriptionId("trim_pattern", key.location())), false);
private static void register(BootstrapContext<TrimPattern> context, Item item, ResourceKey<TrimPattern> key, Identifier assetId) {
TrimPattern trimPattern = new TrimPattern(assetId,
Component.translatable(Util.makeDescriptionId("trim_pattern", assetId)), false);
context.register(key, trimPattern);
}
}

View File

@@ -1,4 +1,4 @@
package xyz.sillyangel.nugget.util;
package dev.sillyangel.nuggetmod.util;
public class ModItemProperites {
// i dont know what to put here?!

View File

@@ -1,29 +1,29 @@
package xyz.sillyangel.nugget.util;
import xyz.sillyangel.nugget.NuggetMod;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
public class ModTags {
public static class Blocks {
public static final TagKey<Block> NEEDS_NUGGET_TOOL = createTag("needs_nugget_tool");
public static final TagKey<Block> INCORRECT_FOR_NUGGET_TOOL = createTag("incorrect_for_nugget_tool");
private static TagKey<Block> createTag(String name) {
return BlockTags.create(ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name));
}
}
public static class Items {
public static final TagKey<Item> TRANSFORMABLE_ITEMS = createTag("transformable_items");
public static final TagKey<Item> NUGGET_REPAIRS = createTag("nugget_repairs");
private static TagKey<Item> createTag(String name) {
return ItemTags.create(ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name));
}
}
package dev.sillyangel.nuggetmod.util;
import dev.sillyangel.nuggetmod.NuggetMod;
import net.minecraft.resources.Identifier;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
public class ModTags {
public static class Blocks {
public static final TagKey<Block> NEEDS_NUGGET_TOOL = createTag("needs_nugget_tool");
public static final TagKey<Block> INCORRECT_FOR_NUGGET_TOOL = createTag("incorrect_for_nugget_tool");
private static TagKey<Block> createTag(String name) {
return BlockTags.create(Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name));
}
}
public static class Items {
public static final TagKey<Item> TRANSFORMABLE_ITEMS = createTag("transformable_items");
public static final TagKey<Item> NUGGET_REPAIRS = createTag("nugget_repairs");
private static TagKey<Item> createTag(String name) {
return ItemTags.create(Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name));
}
}
}

View File

@@ -0,0 +1,42 @@
package dev.sillyangel.nuggetmod.villager;
import com.google.common.collect.ImmutableSet;
import dev.sillyangel.nuggetmod.NuggetMod;
import dev.sillyangel.nuggetmod.block.ModBlocks;
import dev.sillyangel.nuggetmod.sound.ModSounds;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.Identifier;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.entity.ai.village.poi.PoiType;
import net.minecraft.world.entity.npc.villager.VillagerProfession;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public class ModVillagers {
public static final DeferredRegister<PoiType> POI_TYPES =
DeferredRegister.create(ForgeRegistries.POI_TYPES, NuggetMod.MOD_ID);
public static final DeferredRegister<VillagerProfession> VILLAGER_PROFESSIONS =
DeferredRegister.create(ForgeRegistries.VILLAGER_PROFESSIONS, NuggetMod.MOD_ID);
public static final ResourceKey<VillagerProfession> NUGGETER_KEY =
ResourceKey.create(Registries.VILLAGER_PROFESSION, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, "nuggeter"));
public static final RegistryObject<PoiType> NUGGETER_POI = POI_TYPES.register("nuggeter_poi",
() -> new PoiType(ImmutableSet.copyOf(ModBlocks.NUGGET_BLOCK.get().getStateDefinition().getPossibleStates()),
1, 1));
public static final RegistryObject<VillagerProfession> NUGGETER = VILLAGER_PROFESSIONS.register("nuggeter",
() -> new VillagerProfession(Component.literal("Nuggeter"), holder -> holder.value() == NUGGETER_POI.get(),
holder -> holder.value() == NUGGETER_POI.get(), ImmutableSet.of(), ImmutableSet.of(),
ModSounds.NUGGET_THEME.get()));
public static void register(BusGroup eventBus) {
POI_TYPES.register(eventBus);
VILLAGER_PROFESSIONS.register(eventBus);
}
}

View File

@@ -1,14 +1,14 @@
package xyz.sillyangel.nugget.worldgen;
package dev.sillyangel.nuggetmod.worldgen;
import net.minecraft.core.HolderSet;
import net.minecraft.tags.BiomeTags;
import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraftforge.common.world.ForgeBiomeModifiers;
import xyz.sillyangel.nugget.NuggetMod;
import dev.sillyangel.nuggetmod.NuggetMod;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.worldgen.BootstrapContext;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.resources.Identifier;
import net.minecraftforge.common.world.BiomeModifier;
import net.minecraftforge.registries.ForgeRegistries;
@@ -29,6 +29,6 @@ public class ModBiomeModifiers {
}
private static ResourceKey<BiomeModifier> registerKey(String name) {
return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name));
return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name));
}
}

View File

@@ -1,18 +1,18 @@
package xyz.sillyangel.nugget.worldgen;
package dev.sillyangel.nuggetmod.worldgen;
import net.minecraft.tags.BlockTags;
import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration;
import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest;
import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest;
import xyz.sillyangel.nugget.NuggetMod;
import dev.sillyangel.nuggetmod.NuggetMod;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.worldgen.BootstrapContext;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.resources.Identifier;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration;
import xyz.sillyangel.nugget.block.ModBlocks;
import dev.sillyangel.nuggetmod.block.ModBlocks;
import java.util.List;
@@ -34,7 +34,7 @@ public class ModConfiguredFeatures {
}
public static ResourceKey<ConfiguredFeature<?, ?>> registerKey(String name) {
return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name));
return ResourceKey.create(Registries.CONFIGURED_FEATURE, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name));
}
private static <FC extends FeatureConfiguration, F extends Feature<FC>> void register(BootstrapContext<ConfiguredFeature<?, ?>> context,

View File

@@ -1,4 +1,4 @@
package xyz.sillyangel.nugget.worldgen;
package dev.sillyangel.nuggetmod.worldgen;
import net.minecraft.world.level.levelgen.placement.*;

View File

@@ -1,13 +1,13 @@
package xyz.sillyangel.nugget.worldgen;
package dev.sillyangel.nuggetmod.worldgen;
import net.minecraft.world.level.levelgen.VerticalAnchor;
import net.minecraft.world.level.levelgen.placement.HeightRangePlacement;
import xyz.sillyangel.nugget.NuggetMod;
import dev.sillyangel.nuggetmod.NuggetMod;
import net.minecraft.core.Holder;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.worldgen.BootstrapContext;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.resources.Identifier;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import net.minecraft.world.level.levelgen.placement.PlacementModifier;
@@ -28,7 +28,7 @@ public class ModPlacedFeatures {
}
private static ResourceKey<PlacedFeature> registerKey(String name) {
return ResourceKey.create(Registries.PLACED_FEATURE, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, name));
return ResourceKey.create(Registries.PLACED_FEATURE, Identifier.fromNamespaceAndPath(NuggetMod.MOD_ID, name));
}
private static void register(BootstrapContext<PlacedFeature> context, ResourceKey<PlacedFeature> key, Holder<ConfiguredFeature<?, ?>> configuration,

View File

@@ -1,63 +0,0 @@
package xyz.sillyangel.nugget;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.config.ModConfigEvent;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
// An example config class. This is not required, but it's a good idea to have one to keep your config organized.
// Demonstrates how to use Forge's config APIs
@Mod.EventBusSubscriber(modid = NuggetMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class Config
{
private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder();
private static final ForgeConfigSpec.BooleanValue LOG_DIRT_BLOCK = BUILDER
.comment("Whether to log the dirt block on common setup")
.define("logDirtBlock", true);
private static final ForgeConfigSpec.IntValue MAGIC_NUMBER = BUILDER
.comment("A magic number")
.defineInRange("magicNumber", 42, 0, Integer.MAX_VALUE);
public static final ForgeConfigSpec.ConfigValue<String> MAGIC_NUMBER_INTRODUCTION = BUILDER
.comment("What you want the introduction message to be for the magic number")
.define("magicNumberIntroduction", "The magic number is... ");
// a list of strings that are treated as resource locations for items
private static final ForgeConfigSpec.ConfigValue<List<? extends String>> ITEM_STRINGS = BUILDER
.comment("A list of items to log on common setup.")
.defineListAllowEmpty("items", List.of("minecraft:iron_ingot"), Config::validateItemName);
static final ForgeConfigSpec SPEC = BUILDER.build();
public static boolean logDirtBlock;
public static int magicNumber;
public static String magicNumberIntroduction;
public static Set<Item> items;
private static boolean validateItemName(final Object obj)
{
return obj instanceof final String itemName && ForgeRegistries.ITEMS.containsKey(ResourceLocation.tryParse(itemName));
}
@SubscribeEvent
static void onLoad(final ModConfigEvent event)
{
logDirtBlock = LOG_DIRT_BLOCK.get();
magicNumber = MAGIC_NUMBER.get();
magicNumberIntroduction = MAGIC_NUMBER_INTRODUCTION.get();
// convert the list of strings into a set of items
items = ITEM_STRINGS.get().stream()
.map(itemName -> ForgeRegistries.ITEMS.getValue(ResourceLocation.tryParse(itemName)))
.collect(Collectors.toSet());
}
}

View File

@@ -1,41 +0,0 @@
package xyz.sillyangel.nugget.datagen;
import xyz.sillyangel.nugget.NuggetMod;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraft.data.loot.LootTableProvider;
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
import net.minecraftforge.common.data.BlockTagsProvider;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.data.event.GatherDataEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
@Mod.EventBusSubscriber(modid = NuggetMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class DataGenerators {
@SubscribeEvent
public static void gatherData(GatherDataEvent event) {
DataGenerator generator = event.getGenerator();
PackOutput packOutput = generator.getPackOutput();
ExistingFileHelper existingFileHelper = event.getExistingFileHelper();
CompletableFuture<HolderLookup.Provider> lookupProvider = event.getLookupProvider();
generator.addProvider(event.includeServer(), new LootTableProvider(packOutput, Collections.emptySet(),
List.of(new LootTableProvider.SubProviderEntry(ModBlockLootTableProvider::new, LootContextParamSets.BLOCK)), lookupProvider));
generator.addProvider(event.includeServer(), new ModRecipeProvider.Runner(packOutput, lookupProvider));
BlockTagsProvider blockTagsProvider = new ModBlockTagProvider(packOutput, lookupProvider, existingFileHelper);
generator.addProvider(event.includeServer(), blockTagsProvider);
generator.addProvider(event.includeServer(), new ModItemTagProvider(packOutput, lookupProvider, blockTagsProvider.contentsGetter(), existingFileHelper));
generator.addProvider(event.includeClient(), new ModItemModelProvider(packOutput, existingFileHelper));
generator.addProvider(event.includeClient(), new ModBlockStateProvider(packOutput, existingFileHelper));
generator.addProvider(event.includeServer(), new ModDatapackEntries(packOutput, lookupProvider));
}
}

View File

@@ -1,55 +0,0 @@
package xyz.sillyangel.nugget.datagen;
import xyz.sillyangel.nugget.block.ModBlocks;
import xyz.sillyangel.nugget.item.ModItems;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.loot.BlockLootSubProvider;
import net.minecraft.world.flag.FeatureFlags;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.storage.loot.LootTable;
import net.minecraft.world.level.storage.loot.entries.LootItem;
import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer;
import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount;
import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction;
import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator;
import net.minecraftforge.registries.RegistryObject;
import java.util.Set;
public class ModBlockLootTableProvider extends BlockLootSubProvider {
protected ModBlockLootTableProvider(HolderLookup.Provider pRegistries) {
super(Set.of(), FeatureFlags.REGISTRY.allFlags(), pRegistries);
}
@Override
protected void generate() {
dropSelf(ModBlocks.NUGGET_BLOCK.get());
dropSelf(ModBlocks.RAW_NUGGET_BLOCK.get());
this.add(ModBlocks.NUGGET_ORE.get(),
block -> createOreDrop(ModBlocks.NUGGET_ORE.get(), ModItems.RAW_NUGGET.get()));
this.add(ModBlocks.NUGGET_DEEPSLATE_ORE.get(),
block -> createMultipleOreDrops(ModBlocks.NUGGET_DEEPSLATE_ORE.get(), ModItems.RAW_NUGGET.get(), 2, 6));
}
protected LootTable.Builder createMultipleOreDrops(Block pBlock, Item item, float minDrops, float maxDrops) {
HolderLookup.RegistryLookup<Enchantment> registrylookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT);
return this.createSilkTouchDispatchTable(
pBlock, this.applyExplosionDecay(
pBlock, LootItem.lootTableItem(item)
.apply(SetItemCountFunction.setCount(UniformGenerator.between(minDrops, maxDrops)))
.apply(ApplyBonusCount.addOreBonusCount(registrylookup.getOrThrow(Enchantments.FORTUNE)))
)
);
}
@Override
protected Iterable<Block> getKnownBlocks() {
return ModBlocks.BLOCKS.getEntries().stream().map(RegistryObject::get)::iterator;
}
}

View File

@@ -1,29 +0,0 @@
package xyz.sillyangel.nugget.datagen;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.block.ModBlocks;
import net.minecraft.data.PackOutput;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.client.model.generators.BlockStateProvider;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.registries.RegistryObject;
public class ModBlockStateProvider extends BlockStateProvider {
public ModBlockStateProvider(PackOutput output, ExistingFileHelper exFileHelper) {
super(output, NuggetMod.MOD_ID, exFileHelper);
}
@Override
protected void registerStatesAndModels() {
blockWithItem(ModBlocks.NUGGET_BLOCK);
blockWithItem(ModBlocks.RAW_NUGGET_BLOCK);
blockWithItem(ModBlocks.NUGGET_ORE);
blockWithItem(ModBlocks.NUGGET_DEEPSLATE_ORE);
}
private void blockWithItem(RegistryObject<Block> blockRegistryObject) {
simpleBlockWithItem(blockRegistryObject.get(), cubeAll(blockRegistryObject.get()));
}
}

View File

@@ -1,42 +0,0 @@
package xyz.sillyangel.nugget.datagen;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.block.ModBlocks;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.tags.BlockTags;
import net.minecraftforge.common.data.BlockTagsProvider;
import net.minecraftforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.Nullable;
import xyz.sillyangel.nugget.util.ModTags;
import java.util.concurrent.CompletableFuture;
public class ModBlockTagProvider extends BlockTagsProvider {
public ModBlockTagProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> lookupProvider, @Nullable ExistingFileHelper existingFileHelper) {
super(output, lookupProvider, NuggetMod.MOD_ID, existingFileHelper);
}
@Override
protected void addTags(HolderLookup.Provider pProvider) {
tag(BlockTags.MINEABLE_WITH_PICKAXE)
.add(ModBlocks.NUGGET_BLOCK.get())
.add(ModBlocks.RAW_NUGGET_BLOCK.get())
.add(ModBlocks.NUGGET_ORE.get())
.add(ModBlocks.NUGGET_DEEPSLATE_ORE.get());
tag(BlockTags.NEEDS_STONE_TOOL)
.add(ModBlocks.NUGGET_DEEPSLATE_ORE.get())
.add(ModBlocks.RAW_NUGGET_BLOCK.get());
// tag(BlockTags.NEEDS_STONE_TOOL)
tag(ModTags.Blocks.NEEDS_NUGGET_TOOL)
.add(ModBlocks.RAW_NUGGET_BLOCK.get())
.addTag(BlockTags.NEEDS_DIAMOND_TOOL);
tag(ModTags.Blocks.INCORRECT_FOR_NUGGET_TOOL)
.addTag(BlockTags.INCORRECT_FOR_DIAMOND_TOOL)
.remove(ModTags.Blocks.NEEDS_NUGGET_TOOL);
}
}

View File

@@ -1,31 +0,0 @@
package xyz.sillyangel.nugget.datagen;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.trim.ModTrimMaterials;
import xyz.sillyangel.nugget.trim.ModTrimPatterns;
import xyz.sillyangel.nugget.worldgen.ModBiomeModifiers;
import xyz.sillyangel.nugget.worldgen.ModConfiguredFeatures;
import xyz.sillyangel.nugget.worldgen.ModPlacedFeatures;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.RegistrySetBuilder;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.PackOutput;
import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
public class ModDatapackEntries extends DatapackBuiltinEntriesProvider {
public static final RegistrySetBuilder BUILDER = new RegistrySetBuilder()
.add(Registries.TRIM_MATERIAL, ModTrimMaterials::bootstrap)
.add(Registries.TRIM_PATTERN, ModTrimPatterns::bootstrap)
.add(Registries.CONFIGURED_FEATURE, ModConfiguredFeatures::bootstrap)
.add(Registries.PLACED_FEATURE, ModPlacedFeatures::bootstrap)
.add(ForgeRegistries.Keys.BIOME_MODIFIERS, ModBiomeModifiers::bootstrap);
public ModDatapackEntries(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
super(output, registries, BUILDER, Set.of(NuggetMod.MOD_ID));
}
}

View File

@@ -1,134 +0,0 @@
package xyz.sillyangel.nugget.datagen;
import net.minecraft.world.item.equipment.trim.TrimMaterial;
import net.minecraft.world.item.equipment.trim.TrimMaterials;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.item.ModItems;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.client.model.generators.ItemModelBuilder;
import net.minecraftforge.client.model.generators.ItemModelProvider;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.packs.PackType;
import net.minecraft.world.item.ArmorItem;
import net.minecraftforge.client.model.generators.ModelFile;
import java.util.LinkedHashMap;
public class ModItemModelProvider extends ItemModelProvider {
private static LinkedHashMap<ResourceKey<TrimMaterial>, Float> trimMaterials = new LinkedHashMap<>();
static {
trimMaterials.put(TrimMaterials.QUARTZ, 0.1F);
trimMaterials.put(TrimMaterials.IRON, 0.2F);
trimMaterials.put(TrimMaterials.NETHERITE, 0.3F);
trimMaterials.put(TrimMaterials.REDSTONE, 0.4F);
trimMaterials.put(TrimMaterials.COPPER, 0.5F);
trimMaterials.put(TrimMaterials.GOLD, 0.6F);
trimMaterials.put(TrimMaterials.EMERALD, 0.7F);
trimMaterials.put(TrimMaterials.DIAMOND, 0.8F);
trimMaterials.put(TrimMaterials.LAPIS, 0.9F);
trimMaterials.put(TrimMaterials.AMETHYST, 1.0F);
}
public ModItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) {
super(output, NuggetMod.MOD_ID, existingFileHelper);
}
@Override
protected void registerModels() {
basicItem(ModItems.NUGGET_HORSE_ARMOR.get());
basicItem(ModItems.NUGGET_SMITHING_TEMPLATE.get());
basicItem(ModItems.NUGGET.get());
basicItem(ModItems.RAW_NUGGET.get());
basicItem(ModItems.NUGGET_MUSIC_DISC.get());
handheldItem(ModItems.NUGGET_SWORD);
handheldItem(ModItems.NUGGET_PICKAXE);
handheldItem(ModItems.NUGGET_SHOVEL);
handheldItem(ModItems.NUGGET_AXE);
handheldItem(ModItems.NUGGET_HOE);
trimmedArmorItem(ModItems.NUGGET_HELMET);
trimmedArmorItem(ModItems.NUGGET_CHESTPLATE);
trimmedArmorItem(ModItems.NUGGET_LEGGINGS);
trimmedArmorItem(ModItems.NUGGET_BOOTS);
}
private void trimmedArmorItem(RegistryObject<Item> itemRegistryObject) {
final String MOD_ID = NuggetMod.MOD_ID; // Change this to your mod id
if (itemRegistryObject.get() instanceof ArmorItem armorItem) {
trimMaterials.forEach((trimMaterial, value) -> {
float trimValue = value;
String armorType = "";
if(armorItem.toString().contains("helmet")) {
armorType = "helmet";
} else if(armorItem.toString().contains("chestplate")) {
armorType = "chestplate";
} else if(armorItem.toString().contains("leggings")) {
armorType = "leggings";
} else if(armorItem.toString().contains("boots")) {
armorType = "boots";
}
String armorItemPath = armorItem.toString();
String trimPath = "trims/items/" + armorType + "_trim_" + trimMaterial.location().getPath();
String currentTrimName = armorItemPath + "_" + trimMaterial.location().getPath() + "_trim";
ResourceLocation armorItemResLoc = ResourceLocation.parse(armorItemPath);
ResourceLocation trimResLoc = ResourceLocation.parse(trimPath); // minecraft namespace
ResourceLocation trimNameResLoc = ResourceLocation.parse(currentTrimName);
// This is used for making the ExistingFileHelper acknowledge that this texture exist, so this will
// avoid an IllegalArgumentException
existingFileHelper.trackGenerated(trimResLoc, PackType.CLIENT_RESOURCES, ".png", "textures");
// Trimmed armorItem files
getBuilder(currentTrimName)
.parent(new ModelFile.UncheckedModelFile("item/generated"))
.texture("layer0", armorItemResLoc.getNamespace() + ":item/" + armorItemResLoc.getPath())
.texture("layer1", trimResLoc);
// Non-trimmed armorItem file (normal variant)
this.withExistingParent(itemRegistryObject.getId().getPath(),
mcLoc("item/generated"))
.override()
.model(new ModelFile.UncheckedModelFile(trimNameResLoc.getNamespace() + ":item/" + trimNameResLoc.getPath()))
.predicate(mcLoc("trim_type"), trimValue).end()
.texture("layer0",
ResourceLocation.fromNamespaceAndPath(MOD_ID,
"item/" + itemRegistryObject.getId().getPath()));
});
}
}
private ItemModelBuilder handheldItem(RegistryObject<Item> item) {
return withExistingParent(item.getId().getPath(),
ResourceLocation.parse("item/handheld")).texture("layer0",
ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID,"item/" + item.getId().getPath()));
}
public void buttonItem(RegistryObject<? extends Block> block, RegistryObject<Block> baseBlock) {
this.withExistingParent(ForgeRegistries.BLOCKS.getKey(block.get()).getPath(), mcLoc("block/button_inventory"))
.texture("texture", ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID,
"block/" + ForgeRegistries.BLOCKS.getKey(baseBlock.get()).getPath()));
}
public void fenceItem(RegistryObject<? extends Block> block, RegistryObject<Block> baseBlock) {
this.withExistingParent(ForgeRegistries.BLOCKS.getKey(block.get()).getPath(), mcLoc("block/fence_inventory"))
.texture("texture", ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID,
"block/" + ForgeRegistries.BLOCKS.getKey(baseBlock.get()).getPath()));
}
public void wallItem(RegistryObject<? extends Block> block, RegistryObject<Block> baseBlock) {
this.withExistingParent(ForgeRegistries.BLOCKS.getKey(block.get()).getPath(), mcLoc("block/wall_inventory"))
.texture("wall", ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID,
"block/" + ForgeRegistries.BLOCKS.getKey(baseBlock.get()).getPath()));
}
private ItemModelBuilder simpleBlockItem(RegistryObject<? extends Block> item) {
return withExistingParent(item.getId().getPath(),
ResourceLocation.parse("item/generated")).texture("layer0",
ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID,"item/" + item.getId().getPath()));
}
}

View File

@@ -1,44 +0,0 @@
package xyz.sillyangel.nugget.datagen;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.item.ModItems;
import xyz.sillyangel.nugget.util.ModTags;
import net.minecraft.core.HolderLookup;
import net.minecraft.tags.ItemTags;
import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.ItemTagsProvider;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.Nullable;
import java.util.concurrent.CompletableFuture;
public class ModItemTagProvider extends ItemTagsProvider {
public ModItemTagProvider(PackOutput packOutput, CompletableFuture<HolderLookup.Provider> completableFuture,
CompletableFuture<TagLookup<Block>> lookupCompletableFuture, @Nullable ExistingFileHelper existingFileHelper) {
super(packOutput, completableFuture, lookupCompletableFuture, NuggetMod.MOD_ID, existingFileHelper);
}
@Override
protected void addTags(HolderLookup.Provider pProvider) {
tag(ModTags.Items.TRANSFORMABLE_ITEMS)
.add(ModItems.NUGGET.get())
.add(ModItems.RAW_NUGGET.get())
.add(Items.COAL)
.add(Items.STICK)
.add(Items.COMPASS);
tag(ItemTags.TRIMMABLE_ARMOR)
.add(ModItems.NUGGET_HELMET.get())
.add(ModItems.NUGGET_CHESTPLATE.get())
.add(ModItems.NUGGET_LEGGINGS.get())
.add(ModItems.NUGGET_BOOTS.get());
tag(ItemTags.TRIM_MATERIALS)
.add(ModItems.NUGGET.get());
tag(ItemTags.TRIM_TEMPLATES)
.add(ModItems.NUGGET_SMITHING_TEMPLATE.get());
tag(ModTags.Items.NUGGET_REPAIRS)
.add(ModItems.NUGGET.get());
}
}

View File

@@ -1,173 +0,0 @@
package xyz.sillyangel.nugget.datagen;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.Items;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.block.ModBlocks;
import xyz.sillyangel.nugget.item.ModItems;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.data.recipes.*;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.crafting.*;
import net.minecraft.world.level.ItemLike;
import net.minecraftforge.common.crafting.conditions.IConditionBuilder;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public class ModRecipeProvider extends RecipeProvider implements IConditionBuilder {
public ModRecipeProvider(HolderLookup.Provider lookup, RecipeOutput recipeOutput) {
super(lookup, recipeOutput);
}
public static class Runner extends RecipeProvider.Runner {
public Runner(PackOutput output, CompletableFuture<HolderLookup.Provider> providerCompletableFuture) {
super(output, providerCompletableFuture);
}
@Override
protected RecipeProvider createRecipeProvider(HolderLookup.Provider provider, RecipeOutput recipeOutput) {
return new ModRecipeProvider(provider, recipeOutput);
}
@Override
public String getName() {
return "Recipes";
}
}
@Override
protected void buildRecipes() {
List<ItemLike> NUGGET_SMELTABLES = List.of(ModItems.RAW_NUGGET.get(),
ModBlocks.NUGGET_ORE.get(), ModBlocks.NUGGET_DEEPSLATE_ORE.get());
shaped(RecipeCategory.MISC, ModBlocks.NUGGET_BLOCK.get())
.pattern("AAA")
.pattern("AAA")
.pattern("AAA")
.define('A', ModItems.NUGGET.get())
.unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output);
shapeless(RecipeCategory.MISC, ModItems.NUGGET.get(), 9)
.requires(ModBlocks.NUGGET_BLOCK.get())
.unlockedBy(getHasName(ModBlocks.NUGGET_BLOCK.get()), has(ModBlocks.NUGGET_BLOCK.get())).save(this.output);
// RAW NUGGET
shaped(RecipeCategory.MISC, ModBlocks.RAW_NUGGET_BLOCK.get())
.pattern("AAA")
.pattern("AAA")
.pattern("AAA")
.define('A', ModItems.RAW_NUGGET.get())
.unlockedBy(getHasName(ModItems.RAW_NUGGET.get()), has(ModItems.RAW_NUGGET.get())).save(this.output);
shapeless(RecipeCategory.MISC, ModItems.RAW_NUGGET.get(), 9)
.requires(ModBlocks.RAW_NUGGET_BLOCK.get())
.unlockedBy(getHasName(ModBlocks.RAW_NUGGET_BLOCK.get()), has(ModBlocks.RAW_NUGGET_BLOCK.get())).save(this.output);
// TOOLS
//SWORD
shaped(RecipeCategory.COMBAT, ModItems.NUGGET_SWORD.get())
.pattern(" A ")
.pattern(" A ")
.pattern(" B ")
.define('A', ModItems.NUGGET.get())
.define('B', Items.STICK)
.unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output);
//PICAXE
shaped(RecipeCategory.TOOLS, ModItems.NUGGET_PICKAXE.get())
.pattern("AAA")
.pattern(" B ")
.pattern(" B ")
.define('A', ModItems.NUGGET.get())
.define('B', Items.STICK)
.unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output);
//AXE
shaped(RecipeCategory.TOOLS, ModItems.NUGGET_AXE.get())
.pattern(" AA")
.pattern(" BA")
.pattern(" B ")
.define('A', ModItems.NUGGET.get())
.define('B', Items.STICK)
.unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output);
//SHOVEL
shaped(RecipeCategory.TOOLS, ModItems.NUGGET_SHOVEL.get())
.pattern(" A ")
.pattern(" B ")
.pattern(" B ")
.define('A', ModItems.NUGGET.get())
.define('B', Items.STICK)
.unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output);
//HOE
shaped(RecipeCategory.TOOLS, ModItems.NUGGET_HOE.get())
.pattern(" AA")
.pattern(" B ")
.pattern(" B ")
.define('A', ModItems.NUGGET.get())
.define('B', Items.STICK)
.unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output);
// END OF TOOLS
// start of armor
// head!?!
shaped(RecipeCategory.COMBAT, ModItems.NUGGET_HELMET.get())
.pattern("AAA")
.pattern("A A")
.pattern(" ")
.define('A', ModItems.NUGGET.get())
.unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output);
//shirt
shaped(RecipeCategory.COMBAT, ModItems.NUGGET_CHESTPLATE.get())
.pattern("A A")
.pattern("AAA")
.pattern("AAA")
.define('A', ModItems.NUGGET.get())
.unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output);
//pants?
shaped(RecipeCategory.COMBAT, ModItems.NUGGET_LEGGINGS.get())
.pattern("AAA")
.pattern("A A")
.pattern("A A")
.define('A', ModItems.NUGGET.get())
.unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output);
//socks
shaped(RecipeCategory.COMBAT, ModItems.NUGGET_BOOTS.get())
.pattern(" ")
.pattern("A A")
.pattern("A A")
.define('A', ModItems.NUGGET.get())
.unlockedBy(getHasName(ModItems.NUGGET.get()), has(ModItems.NUGGET.get())).save(this.output);
trimSmithing(ModItems.NUGGET_SMITHING_TEMPLATE.get(), ResourceKey.create(Registries.RECIPE,
ResourceLocation.parse(getItemName(ModItems.NUGGET_SMITHING_TEMPLATE.get()) + "_smithing_trim")));
oreSmelting(this.output, NUGGET_SMELTABLES, RecipeCategory.MISC, ModItems.NUGGET.get(), 0.25f, 200, "nugget");
oreBlasting(this.output, NUGGET_SMELTABLES, RecipeCategory.MISC, ModItems.NUGGET.get(), 0.25f, 100, "nugget");
}
protected void oreSmelting(RecipeOutput recipeOutput, List<ItemLike> pIngredients, RecipeCategory pCategory, ItemLike pResult,
float pExperience, int pCookingTIme, String pGroup) {
oreCooking(recipeOutput, RecipeSerializer.SMELTING_RECIPE, SmeltingRecipe::new, pIngredients, pCategory, pResult,
pExperience, pCookingTIme, pGroup, "_from_smelting");
}
protected void oreBlasting(RecipeOutput recipeOutput, List<ItemLike> pIngredients, RecipeCategory pCategory, ItemLike pResult,
float pExperience, int pCookingTime, String pGroup) {
oreCooking(recipeOutput, RecipeSerializer.BLASTING_RECIPE, BlastingRecipe::new, pIngredients, pCategory, pResult,
pExperience, pCookingTime, pGroup, "_from_blasting");
}
protected <T extends AbstractCookingRecipe> void oreCooking(RecipeOutput recipeOutput, RecipeSerializer<T> pCookingSerializer, AbstractCookingRecipe.Factory<T> factory,
List<ItemLike> pIngredients, RecipeCategory pCategory, ItemLike pResult, float pExperience, int pCookingTime, String pGroup, String pRecipeName) {
for(ItemLike itemlike : pIngredients) {
SimpleCookingRecipeBuilder.generic(Ingredient.of(itemlike), pCategory, pResult, pExperience, pCookingTime, pCookingSerializer, factory).group(pGroup).unlockedBy(getHasName(itemlike), has(itemlike))
.save(recipeOutput, NuggetMod.MOD_ID + ":" + getItemName(pResult) + pRecipeName + "_" + getItemName(itemlike));
}
}
}

View File

@@ -1,22 +0,0 @@
package xyz.sillyangel.nugget.item;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.util.ModTags;
import net.minecraft.Util;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.world.item.equipment.ArmorMaterial;
import net.minecraft.world.item.equipment.ArmorType;
import java.util.EnumMap;
public class ModArmorMaterials {
public static final ArmorMaterial NUGGET_ARMOR_MATERIAL = new ArmorMaterial(1200, Util.make(new EnumMap<>(ArmorType.class),
attribute -> {
attribute.put(ArmorType.BOOTS, 5);
attribute.put(ArmorType.LEGGINGS, 7);
attribute.put(ArmorType.CHESTPLATE, 9);
attribute.put(ArmorType.HELMET, 5);
attribute.put(ArmorType.BODY, 11);
}), 15, SoundEvents.ARMOR_EQUIP_NETHERITE,
4f, 0.1f, ModTags.Items.NUGGET_REPAIRS, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget"));
}

View File

@@ -1,97 +0,0 @@
package xyz.sillyangel.nugget.item;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.equipment.ArmorType;
import xyz.sillyangel.nugget.NuggetMod;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.registries.RegistryObject;
import net.minecraft.world.item.*;
import xyz.sillyangel.nugget.sound.ModSounds;
import java.util.List;
public class ModItems {
public static final DeferredRegister<Item> ITEMS =
DeferredRegister.create(ForgeRegistries.ITEMS, NuggetMod.MOD_ID);
public static final RegistryObject<Item> NUGGET = ITEMS.register("nugget",
() -> new Item(new Item.Properties().setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget")))
.food(ModFoodProperties.Nugget)) {
@Override
public void appendHoverText(ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponent, TooltipFlag pTooltipFlag) {
pTooltipComponent.add(Component.translatable("item.nuggetmod.nugget.tooltip"));
super.appendHoverText(pStack, pContext, pTooltipComponent, pTooltipFlag);
}
});
public static final RegistryObject<Item> RAW_NUGGET = ITEMS.register("raw_nugget",
() -> new Item(new Item.Properties().setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "raw_nugget")))));
public static final RegistryObject<Item> NUGGET_SWORD = ITEMS.register("nugget_sword",
() -> new SwordItem(ModToolTiers.NUGGET, 3, -2.4f, new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_sword")))));
public static final RegistryObject<Item> NUGGET_PICKAXE = ITEMS.register("nugget_pickaxe",
() -> new PickaxeItem(ModToolTiers.NUGGET, 1, -2.8f, new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_pickaxe")))));
public static final RegistryObject<Item> NUGGET_SHOVEL = ITEMS.register("nugget_shovel",
() -> new ShovelItem(ModToolTiers.NUGGET, 1.5f, -3.0f, new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_shovel")))));
public static final RegistryObject<Item> NUGGET_AXE = ITEMS.register("nugget_axe",
() -> new AxeItem(ModToolTiers.NUGGET, 6, -3.2f, new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_axe")))));
public static final RegistryObject<Item> NUGGET_HOE = ITEMS.register("nugget_hoe",
() -> new HoeItem(ModToolTiers.NUGGET, 0, -3.0f, new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_hoe")))));
// armor things
public static final RegistryObject<Item> NUGGET_HELMET = ITEMS.register("nugget_helmet",
() -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.HELMET,
new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_helmet")))));
public static final RegistryObject<Item> NUGGET_CHESTPLATE = ITEMS.register("nugget_chestplate",
() -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.CHESTPLATE,
new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_chestplate")))));
public static final RegistryObject<Item> NUGGET_LEGGINGS = ITEMS.register("nugget_leggings",
() -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.LEGGINGS,
new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_leggings")))));
public static final RegistryObject<Item> NUGGET_BOOTS = ITEMS.register("nugget_boots",
() -> new ArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, ArmorType.BOOTS,
new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_boots")))));
// horse armor
public static final RegistryObject<Item> NUGGET_HORSE_ARMOR = ITEMS.register("nugget_horse_armor",
() -> new AnimalArmorItem(ModArmorMaterials.NUGGET_ARMOR_MATERIAL, AnimalArmorItem.BodyType.EQUESTRIAN, new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_horse_armor")))
.stacksTo(1)));
// smithing temp
public static final RegistryObject<Item> NUGGET_SMITHING_TEMPLATE = ITEMS.register("nugget_armor_trim_smithing_template",
() -> SmithingTemplateItem.createArmorTrimTemplate(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_armor_trim_smithing_template")))));
public static final RegistryObject<Item> NUGGET_MUSIC_DISC = ITEMS.register("nugget_music_disc",
() -> new Item(new Item.Properties()
.setId(ResourceKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget_music_disc")))
.jukeboxPlayable(ModSounds.NUGGET_THEME_KEY).stacksTo(1)));
public static void register(IEventBus eventBus) {
ITEMS.register(eventBus);
}
}

View File

@@ -1,31 +0,0 @@
package xyz.sillyangel.nugget.trim;
import xyz.sillyangel.nugget.NuggetMod;
import xyz.sillyangel.nugget.item.ModItems;
import net.minecraft.Util;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.worldgen.BootstrapContext;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style;
import net.minecraft.network.chat.TextColor;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.equipment.trim.TrimMaterial;
import java.util.Map;
public class ModTrimMaterials {
public static final ResourceKey<TrimMaterial> NUGGET =
ResourceKey.create(Registries.TRIM_MATERIAL, ResourceLocation.fromNamespaceAndPath(NuggetMod.MOD_ID, "nugget"));
public static void bootstrap(BootstrapContext<TrimMaterial> context) {
register(context, NUGGET, ModItems.NUGGET.get(), Style.EMPTY.withColor(TextColor.parseColor("#f9b042").getOrThrow()), 0.1F);
}
private static void register(BootstrapContext<TrimMaterial> context, ResourceKey<TrimMaterial> trimKey, Item item,
Style style, float itemModelIndex) {
TrimMaterial trimmaterial = TrimMaterial.create(trimKey.location().getPath(), item, itemModelIndex,
Component.translatable(Util.makeDescriptionId("trim_material", trimKey.location())).withStyle(style), Map.of());
context.register(trimKey, trimmaterial);
}
}

View File

@@ -11,7 +11,7 @@ loaderVersion="${loader_version_range}" #mandatory This is typically bumped ever
# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here.
license="${mod_license}"
# A URL to refer people to when problems occur with this mod
#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional
issueTrackerURL="https://github.com/sillyangel/nugget" #optional
# If your mod is purely client-side and has no multiplayer functionality (be it dedicated servers or Open to LAN),
# set this to true, and Forge will set the correct displayTest for you and skip loading your mod on dedicated servers.
#clientSideOnly=true #optional - defaults to false if absent
@@ -26,9 +26,9 @@ displayName="${mod_name}" #mandatory
# A URL to query for updates for this mod. See the JSON update specification https://docs.minecraftforge.net/en/latest/misc/updatechecker/
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional
# A URL for the "homepage" for this mod, displayed in the mod UI
#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional
displayURL="https://modrinth.com/mod/nuggetmod/" #optional
# A file name (in the root of the mod JAR) containing a logo for display
#logoFile="examplemod.png" #optional
logoFile="splash.png" #optional
# A text field displayed in the mod UI
#credits="" #optional
# A text field displayed in the mod UI

View File

@@ -4,12 +4,12 @@
{
"type": "paletted_permutations",
"textures": [
"trims/entity/humanoid/coast",
"trims/entity/humanoid_leggings/coast",
"trims/entity/humanoid/sentry",
"trims/entity/humanoid_leggings/sentry",
"trims/entity/humanoid/dune",
"trims/entity/humanoid_leggings/dune",
"trims/entity/humanoid/coast",
"trims/entity/humanoid_leggings/coast",
"trims/entity/humanoid/wild",
"trims/entity/humanoid_leggings/wild",
"trims/entity/humanoid/ward",
@@ -45,22 +45,25 @@
],
"palette_key": "trims/color_palettes/trim_palette",
"permutations": {
"quartz": "trims/color_palettes/quartz",
"iron": "trims/color_palettes/iron",
"gold": "trims/color_palettes/gold",
"diamond": "trims/color_palettes/diamond",
"netherite": "trims/color_palettes/netherite",
"redstone": "trims/color_palettes/redstone",
"copper": "trims/color_palettes/copper",
"emerald": "trims/color_palettes/emerald",
"lapis": "trims/color_palettes/lapis",
"amethyst": "trims/color_palettes/amethyst",
"iron_darker": "trims/color_palettes/iron_darker",
"gold_darker": "trims/color_palettes/gold_darker",
"copper": "trims/color_palettes/copper",
"copper_darker": "trims/color_palettes/copper_darker",
"diamond": "trims/color_palettes/diamond",
"diamond_darker": "trims/color_palettes/diamond_darker",
"emerald": "trims/color_palettes/emerald",
"gold": "trims/color_palettes/gold",
"gold_darker": "trims/color_palettes/gold_darker",
"iron": "trims/color_palettes/iron",
"iron_darker": "trims/color_palettes/iron_darker",
"lapis": "trims/color_palettes/lapis",
"netherite": "trims/color_palettes/netherite",
"netherite_darker": "trims/color_palettes/netherite_darker",
"quartz": "trims/color_palettes/quartz",
"redstone": "trims/color_palettes/redstone",
"resin": "trims/color_palettes/resin",
"nugget": "nuggetmod:trims/color_palettes/nugget"
}
}
]
}
}

View File

@@ -1,5 +1,10 @@
{
"layers": {
"wolf_body": [
{
"texture": "nuggetmod:nugget"
}
],
"horse_body": [
{
"texture": "nuggetmod:nugget"

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_armor_trim_smithing_template"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_axe"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:block/nugget_block"
}
}

View File

@@ -0,0 +1,89 @@
{
"model": {
"type": "minecraft:select",
"cases": [
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_quartz_trim"
},
"when": "minecraft:quartz"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_iron_trim"
},
"when": "minecraft:iron"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_netherite_trim"
},
"when": "minecraft:netherite"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_redstone_trim"
},
"when": "minecraft:redstone"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_copper_trim"
},
"when": "minecraft:copper"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_gold_trim"
},
"when": "minecraft:gold"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_emerald_trim"
},
"when": "minecraft:emerald"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_diamond_trim"
},
"when": "minecraft:diamond"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_lapis_trim"
},
"when": "minecraft:lapis"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_amethyst_trim"
},
"when": "minecraft:amethyst"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots_resin_trim"
},
"when": "minecraft:resin"
}
],
"fallback": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_boots"
},
"property": "minecraft:trim_material"
}
}

View File

@@ -0,0 +1,89 @@
{
"model": {
"type": "minecraft:select",
"cases": [
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_quartz_trim"
},
"when": "minecraft:quartz"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_iron_trim"
},
"when": "minecraft:iron"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_netherite_trim"
},
"when": "minecraft:netherite"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_redstone_trim"
},
"when": "minecraft:redstone"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_copper_trim"
},
"when": "minecraft:copper"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_gold_trim"
},
"when": "minecraft:gold"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_emerald_trim"
},
"when": "minecraft:emerald"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_diamond_trim"
},
"when": "minecraft:diamond"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_lapis_trim"
},
"when": "minecraft:lapis"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_amethyst_trim"
},
"when": "minecraft:amethyst"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate_resin_trim"
},
"when": "minecraft:resin"
}
],
"fallback": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_chestplate"
},
"property": "minecraft:trim_material"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:block/nugget_deepslate_ore"
}
}

View File

@@ -0,0 +1,89 @@
{
"model": {
"type": "minecraft:select",
"cases": [
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_quartz_trim"
},
"when": "minecraft:quartz"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_iron_trim"
},
"when": "minecraft:iron"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_netherite_trim"
},
"when": "minecraft:netherite"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_redstone_trim"
},
"when": "minecraft:redstone"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_copper_trim"
},
"when": "minecraft:copper"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_gold_trim"
},
"when": "minecraft:gold"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_emerald_trim"
},
"when": "minecraft:emerald"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_diamond_trim"
},
"when": "minecraft:diamond"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_lapis_trim"
},
"when": "minecraft:lapis"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_amethyst_trim"
},
"when": "minecraft:amethyst"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet_resin_trim"
},
"when": "minecraft:resin"
}
],
"fallback": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_helmet"
},
"property": "minecraft:trim_material"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_hoe"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_horse_armor"
}
}

View File

@@ -0,0 +1,89 @@
{
"model": {
"type": "minecraft:select",
"cases": [
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_quartz_trim"
},
"when": "minecraft:quartz"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_iron_trim"
},
"when": "minecraft:iron"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_netherite_trim"
},
"when": "minecraft:netherite"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_redstone_trim"
},
"when": "minecraft:redstone"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_copper_trim"
},
"when": "minecraft:copper"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_gold_trim"
},
"when": "minecraft:gold"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_emerald_trim"
},
"when": "minecraft:emerald"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_diamond_trim"
},
"when": "minecraft:diamond"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_lapis_trim"
},
"when": "minecraft:lapis"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_amethyst_trim"
},
"when": "minecraft:amethyst"
},
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings_resin_trim"
},
"when": "minecraft:resin"
}
],
"fallback": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_leggings"
},
"property": "minecraft:trim_material"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_music_disc"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:block/nugget_ore"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_pickaxe"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_shovel"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_spear"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/nugget_sword"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:item/raw_nugget"
}
}

View File

@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "nuggetmod:block/raw_nugget_block"
}
}

View File

@@ -1,40 +1,50 @@
{
"item.nuggetmod.raw_nugget": "Raw Nugget",
"item.nuggetmod.nugget": "Nugget",
"item.nuggetmod.nugget_block": "Nugget Block",
"item.nuggetmod.raw_nugget_block": "Raw Nugget Block",
"item.nuggetmod.nugget_ore": "Nugget Ore",
"item.nuggetmod.nugget_deepslate_ore": "Nugget Deepslate Ore",
"item.nuggetmod.nugget_sword": "Nugget Sword",
"item.nuggetmod.nugget_pickaxe": "Nugget Pickaxe",
"item.nuggetmod.nugget_shovel": "Nugget Shovel",
"item.nuggetmod.nugget_axe": "Nugget Axe",
"item.nuggetmod.nugget_hoe": "Nugget Hoe",
"item.nuggetmod.nugget_music_disc": "Nugget Theme",
"item.nuggetmod.nugget_music_disc.desc": "Gegagedigedagedago",
"item.nuggetmod.nugget_horse_armor": "Nugget Horse Armor",
"item.nuggetmod.nugget_armor_trim_smithing_template": "§6Nugget Armor Trim",
"item.nuggetmod.nugget_helmet": "Nugget Helmet",
"item.nuggetmod.nugget_chestplate": "Nugget Chestplate",
"item.nuggetmod.nugget_leggings": "Nugget Leggings",
"item.nuggetmod.nugget_boots": "Nugget Boots",
"creativetab.nuggetmod.nugget_items": "Nugget Items",
"creativetab.nuggetmod.nugget_blocks": "Nugget Blocks",
"item.nuggetmod.nugget.tooltip": "THE NUGGET",
"trim_material.nuggetmod.nugget": "Nugget Material",
"trim_pattern.nuggetmod.nugget_trim_material": "Nugget Trim",
"trim_pattern.nuggetmod.nugget": "Nugget Trim",
"painting.nuggetmod.nugget_painting.title": "Nugget Painting",
"painting.nuggetmod.nugget_painting.author": "Nugget Mod"
{
"item.nuggetmod.raw_nugget": "Raw Nugget",
"item.nuggetmod.nugget": "Nugget",
"block.nuggetmod.nugget_block": "Nugget Block",
"block.nuggetmod.raw_nugget_block": "Raw Nugget Block",
"block.nuggetmod.nugget_ore": "Nugget Ore",
"block.nuggetmod.nugget_deepslate_ore": "Nugget Deepslate Ore",
"item.nuggetmod.nugget_sword": "Nugget Sword",
"item.nuggetmod.nugget_pickaxe": "Nugget Pickaxe",
"item.nuggetmod.nugget_shovel": "Nugget Shovel",
"item.nuggetmod.nugget_axe": "Nugget Axe",
"item.nuggetmod.nugget_hoe": "Nugget Hoe",
"item.nuggetmod.nugget_bow": "Nugget Bow",
"item.nuggetmod.nugget_crossbow": "Nugget Crossbow",
"item.nuggetmod.nugget_trident": "Nugget Trident",
"item.nuggetmod.nugget_fishing_rod": "Nugget Fishing Rod",
"item.nuggetmod.nugget_flint_and_steel": "Nugget Flint and Steel",
"item.nuggetmod.nugget_shears": "Nugget Shears",
"item.nuggetmod.nugget_shield": "Nugget Shield",
"item.nuggetmod.nugget_spear": "Nugget Spear",
"item.nuggetmod.nugget_music_disc": "Nugget Theme",
"item.nuggetmod.nugget_music_disc.desc": "Gegagedigedagedago",
"item.nuggetmod.nugget_horse_armor": "Nugget Horse Armor",
"item.nuggetmod.nugget_armor_trim_smithing_template": "Smithing Template",
"item.nuggetmod.nugget_helmet": "Nugget Helmet",
"item.nuggetmod.nugget_chestplate": "Nugget Chestplate",
"item.nuggetmod.nugget_leggings": "Nugget Leggings",
"item.nuggetmod.nugget_boots": "Nugget Boots",
"creativetab.nuggetmod.nugget_items": "Nugget Items",
"creativetab.nuggetmod.nugget_blocks": "Nugget Blocks",
"item.nuggetmod.nugget.tooltip": "THE NUGGET",
"entity.minecraft.villager.nuggeter": "Nuggeter",
"trim_material.nuggetmod.nugget": "Nugget Material",
"trim_pattern.nuggetmod.nugget_trim_material": "Nugget Trim",
"trim_pattern.nuggetmod.nugget_armor_trim_smithing_template": "§6Nugget Armor Trim",
"trim_pattern.nuggetmod.nugget": "Nugget Trim",
"painting.nuggetmod.nugget_painting.title": "Nugget Painting",
"painting.nuggetmod.nugget_painting.author": "Nugget Mod"
}

View File

@@ -2,10 +2,10 @@
"item.nuggetmod.raw_nugget": "Nugget Crudo",
"item.nuggetmod.nugget": "Nugget",
"item.nuggetmod.nugget_block": "Bloque de Nuggets",
"item.nuggetmod.raw_nugget_block": "Bloque de Nuggets Crudos",
"item.nuggetmod.nugget_ore": "Mineral de Nuggets",
"item.nuggetmod.nugget_deepslate_ore": "Mineral de Nuggets de Pizca Profunda",
"block.nuggetmod.nugget_block": "Bloque de Nuggets",
"block.nuggetmod.raw_nugget_block": "Bloque de Nuggets Crudos",
"block.nuggetmod.nugget_ore": "Mineral de Nuggets",
"block.nuggetmod.nugget_deepslate_ore": "Mineral de Nuggets de Pizca Profunda",
"item.nuggetmod.nugget_sword": "Espada de Nuggets",
"item.nuggetmod.nugget_pickaxe": "Pico de Nuggets",
@@ -17,7 +17,7 @@
"item.nuggetmod.nugget_music_disc.desc": "Gegagedigedagedago",
"item.nuggetmod.nugget_horse_armor": "Armadura de Caballo de Nuggets",
"item.nuggetmod.nugget_armor_trim_smithing_template": "§6Adorno de Armadura de Nuggets",
"item.nuggetmod.nugget_armor_trim_smithing_template": "Plantilla de Adorno de Nuggets",
"item.nuggetmod.nugget_helmet": "Casco de Nuggets",
"item.nuggetmod.nugget_chestplate": "Peto de Nuggets",

View File

@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "nuggetmod:item/nugget_boots"
}
}

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