Skip to content

Commit 692d11e

Browse files
committed
Initial Commit
0 parents  commit 692d11e

10 files changed

+714
-0
lines changed

.gitignore

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# eclipse
2+
bin
3+
eclipse
4+
*.launch
5+
.settings
6+
.metadata
7+
.classpath
8+
.project
9+
10+
# idea
11+
out
12+
production
13+
classes
14+
*.ipr
15+
*.iws
16+
*.iml
17+
.idea
18+
19+
# gradle
20+
build
21+
.gradle
22+
23+
# other
24+
run
25+
!LICENSE
26+
!README.*
27+
!.gitignore
28+
*.DS_Store*

LICENSE

+165
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
GNU LESSER GENERAL PUBLIC LICENSE
2+
Version 3, 29 June 2007
3+
4+
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
5+
Everyone is permitted to copy and distribute verbatim copies
6+
of this license document, but changing it is not allowed.
7+
8+
9+
This version of the GNU Lesser General Public License incorporates
10+
the terms and conditions of version 3 of the GNU General Public
11+
License, supplemented by the additional permissions listed below.
12+
13+
0. Additional Definitions.
14+
15+
As used herein, "this License" refers to version 3 of the GNU Lesser
16+
General Public License, and the "GNU GPL" refers to version 3 of the GNU
17+
General Public License.
18+
19+
"The Library" refers to a covered work governed by this License,
20+
other than an Application or a Combined Work as defined below.
21+
22+
An "Application" is any work that makes use of an interface provided
23+
by the Library, but which is not otherwise based on the Library.
24+
Defining a subclass of a class defined by the Library is deemed a mode
25+
of using an interface provided by the Library.
26+
27+
A "Combined Work" is a work produced by combining or linking an
28+
Application with the Library. The particular version of the Library
29+
with which the Combined Work was made is also called the "Linked
30+
Version".
31+
32+
The "Minimal Corresponding Source" for a Combined Work means the
33+
Corresponding Source for the Combined Work, excluding any source code
34+
for portions of the Combined Work that, considered in isolation, are
35+
based on the Application, and not on the Linked Version.
36+
37+
The "Corresponding Application Code" for a Combined Work means the
38+
object code and/or source code for the Application, including any data
39+
and utility programs needed for reproducing the Combined Work from the
40+
Application, but excluding the System Libraries of the Combined Work.
41+
42+
1. Exception to Section 3 of the GNU GPL.
43+
44+
You may convey a covered work under sections 3 and 4 of this License
45+
without being bound by section 3 of the GNU GPL.
46+
47+
2. Conveying Modified Versions.
48+
49+
If you modify a copy of the Library, and, in your modifications, a
50+
facility refers to a function or data to be supplied by an Application
51+
that uses the facility (other than as an argument passed when the
52+
facility is invoked), then you may convey a copy of the modified
53+
version:
54+
55+
a) under this License, provided that you make a good faith effort to
56+
ensure that, in the event an Application does not supply the
57+
function or data, the facility still operates, and performs
58+
whatever part of its purpose remains meaningful, or
59+
60+
b) under the GNU GPL, with none of the additional permissions of
61+
this License applicable to that copy.
62+
63+
3. Object Code Incorporating Material from Library Header Files.
64+
65+
The object code form of an Application may incorporate material from
66+
a header file that is part of the Library. You may convey such object
67+
code under terms of your choice, provided that, if the incorporated
68+
material is not limited to numerical parameters, data structure
69+
layouts and accessors, or small macros, inline functions and templates
70+
(ten or fewer lines in length), you do both of the following:
71+
72+
a) Give prominent notice with each copy of the object code that the
73+
Library is used in it and that the Library and its use are
74+
covered by this License.
75+
76+
b) Accompany the object code with a copy of the GNU GPL and this license
77+
document.
78+
79+
4. Combined Works.
80+
81+
You may convey a Combined Work under terms of your choice that,
82+
taken together, effectively do not restrict modification of the
83+
portions of the Library contained in the Combined Work and reverse
84+
engineering for debugging such modifications, if you also do each of
85+
the following:
86+
87+
a) Give prominent notice with each copy of the Combined Work that
88+
the Library is used in it and that the Library and its use are
89+
covered by this License.
90+
91+
b) Accompany the Combined Work with a copy of the GNU GPL and this license
92+
document.
93+
94+
c) For a Combined Work that displays copyright notices during
95+
execution, include the copyright notice for the Library among
96+
these notices, as well as a reference directing the user to the
97+
copies of the GNU GPL and this license document.
98+
99+
d) Do one of the following:
100+
101+
0) Convey the Minimal Corresponding Source under the terms of this
102+
License, and the Corresponding Application Code in a form
103+
suitable for, and under terms that permit, the user to
104+
recombine or relink the Application with a modified version of
105+
the Linked Version to produce a modified Combined Work, in the
106+
manner specified by section 6 of the GNU GPL for conveying
107+
Corresponding Source.
108+
109+
1) Use a suitable shared library mechanism for linking with the
110+
Library. A suitable mechanism is one that (a) uses at run time
111+
a copy of the Library already present on the user's computer
112+
system, and (b) will operate properly with a modified version
113+
of the Library that is interface-compatible with the Linked
114+
Version.
115+
116+
e) Provide Installation Information, but only if you would otherwise
117+
be required to provide such information under section 6 of the
118+
GNU GPL, and only to the extent that such information is
119+
necessary to install and execute a modified version of the
120+
Combined Work produced by recombining or relinking the
121+
Application with a modified version of the Linked Version. (If
122+
you use option 4d0, the Installation Information must accompany
123+
the Minimal Corresponding Source and Corresponding Application
124+
Code. If you use option 4d1, you must provide the Installation
125+
Information in the manner specified by section 6 of the GNU GPL
126+
for conveying Corresponding Source.)
127+
128+
5. Combined Libraries.
129+
130+
You may place library facilities that are a work based on the
131+
Library side by side in a single library together with other library
132+
facilities that are not Applications and are not covered by this
133+
License, and convey such a combined library under terms of your
134+
choice, if you do both of the following:
135+
136+
a) Accompany the combined library with a copy of the same work based
137+
on the Library, uncombined with any other library facilities,
138+
conveyed under the terms of this License.
139+
140+
b) Give prominent notice with the combined library that part of it
141+
is a work based on the Library, and explaining where to find the
142+
accompanying uncombined form of the same work.
143+
144+
6. Revised Versions of the GNU Lesser General Public License.
145+
146+
The Free Software Foundation may publish revised and/or new versions
147+
of the GNU Lesser General Public License from time to time. Such new
148+
versions will be similar in spirit to the present version, but may
149+
differ in detail to address new problems or concerns.
150+
151+
Each version is given a distinguishing version number. If the
152+
Library as you received it specifies that a certain numbered version
153+
of the GNU Lesser General Public License "or any later version"
154+
applies to it, you have the option of following the terms and
155+
conditions either of that published version or of any later version
156+
published by the Free Software Foundation. If the Library as you
157+
received it does not specify a version number of the GNU Lesser
158+
General Public License, you may choose any version of the GNU Lesser
159+
General Public License ever published by the Free Software Foundation.
160+
161+
If the Library as you received it specifies that a proxy can decide
162+
whether future versions of the GNU Lesser General Public License shall
163+
apply, that proxy's public statement of acceptance of any version is
164+
permanent authorization for you to choose that version for the
165+
Library.

README.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# [Example Mod](https://github.com/Cadiboo/Example-Mod)
2+
### An example mod created by [Cadiboo](https://github.com/Cadiboo) to try and get new modders to use good code practices
3+
##### View the tuorials for this at [https://cadiboo.github.io/tutorials/1.13.2/forge/](https://cadiboo.github.io/tutorials/1.13.2/forge/)
4+
This contains the basic setup for a normal mod, and the included files use good code practices.
5+
### All credits for Forge, FML etc go to their respective owners.
6+
Any code written by me is free for any use at all. Some credit would be nice though :)

build.gradle

+186
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
// Forge buildscript
2+
buildscript {
3+
4+
repositories {
5+
6+
// Forge Maven
7+
maven { url = 'https://files.minecraftforge.net/maven' }
8+
// Other useful Mavens
9+
jcenter()
10+
mavenCentral()
11+
12+
}
13+
14+
// Buildscript dependency on Forge Gradle
15+
dependencies {
16+
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
17+
}
18+
19+
}
20+
apply plugin: 'net.minecraftforge.gradle'
21+
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
22+
apply plugin: 'eclipse'
23+
apply plugin: 'maven-publish'
24+
25+
// We use the version format MCVERSION-MAJOR.MINOR.PATCH
26+
version = modMinecraftVersion + "-" + modVersion
27+
group = modGroup
28+
archivesBaseName = modFileName
29+
30+
// Java 8
31+
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
32+
33+
repositories {
34+
35+
// Put remote maven repositories here
36+
37+
}
38+
39+
minecraft {
40+
41+
// The mappings can be changed at any time, and must be in the following format.
42+
// snapshot_YYYYMMDD snapshot are built nightly.
43+
// stable_# stables are built at the discretion of the MCP team.
44+
// Use non-default mappings at your own risk. they may not always work.
45+
// simply re-run your setup task after changing the mappings to update your workspace.
46+
mappings channel: modMcpMappingsChannel, version: modMcpMappingsVersion
47+
48+
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
49+
50+
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
51+
52+
// Default run configurations.
53+
// These can be tweaked, removed, or duplicated as needed.
54+
runs {
55+
client = {
56+
// Recommended logging data for a userdev environment
57+
properties 'forge.logging.markers': 'SCAN,REGISTRIES,REGISTRYDUMP'
58+
// Recommended logging level for the console
59+
properties 'forge.logging.console.level': 'debug'
60+
workingDirectory project.file('run').canonicalPath
61+
source sourceSets.main
62+
}
63+
server = {
64+
// Recommended logging data for a userdev environment
65+
properties 'forge.logging.markers': 'SCAN,REGISTRIES,REGISTRYDUMP'
66+
// Recommended logging level for the console
67+
properties 'forge.logging.console.level': 'debug'
68+
workingDirectory project.file('run').canonicalPath
69+
source sourceSets.main
70+
}
71+
}
72+
73+
}
74+
75+
dependencies {
76+
77+
// Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
78+
// that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
79+
// The userdev artifact is a special name and will get all sorts of transformations applied to it.
80+
minecraft "net.minecraftforge:forge:" + modMinecraftVersion + "-" + modForgeVersion
81+
82+
// you may put jars on which you depend on in ./libs
83+
// or you may define them like so..
84+
//compile "some.group:artifact:version:classifier"
85+
//compile "some.group:artifact:version"
86+
87+
// real examples
88+
//compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
89+
//compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
90+
91+
// the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
92+
//provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
93+
94+
// These dependencies get remapped to your current MCP mappings
95+
//deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'
96+
97+
// for more info...
98+
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
99+
// http://www.gradle.org/docs/current/userguide/dependency_management.html
100+
101+
}
102+
103+
// Jar Manifest
104+
jar {
105+
106+
manifest {
107+
attributes([
108+
"Specification-Title" : modId,
109+
"Specification-Vendor" : modGroup,
110+
"Specification-Version" : "25.0", // We are version 1 of the modlauncher specification
111+
"Implementation-Title" : project.name,
112+
"Implementation-Version" : "${version}",
113+
"Implementation-Vendor" : modGroup,
114+
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
115+
"Signing-Fingerprint" : project.hasProperty('signSHA1') ? project.findProperty('signSHA1') : "unsigned"
116+
],)
117+
}
118+
119+
}
120+
121+
// Example configuration to allow publishing using the maven-publish task
122+
// we define a custom artifact that is sourced from the reobfJar output task
123+
// and then declare that to be published
124+
// Note you'll need to add a repository here
125+
def reobfFile = file("$buildDir/reobfJar/output.jar")
126+
def reobfArtifact = artifacts.add('default', reobfFile) {
127+
type 'jar'
128+
builtBy 'reobfJar'
129+
}
130+
publishing {
131+
publications {
132+
mavenJava(MavenPublication) {
133+
artifact reobfArtifact
134+
}
135+
}
136+
repositories {
137+
maven {
138+
url "file:///${project.projectDir}/mcmodsrepo"
139+
}
140+
}
141+
}
142+
143+
// Jar signing
144+
import net.minecraftforge.gradle.common.task.SignJar
145+
146+
task signJar(type: SignJar, dependsOn: jar) {
147+
148+
// Skips if the keyStore property is missing.
149+
onlyIf {
150+
project.hasProperty('keyStore')
151+
}
152+
153+
// findProperty allows us to reference the property without it existing.
154+
// Using project.propName would cause the script to fail validation if the property did not exist.
155+
keyStore = project.findProperty('keyStore')
156+
alias = project.findProperty('keyStoreAlias')
157+
storePass = project.findProperty('keyStorePass')
158+
keyPass = project.findProperty('keyStoreKeyPass')
159+
inputFile = jar.archivePath
160+
outputFile = jar.archivePath
161+
162+
}
163+
164+
// Runs the signJar task automatically when build is run.
165+
build.dependsOn signJar
166+
167+
// Process resources on build
168+
processResources {
169+
170+
// This will ensure that this task is redone when the versions change.
171+
inputs.property 'version', project.version
172+
173+
// Replace stuff in mods.toml, nothing else
174+
from(sourceSets.main.resources.srcDirs) {
175+
include 'META-INF/mods.toml'
176+
177+
// Replace version and mcversion
178+
expand 'version':project.version
179+
}
180+
181+
// Copy everything else except the mods.toml
182+
from(sourceSets.main.resources.srcDirs) {
183+
exclude 'META-INF/mods.toml'
184+
}
185+
186+
}

0 commit comments

Comments
 (0)