Compare commits
164 Commits
Author | SHA1 | Date | |
---|---|---|---|
4ba49b23a3 | |||
5320a955b9 | |||
5dd38a4324 | |||
d936c57e27 | |||
18dc97de61 | |||
bfec4bc442 | |||
1e7ab1fc49 | |||
![]() |
18543ec172 | ||
![]() |
cda20df501 | ||
![]() |
ada8e9e004 | ||
![]() |
9828cc1a66 | ||
![]() |
4f852b0d32 | ||
![]() |
c509b4cdd9 | ||
![]() |
fd80efa354 | ||
![]() |
5ff045ecac | ||
4c4268aa3d | |||
abdc6da21d | |||
1ff00daf4b | |||
804a02d3fd | |||
adf19453c5 | |||
7e4c4baf05 | |||
809c10ef51 | |||
![]() |
058ec404a2 | ||
2227b0017e | |||
05ebd28180 | |||
468a5e4aac | |||
e98fc61144 | |||
f4befa63c9 | |||
ddb56b6043 | |||
d585d781f6 | |||
556d79156b | |||
![]() |
15e62a8530 | ||
5a111ba290 | |||
![]() |
b98cc5284c | ||
9f1b4e066c | |||
25aee96d6d | |||
ee2fa56eca | |||
17ae55c359 | |||
1c07cfc5ee | |||
076a6d6f87 | |||
![]() |
b063257977 | ||
![]() |
5dca654237 | ||
2e51738c45 | |||
![]() |
4b256caff9 | ||
![]() |
b874a41abb | ||
![]() |
719d326f7e | ||
8fbef49b10 | |||
c9f6d820b7 | |||
![]() |
d2cd916be7 | ||
![]() |
26ab0139c0 | ||
ab7c7fc2de | |||
![]() |
251e1d9d78 | ||
e24a8390ec | |||
![]() |
f65114d333 | ||
![]() |
450b8b0899 | ||
![]() |
8145002326 | ||
![]() |
0d5df06eb0 | ||
![]() |
4db215fc65 | ||
![]() |
933a640144 | ||
![]() |
bb7a50bebb | ||
![]() |
39976d1319 | ||
![]() |
9afe6b1b99 | ||
4f9a734581 | |||
87e965f505 | |||
f7b9c7f25a | |||
805eb1f5f3 | |||
2418918ebd | |||
![]() |
0eb536e16b | ||
![]() |
18bd88e7f9 | ||
![]() |
6b1a9d4b27 | ||
1c4458481e | |||
2fd2bcce06 | |||
![]() |
24bfe2e24d | ||
![]() |
26197a5558 | ||
![]() |
92291be4ca | ||
![]() |
115e349219 | ||
![]() |
f8916c3716 | ||
ac15fd9da1 | |||
176e39f5e6 | |||
![]() |
eabc1ffe8c | ||
![]() |
e539e506c3 | ||
![]() |
613850e2b5 | ||
![]() |
1c34ded555 | ||
7adec10002 | |||
![]() |
36c425e143 | ||
![]() |
c0a5d56278 | ||
![]() |
224c3bd91f | ||
![]() |
e167f0da5b | ||
6f906428d0 | |||
![]() |
f6521cdddf | ||
![]() |
fdd34ae097 | ||
![]() |
851eaabb16 | ||
![]() |
29576086f8 | ||
![]() |
e104803854 | ||
1b908988be | |||
261b67a74c | |||
ccd699cd05 | |||
fd37c72cfc | |||
c1b92eb7ae | |||
![]() |
826ab1cf3a | ||
9554b56931 | |||
![]() |
77a9fad5ce | ||
![]() |
9d4e7213eb | ||
03e5b50459 | |||
ea594cef3d | |||
ae4aef454e | |||
4e8222a884 | |||
c170c9d21d | |||
cf3aa58fa1 | |||
b7e996a9d7 | |||
58eacac28c | |||
![]() |
8c334a4cdd | ||
![]() |
fafde83d4c | ||
![]() |
e15a07bdb8 | ||
![]() |
e6f95908d7 | ||
![]() |
195b6a25dc | ||
![]() |
b539f986f8 | ||
ccf8c75b37 | |||
faa70ed224 | |||
![]() |
e8976365a2 | ||
f8984bec16 | |||
bfb3c3902e | |||
bb9bc335ff | |||
![]() |
93d45ceaeb | ||
![]() |
fb4c81d44b | ||
![]() |
c3a2e9922a | ||
![]() |
92cfb47f4f | ||
![]() |
80720d50ce | ||
9f0de8a250 | |||
![]() |
6b2cb0c105 | ||
![]() |
b075c521b2 | ||
![]() |
804feb4280 | ||
![]() |
6ee71f3dc1 | ||
![]() |
9141dcc8a2 | ||
![]() |
e28524864d | ||
![]() |
eb1eaf3fd7 | ||
adef051ff7 | |||
5ccc94e73a | |||
![]() |
6777030d57 | ||
![]() |
c4f8ffc2b9 | ||
![]() |
87d33ee9a1 | ||
![]() |
1a2e0f233b | ||
![]() |
374f1f1d24 | ||
6a932e6e56 | |||
181fdc196e | |||
fbdb595cd7 | |||
e3576cc07e | |||
9a69e0c15a | |||
3251370335 | |||
57fe4b6070 | |||
00e5ca976f | |||
fa777ca6e0 | |||
a3f53b1593 | |||
![]() |
d46ca78bd5 | ||
![]() |
be1f4fc446 | ||
![]() |
ddff7fe973 | ||
![]() |
835139a562 | ||
![]() |
768290f758 | ||
69f2904088 | |||
2ef3bc1dd4 | |||
64f19a9741 | |||
ca01fd8fc8 | |||
![]() |
db49a2c74e | ||
74e3baa05c |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -172,6 +172,8 @@ gradle-app.setting
|
||||
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
|
||||
# gradle/wrapper/gradle-wrapper.properties
|
||||
|
||||
*.hprof
|
||||
|
||||
# Forge
|
||||
run/
|
||||
src/main/java/com/sosnitzka/taiga/dev
|
||||
|
25
README.md
25
README.md
@@ -1,8 +1,12 @@
|
||||

|
||||
> This project needs new maintainers, see #15.
|
||||
|
||||
|
||||

|
||||
|
||||
Tinkers Alloying Addon (TAIGA)
|
||||
===============
|
||||
TAIGA is an addon for Tinkers Construct. It aims to find new minable ores, new alloys and a bunch of new tinker traits for them.
|
||||
|
||||
TAIGA is an addon for Tinkers Construct. It adds new minable ores, new alloys and a bunch of new tinker traits for them.
|
||||
|
||||
Included:
|
||||
* 16 new meltable Ores with 4 new hardness levels (5,6,7,8)
|
||||
@@ -15,22 +19,18 @@ Included:
|
||||
|
||||
Download
|
||||
===============
|
||||
[Link coming](www.sosnitzka.com)
|
||||
[TAIGA on CurseForge](http://minecraft.curseforge.com/projects/taiga-tinkers-alloying-addon/files)
|
||||
|
||||
Dependencies
|
||||
===============
|
||||
Necessary:
|
||||
* Tinkers Construct for 1.10.2 + associated version of mantle
|
||||
* Minecraft Forge 1.10.2
|
||||
* Tinkers Construct for 1.12.2 + associated version of mantle
|
||||
* Minecraft Forge 1.12.2
|
||||
|
||||
Tested with:
|
||||
|
||||
* [Tinkers Construct 2.3.3a](http://minecraft.curseforge.com/projects/tinkers-construct/files)
|
||||
* [Minecraft Forge 12.18.1.2011](http://files.minecraftforge.net/)
|
||||
|
||||
What's going on?
|
||||
===
|
||||
What's actually new?
|
||||
What does the mod add?
|
||||
* There are 16 kinds of new ores, seperated in 4 categories each: Arcane, solide, ethere and ratio metals.
|
||||
* You are just able to combine some of them as neigbours in a "circle": Arcane <> Solide <> Ethere <> Ratio <> Arcane - you gonna check JEI for Recipes!
|
||||
* The hardness of the new tool depends on their parents. Not every alloy is hard enough, to mine the next alloy-level.
|
||||
@@ -46,7 +46,7 @@ Hardness of each new ore in case you gonna ask...
|
||||
* Titanite (5): Titanite, Rubium, Mythril, Mindorite
|
||||
* Meteorite (6): Meteorite, Arcanite, Palladium, Karmesine
|
||||
* Vibranium (7): Vibranium, Ignitite
|
||||
* Adamantiute (8): Adamantite
|
||||
* Adamantite (8): Adamantite
|
||||
* It is up to you to find out which alloy you need to get to highest tier.
|
||||
|
||||
Balancing, more traits, more alloys, more ores:
|
||||
@@ -60,3 +60,6 @@ Where to request or report issues:
|
||||
|
||||
More? Join our community on mumble (ofsg.eu) for questions or to have a nice chat with us!
|
||||
|
||||
#### License
|
||||
|
||||
This project is licensed under the conditions of the GNU GPL 3.0.
|
107
build.gradle
107
build.gradle
@@ -1,4 +1,3 @@
|
||||
// For those who want the bleeding edge
|
||||
buildscript {
|
||||
repositories {
|
||||
jcenter()
|
||||
@@ -6,12 +5,18 @@ buildscript {
|
||||
name = "forge"
|
||||
url = "http://files.minecraftforge.net/maven"
|
||||
}
|
||||
maven {
|
||||
url "https://plugins.gradle.org/m2/"
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
|
||||
classpath 'gradle.plugin.com.matthewprenger:CurseGradle:1.1.0'
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'net.minecraftforge.gradle.forge'
|
||||
apply plugin: "com.matthewprenger.cursegradle"
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
@@ -27,34 +32,59 @@ repositories {
|
||||
}
|
||||
}
|
||||
|
||||
version = "1.0.1"
|
||||
group = "com.sosnitzka.taiga" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
group = "com.sosnitzka" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
archivesBaseName = "taiga"
|
||||
|
||||
minecraft {
|
||||
version = "1.10.2-12.18.1.2011"
|
||||
runDir = "run"
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
|
||||
// the mappings can be changed at any time, and must be in the following format.
|
||||
// snapshot_YYYYMMDD snapshot are built nightly.
|
||||
// stable_# stables are built at the discretion of the MCP team.
|
||||
// Use non-default mappings at your own risk. they may not allways work.
|
||||
// simply re-run your setup task after changing the mappings to update your workspace.
|
||||
mappings = "snapshot_20160701"
|
||||
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
|
||||
|
||||
replace "@VERSION@", project.version
|
||||
task buildInfo {
|
||||
if (System.getenv().TAIGA_TAG != null) {
|
||||
ext.revision = System.getenv().TAIGA_TAG
|
||||
} else {
|
||||
ext.revision = "snapshot"
|
||||
}
|
||||
|
||||
if (System.getenv().BUILD_NUMBER != null) {
|
||||
ext.buildNum = System.getenv().BUILD_NUMBER
|
||||
}
|
||||
|
||||
def cmd = "git log \$(git tag --sort=-refname | sed -n '2p')..\$(git tag --sort=-refname | sed -n '1p') --oneline"
|
||||
def proc = cmd.execute()
|
||||
proc.waitFor()
|
||||
if (proc.exitValue() == 0) {
|
||||
ext.changes = proc.text.trim()
|
||||
} else {
|
||||
ext.changes = "N/A"
|
||||
}
|
||||
}
|
||||
|
||||
version = project.buildInfo.revision
|
||||
|
||||
minecraft {
|
||||
version = "1.12.2-14.23.5.2768"
|
||||
runDir = "run"
|
||||
mappings = "snapshot_20170801"
|
||||
replace '@VERSION@', project.version
|
||||
}
|
||||
|
||||
//noinspection GroovyAssignabilityCheck
|
||||
ext.mc_version = project.minecraft.version.split('-')[0]
|
||||
version = "${mc_version}-${project.buildInfo.revision}"
|
||||
|
||||
dependencies {
|
||||
//deobfCompile "codechicken:CodeChickenLib:1.9.4-2.0.2.39:deobf"
|
||||
//deobfCompile "codechicken:CodeChickenCore:1.9.4-2.0.3.65:deobf"
|
||||
//deobfCompile "codechicken:NotEnoughItems:1.9-${nei_version}:dev"
|
||||
deobfCompile "slimeknights.mantle:Mantle:1.10.2-0.10.3.jenkins161:deobf"
|
||||
//Old: deobfCompile "slimeknights.mantle:Mantle:1.9-0.10.0.jenkins132:deobf"
|
||||
deobfCompile "mezz.jei:jei_1.10.2:3.7.6.231"
|
||||
deobfCompile "slimeknights:TConstruct:1.10-2.3.3a.jenkins271:deobf"
|
||||
//compile files('libs/TConstruct-1.9-2.3.1.DEV.1d4c1de-deobf.jar')
|
||||
deobfCompile "slimeknights.mantle:Mantle:1.12-1.3.+:deobf"
|
||||
deobfCompile "mezz.jei:jei_1.12.2:4.+"
|
||||
deobfCompile "slimeknights:TConstruct:1.12.2-2.10.+:deobf"
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
resources {
|
||||
srcDir 'resources'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//noinspection GroovyAssignabilityCheck
|
||||
@@ -76,3 +106,34 @@ processResources {
|
||||
exclude 'mcmod.info'
|
||||
}
|
||||
}
|
||||
|
||||
task deobfJar(type: Jar) {
|
||||
//noinspection GroovyAssignabilityCheck
|
||||
from sourceSets.main.output
|
||||
classifier = 'deobf'
|
||||
}
|
||||
|
||||
artifacts {
|
||||
archives deobfJar
|
||||
}
|
||||
|
||||
curseforge {
|
||||
apiKey = System.getenv().CURSE_API_KEY ? System.getenv().CURSE_API_KEY : "devBuild"
|
||||
//noinspection GroovyAssignabilityCheck
|
||||
project {
|
||||
id = '247661'
|
||||
changelog = project.buildInfo.changes // A file can also be set using: changelog = file('changelog.txt')
|
||||
releaseType = 'release'
|
||||
//addGameVersion '1.10.2'
|
||||
//addGameVersion '1.10.1'
|
||||
addArtifact deobfJar
|
||||
|
||||
mainArtifact(jar) {
|
||||
displayName = "taiga-${project.buildInfo.revision}"
|
||||
}
|
||||
|
||||
relations {
|
||||
requiredDependency 'tinkers-construct'
|
||||
}
|
||||
}
|
||||
}
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,5 @@
|
||||
#Mon Sep 14 12:28:28 PDT 2015
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip
|
||||
|
74
gradlew
vendored
74
gradlew
vendored
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
#!/usr/bin/env sh
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
@@ -6,12 +6,30 @@
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
@@ -30,6 +48,7 @@ die ( ) {
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
@@ -40,31 +59,11 @@ case "`uname`" in
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
||||
if $cygwin ; then
|
||||
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||
fi
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >&-
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >&-
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
@@ -90,7 +89,7 @@ location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
@@ -114,6 +113,7 @@ fi
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
@@ -154,11 +154,19 @@ if $cygwin ; then
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
APP_ARGS=$(save "$@")
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
14
gradlew.bat
vendored
14
gradlew.bat
vendored
@@ -8,14 +8,14 @@
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
@@ -46,10 +46,9 @@ echo location of your Java installation.
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
@@ -60,11 +59,6 @@ set _SKIP=2
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
@@ -1,32 +1,75 @@
|
||||
package com.sosnitzka.taiga;
|
||||
|
||||
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import slimeknights.tconstruct.shared.TinkerFluids;
|
||||
|
||||
import static com.sosnitzka.taiga.Fluids.*;
|
||||
import static com.sosnitzka.taiga.util.Utils.registerTinkerAlloys;
|
||||
import static com.sosnitzka.taiga.util.Utils.registerTinkerAlloy;
|
||||
|
||||
public class Alloys {
|
||||
|
||||
static void register() {
|
||||
registerTinkerAlloys(nitroniteFluid, 2, tiberiumFluid, 4, vibraniumFluid, 3, nitroFluid, 3);
|
||||
registerTinkerAlloys(bysmuidFluid, 1, rubiumFluid, 3, bismuthFluid, 2, anthraciteFluid, 3);
|
||||
registerTinkerAlloys(ultraniteFluid, 1, prometheumFluid, 3, adamantiteFluid, 2, radiant_enderium, 3);
|
||||
registerTinkerAlloys(astriumFluid, 1, arcaniteFluid, 3, karmesineFluid, 2, energy_enderium, 3);
|
||||
/**
|
||||
* Registers alloying in the smeltery
|
||||
*/
|
||||
public static void register() {
|
||||
registerTinkerAlloy(new FluidStack(terraxFluid, 2), new FluidStack(karmesineFluid, 1), new FluidStack
|
||||
(oviumFluid, 1), new FluidStack(jauxumFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(triberiumFluid, 1), new FluidStack(tiberiumFluid, 5), new FluidStack
|
||||
(basaltFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(triberiumFluid, 1), new FluidStack(tiberiumFluid, 5), new FluidStack
|
||||
(dilithiumFluid, 2));
|
||||
registerTinkerAlloy(new FluidStack(fractumFluid, 2), new FluidStack(triberiumFluid, 3), new FluidStack
|
||||
(TinkerFluids.obsidian, 3), new FluidStack(abyssumFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(violiumFluid, 2), new FluidStack(auroriumFluid, 3), new FluidStack
|
||||
(TinkerFluids.ardite, 2));
|
||||
registerTinkerAlloy(new FluidStack(proxiiFluid, 3), new FluidStack(prometheumFluid, 3), new FluidStack
|
||||
(palladiumFluid, 3), new FluidStack(eezoFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(tritoniteFluid, 2), new FluidStack(TinkerFluids.cobalt, 3), new FluidStack
|
||||
(terraxFluid, 2));
|
||||
registerTinkerAlloy(new FluidStack(ignitzFluid, 2), new FluidStack(TinkerFluids.ardite, 2), new FluidStack
|
||||
(terraxFluid, 2), new FluidStack(osramFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(imperomiteFluid, 2), new FluidStack(duraniteFluid, 3), new FluidStack
|
||||
(prometheumFluid, 1), new FluidStack(abyssumFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(solariumFluid, 2), new FluidStack(valyriumFluid, 2), new FluidStack
|
||||
(uruFluid, 2), new FluidStack(nucleumFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(adamantFluid, 3), new FluidStack(vibraniumFluid, 1), new FluidStack
|
||||
(solariumFluid, 1), new FluidStack(ioxFluid, 3));
|
||||
registerTinkerAlloy(new FluidStack(nihiliteFluid, 1), new FluidStack(vibraniumFluid, 1), new FluidStack
|
||||
(solariumFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(seismumFluid, 4), new FluidStack(TinkerFluids.obsidian, 4), new FluidStack
|
||||
(triberiumFluid, 2), new FluidStack(eezoFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(astriumFluid, 2), new FluidStack(terraxFluid, 3), new FluidStack
|
||||
(auroriumFluid, 2));
|
||||
registerTinkerAlloy(new FluidStack(niobFluid, 3), new FluidStack(palladiumFluid, 3), new FluidStack
|
||||
(duraniteFluid, 1), new FluidStack(osramFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(yrdeenFluid, 3), new FluidStack(uruFluid, 3), new FluidStack
|
||||
(valyriumFluid, 3), new FluidStack(osramFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(yrdeenFluid, 3), new FluidStack(uruFluid, 3), new FluidStack
|
||||
(valyriumFluid, 3), new FluidStack(eezoFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(yrdeenFluid, 3), new FluidStack(uruFluid, 3), new FluidStack
|
||||
(valyriumFluid, 3), new FluidStack(abyssumFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(ioxFluid, 1), new FluidStack(eezoFluid, 2), new FluidStack(abyssumFluid,
|
||||
2), new FluidStack(osramFluid, 2), new FluidStack(obsidioriteFluid, 9));
|
||||
registerTinkerAlloy(new FluidStack(ioxFluid, 1), new FluidStack(eezoFluid, 2), new FluidStack(abyssumFluid,
|
||||
2), new FluidStack(osramFluid, 2), new FluidStack(meteoriteFluid, 9), new FluidStack(TinkerFluids
|
||||
.obsidian, 9));
|
||||
registerTinkerAlloy(new FluidStack(lumixFluid, 1), new FluidStack(palladiumFluid, 1), new FluidStack
|
||||
(terraxFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(obsidioriteFluid, 1), new FluidStack(meteoriteFluid, 1), new FluidStack
|
||||
(TinkerFluids.obsidian, 1));
|
||||
registerTinkerAlloy(new FluidStack(nucleumFluid, 3), new FluidStack(proxiiFluid, 3), new FluidStack
|
||||
(abyssumFluid, 1), new FluidStack(osramFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(nucleumFluid, 3), new FluidStack(imperomiteFluid, 3), new FluidStack
|
||||
(osramFluid, 1), new FluidStack(eezoFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(nucleumFluid, 3), new FluidStack(niobFluid, 3), new FluidStack(eezoFluid,
|
||||
1), new FluidStack(abyssumFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(dyoniteFluid, 3), new FluidStack(triberiumFluid, 3), new FluidStack
|
||||
(fractumFluid, 1), new FluidStack(seismumFluid, 1), new FluidStack(osramFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(dyoniteFluid, 3), new FluidStack(tiberiumFluid, 12), new FluidStack
|
||||
(fractumFluid, 1), new FluidStack(seismumFluid, 1), new FluidStack(osramFluid, 1));
|
||||
registerTinkerAlloy(new FluidStack(nitroniteFluid, 6), new FluidStack(magmaFluid, 6), new FluidStack
|
||||
(osramFluid, 1));
|
||||
|
||||
registerTinkerAlloys(imperomiteFluid, 2, titaniteFluid, 3, palladiumFluid, 3, FluidRegistry.LAVA, 3);
|
||||
registerTinkerAlloys(dyoniteFluid, 1, meteoriteFluid, 3, tiberiumFluid, 2, spectrumFluid, 3);
|
||||
registerTinkerAlloys(solariumFluid, 2, vibraniumFluid, 4, ignititeFluid, 4, nitroFluid, 3);
|
||||
registerTinkerAlloys(fractoryteFluid, 2, adamantiteFluid, 4, rubiumFluid, 2, FluidRegistry.LAVA, 3);
|
||||
|
||||
registerTinkerAlloys(aegisaltFluid, 1, eterniteFluid, 3, mindoriteFluid, 3, glimmercoalFluid, 3);
|
||||
registerTinkerAlloys(noctunyxFluid, 1, mythrilFluid, 4, titaniteFluid, 2, spectrumFluid, 3);
|
||||
registerTinkerAlloys(nucleumFluid, 1, palladiumFluid, 3, violiumFluid, 3, radiant_enderium, 3);
|
||||
registerTinkerAlloys(seismodiumFluid, 2, ignititeFluid, 5, meteoriteFluid, 3, glimming_enderium, 3);
|
||||
|
||||
registerTinkerAlloys(lumixylFluid, 1, bismuthFluid, 3, prometheumFluid, 2, glimming_enderium, 6);
|
||||
registerTinkerAlloys(terramiteFluid, 2, violiumFluid, 4, eterniteFluid, 2, energy_enderium, 3);
|
||||
registerTinkerAlloys(cryptogenFluid, 1, mindoriteFluid, 4, arcaniteFluid, 2, anthraciteFluid, 3);
|
||||
registerTinkerAlloys(proxideumFluid, 1, karmesineFluid, 3, mythrilFluid, 2, glimmercoalFluid, 3);
|
||||
}
|
||||
}
|
||||
|
@@ -1,13 +1,16 @@
|
||||
package com.sosnitzka.taiga;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import com.sosnitzka.taiga.blocks.BlockLignite;
|
||||
import com.sosnitzka.taiga.blocks.BlockCobble;
|
||||
import com.sosnitzka.taiga.blocks.BlockMeteoriteRock;
|
||||
import com.sosnitzka.taiga.blocks.BlockTiberium;
|
||||
import com.sosnitzka.taiga.generic.BasicBlock;
|
||||
import com.sosnitzka.taiga.generic.BasicBlockGround;
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import com.sosnitzka.taiga.generic.BlockOre;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.registry.ForgeRegistries;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@@ -15,104 +18,131 @@ import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
|
||||
import static com.sosnitzka.taiga.MaterialTraits.*;
|
||||
import static com.sosnitzka.taiga.util.Utils.*;
|
||||
import static com.sosnitzka.taiga.util.Utils.PREFIX_BLOCK;
|
||||
import static com.sosnitzka.taiga.util.Utils.PREFIX_ORE;
|
||||
import static slimeknights.tconstruct.library.utils.HarvestLevels.*;
|
||||
|
||||
public class Blocks {
|
||||
|
||||
|
||||
/// /regular Ores / Blocks without extra abilites
|
||||
public static Block basalt = new BasicBlock("basalt", Material.ROCK, 45.0f, 35.0f, OBSIDIAN);
|
||||
public static Block rottenGround = new BasicBlockGround("rotten_ground", Material.GROUND, 2.0f, 2.0f, STONE);
|
||||
public static Block ligniteOre = new BlockLignite();
|
||||
public static Block slagironOre = new BasicBlock("slagiron_ore", Material.ROCK, 3.0f, 5.0f, IRON);
|
||||
public static Block slaggoldOre = new BasicBlock("slaggold_ore", Material.ROCK, 3.0f, 5.0f, IRON);
|
||||
|
||||
// Ores
|
||||
// Group: Solide
|
||||
public static Block titaniteOre = new BasicBlock("titanite_ore", Material.ROCK, 55.0f, 400.0f, TITANITE, PREFIX_ORE);
|
||||
public static Block meteoriteOre = new BasicBlock("meteorite_ore", Material.ROCK, 60.0f, 500.0f, METEORITE, PREFIX_ORE);
|
||||
public static Block vibraniumOre = new BasicBlock("vibranium_ore", Material.ROCK, 70.0f, 800.0f, VIBRANIUM, PREFIX_ORE);
|
||||
public static Block adamantiteOre = new BasicBlock("adamantite_ore", Material.ROCK, 80.0f, 1000.0f, ADAMANTITE, PREFIX_ORE);
|
||||
// Group: Arcane
|
||||
public static Block prometheumOre = new BasicBlock("prometheum_ore", Material.ROCK, 35.0f, 35.0f, COBALT, 0.25f, PREFIX_ORE);
|
||||
public static Block rubiumOre = new BasicBlock("rubium_ore", Material.ROCK, 13.0f, 15.0f, TITANITE, PREFIX_ORE);
|
||||
// blocks and ores spawned via worldgen
|
||||
public static Block basaltBlock = new BasicBlock("basalt_block", Material.ROCK, 20.0f, 35.0f, IRON, PREFIX_BLOCK);
|
||||
public static Block tiberiumOre = new BlockTiberium();
|
||||
public static Block arcaniteOre = new BasicBlock("arcanite_ore", Material.ROCK, 23.0f, 25.0f, METEORITE, PREFIX_ORE);
|
||||
// Group: Etheri
|
||||
public static Block eterniteOre = new BasicBlock("eternite_ore", Material.ROCK, 24.0f, 25.0f, COBALT, PREFIX_ORE);
|
||||
public static Block mythrilOre = new BasicBlock("mythril_ore", Material.ROCK, 25.0f, 25.0f, TITANITE, PREFIX_ORE);
|
||||
public static Block palladiumOre = new BasicBlock("palladium_ore", Material.ROCK, 25.0f, 25.0f, METEORITE, PREFIX_ORE);
|
||||
public static Block ignititeOre = new BasicBlock("ignitite_ore", Material.ROCK, 23.0f, 25.0f, VIBRANIUM, PREFIX_ORE);
|
||||
// Group: Ratio
|
||||
public static Block violiumOre = new BasicBlock("violium_ore", Material.ROCK, 13.0f, 13.0f, COBALT, PREFIX_ORE);
|
||||
public static Block bismuthOre = new BasicBlock("bismuth_ore", Material.ROCK, 8.0f, 8.0f, OBSIDIAN, PREFIX_ORE);
|
||||
public static Block mindoriteOre = new BasicBlock("mindorite_ore", Material.ROCK, 12.0f, 12.0f, TITANITE, PREFIX_ORE);
|
||||
public static Block karmesineOre = new BasicBlock("karmesine_ore", Material.ROCK, 13.0f, 15.0f, METEORITE, PREFIX_ORE);
|
||||
public static Block auroriumOre = new BasicBlock("aurorium_ore", Material.ROCK, 15.0f, 12f, COBALT, 0.2f,
|
||||
PREFIX_ORE);
|
||||
public static Block prometheumOre = new BasicBlock("prometheum_ore", Material.ROCK, 20.0f, 12f, DURANITE, 0.4f,
|
||||
PREFIX_ORE);
|
||||
public static Block duraniteOre = new BasicBlock("duranite_ore", Material.ROCK, 25.0f, 1000f, DURANITE, PREFIX_ORE);
|
||||
public static Block valyriumOre = new BasicBlock("valyrium_ore", Material.ROCK, 35.0f, 2000f, VALYRIUM, PREFIX_ORE);
|
||||
public static Block vibraniumOre = new BasicBlock("vibranium_ore", Material.ROCK, 40.0f, 3000f, VIBRANIUM,
|
||||
PREFIX_ORE);
|
||||
public static Block karmesineOre = new BasicBlock("karmesine_ore", Material.ROCK, 10.0f, 10f, COBALT, PREFIX_ORE);
|
||||
public static Block oviumOre = new BasicBlock("ovium_ore", Material.ROCK, 10.0f, 10f, COBALT, PREFIX_ORE);
|
||||
public static Block jauxumOre = new BasicBlock("jauxum_ore", Material.ROCK, 10.0f, 10f, COBALT, PREFIX_ORE);
|
||||
public static Block palladiumOre = new BasicBlock("palladium_ore", Material.ROCK, 25.0f, 150f, DURANITE, 0.4f,
|
||||
PREFIX_ORE);
|
||||
public static Block uruOre = new BasicBlock("uru_ore", Material.ROCK, 35.0f, 500f, VALYRIUM, PREFIX_ORE);
|
||||
public static Block osramOre = new BasicBlock("osram_ore", Material.ROCK, 15.0f, 35.0f, COBALT, PREFIX_ORE);
|
||||
public static Block eezoOre = new BasicBlock("eezo_ore", Material.ROCK, 50.0f, 50000.0f, COBALT, PREFIX_ORE);
|
||||
public static Block abyssumOre = new BasicBlock("abyssum_ore", Material.ROCK, 15.0f, 35.0f, COBALT, PREFIX_ORE);
|
||||
|
||||
// Blocks
|
||||
// Group: Solide
|
||||
public static Block titaniteBlock = new BasicBlock("titanite_block", Material.ROCK, 55.0f, 400.0f, 5, PREFIX_BLOCK);
|
||||
public static Block meteoriteBlock = new BasicBlock("meteorite_block", Material.ROCK, 60.0f, 500.0f, 6, PREFIX_BLOCK);
|
||||
public static Block vibraniumBlock = new BasicBlock("vibranium_block", Material.ROCK, 70.0f, 800.0f, 7, PREFIX_BLOCK);
|
||||
public static Block adamantiteBlock = new BasicBlock("adamantite_block", Material.ROCK, 80.0f, 1000.0f, 8, PREFIX_BLOCK);
|
||||
// Group: Arcane
|
||||
public static Block prometheumBlock = new BasicBlock("prometheum_block", Material.ROCK, 35.0f, 35.0f, 4, 0.25f, PREFIX_BLOCK);
|
||||
public static Block rubiumBlock = new BasicBlock("rubium_block", Material.ROCK, 13.0f, 15.0f, 5, PREFIX_BLOCK);
|
||||
public static Block tiberiumBlock = new BasicBlock("tiberium_block", Material.ROCK, 30.0f, 30.0f, 6, 1f, PREFIX_BLOCK);
|
||||
public static Block arcaniteBlock = new BasicBlock("arcanite_block", Material.ROCK, 23.0f, 25.0f, 7, PREFIX_BLOCK);
|
||||
// Group: Etheri
|
||||
public static Block eterniteBlock = new BasicBlock("eternite_block", Material.ROCK, 24.0f, 25.0f, 4, PREFIX_BLOCK);
|
||||
public static Block mythrilBlock = new BasicBlock("mythril_block", Material.ROCK, 25.0f, 25.0f, 5, PREFIX_BLOCK);
|
||||
public static Block palladiumBlock = new BasicBlock("palladium_block", Material.ROCK, 25.0f, 25.0f, 6, PREFIX_BLOCK);
|
||||
public static Block ignititeBlock = new BasicBlock("ignitite_block", Material.ROCK, 23.0f, 25.0f, 7, PREFIX_BLOCK);
|
||||
// Group: Ratio
|
||||
public static Block violiumBlock = new BasicBlock("violium_block", Material.ROCK, 13.0f, 13.0f, 4, PREFIX_BLOCK);
|
||||
public static Block bismuthBlock = new BasicBlock("bismuth_block", Material.ROCK, 8.0f, 8.0f, 5, PREFIX_BLOCK);
|
||||
public static Block mindoriteBlock = new BasicBlock("mindorite_block", Material.ROCK, 12.0f, 12.0f, 2, PREFIX_BLOCK);
|
||||
public static Block karmesineBlock = new BasicBlock("karmesine_block", Material.ROCK, 13.0f, 15.0f, 3, PREFIX_BLOCK);
|
||||
// Ore Castsee
|
||||
public static Block tiberiumBlock = new BasicBlock("tiberium_block", Material.GLASS, 10.0f, 15f, STONE, 1f,
|
||||
PREFIX_BLOCK);
|
||||
public static Block auroriumBlock = new BasicBlock("aurorium_block", Material.ROCK, 15.0f, 15f, COBALT,
|
||||
PREFIX_BLOCK);
|
||||
public static Block prometheumBlock = new BasicBlock("prometheum_block", Material.ROCK, 20.0f, 15f, DURANITE,
|
||||
0.5f, PREFIX_BLOCK);
|
||||
public static Block duraniteBlock = new BasicBlock("duranite_block", Material.ROCK, 20.0f, 800f, DURANITE,
|
||||
PREFIX_BLOCK);
|
||||
public static Block valyriumBlock = new BasicBlock("valyrium_block", Material.ROCK, 20.0f, 1500f, VALYRIUM,
|
||||
PREFIX_BLOCK);
|
||||
public static Block vibraniumBlock = new BasicBlock("vibranium_block", Material.ROCK, 20.0f, 3000f, VIBRANIUM,
|
||||
PREFIX_BLOCK);
|
||||
public static Block karmesineBlock = new BasicBlock("karmesine_block", Material.ROCK, 10.0f, 12f, COBALT,
|
||||
PREFIX_BLOCK);
|
||||
public static Block oviumBlock = new BasicBlock("ovium_block", Material.ROCK, 10.0f, 12f, COBALT, PREFIX_BLOCK);
|
||||
public static Block jauxumBlock = new BasicBlock("jauxum_block", Material.ROCK, 10.0f, 12f, COBALT, PREFIX_BLOCK);
|
||||
public static Block palladiumBlock = new BasicBlock("palladium_block", Material.ROCK, 25.0f, 150f, DURANITE,
|
||||
0.5f, PREFIX_BLOCK);
|
||||
public static Block uruBlock = new BasicBlock("uru_block", Material.ROCK, 30.0f, 500f, VALYRIUM, PREFIX_BLOCK);
|
||||
public static Block osramBlock = new BasicBlock("osram_block", Material.ROCK, 15.0f, 12f, COBALT, PREFIX_BLOCK);
|
||||
public static Block abyssumBlock = new BasicBlock("abyssum_block", Material.ROCK, 15.0f, 35f, COBALT, PREFIX_BLOCK);
|
||||
public static Block eezoBlock = new BasicBlock("eezo_block", Material.ROCK, 20.0f, 1000f, COBALT, PREFIX_BLOCK);
|
||||
|
||||
public static Block terraxBlock = new BasicBlock("terrax_block", Material.ROCK, 10.0f, 15f, COBALT, PREFIX_BLOCK);
|
||||
public static Block triberiumBlock = new BasicBlock("triberium_block", Material.ROCK, 15.0f, 15f, OBSIDIAN, 1f,
|
||||
PREFIX_BLOCK);
|
||||
public static Block fractumBlock = new BasicBlock("fractum_block", Material.ROCK, 15.0f, 25f, COBALT, PREFIX_BLOCK);
|
||||
public static Block violiumBlock = new BasicBlock("violium_block", Material.ROCK, 15.0f, 25f, COBALT, PREFIX_BLOCK);
|
||||
public static Block proxiiBlock = new BasicBlock("proxii_block", Material.ROCK, 15.0f, 25f, DURANITE, PREFIX_BLOCK);
|
||||
public static Block tritoniteBlock = new BasicBlock("tritonite_block", Material.ROCK, 15.0f, 25f, COBALT,
|
||||
PREFIX_BLOCK);
|
||||
public static Block ignitzBlock = new BasicBlock("ignitz_block", Material.ROCK, 20.0f, 20f, COBALT, PREFIX_BLOCK);
|
||||
public static Block imperomiteBlock = new BasicBlock("imperomite_block", Material.ROCK, 20.0f, 25f, DURANITE,
|
||||
PREFIX_BLOCK);
|
||||
public static Block solariumBlock = new BasicBlock("solarium_block", Material.ROCK, 25.0f, 25f, VIBRANIUM,
|
||||
PREFIX_BLOCK);
|
||||
public static Block nihiliteBlock = new BasicBlock("nihilite_block", Material.ROCK, 10.0f, 25f, VALYRIUM,
|
||||
PREFIX_BLOCK);
|
||||
public static Block adamantBlock = new BasicBlock("adamant_block", Material.ROCK, 25.0f, 25f, VIBRANIUM,
|
||||
PREFIX_BLOCK);
|
||||
public static Block dyoniteBlock = new BasicBlock("dyonite_block", Material.ROCK, 10.0f, 25f, DURANITE,
|
||||
PREFIX_BLOCK);
|
||||
public static Block nucleumBlock = new BasicBlock("nucleum_block", Material.ROCK, 10.0f, 25f, VALYRIUM,
|
||||
PREFIX_BLOCK);
|
||||
public static Block lumixBlock = new BasicBlock("lumix_block", Material.ROCK, 15.0f, 25f, COBALT, PREFIX_BLOCK);
|
||||
public static Block seismumBlock = new BasicBlock("seismum_block", Material.ROCK, 15.0f, 25f, COBALT, PREFIX_BLOCK);
|
||||
public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 15.0f, 25f, COBALT, PREFIX_BLOCK);
|
||||
public static Block niobBlock = new BasicBlock("niob_block", Material.ROCK, 15.0f, 25f, DURANITE, PREFIX_BLOCK);
|
||||
public static Block yrdeenBlock = new BasicBlock("yrdeen_block", Material.ROCK, 15.0f, 25f, VALYRIUM, PREFIX_BLOCK);
|
||||
public static Block ioxBlock = new BasicBlock("iox_block", Material.ROCK, 20.0f, 25f, DURANITE, PREFIX_BLOCK);
|
||||
|
||||
|
||||
public static Block imperomiteBlock = new BasicBlock("imperomite_block", Material.ROCK, 24.0f, 25.0f, 5, PREFIX_BLOCK);
|
||||
public static Block fractoryteBlock = new BasicBlock("fractoryte_block", Material.ROCK, 8.0f, 8.0f, 8, PREFIX_BLOCK);
|
||||
public static Block noctunyxBlock = new BasicBlock("noctunyx_block", Material.ROCK, 60.0f, 500.0f, 6, PREFIX_BLOCK);
|
||||
public static Block nitroniteBlock = new BasicBlock("nitronite_block", Material.ROCK, 13.0f, 15.0f, 7, PREFIX_BLOCK);
|
||||
public static Block cryptogenBlock = new BasicBlock("cryptogen_block", Material.ROCK, 23.0f, 25.0f, 6, PREFIX_BLOCK);
|
||||
public static Block seismodiumBlock = new BasicBlock("seismodium_block", Material.ROCK, 30.0f, 30.0f, 7, 1f, PREFIX_BLOCK);
|
||||
public static Block aegisaltBlock = new BasicBlock("aegisalt_block", Material.ROCK, 13.0f, 13.0f, 5, PREFIX_BLOCK);
|
||||
public static Block ultraniteBlock = new BasicBlock("ultranite_block", Material.ROCK, 13.0f, 15.0f, 8, PREFIX_BLOCK);
|
||||
public static Block bysmuidBlock = new BasicBlock("bysmuid_block", Material.ROCK, 35.0f, 35.0f, 5, 0.25f, PREFIX_BLOCK);
|
||||
public static Block nucleumBlock = new BasicBlock("nucleum_block", Material.ROCK, 25.0f, 25.0f, 4, PREFIX_BLOCK);
|
||||
public static Block terramiteBlock = new BasicBlock("terramite_block", Material.ROCK, 70.0f, 800.0f, 4, PREFIX_BLOCK);
|
||||
public static Block solariumBlock = new BasicBlock("solarium_block", Material.ROCK, 80.0f, 1000.0f, 5, PREFIX_BLOCK);
|
||||
public static Block lumixylBlock = new BasicBlock("lumixyl_block", Material.ROCK, 12.0f, 12.0f, 5, PREFIX_BLOCK);
|
||||
public static Block dyoniteBlock = new BasicBlock("dyonite_block", Material.ROCK, 23.0f, 25.0f, 4, PREFIX_BLOCK);
|
||||
public static Block proxideumBlock = new BasicBlock("proxideum_block", Material.ROCK, 25.0f, 25.0f, 4, PREFIX_BLOCK);
|
||||
public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 55.0f, 400.0f, 7, PREFIX_BLOCK);
|
||||
public static Block blockMeteoriteCobble = new BlockCobble("meteoritecobble_block", Material.ROCK, 20f, 10f,
|
||||
COBALT, 0.075f, PREFIX_BLOCK);
|
||||
public static Block blockObsidioriteCobble = new BlockCobble("obsidioritecobble_block", Material.ROCK, 25f, 20f,
|
||||
DURANITE, 0.035f, PREFIX_BLOCK);
|
||||
public static Block blockMeteorite = new BlockMeteoriteRock("meteorite_block", Material.ROCK, 40f, 2000f, COBALT,
|
||||
0.15f, PREFIX_BLOCK, blockMeteoriteCobble.getDefaultState());
|
||||
public static Block blockObsidiorite = new BlockMeteoriteRock("obsidiorite_block", Material.ROCK, 50f, 4000f,
|
||||
DURANITE, 0.2f, PREFIX_BLOCK, blockObsidioriteCobble.getDefaultState());
|
||||
|
||||
//public static Block fluidBlock = new BlockMolten(Fluids.astriumFluid);
|
||||
// Community
|
||||
public static Block dilithiumOre = new BlockOre("dilithium_ore", Material.GLASS, 18f, 18f, DIAMOND, 0.73f, Items.dilithiumCrystal, 3, 10);
|
||||
public static Block dilithiumBlock = new BasicBlock("dilithium_block", Material.GLASS, 18f, 18f, DIAMOND, 0.73f, PREFIX_BLOCK);
|
||||
|
||||
|
||||
public static void register() {
|
||||
Field[] declaredFields = Blocks.class.getDeclaredFields();
|
||||
for (Field field : declaredFields) {
|
||||
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
|
||||
/**
|
||||
* Registers all materials' ingots and nuggets <br>
|
||||
* Detailed summary: <br>
|
||||
* Gets the ingots declared in the class (fields and reflection) and iterates through them: <br>
|
||||
* Checks that the field is static, registers the field (item), and adds an oreDict entry if needed
|
||||
*/
|
||||
@SubscribeEvent
|
||||
public static void register(boolean oreDict) {
|
||||
Field[] declaredFields = Blocks.class.getDeclaredFields(); // Gets the fields (ingots) declared above
|
||||
for (Field field : declaredFields) { // Iterates through the fields declared above
|
||||
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { // Checks that the fields are static
|
||||
Class<?> targetType = field.getType();
|
||||
try {
|
||||
Block block = (Block) field.get(targetType);
|
||||
Utils.registerBlockWithItem(block);
|
||||
|
||||
if (block instanceof BasicBlock) {
|
||||
if (((BasicBlock) block).isOreDict()) {
|
||||
if (!oreDict) {
|
||||
block.setCreativeTab(CreativeTab.tabTaigaBlock);
|
||||
ForgeRegistries.BLOCKS.register(block); // Registers block and its item
|
||||
} else {
|
||||
if (block instanceof BasicBlock) { // Checks that the block is a BasicBlock
|
||||
if (((BasicBlock) block).isOreDict()) { // Checks that the block has an oreDict entry
|
||||
String oreDictName;
|
||||
String[] nameParts = block.getUnlocalizedName().replace("tile.", "").split("_");
|
||||
|
||||
if (nameParts.length > 2) {
|
||||
oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts.length - 1));
|
||||
oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts
|
||||
.length - 1));
|
||||
} else {
|
||||
oreDictName = nameParts[0];
|
||||
}
|
||||
OreDictionary.registerOre(((BasicBlock) block).getOreDictPrefix() + StringUtils.capitalize(oreDictName), block);
|
||||
OreDictionary.registerOre(((BasicBlock) block).getOreDictPrefix() + StringUtils
|
||||
.capitalize(oreDictName), block); // Registers the block's oreDict
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IllegalAccessException e) {
|
||||
@@ -120,8 +150,22 @@ public class Blocks {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
OreDictionary.registerOre("nuggetIron", slagironOre);
|
||||
OreDictionary.registerOre("nuggetGold", slaggoldOre);
|
||||
@SubscribeEvent
|
||||
public static void registerItems() {
|
||||
Field[] declaredFields = Blocks.class.getDeclaredFields(); // Gets the fields (ingots) declared above
|
||||
for (Field field : declaredFields) { // Iterates through the fields declared above
|
||||
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { // Checks that the fields are static
|
||||
Class<?> targetType = field.getType();
|
||||
try {
|
||||
Block block = (Block) field.get(targetType); // Gets the field as a BasicBlock which is then
|
||||
// casted to an Block
|
||||
ForgeRegistries.ITEMS.register(new ItemBlock(block).setRegistryName(block.getRegistryName()));
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
27
src/main/java/com/sosnitzka/taiga/CreativeTab.java
Normal file
27
src/main/java/com/sosnitzka/taiga/CreativeTab.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package com.sosnitzka.taiga;
|
||||
|
||||
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import static com.sosnitzka.taiga.Blocks.adamantBlock;
|
||||
import static com.sosnitzka.taiga.Items.solariumIngot;
|
||||
|
||||
|
||||
public class CreativeTab {
|
||||
|
||||
public static final CreativeTabs tabTaigaBlock = new CreativeTabs("taiga_block") {
|
||||
@Override
|
||||
public ItemStack getTabIconItem() {
|
||||
return new ItemStack(Item.getItemFromBlock(adamantBlock));
|
||||
}
|
||||
};
|
||||
|
||||
public static final CreativeTabs tabTaigaItem = new CreativeTabs("taiga_item") {
|
||||
@Override
|
||||
public ItemStack getTabIconItem() {
|
||||
return new ItemStack(solariumIngot);
|
||||
}
|
||||
};
|
||||
}
|
@@ -2,77 +2,88 @@ package com.sosnitzka.taiga;
|
||||
|
||||
|
||||
import com.sosnitzka.taiga.generic.BasicTinkerFluid;
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fml.common.registry.ForgeRegistries;
|
||||
import slimeknights.tconstruct.library.TinkerRegistry;
|
||||
import slimeknights.tconstruct.smeltery.block.BlockMolten;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import static com.sosnitzka.taiga.Items.*;
|
||||
import static com.sosnitzka.taiga.util.Utils.registerFluid;
|
||||
import static slimeknights.tconstruct.library.TinkerRegistry.registerMelting;
|
||||
|
||||
public class Fluids {
|
||||
|
||||
public static BasicTinkerFluid arcaniteFluid = new BasicTinkerFluid("arcanite", 0xFF272354, true, 538, 8, 3768);
|
||||
public static BasicTinkerFluid titaniteFluid = new BasicTinkerFluid("titanite", 0xFFe0ede7, true, 942, 7, 1858);
|
||||
public static BasicTinkerFluid adamantiteFluid = new BasicTinkerFluid("adamantite", 0xFFc45c82, true, 1100, 10, 3597);
|
||||
public static BasicTinkerFluid violiumFluid = new BasicTinkerFluid("violium", 0xFF264c4f, true, 875, 10, 3970);
|
||||
public static BasicTinkerFluid bismuthFluid = new BasicTinkerFluid("bismuth", 0xFF555555, true, 612, 9, 2552);
|
||||
public static BasicTinkerFluid eterniteFluid = new BasicTinkerFluid("eternite", 0xFFfafa98, true, 542, 10, 3980);
|
||||
public static BasicTinkerFluid ignititeFluid = new BasicTinkerFluid("ignitite", 0xFFff6642, true, 422, 9, 3787);
|
||||
public static BasicTinkerFluid karmesineFluid = new BasicTinkerFluid("karmesine", 0xFFc16d6d, true, 499, 7, 3978);
|
||||
public static BasicTinkerFluid meteoriteFluid = new BasicTinkerFluid("meteorite", 0xFF6e6a62, true, 942, 10, 2588);
|
||||
public static BasicTinkerFluid mindoriteFluid = new BasicTinkerFluid("mindorite", 0xFF6bbbff, true, 671, 8, 2956);
|
||||
public static BasicTinkerFluid mythrilFluid = new BasicTinkerFluid("mythril", 0xFFa8c0ba, true, 841, 10, 1579);
|
||||
public static BasicTinkerFluid palladiumFluid = new BasicTinkerFluid("palladium", 0xFFfe5c05, true, 786, 10, 3302);
|
||||
public static BasicTinkerFluid prometheumFluid = new BasicTinkerFluid("prometheum", 0xFF2b282f, true, 786, 2, 2256);
|
||||
public static BasicTinkerFluid tiberiumFluid = new BasicTinkerFluid("tiberium", 0xFF5f9e2d, true, 352, 10, 1553);
|
||||
public static BasicTinkerFluid vibraniumFluid = new BasicTinkerFluid("vibranium", 0xFFc4ddc8, true, 1050, 9, 3402);
|
||||
public static BasicTinkerFluid rubiumFluid = new BasicTinkerFluid("rubium", 0xFFe371b0, true, 200, 600, 1653);
|
||||
public static BasicTinkerFluid astriumFluid = new BasicTinkerFluid("astrium", 0xFF7a3b74, true, 810, 10, 1525);
|
||||
public static BasicTinkerFluid nitroniteFluid = new BasicTinkerFluid("nitronite", 0xFFdfe553, true, 680, 10, 2185);
|
||||
public static BasicTinkerFluid proxideumFluid = new BasicTinkerFluid("proxideum", 0xFF2f7177, true, 700, 9, 3859);
|
||||
public static BasicTinkerFluid noctunyxFluid = new BasicTinkerFluid("noctunyx", 0xFF5f5081, true, 712, 8, 3983);
|
||||
public static BasicTinkerFluid imperomiteFluid = new BasicTinkerFluid("imperomite", 0xFFff6642, true, 510, 10, 2353);
|
||||
public static BasicTinkerFluid cryptogenFluid = new BasicTinkerFluid("cryptogen", 0xFF9f8a4a, true, 560, 10, 3243);
|
||||
public static BasicTinkerFluid fractoryteFluid = new BasicTinkerFluid("fractoryte", 0xFF983f11, true, 670, 8, 3805);
|
||||
public static BasicTinkerFluid seismodiumFluid = new BasicTinkerFluid("seismodium", 0xFF46131D, true, 831, 10, 1837);
|
||||
public static BasicTinkerFluid terramiteFluid = new BasicTinkerFluid("terramite", 0xFFa6b27a, true, 687, 10, 2121);
|
||||
public static BasicTinkerFluid lumixylFluid = new BasicTinkerFluid("lumixyl", 0xFFfbe8cb, true, 548, 10, 2165);
|
||||
public static BasicTinkerFluid solariumFluid = new BasicTinkerFluid("solarium", 0xFFffc81d, true, 482, 8, 3232);
|
||||
public static BasicTinkerFluid dyoniteFluid = new BasicTinkerFluid("dyonite", 0xFFff6743, true, 486, 8, 3269);
|
||||
public static BasicTinkerFluid ultraniteFluid = new BasicTinkerFluid("ultranite", 0xFFf5f294, true, 941, 9, 1784);
|
||||
public static BasicTinkerFluid nucleumFluid = new BasicTinkerFluid("nucleum", 0xFFa8ea3b, true, 813, 10, 2355);
|
||||
public static BasicTinkerFluid aegisaltFluid = new BasicTinkerFluid("aegisalt", 0xFFb6af74, true, 660, 7, 2089);
|
||||
public static BasicTinkerFluid bysmuidFluid = new BasicTinkerFluid("bysmuid", 0xFF7b97b0, true, 560, 8, 2674);
|
||||
|
||||
|
||||
// Additional fluids to cast alloys
|
||||
public static BasicTinkerFluid radiant_enderium = new BasicTinkerFluid("radiant_enderium", 0xFFbcea5d, false, 529, 10, 768);
|
||||
public static BasicTinkerFluid glimming_enderium = new BasicTinkerFluid("glimming_enderium", 0xFFfffc98, false, 633, 10, 821);
|
||||
public static BasicTinkerFluid energy_enderium = new BasicTinkerFluid("energy_enderium", 0xFFffb498, false, 562, 10, 421);
|
||||
public static BasicTinkerFluid glimmercoalFluid = new BasicTinkerFluid("glimmercoal_fluid", 0xFFee7c28, false, 531, 10, 312);
|
||||
public static BasicTinkerFluid nitroFluid = new BasicTinkerFluid("nitro_fluid", 0xFF223512, false, 405, 5, 772);
|
||||
public static BasicTinkerFluid anthraciteFluid = new BasicTinkerFluid("anthracite_fluid", 0xFF111111, false, 500, 0, 632);
|
||||
public static BasicTinkerFluid spectrumFluid = new BasicTinkerFluid("spectrum_fluid", 0xFF64748f, false, 600, 0, 512);
|
||||
public static BasicTinkerFluid basaltFluid = new BasicTinkerFluid("basalt_fluid", 0xFFe4ddc3, 550, 10, 6000);
|
||||
public static BasicTinkerFluid tiberiumFluid = new BasicTinkerFluid("tiberium_fluid", 0xFFd4ff00, 400, 10, 8000);
|
||||
public static BasicTinkerFluid auroriumFluid = new BasicTinkerFluid("aurorium_fluid", 0xFFefae94, 750, 10, 10000);
|
||||
public static BasicTinkerFluid prometheumFluid = new BasicTinkerFluid("prometheum_fluid", 0xFF372c49, 850, 10,
|
||||
10000);
|
||||
public static BasicTinkerFluid duraniteFluid = new BasicTinkerFluid("duranite_fluid", 0xFFacddeb, 1400, 10, 10000);
|
||||
public static BasicTinkerFluid valyriumFluid = new BasicTinkerFluid("valyrium_fluid", 0xFFe85c31, 1915, 10, 10000);
|
||||
public static BasicTinkerFluid vibraniumFluid = new BasicTinkerFluid("vibranium_fluid", 0xFFbad2d9, 3050, 10,
|
||||
10000);
|
||||
public static BasicTinkerFluid karmesineFluid = new BasicTinkerFluid("karmesine_fluid", 0xFFeb484a, 750, 10, 9000);
|
||||
public static BasicTinkerFluid jauxumFluid = new BasicTinkerFluid("jauxum_fluid", 0xFF68c663, 750, 10, 9000);
|
||||
public static BasicTinkerFluid oviumFluid = new BasicTinkerFluid("ovium_fluid", 0xFF7d77c3, 750, 10, 9000);
|
||||
public static BasicTinkerFluid terraxFluid = new BasicTinkerFluid("terrax_fluid", 0xFFa5978e, 850, 10, 9000);
|
||||
public static BasicTinkerFluid palladiumFluid = new BasicTinkerFluid("palladium_fluid", 0xFFee8736, 690, 10, 10000);
|
||||
public static BasicTinkerFluid uruFluid = new BasicTinkerFluid("uru_fluid", 0xFFbfb9f0, 1200, 10, 10000);
|
||||
public static BasicTinkerFluid osramFluid = new BasicTinkerFluid("osram_fluid", 0xFFffbc90, 800, 10, 4000);
|
||||
public static BasicTinkerFluid abyssumFluid = new BasicTinkerFluid("abyssum_fluid", 0xFF21bcc2, 700, 10, 10000);
|
||||
public static BasicTinkerFluid eezoFluid = new BasicTinkerFluid("eezo_fluid", 0xFF58798a, 450, 0, 1000);
|
||||
public static BasicTinkerFluid triberiumFluid = new BasicTinkerFluid("triberium_fluid", 0xFF66f136, 550, 10, 9000);
|
||||
public static BasicTinkerFluid fractumFluid = new BasicTinkerFluid("fractum_fluid", 0xFFd2c583, 750, 10, 10000);
|
||||
public static BasicTinkerFluid violiumFluid = new BasicTinkerFluid("violium_fluid", 0xFFbfb0e2, 850, 10, 10000);
|
||||
public static BasicTinkerFluid proxiiFluid = new BasicTinkerFluid("proxii_fluid", 0xFFcefde1, 750, 10, 10000);
|
||||
public static BasicTinkerFluid tritoniteFluid = new BasicTinkerFluid("tritonite_fluid", 0xFF8edeff, 550, 10, 10000);
|
||||
public static BasicTinkerFluid ignitzFluid = new BasicTinkerFluid("ignitz_fluid", 0xFFff284b, 950, 10, 6000);
|
||||
public static BasicTinkerFluid imperomiteFluid = new BasicTinkerFluid("imperomite_fluid", 0xFF7fefa0, 900, 10,
|
||||
10000);
|
||||
public static BasicTinkerFluid solariumFluid = new BasicTinkerFluid("solarium_fluid", 0xFFfef864, 1500, 10, 2000);
|
||||
public static BasicTinkerFluid nihiliteFluid = new BasicTinkerFluid("nihilite_fluid", 0xFF6645ba, 580, 10, 10000);
|
||||
public static BasicTinkerFluid adamantFluid = new BasicTinkerFluid("adamant_fluid", 0xFFff8efe, 1650, 10, 10000);
|
||||
public static BasicTinkerFluid dyoniteFluid = new BasicTinkerFluid("dyonite_fluid", 0xFFffbd3f, 660, 10, 7000);
|
||||
public static BasicTinkerFluid nucleumFluid = new BasicTinkerFluid("nucleum_fluid", 0xFFe6ff40, 490, 10, 10000);
|
||||
public static BasicTinkerFluid lumixFluid = new BasicTinkerFluid("lumix_fluid", 0xFFf9f3cc, 450, 10, 8000);
|
||||
public static BasicTinkerFluid seismumFluid = new BasicTinkerFluid("seismum_fluid", 0xFFecbca8, 720, 10, 10000);
|
||||
public static BasicTinkerFluid astriumFluid = new BasicTinkerFluid("astrium_fluid", 0xFF8f385f, 680, 10, 10000);
|
||||
public static BasicTinkerFluid niobFluid = new BasicTinkerFluid("niob_fluid", 0xFF7398b9, 550, 10, 10000);
|
||||
public static BasicTinkerFluid yrdeenFluid = new BasicTinkerFluid("yrdeen_fluid", 0xFF8f385f, 710, 10, 10000);
|
||||
public static BasicTinkerFluid ioxFluid = new BasicTinkerFluid("iox_fluid", 0xFF99323c, 900, 10, 10000);
|
||||
public static BasicTinkerFluid meteoriteFluid = new BasicTinkerFluid("meteorite_fluid", 0xFF374f3d, 950, 10, 7000);
|
||||
public static BasicTinkerFluid obsidioriteFluid = new BasicTinkerFluid("obsidiorite_fluid", 0xFF224853, 1050, 10,
|
||||
7000);
|
||||
public static BasicTinkerFluid magmaFluid = new BasicTinkerFluid("magma_fluid", 0xFFffc000, 2000, 10, 5000);
|
||||
public static BasicTinkerFluid nitroniteFluid = new BasicTinkerFluid("nitronite_fluid", 0xFFCCFF00, 3100, 10, 5000);
|
||||
|
||||
// Community
|
||||
public static BasicTinkerFluid dilithiumFluid = new BasicTinkerFluid("dilithium_fluid", 0xFF79aea6, 1500, 10, 5000);
|
||||
|
||||
/**
|
||||
* Registers all materials' fluids <br>
|
||||
* Detailed summary: <br>
|
||||
* Gets the fluids declared in the class (fields and reflection) and iterates through them: <br>
|
||||
* Checks that the field is static, registers the field (fluids), and registers the models on the client
|
||||
*/
|
||||
static void register() {
|
||||
Field[] declaredFields = Fluids.class.getDeclaredFields();
|
||||
for (Field field : declaredFields) {
|
||||
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
|
||||
Field[] declaredFields = Fluids.class.getDeclaredFields(); // Gets the blocks and ores declared above
|
||||
for (Field field : declaredFields) { // Iterates through the fields declared above
|
||||
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { // Checks that the fields are static
|
||||
Class<?> targetType = field.getType();
|
||||
try {
|
||||
BasicTinkerFluid fluid = (BasicTinkerFluid) field.get(targetType);
|
||||
registerFluid(fluid);
|
||||
BasicTinkerFluid fluid = (BasicTinkerFluid) field.get(targetType); // Gets the field as a
|
||||
// BasicTinkerFluid
|
||||
registerFluid(fluid); // Registers the fluid into the game along wit its bucket
|
||||
|
||||
BlockMolten block = new BlockMolten(fluid);
|
||||
// Sets names
|
||||
block.setUnlocalizedName("molten_" + fluid.getName());
|
||||
block.setRegistryName(TAIGA.MODID, "molten_" + fluid.getName());
|
||||
Utils.registerBlockWithItem(block);
|
||||
|
||||
// Registers the fluid in its block form and its corresponding item (block/fluid as item in
|
||||
// inventory)
|
||||
ForgeRegistries.BLOCKS.register(block);
|
||||
ForgeRegistries.ITEMS.register(new ItemBlock(block).setRegistryName(block.getRegistryName()));
|
||||
TAIGA.proxy.registerFluidModels(fluid);
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
@@ -81,16 +92,19 @@ public class Fluids {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers special smeltery recipes (not alloying)
|
||||
*/
|
||||
static void registerfromItem() {
|
||||
registerMelting(radiant_pearl, radiant_enderium, 72);
|
||||
registerMelting(glimmer_pearl, glimming_enderium, 72);
|
||||
registerMelting(energy_pearl, energy_enderium, 72);
|
||||
registerMelting(glimmercoal, glimmercoalFluid, 72);
|
||||
registerMelting(nitro_brick, nitroFluid, 72);
|
||||
registerMelting(anthracite_dust, anthraciteFluid, 72);
|
||||
registerMelting(spectrum_dust, spectrumFluid, 72);
|
||||
registerMelting(Blocks.OBSIDIAN, FluidRegistry.LAVA, 432);
|
||||
registerMelting(Blocks.NETHERRACK, FluidRegistry.LAVA, 48);
|
||||
registerMelting(Blocks.STONE, FluidRegistry.LAVA, 144);
|
||||
TinkerRegistry.registerMelting(Blocks.blockMeteoriteCobble, meteoriteFluid, 288);
|
||||
TinkerRegistry.registerMelting(Blocks.blockObsidiorite, meteoriteFluid, 288);
|
||||
TinkerRegistry.registerMelting(net.minecraft.init.Blocks.MAGMA, magmaFluid, 288);
|
||||
TinkerRegistry.registerMelting(Items.dilithiumCrystal, dilithiumFluid, 72);
|
||||
TinkerRegistry.registerMelting(Items.tiberiumCrystal, tiberiumFluid, 72);
|
||||
|
||||
TinkerRegistry.registerSmelteryFuel(new FluidStack(magmaFluid, 50), 100);
|
||||
TinkerRegistry.registerSmelteryFuel(new FluidStack(nitroniteFluid, 100), 500);
|
||||
TinkerRegistry.registerSmelteryFuel(new FluidStack(dilithiumFluid, 50), 100);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -3,98 +3,207 @@ package com.sosnitzka.taiga;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import com.sosnitzka.taiga.generic.BasicItem;
|
||||
import com.sosnitzka.taiga.items.ItemIronNugget;
|
||||
import com.sosnitzka.taiga.items.ItemLignite;
|
||||
import com.sosnitzka.taiga.items.ItemSlaggoldIngot;
|
||||
import com.sosnitzka.taiga.items.ItemSlagironIngot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.registry.ForgeRegistries;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
|
||||
import static com.sosnitzka.taiga.util.Utils.PREFIX_INGOT;
|
||||
import static com.sosnitzka.taiga.util.Utils.PREFIX_NUGGET;
|
||||
import static com.sosnitzka.taiga.util.Utils.*;
|
||||
|
||||
public class Items {
|
||||
public static ItemSlagironIngot slagironIngot = new ItemSlagironIngot();
|
||||
public static Item lignite = new ItemLignite("lignite", "lignite");
|
||||
public static Item lignite2 = new ItemLignite("lignite", "lignite2");
|
||||
public static Item lignite3 = new ItemLignite("lignite", "lignite3");
|
||||
public static ItemIronNugget iron_nugget = new ItemIronNugget();
|
||||
public static ItemSlaggoldIngot slaggoldIngot = new ItemSlaggoldIngot();
|
||||
public static Item fuel_brick = new BasicItem("fuel_brick");
|
||||
|
||||
public static Item glimmercoal = new BasicItem("glimmercoal");
|
||||
public static Item radiant_pearl = new BasicItem("radiant_pearl");
|
||||
public static Item glimmer_pearl = new BasicItem("glimmer_pearl");
|
||||
public static Item energy_pearl = new BasicItem("energy_pearl");
|
||||
public static Item glimmerstone_dust = new BasicItem("glimmerstone_dust");
|
||||
public static Item luminar_dust = new BasicItem("luminar_dust");
|
||||
public static Item spectrum_dust = new BasicItem("spectrum_dust");
|
||||
public static Item anthracite_dust = new BasicItem("anthracite_dust");
|
||||
public static Item nitro_brick = new BasicItem("nitro_brick");
|
||||
public static Item ironNugget = new BasicItem("iron_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item titaniteIngot = new BasicItem("titanite_ingot", PREFIX_INGOT);
|
||||
public static Item adamantiteIngot = new BasicItem("adamantite_ingot", PREFIX_INGOT);
|
||||
public static Item arcaniteIngot = new BasicItem("arcanite_ingot", PREFIX_INGOT);
|
||||
public static Item violiumIngot = new BasicItem("violium_ingot", PREFIX_INGOT);
|
||||
public static Item bismuthIngot = new BasicItem("bismuth_ingot", PREFIX_INGOT);
|
||||
public static Item eterniteIngot = new BasicItem("eternite_ingot", PREFIX_INGOT);
|
||||
public static Item ignititeIngot = new BasicItem("ignitite_ingot", PREFIX_INGOT);
|
||||
public static Item karmesineIngot = new BasicItem("karmesine_ingot", PREFIX_INGOT);
|
||||
public static Item meteoriteIngot = new BasicItem("meteorite_ingot", PREFIX_INGOT);
|
||||
public static Item mindoriteIngot = new BasicItem("mindorite_ingot", PREFIX_INGOT);
|
||||
public static Item mythrilIngot = new BasicItem("mythril_ingot", PREFIX_INGOT);
|
||||
public static Item palladiumIngot = new BasicItem("palladium_ingot", PREFIX_INGOT);
|
||||
public static Item prometheumIngot = new BasicItem("prometheum_ingot", PREFIX_INGOT);
|
||||
public static Item tiberiumIngot = new BasicItem("tiberium_ingot", PREFIX_INGOT);
|
||||
public static Item tiberiumDust = new BasicItem("tiberium_dust", PREFIX_DUST);
|
||||
public static Item tiberiumNugget = new BasicItem("tiberium_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item auroriumIngot = new BasicItem("aurorium_ingot", PREFIX_INGOT);
|
||||
public static Item auroriumDust = new BasicItem("aurorium_dust", PREFIX_DUST);
|
||||
public static Item auroriumNugget = new BasicItem("aurorium_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item prometheumIngot = new BasicItem("prometheum_ingot", PREFIX_INGOT);
|
||||
public static Item prometheumDust = new BasicItem("prometheum_dust", PREFIX_DUST);
|
||||
public static Item prometheumNugget = new BasicItem("prometheum_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item duraniteIngot = new BasicItem("duranite_ingot", PREFIX_INGOT);
|
||||
public static Item duraniteDust = new BasicItem("duranite_dust", PREFIX_DUST);
|
||||
public static Item duraniteNugget = new BasicItem("duranite_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item valyriumIngot = new BasicItem("valyrium_ingot", PREFIX_INGOT);
|
||||
public static Item valyriumDust = new BasicItem("valyrium_dust", PREFIX_DUST);
|
||||
public static Item valyriumNugget = new BasicItem("valyrium_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item vibraniumIngot = new BasicItem("vibranium_ingot", PREFIX_INGOT);
|
||||
public static Item rubiumIngot = new BasicItem("rubium_ingot", PREFIX_INGOT);
|
||||
public static Item vibraniumDust = new BasicItem("vibranium_dust", PREFIX_DUST);
|
||||
public static Item vibraniumNugget = new BasicItem("vibranium_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item karmesineIngot = new BasicItem("karmesine_ingot", PREFIX_INGOT);
|
||||
public static Item karmesineDust = new BasicItem("karmesine_dust", PREFIX_DUST);
|
||||
public static Item karmesineNugget = new BasicItem("karmesine_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item oviumIngot = new BasicItem("ovium_ingot", PREFIX_INGOT);
|
||||
public static Item oviumDust = new BasicItem("ovium_dust", PREFIX_DUST);
|
||||
public static Item oviumNugget = new BasicItem("ovium_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item jauxumIngot = new BasicItem("jauxum_ingot", PREFIX_INGOT);
|
||||
public static Item jauxumDust = new BasicItem("jauxum_dust", PREFIX_DUST);
|
||||
public static Item jauxumNugget = new BasicItem("jauxum_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item terraxIngot = new BasicItem("terrax_ingot", PREFIX_INGOT);
|
||||
public static Item terraxDust = new BasicItem("terrax_dust", PREFIX_DUST);
|
||||
public static Item terraxNugget = new BasicItem("terrax_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item palladiumIngot = new BasicItem("palladium_ingot", PREFIX_INGOT);
|
||||
public static Item palladiumDust = new BasicItem("palladium_dust", PREFIX_DUST);
|
||||
public static Item palladiumNugget = new BasicItem("palladium_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item uruIngot = new BasicItem("uru_ingot", PREFIX_INGOT);
|
||||
public static Item uruDust = new BasicItem("uru_dust", PREFIX_DUST);
|
||||
public static Item uruNugget = new BasicItem("uru_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item osramIngot = new BasicItem("osram_ingot", PREFIX_INGOT);
|
||||
public static Item osramDust = new BasicItem("osram_dust", PREFIX_DUST);
|
||||
public static Item osramNugget = new BasicItem("osram_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item abyssumIngot = new BasicItem("abyssum_ingot", PREFIX_INGOT);
|
||||
public static Item abyssumDust = new BasicItem("abyssum_dust", PREFIX_DUST);
|
||||
public static Item abyssumNugget = new BasicItem("abyssum_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item eezoIngot = new BasicItem("eezo_ingot", PREFIX_INGOT);
|
||||
public static Item eezoDust = new BasicItem("eezo_dust", PREFIX_DUST);
|
||||
public static Item eezoNugget = new BasicItem("eezo_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item triberiumIngot = new BasicItem("triberium_ingot", PREFIX_INGOT);
|
||||
public static Item triberiumDust = new BasicItem("triberium_dust", PREFIX_DUST);
|
||||
public static Item triberiumNugget = new BasicItem("triberium_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item fractumIngot = new BasicItem("fractum_ingot", PREFIX_INGOT);
|
||||
public static Item fractumDust = new BasicItem("fractum_dust", PREFIX_DUST);
|
||||
public static Item fractumNugget = new BasicItem("fractum_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item violiumIngot = new BasicItem("violium_ingot", PREFIX_INGOT);
|
||||
public static Item violiumDust = new BasicItem("violium_dust", PREFIX_DUST);
|
||||
public static Item violiumNugget = new BasicItem("violium_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item proxiiIngot = new BasicItem("proxii_ingot", PREFIX_INGOT);
|
||||
public static Item proxiiDust = new BasicItem("proxii_dust", PREFIX_DUST);
|
||||
public static Item proxiiNugget = new BasicItem("proxii_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item tritoniteIngot = new BasicItem("tritonite_ingot", PREFIX_INGOT);
|
||||
public static Item tritoniteDust = new BasicItem("tritonite_dust", PREFIX_DUST);
|
||||
public static Item tritoniteNugget = new BasicItem("tritonite_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item ignitzIngot = new BasicItem("ignitz_ingot", PREFIX_INGOT);
|
||||
public static Item ignitzDust = new BasicItem("ignitz_dust", PREFIX_DUST);
|
||||
public static Item ignitzNugget = new BasicItem("ignitz_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item imperomiteIngot = new BasicItem("imperomite_ingot", PREFIX_INGOT);
|
||||
public static Item imperomiteDust = new BasicItem("imperomite_dust", PREFIX_DUST);
|
||||
public static Item imperomiteNugget = new BasicItem("imperomite_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item solariumIngot = new BasicItem("solarium_ingot", PREFIX_INGOT);
|
||||
public static Item solariumDust = new BasicItem("solarium_dust", PREFIX_DUST);
|
||||
public static Item solariumNugget = new BasicItem("solarium_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item nihiliteIngot = new BasicItem("nihilite_ingot", PREFIX_INGOT);
|
||||
public static Item nihiliteDust = new BasicItem("nihilite_dust", PREFIX_DUST);
|
||||
public static Item nihiliteNugget = new BasicItem("nihilite_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item adamantIngot = new BasicItem("adamant_ingot", PREFIX_INGOT);
|
||||
public static Item adamantDust = new BasicItem("adamant_dust", PREFIX_DUST);
|
||||
public static Item adamantNugget = new BasicItem("adamant_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item dyoniteIngot = new BasicItem("dyonite_ingot", PREFIX_INGOT);
|
||||
public static Item dyoniteDust = new BasicItem("dyonite_dust", PREFIX_DUST);
|
||||
public static Item dyoniteNugget = new BasicItem("dyonite_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item nucleumIngot = new BasicItem("nucleum_ingot", PREFIX_INGOT);
|
||||
public static Item nucleumDust = new BasicItem("nucleum_dust", PREFIX_DUST);
|
||||
public static Item nucleumNugget = new BasicItem("nucleum_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item lumixIngot = new BasicItem("lumix_ingot", PREFIX_INGOT);
|
||||
public static Item lumixDust = new BasicItem("lumix_dust", PREFIX_DUST);
|
||||
public static Item lumixNugget = new BasicItem("lumix_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item seismumIngot = new BasicItem("seismum_ingot", PREFIX_INGOT);
|
||||
public static Item seismumDust = new BasicItem("seismum_dust", PREFIX_DUST);
|
||||
public static Item seismumNugget = new BasicItem("seismum_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item astriumIngot = new BasicItem("astrium_ingot", PREFIX_INGOT);
|
||||
public static Item nitroniteIngot = new BasicItem("nitronite_ingot", PREFIX_INGOT);
|
||||
public static Item proxideumIngot = new BasicItem("proxideum_ingot", PREFIX_INGOT);
|
||||
public static Item noctunyxIngot = new BasicItem("noctunyx_ingot", PREFIX_INGOT);
|
||||
public static Item imperomiteIngot = new BasicItem("imperomite_ingot", PREFIX_INGOT);
|
||||
public static Item cryptogenIngot = new BasicItem("cryptogen_ingot", PREFIX_INGOT);
|
||||
public static Item fractoryteIngot = new BasicItem("fractoryte_ingot", PREFIX_INGOT);
|
||||
public static Item seismodiumIngot = new BasicItem("seismodium_ingot", PREFIX_INGOT);
|
||||
public static Item terramiteIngot = new BasicItem("terramite_ingot", PREFIX_INGOT);
|
||||
public static Item lumixylIngot = new BasicItem("lumixyl_ingot", PREFIX_INGOT);
|
||||
public static Item solariumIngot = new BasicItem("solarium_ingot", PREFIX_INGOT);
|
||||
public static Item dyoniteIngot = new BasicItem("dyonite_ingot", PREFIX_INGOT);
|
||||
public static Item ultraniteIngot = new BasicItem("ultranite_ingot", PREFIX_INGOT);
|
||||
public static Item nucleumIngot = new BasicItem("nucleum_ingot", PREFIX_INGOT);
|
||||
public static Item aegisaltIngot = new BasicItem("aegisalt_ingot", PREFIX_INGOT);
|
||||
public static Item bysmuidIngot = new BasicItem("bysmuid_ingot", PREFIX_INGOT);
|
||||
public static Item astriumDust = new BasicItem("astrium_dust", PREFIX_DUST);
|
||||
public static Item astriumNugget = new BasicItem("astrium_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item tiberiumShardInstable = new BasicItem("tiberium_shard_instable");
|
||||
public static Item tiberiumShardStable = new BasicItem("tiberium_nugget", PREFIX_NUGGET);
|
||||
public static Item niobIngot = new BasicItem("niob_ingot", PREFIX_INGOT);
|
||||
public static Item niobDust = new BasicItem("niob_dust", PREFIX_DUST);
|
||||
public static Item niobNugget = new BasicItem("niob_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item yrdeenIngot = new BasicItem("yrdeen_ingot", PREFIX_INGOT);
|
||||
public static Item yrdeenDust = new BasicItem("yrdeen_dust", PREFIX_DUST);
|
||||
public static Item yrdeenNugget = new BasicItem("yrdeen_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item ioxIngot = new BasicItem("iox_ingot", PREFIX_INGOT);
|
||||
public static Item ioxDust = new BasicItem("iox_dust", PREFIX_DUST);
|
||||
public static Item ioxNugget = new BasicItem("iox_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item meteoriteIngot = new BasicItem("meteorite_ingot", PREFIX_INGOT);
|
||||
public static Item meteoriteDust = new BasicItem("meteorite_dust", PREFIX_DUST);
|
||||
public static Item meteoriteNugget = new BasicItem("meteorite_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item basaltIngot = new BasicItem("basalt_ingot", PREFIX_INGOT);
|
||||
public static Item basaltDust = new BasicItem("basalt_dust", PREFIX_DUST);
|
||||
public static Item basaltNugget = new BasicItem("basalt_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item obsidioriteIngot = new BasicItem("obsidiorite_ingot", PREFIX_INGOT);
|
||||
public static Item obsidioriteDust = new BasicItem("obsidiorite_dust", PREFIX_DUST);
|
||||
public static Item obsidioriteNugget = new BasicItem("obsidiorite_nugget", PREFIX_NUGGET);
|
||||
|
||||
public static Item dilithiumIngot = new BasicItem("dilithium_ingot", PREFIX_INGOT);
|
||||
public static Item dilithiumDust = new BasicItem("dilithium_dust", PREFIX_DUST);
|
||||
public static Item dilithiumCrystal = new BasicItem("dilithium_crystal", PREFIX_CRYSTAL);
|
||||
public static Item tiberiumCrystal = new BasicItem("tiberium_crystal", PREFIX_CRYSTAL);
|
||||
public static Item dilithiumNugget = new BasicItem("dilithium_nugget", PREFIX_NUGGET);
|
||||
|
||||
/**
|
||||
* Registers all materials' ingots and nuggets <br>
|
||||
* Detailed summary: <br>
|
||||
* Gets the ingots declared in the class (fields and reflection) and iterates through them: <br>
|
||||
* Checks that the field is static, registers the field (item), and adds an oreDict entry if needed
|
||||
*/
|
||||
@SubscribeEvent
|
||||
public static void register() {
|
||||
Field[] declaredFields = Items.class.getDeclaredFields();
|
||||
for (Field field : declaredFields) {
|
||||
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
|
||||
Field[] declaredFields = Items.class.getDeclaredFields(); // Gets the fields (ingots) declared above
|
||||
for (Field field : declaredFields) { // Iterates through the fields declared above
|
||||
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { // Checks that the fields are static
|
||||
Class<?> targetType = field.getType();
|
||||
try {
|
||||
Item item = (Item) field.get(targetType);
|
||||
GameRegistry.register(item);
|
||||
|
||||
if (item instanceof BasicItem) {
|
||||
if (((BasicItem) item).isOreDict()) {
|
||||
Item item = (Item) field.get(targetType); // Gets the field as a BasicItem which is then casted
|
||||
// to an Item
|
||||
if (item.equals(ironNugget) && OreDictionary.doesOreNameExist("nuggetIron")) {
|
||||
System.out.println("TAIGA: Skipped registration of nuggetIron which already exists.");
|
||||
continue;
|
||||
}
|
||||
item.setCreativeTab(CreativeTab.tabTaigaItem);
|
||||
ForgeRegistries.ITEMS.register(item); // Registers the item into the game
|
||||
if (item instanceof BasicItem) { // Checks that the item is a BasicItem
|
||||
if (((BasicItem) item).isOreDict()) { // Checks if this item should be registered into the
|
||||
// oreDict and registers it
|
||||
String oreDictName;
|
||||
String[] nameParts = item.getUnlocalizedName().replace("item.", "").split("_");
|
||||
|
||||
if (nameParts.length > 2) {
|
||||
oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts.length - 1));
|
||||
oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts.length -
|
||||
1));
|
||||
} else {
|
||||
oreDictName = nameParts[0];
|
||||
}
|
||||
|
||||
OreDictionary.registerOre(((BasicItem) item).getOreDictPrefix() + StringUtils.capitalize(oreDictName), item);
|
||||
OreDictionary.registerOre(((BasicItem) item).getOreDictPrefix() + StringUtils.capitalize
|
||||
(oreDictName), item); // Registers into oreDict
|
||||
}
|
||||
}
|
||||
} catch (IllegalAccessException e) {
|
||||
@@ -102,10 +211,6 @@ public class Items {
|
||||
}
|
||||
}
|
||||
}
|
||||
OreDictionary.registerOre("nuggetIron", iron_nugget);
|
||||
OreDictionary.registerOre("ingotIron", slagironIngot);
|
||||
OreDictionary.registerOre("ingotGold", slaggoldIngot);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
8
src/main/java/com/sosnitzka/taiga/Keybindings.java
Normal file
8
src/main/java/com/sosnitzka/taiga/Keybindings.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package com.sosnitzka.taiga;
|
||||
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
public class Keybindings {
|
||||
public static KeyBinding altKey = new KeyBinding("key.taiga.alt_action", Keyboard.KEY_LCONTROL, "TAIGA");
|
||||
}
|
@@ -3,25 +3,24 @@ package com.sosnitzka.taiga;
|
||||
|
||||
import com.sosnitzka.taiga.traits.*;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import slimeknights.tconstruct.library.materials.HandleMaterialStats;
|
||||
import slimeknights.tconstruct.library.materials.HeadMaterialStats;
|
||||
import slimeknights.tconstruct.library.materials.Material;
|
||||
import slimeknights.tconstruct.library.materials.MaterialTypes;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
|
||||
import static slimeknights.tconstruct.tools.TinkerMaterials.*;
|
||||
import static com.sosnitzka.taiga.Fluids.obsidioriteFluid;
|
||||
import static slimeknights.tconstruct.tools.TinkerTraits.alien;
|
||||
import static slimeknights.tconstruct.tools.TinkerTraits.crumbling;
|
||||
|
||||
public class MaterialTraits {
|
||||
|
||||
// new hardness levels
|
||||
public static final int TITANITE = 5;
|
||||
public static final int METEORITE = 6;
|
||||
public static final int DURANITE = 5;
|
||||
public static final int VALYRIUM = 6;
|
||||
public static final int VIBRANIUM = 7;
|
||||
public static final int ADAMANTITE = 8;
|
||||
|
||||
// Init of new traits
|
||||
public static final AbstractTrait instable = new TraitInstable();
|
||||
public static final AbstractTrait instable = new TraitUnstable();
|
||||
public static final AbstractTrait naturebound = new TraitNatureBound();
|
||||
public static final AbstractTrait uncertain = new TraitUncertain();
|
||||
public static final AbstractTrait softy = new TraitSofty();
|
||||
public static final AbstractTrait curvature = new TraitCurvature();
|
||||
public static final AbstractTrait resonance = new TraitResonance();
|
||||
@@ -35,50 +34,72 @@ public class MaterialTraits {
|
||||
public static final AbstractTrait dark = new TraitDark();
|
||||
public static final AbstractTrait bright = new TraitBright();
|
||||
public static final AbstractTrait slaughtering = new TraitSlaughtering();
|
||||
public static final AbstractTrait haunted = new TraitHaunted();
|
||||
public static final AbstractTrait fragile = new TraitFragile();
|
||||
public static final AbstractTrait dissolving = new TraitDissolving();
|
||||
public static final AbstractTrait organizing = new TraitOrganizing();
|
||||
public static final AbstractTrait arcane = new TraitArcane();
|
||||
public static final AbstractTrait heroic = new TraitHeroic();
|
||||
public static final AbstractTrait hollow = new TraitHollow();
|
||||
public static final AbstractTrait diffuse = new TraitDiffuse();
|
||||
public static final AbstractTrait randomize = new TraitRandomize();
|
||||
public static final AbstractTrait reviving = new TraitReviving();
|
||||
public static final AbstractTrait melting = new TraitMelting();
|
||||
public static final AbstractTrait tantrum = new TraitTantrum();
|
||||
public static final AbstractTrait catcher = new TraitCatcher();
|
||||
public static final AbstractTrait congenial = new TraitCongenial();
|
||||
public static final AbstractTrait souleater = new TraitSoulEater();
|
||||
public static final AbstractTrait cursed = new TraitCursed();
|
||||
public static final AbstractTrait ported = new TraitPorted();
|
||||
public static final AbstractTrait decay = new TraitDecay();
|
||||
public static final AbstractTrait whirl = new TraitWhirl();
|
||||
public static final AbstractTrait superheavy = new TraitSuperHeavy();
|
||||
public static final AbstractTrait berserk = new TraitBerserk();
|
||||
public static final AbstractTrait crushing = new TraitCrushing();
|
||||
public static final AbstractTrait mutate = new TraitMutate();
|
||||
|
||||
|
||||
public static Material arcanite = new Material("arcanite", TextFormatting.LIGHT_PURPLE).addTrait(arcane, HeadMaterialStats.TYPE).addTrait(blind, HandleMaterialStats.TYPE);
|
||||
/*
|
||||
* Assign traits to related materials. <br>
|
||||
* <p>
|
||||
* <p> Example:
|
||||
* .addTrait(x, HandleMaterialStats.TYPE).addTrait(y, HeadMaterialStats.TYPE)
|
||||
* .addTrait(z)
|
||||
*/
|
||||
|
||||
public static Material tiberium = new Material("tiberium", TextFormatting.GREEN).addTrait(instable);
|
||||
public static Material prometheum = new Material("prometheum", TextFormatting.DARK_PURPLE).addTrait(haunted, HeadMaterialStats.TYPE).addTrait(blind);
|
||||
public static Material rubium = new Material("rubium", TextFormatting.RED).addTrait(enderference, HeadMaterialStats.TYPE).addTrait(blind);
|
||||
public static Material violium = new Material("violium", TextFormatting.DARK_GREEN).addTrait(stonebound, HandleMaterialStats.TYPE).addTrait(poisonous, HeadMaterialStats.TYPE);
|
||||
public static Material bismuth = new Material("bismuth", TextFormatting.GREEN).addTrait(splintering, HeadMaterialStats.TYPE).addTrait(splinters, HandleMaterialStats.TYPE);
|
||||
public static Material karmesine = new Material("karmesine", TextFormatting.DARK_RED).addTrait(aridiculous, HandleMaterialStats.TYPE).addTrait(superheat, HeadMaterialStats.TYPE);
|
||||
public static Material mindorite = new Material("mindorite", TextFormatting.AQUA).addTrait(cheap);
|
||||
public static Material titanite = new Material("titanite", TextFormatting.GRAY).addTrait(shocking, HandleMaterialStats.TYPE).addTrait(sharp, HeadMaterialStats.TYPE);
|
||||
public static Material meteorite = new Material("meteorite", TextFormatting.GRAY).addTrait(established, HandleMaterialStats.TYPE).addTrait(momentum, HeadMaterialStats.TYPE);
|
||||
public static Material adamantite = new Material("adamantite", TextFormatting.GRAY).addTrait(coldblooded, HeadMaterialStats.TYPE).addTrait(magnetic, HandleMaterialStats.TYPE);
|
||||
public static Material vibranium = new Material("vibranium", TextFormatting.GRAY).addTrait(resonance);
|
||||
public static Material ignitite = new Material("ignitite", TextFormatting.RED).addTrait(melting, HandleMaterialStats.TYPE).addTrait(flammable, HeadMaterialStats.TYPE);
|
||||
public static Material palladium = new Material("palladium", TextFormatting.DARK_GRAY).addTrait(dark);
|
||||
public static Material eternite = new Material("eternite", TextFormatting.AQUA).addTrait(writable2);
|
||||
public static Material mythril = new Material("mythril", TextFormatting.GRAY).addTrait(holy, HeadMaterialStats.TYPE).addTrait(hellish, HandleMaterialStats.TYPE);
|
||||
public static Material aurorium = new Material("aurorium", TextFormatting.RED).addTrait(arcane);
|
||||
public static Material prometheum = new Material("prometheum", TextFormatting.DARK_PURPLE).addTrait(blind, MaterialTypes.HANDLE).addTrait(catcher);
|
||||
public static Material duranite = new Material("duranite", TextFormatting.YELLOW).addTrait(analysing);
|
||||
public static Material valyrium = new Material("valyrium", TextFormatting.DARK_GRAY).addTrait(congenial);
|
||||
public static Material vibranium = new Material("vibranium", TextFormatting.GRAY).addTrait(resonance, MaterialTypes.HANDLE).addTrait(heroic, MaterialTypes.HEAD);
|
||||
public static Material terrax = new Material("terrax", TextFormatting.DARK_GRAY).addTrait(slaughtering);
|
||||
public static Material palladium = new Material("palladium", TextFormatting.GOLD).addTrait(dark).addTrait(cursed);
|
||||
public static Material uru = new Material("uru", TextFormatting.DARK_RED).addTrait(diffuse);
|
||||
public static Material basalt = new Material("basalt", TextFormatting.WHITE).addTrait(softy);
|
||||
public static Material eezo = new Material("eezo", TextFormatting.GOLD).addTrait(dissolving).addTrait(superheavy);
|
||||
public static Material triberium = new Material("triberium", TextFormatting.GREEN).addTrait(fragile);
|
||||
public static Material fractum = new Material("fractum", TextFormatting.DARK_RED).addTrait(fracture);
|
||||
public static Material violium = new Material("violium", TextFormatting.DARK_PURPLE).addTrait(arcane);
|
||||
public static Material proxii = new Material("proxii", TextFormatting.LIGHT_PURPLE).addTrait(curvature);
|
||||
public static Material tritonite = new Material("tritonite", TextFormatting.GOLD).addTrait(whirl);
|
||||
public static Material ignitz = new Material("ignitz", TextFormatting.RED).addTrait(melting).addTrait(garishly, MaterialTypes.HANDLE);
|
||||
public static Material imperomite = new Material("imperomite", TextFormatting.DARK_RED).addTrait(hollow);
|
||||
public static Material solarium = new Material("solarium", TextFormatting.YELLOW).addTrait(superheavy).addTrait(crushing);
|
||||
public static Material nihilite = new Material("nihilite", TextFormatting.DARK_GRAY).addTrait(souleater);
|
||||
public static Material adamant = new Material("adamant", TextFormatting.GOLD).addTrait(berserk);
|
||||
public static Material dyonite = new Material("dyonite", TextFormatting.GREEN).addTrait(tantrum);
|
||||
public static Material nucleum = new Material("nucleum", TextFormatting.YELLOW).addTrait(decay).addTrait(mutate);
|
||||
public static Material lumix = new Material("lumix", TextFormatting.YELLOW).addTrait(bright, MaterialTypes.HANDLE).addTrait(glimmer, MaterialTypes.HEAD);
|
||||
public static Material seismum = new Material("seismum", TextFormatting.GREEN).addTrait(cascade);
|
||||
public static Material astrium = new Material("astrium", TextFormatting.DARK_PURPLE).addTrait(ported);
|
||||
public static Material niob = new Material("niob", TextFormatting.RED).addTrait(reviving);
|
||||
public static Material yrdeen = new Material("yrdeen", TextFormatting.RED).addTrait(naturebound);
|
||||
public static Material meteorite = new Material("meteorite", TextFormatting.DARK_GREEN).addTrait(crumbling, MaterialTypes.HEAD).addTrait(pulverizing);
|
||||
public static Material obsidiorite = new Material("obsidiorite", obsidioriteFluid.getColor()).addTrait(alien);
|
||||
|
||||
public static Material osram = new Material("osram", TextFormatting.GOLD);
|
||||
public static Material abyssum = new Material("abyssum", TextFormatting.GOLD);
|
||||
public static Material ovium = new Material("ovium", TextFormatting.BLUE);
|
||||
public static Material jauxum = new Material("jauxum", TextFormatting.YELLOW);
|
||||
public static Material karmesine = new Material("karmesine", TextFormatting.RED);
|
||||
public static Material dilithium = new Material("dilithium", TextFormatting.BLUE);
|
||||
|
||||
public static Material imperomite = new Material("imperomite", TextFormatting.DARK_RED).addTrait(cascade, HeadMaterialStats.TYPE).addTrait(fragile);
|
||||
public static Material fractoryte = new Material("fractoryte", TextFormatting.DARK_RED).addTrait(fracture, HeadMaterialStats.TYPE).addTrait(fragile);
|
||||
public static Material noctunyx = new Material("noctunyx", TextFormatting.LIGHT_PURPLE).addTrait(hollow, HeadMaterialStats.TYPE).addTrait(reviving, HandleMaterialStats.TYPE);
|
||||
public static Material nitronite = new Material("nitronite", TextFormatting.YELLOW).addTrait(uncertain);
|
||||
public static Material cryptogen = new Material("cryptogen", TextFormatting.DARK_GREEN).addTrait(randomize);
|
||||
public static Material seismodium = new Material("seismodium", TextFormatting.WHITE).addTrait(heroic);
|
||||
public static Material aegisalt = new Material("aegisalt", TextFormatting.AQUA).addTrait(analysing);
|
||||
public static Material ultranite = new Material("ultranite", TextFormatting.AQUA).addTrait(pulverizing);
|
||||
public static Material bysmuid = new Material("bysmuid", TextFormatting.AQUA).addTrait(organizing, HandleMaterialStats.TYPE).addTrait(melting, HeadMaterialStats.TYPE);
|
||||
public static Material nucleum = new Material("nucleum", TextFormatting.AQUA).addTrait(diffuse).addTrait(bright, HeadMaterialStats.TYPE);
|
||||
public static Material lumixyl = new Material("lumixyl", TextFormatting.YELLOW).addTrait(glimmer);
|
||||
public static Material dyonite = new Material("dyonite", TextFormatting.GRAY).addTrait(slaughtering, HeadMaterialStats.TYPE).addTrait(dissolving, HandleMaterialStats.TYPE);
|
||||
public static Material terramite = new Material("terramite", TextFormatting.GRAY).addTrait(naturebound).addTrait(fragile);
|
||||
public static Material solarium = new Material("solarium", TextFormatting.RED).addTrait(garishly);
|
||||
public static Material astrium = new Material("astrium", TextFormatting.DARK_PURPLE).addTrait(curvature);
|
||||
public static Material proxideum = new Material("proxideum", TextFormatting.LIGHT_PURPLE).addTrait(softy, HandleMaterialStats.TYPE).addTrait(lightweight);
|
||||
}
|
||||
|
@@ -1,121 +1,139 @@
|
||||
package com.sosnitzka.taiga;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.sosnitzka.taiga.proxy.ServerProxy;
|
||||
import com.sosnitzka.taiga.recipes.Crafting;
|
||||
import com.sosnitzka.taiga.recipes.Smelting;
|
||||
import com.sosnitzka.taiga.util.FuelHandler;
|
||||
import com.sosnitzka.taiga.world.ZWorldGen;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import com.sosnitzka.taiga.proxy.CommonProxy;
|
||||
import com.sosnitzka.taiga.recipes.CraftingRegistry;
|
||||
import com.sosnitzka.taiga.recipes.SmeltingRegistry;
|
||||
import com.sosnitzka.taiga.world.WorldGen;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.Mod.EventHandler;
|
||||
import net.minecraftforge.fml.common.SidedProxy;
|
||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
||||
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import slimeknights.tconstruct.library.MaterialIntegration;
|
||||
import slimeknights.tconstruct.library.TinkerRegistry;
|
||||
import slimeknights.tconstruct.library.materials.ExtraMaterialStats;
|
||||
import slimeknights.tconstruct.library.materials.HandleMaterialStats;
|
||||
import slimeknights.tconstruct.library.materials.HeadMaterialStats;
|
||||
import slimeknights.tconstruct.tools.TinkerMaterials;
|
||||
import slimeknights.tconstruct.library.materials.BowMaterialStats;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.sosnitzka.taiga.Fluids.*;
|
||||
import static com.sosnitzka.taiga.MaterialTraits.*;
|
||||
import static com.sosnitzka.taiga.util.Utils.integrateMaterial;
|
||||
import static com.sosnitzka.taiga.util.Utils.integrateOre;
|
||||
import static slimeknights.tconstruct.library.utils.HarvestLevels.*;
|
||||
|
||||
@Mod(modid = TAIGA.MODID, version = TAIGA.VERSION, dependencies = "required-after:tconstruct@[1.10-2.3.3,);" + "required-after:mantle@[1.10-0.10.3,)")
|
||||
@Mod(modid = TAIGA.MODID, version = TAIGA.VERSION, guiFactory = TAIGA.GUIFACTORY, dependencies =
|
||||
"required-after:tconstruct@[1.10.2-2.5.0,);" + "required-after:mantle@[1.10.2-1.0.0,)")
|
||||
public class TAIGA {
|
||||
|
||||
public static final String MODID = "taiga";
|
||||
public static final String VERSION = "@VERSION@";
|
||||
public static final String VERSION = "1.12.2-1.3.3";
|
||||
public static final String GUIFACTORY = "com.sosnitzka.taiga.TAIGAGuiFactory";
|
||||
public static Logger logger;
|
||||
|
||||
@SidedProxy(clientSide = "com.sosnitzka.taiga.proxy.ClientProxy", serverSide = "com.sosnitzka.taiga.proxy.ServerProxy")
|
||||
public static ServerProxy proxy;
|
||||
private List<MaterialIntegration> integrateList = Lists.newArrayList();
|
||||
@SidedProxy(clientSide = "com.sosnitzka.taiga.proxy.ClientProxy", serverSide = "com.sosnitzka.taiga.proxy" +
|
||||
".CommonProxy")
|
||||
public static CommonProxy proxy;
|
||||
|
||||
public static List<MaterialIntegration> integrateList = Lists.newArrayList(); // List of materials needed to be integrated
|
||||
|
||||
@EventHandler
|
||||
public void preInit(FMLPreInitializationEvent e) {
|
||||
Items.register();
|
||||
Fluids.register();
|
||||
Blocks.register();
|
||||
Fluids.registerfromItem();
|
||||
Alloys.register();
|
||||
logger = e.getModLog();
|
||||
|
||||
// ARCANE ORES
|
||||
registerTinkerMaterial("Tiberium", tiberium, tiberiumFluid, 223, 6.2f, 8.35f, 0.63f, 50, 50, OBSIDIAN, false, true);
|
||||
registerTinkerMaterial("Rubium", rubium, rubiumFluid, 351, 5.15f, 7.00f, 1.05f, -100, 250, COBALT, false, true);
|
||||
registerTinkerMaterial("Prometheum", prometheum, prometheumFluid, 539, 3.6f, 6.60f, 0.90f, 0, 150, TITANITE, false, true);
|
||||
registerTinkerMaterial("Arcanite", arcanite, arcaniteFluid, 698, 4.3f, 7.88f, 0.85f, -50, 150, METEORITE, false, true);
|
||||
// SOLIDE ORES
|
||||
registerTinkerMaterial("Titanite", titanite, titaniteFluid, 811, 4.8f, 6.40f, 1.00f, -50, 150, TITANITE, false, true);
|
||||
registerTinkerMaterial("Meteorite", meteorite, meteoriteFluid, 823, 6.1f, 6.83f, 1.20f, -50, 200, METEORITE, false, true);
|
||||
registerTinkerMaterial("Vibranium", vibranium, vibraniumFluid, 917, 7.45f, 7.17f, 1.15f, 50, 150, VIBRANIUM, false, true);
|
||||
registerTinkerMaterial("Adamantite", adamantite, adamantiteFluid, 981, 8.9f, 9.11f, 1.20f, -200, 300, ADAMANTITE, false, true);
|
||||
// ETHERE ORES
|
||||
registerTinkerMaterial("Eternite", eternite, eterniteFluid, 592, 7.35f, 1.95f, 1.10f, 150, 150, COBALT, false, true);
|
||||
registerTinkerMaterial("Mythril", mythril, mythrilFluid, 552, 8.75f, 2.87f, 0.98f, -100, 200, TITANITE, false, true);
|
||||
registerTinkerMaterial("Palladium", palladium, palladiumFluid, 578, 10.4f, 3.13f, 1.09f, 0, 100, METEORITE, false, true);
|
||||
registerTinkerMaterial("Ignitite", ignitite, ignititeFluid, 673, 12.1f, 4.10f, 1.15f, -50, 150, VIBRANIUM, false, true);
|
||||
// RATIO ORES
|
||||
registerTinkerMaterial("Bismuth", bismuth, bismuthFluid, 235, 5.33f, 3.80f, 1.15f, 17, 117, OBSIDIAN, false, true);
|
||||
registerTinkerMaterial("Violium", violium, violiumFluid, 427, 4.2f, 3.30f, 1.00f, 133, 150, COBALT, false, true);
|
||||
registerTinkerMaterial("Mindorite", mindorite, mindoriteFluid, 458, 6.41f, 4.40f, 0.90f, 83, 100, TITANITE, false, true);
|
||||
registerTinkerMaterial("Karmesine", karmesine, karmesineFluid, 627, 6.75f, 5.10f, 0.99f, 0, 200, METEORITE, false, true);
|
||||
// Material from alloys
|
||||
registerTinkerMaterial("Nitronite", nitronite, nitroniteFluid, 745, 6.74f, 8.74f, 0.85f, 75, 93, TITANITE, false, true);
|
||||
registerTinkerMaterial("Bysmuid", bysmuid, bysmuidFluid, 305, 5.22f, 6.47f, 1.09f, -80, 197, COBALT, false, true);
|
||||
registerTinkerMaterial("Ultranite", ultranite, ultraniteFluid, 1016, 5.72f, 6.76f, 1.02f, -120, 210, VIBRANIUM, false, true);
|
||||
registerTinkerMaterial("Astrium", astrium, astriumFluid, 670, 5.28f, 9.14f, 0.91f, -45, 170, VIBRANIUM, false, true);
|
||||
registerTinkerMaterial("Imperomite", imperomite, imperomiteFluid, 770, 11.60f, 3.57f, 1.05f, -38, 125, METEORITE, false, true);
|
||||
registerTinkerMaterial("Dyonite", dyonite, dyoniteFluid, 733, 6.14f, 7.69f, 0.97f, -15, 140, TITANITE, false, true);
|
||||
registerTinkerMaterial("Solarium", solarium, solariumFluid, 1020, 13.78f, 4.64f, 1.15f, 0, 150, ADAMANTITE, false, true);
|
||||
registerTinkerMaterial("Fractoryte", fractoryte, fractoryteFluid, 1071, 7.65f, 7.75f, 1.15f, -250, 283, METEORITE, false, true);
|
||||
registerTinkerMaterial("Aegisalt", aegisalt, aegisaltFluid, 355, 8.88f, 3.18f, 1.00f, 175, 125, TITANITE, false, true);
|
||||
registerTinkerMaterial("Noctunyx", noctunyx, noctunyxFluid, 713, 10.43f, 3.25f, 0.99f, -125, 183, METEORITE, false, true);
|
||||
registerTinkerMaterial("Nucleum", nucleum, nucleumFluid, 503, 11.30f, 3.22f, 1.05f, 100, 125, TITANITE, false, true);
|
||||
registerTinkerMaterial("Seismodium", seismodium, seismodiumFluid, 879, 13.85f, 4.19f, 1.17f, -75, 169, VIBRANIUM, false, true);
|
||||
registerTinkerMaterial("Lumixyl", lumixyl, lumixylFluid, 357, 4.64f, 5.92f, 1.05f, 15, 130, COBALT, false, true);
|
||||
registerTinkerMaterial("Terramite", terramite, terramiteFluid, 482, 7.25f, 2.85f, 1.03f, 208, 150, TITANITE, false, true);
|
||||
registerTinkerMaterial("Cryptogen", cryptogen, cryptogenFluid, 538, 5.71f, 6.93f, 0.88f, 58, 117, METEORITE, false, true);
|
||||
registerTinkerMaterial("Proxideum", proxideum, proxideumFluid, 597, 10.55f, 4.21f, 0.99f, -60, 200, METEORITE, false, true);
|
||||
Fluids.register();
|
||||
Blocks.register(false);
|
||||
Blocks.registerItems();
|
||||
Items.register();
|
||||
|
||||
proxy.initConfig();
|
||||
|
||||
registerTinkerMaterials();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void init(FMLInitializationEvent e) {
|
||||
proxy.registerStuff();
|
||||
GameRegistry.registerWorldGenerator(new ZWorldGen(), 100);
|
||||
GameRegistry.registerFuelHandler(new FuelHandler());
|
||||
Smelting.register();
|
||||
Crafting.register();
|
||||
proxy.registerModels(); // Registers models on the client side
|
||||
proxy.regsiterKeyBindings();
|
||||
|
||||
harvestLevelNames.put(METEORITE, TinkerMaterials.bone.getTextColor() + "Meteorite");
|
||||
harvestLevelNames.put(VIBRANIUM, TinkerMaterials.blueslime.getTextColor() + "Vibranium");
|
||||
harvestLevelNames.put(ADAMANTITE, TinkerMaterials.ardite.getTextColor() + "Adamantite");
|
||||
harvestLevelNames.put(TITANITE, TinkerMaterials.silver.getTextColor() + "Titanite");
|
||||
Fluids.registerfromItem(); // Registers some special smeltery recipes (not alloying)
|
||||
GameRegistry.registerWorldGenerator(WorldGen.getInstance(), 100); // Generates ores
|
||||
// GameRegistry.registerFuelHandler(new FuelHandler()); Registeres fuels' burn times
|
||||
|
||||
// Adds new harvest levels' names
|
||||
proxy.registerHarvestLevels();
|
||||
|
||||
Blocks.register(true);
|
||||
|
||||
Alloys.register(); // Registers alloying recipes
|
||||
registerTinkerMaterials(); // Registers materials and associated fluids and stats into tconstruct
|
||||
|
||||
SmeltingRegistry.register(); // Registers smelting recipes
|
||||
CraftingRegistry.register(); // Registers crafting recipes
|
||||
|
||||
for (MaterialIntegration m : integrateList) {
|
||||
m.integrateRecipes();
|
||||
m.integrate();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void postInit(FMLPostInitializationEvent e) {
|
||||
|
||||
proxy.registerBookPages();
|
||||
}
|
||||
|
||||
private void registerTinkerMaterial(String oreSuffix, slimeknights.tconstruct.library.materials.Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, boolean craft, boolean cast) {
|
||||
TinkerRegistry.addMaterialStats(material, new HeadMaterialStats(headDura, headSpeed, headAttack, headLevel));
|
||||
TinkerRegistry.addMaterialStats(material, new HandleMaterialStats(handleMod, handleDura));
|
||||
TinkerRegistry.addMaterialStats(material, new ExtraMaterialStats(extra));
|
||||
material.setFluid(fluid).setCraftable(craft).setCastable(cast);
|
||||
@EventHandler
|
||||
public void serverLoad(FMLServerStartingEvent event) {
|
||||
proxy.registerServerCommands(event);
|
||||
}
|
||||
|
||||
proxy.setRenderInfo(material);
|
||||
MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix);
|
||||
integration.integrate();
|
||||
integrateList.add(integration);
|
||||
|
||||
/**
|
||||
* Registers materials and associated fluids and stats into tconstruct
|
||||
*/
|
||||
private void registerTinkerMaterials() {
|
||||
BowMaterialStats shitty = new BowMaterialStats(0.2f, 0.4f, -1f);
|
||||
//
|
||||
integrateMaterial("Tiberium", tiberium, tiberiumFluid, 80, 3.3f, 4f, 0.7f, -25, 50, DIAMOND, shitty, true, false);
|
||||
integrateMaterial("Aurorium", aurorium, auroriumFluid, 750, 3.6f, 3.78f, 0.77f, 25, 130, COBALT, 0.45f, 1f, 1);
|
||||
integrateMaterial("Prometheum", prometheum, prometheumFluid, 844, 4.75f, 6.6f, 1.2f, 25, 50, DURANITE, 0.2f, 0.6f, 3);
|
||||
integrateMaterial("Duranite", duranite, duraniteFluid, 1550, 3.2f, 3.2f, 1.16f, 100, 100, DURANITE, 0.3f, 1.4f, 2);
|
||||
integrateMaterial("Valyrium", valyrium, valyriumFluid, 1111, 5.37f, 4.8f, 1.30f, 100, 100, VALYRIUM, 1.1f, 1.2f, 4);
|
||||
integrateMaterial("Vibranium", vibranium, vibraniumFluid, 1235, 7.62f, 8.1f, 1.3f, 100, 100, VIBRANIUM, 1.1f, 1.8f, 4);
|
||||
integrateMaterial("Terrax", terrax, terraxFluid, 444, 4.77f, 2.9f, 0.8f, 100, 50, COBALT, shitty, true, true);
|
||||
integrateMaterial("Palladium", palladium, palladiumFluid, 797, 4.35f, 6.8f, 1.3f, 130, -50, DURANITE, .5f, .2f, 3);
|
||||
integrateMaterial("Uru", uru, uruFluid, 877, 2f, 7.2f, 1.5f, -50, 175, VALYRIUM, 1.3f, 0.8f, 6);
|
||||
integrateMaterial("Eezo", eezo, eezoFluid, 50, 23f, 3.5f, .1f, 10, 10, COBALT, shitty, true, false);
|
||||
integrateMaterial("Basalt", basalt, basaltFluid, 200, 3, 2.5f, 0.5f, -25, 25, STONE, shitty, true, false);
|
||||
integrateMaterial("Triberium", triberium, triberiumFluid, 223, 6.2f, 8.35f, 0.63f, 50, 50, DIAMOND, shitty, true, true);
|
||||
integrateMaterial("Fractum", fractum, fractumFluid, 538, 5.71f, 6.93f, 0.88f, 58, 117, DIAMOND, shitty);
|
||||
integrateMaterial("Violium", violium, violiumFluid, 925, 3.8f, 3.75f, .90f, 175, 50, COBALT, .45f, .95f, 1);
|
||||
integrateMaterial("Proxii", proxii, proxiiFluid, 625, 6.8f, 4.21f, 1.25f, 80, 25, DURANITE, .35f, .5f, 3);
|
||||
integrateMaterial("Tritonite", tritonite, tritoniteFluid, 780, 8f, 3.3f, 1.45f, -25, 150, COBALT, shitty);
|
||||
integrateMaterial("Ignitz", ignitz, ignitzFluid, 350, 2f, 6.66f, .85f, 150, 250, COBALT, .8f, .8f, 3);
|
||||
integrateMaterial("Imperomite", imperomite, imperomiteFluid, 1350, 4.65f, 5.9f, 1.15f, -100, 150, DURANITE, 1.2f, 1.8f, 2);
|
||||
integrateMaterial("Solarium", solarium, solariumFluid, 1100, 24f, 7f, 1.25f, 150, 150, VIBRANIUM, .8f, 1.5f, 5);
|
||||
integrateMaterial("Nihilite", nihilite, nihiliteFluid, 400, 2.8f, 4.50f, .77f, 350, 155, VALYRIUM, 1.5f, .8f, 3);
|
||||
integrateMaterial("Adamant", adamant, adamantFluid, 1750, 6f, 6f, 2f, 0, 0, VIBRANIUM, .35f, 1.85f, 8);
|
||||
integrateMaterial("Dyonite", dyonite, dyoniteFluid, 900, 6.45f, 5f, 0.66f, -50, 250, DURANITE, 2, .9f, -1);
|
||||
integrateMaterial("Nucleum", nucleum, nucleumFluid, 505, 17.5f, 9.5f, 1.05f, 100, 125, VALYRIUM, shitty);
|
||||
integrateMaterial("Lumix", lumix, lumixFluid, 666, 3.84f, 3.92f, 0.85f, 250, 200, COBALT, .8f, 1.3f, 1);
|
||||
integrateMaterial("Seismum", seismum, seismumFluid, 780, 3.66f, 6.05f, .95f, 250, 50, COBALT, shitty);
|
||||
integrateMaterial("Astrium", astrium, astriumFluid, 750, 8.35f, 5.4f, 0.95f, -100, 200, COBALT, .7f, .8f, 2);
|
||||
integrateMaterial("Niob", niob, niobFluid, 700, 4.5f, 4.5f, 2f, 200, 50, COBALT, shitty);
|
||||
integrateMaterial("Yrdeen", yrdeen, yrdeenFluid, 999, 9.1f, 3f, 1.35f, 150, 250, COBALT, shitty);
|
||||
integrateMaterial("Meteorite", meteorite, meteoriteFluid, 1500, 1.5f, 1.5f, .5f, 0, 0, OBSIDIAN, shitty);
|
||||
integrateMaterial("Obsidiorite", obsidiorite, obsidioriteFluid, 1500, .5f, .5f, 1, -100, 100, COBALT, shitty);
|
||||
|
||||
integrateOre("Osram", osramFluid);
|
||||
integrateOre("Abyssum", abyssumFluid);
|
||||
integrateOre("Iox", ioxFluid);
|
||||
integrateOre("Karmesine", karmesineFluid);
|
||||
integrateOre("Ovium", oviumFluid);
|
||||
integrateOre("Jauxum", jauxumFluid);
|
||||
// Community Wishlist
|
||||
integrateOre("Dilithium", dilithiumFluid);
|
||||
}
|
||||
}
|
325
src/main/java/com/sosnitzka/taiga/TAIGAConfiguration.java
Normal file
325
src/main/java/com/sosnitzka/taiga/TAIGAConfiguration.java
Normal file
@@ -0,0 +1,325 @@
|
||||
package com.sosnitzka.taiga;
|
||||
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.config.Configuration;
|
||||
import net.minecraftforge.common.config.Property;
|
||||
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TAIGAConfiguration {
|
||||
|
||||
public static final String CATEGORY_NAME_GENERAL = "category_general";
|
||||
public static final String CATEGORY_NAME_ORE_GEN = "category_ore_gen";
|
||||
|
||||
public static boolean ironGen;
|
||||
public static boolean endGen;
|
||||
|
||||
public static boolean tiberiumGen;
|
||||
public static boolean prometheumGen;
|
||||
public static boolean valyriumGen;
|
||||
public static boolean osramGen;
|
||||
public static boolean duraniteGen;
|
||||
public static boolean basaltGen;
|
||||
public static boolean eezoGen;
|
||||
public static boolean karmesineGen;
|
||||
public static boolean oviumGen;
|
||||
public static boolean jauxumGen;
|
||||
public static boolean vibraniumGen;
|
||||
public static boolean uruGen;
|
||||
public static boolean auroriumGen;
|
||||
public static boolean palladiumGen;
|
||||
public static boolean abyssumGen;
|
||||
|
||||
|
||||
public static int IRON_VAL;
|
||||
public static int TIBERIUM_VAL;
|
||||
public static int PROMETHEUM_VAL;
|
||||
public static int VALYRIUM_VAL;
|
||||
public static int OSRAM_VAL;
|
||||
public static int DURANITE_VAL;
|
||||
public static int BASALT_VAL;
|
||||
public static int EEZO_VAL;
|
||||
public static int KARMESINE_VAL;
|
||||
public static int OVIUM_VAL;
|
||||
public static int JAUXUM_VAL;
|
||||
public static int VIBRANIUM_VAL;
|
||||
public static int DILITHIUM_VAL;
|
||||
public static int URU_VAL;
|
||||
public static int AURORIUM_VAL;
|
||||
public static int PALLADIUM_VAL;
|
||||
public static int ABYSSUM_VAL;
|
||||
|
||||
private static Configuration config = null;
|
||||
|
||||
public static void preInit() {
|
||||
File configFile = new File(Loader.instance().getConfigDir(), "TAIGA.cfg");
|
||||
config = new Configuration(configFile);
|
||||
|
||||
syncFromFile();
|
||||
}
|
||||
|
||||
public static void clientPreInit() {
|
||||
MinecraftForge.EVENT_BUS.register(new ConfigEventHandler());
|
||||
}
|
||||
|
||||
public static Configuration getConfig() {
|
||||
return config;
|
||||
}
|
||||
|
||||
public static void syncFromFile() {
|
||||
syncConfig(true, true);
|
||||
}
|
||||
|
||||
public static void syncFromGUI() {
|
||||
syncConfig(false, true);
|
||||
}
|
||||
|
||||
private static void syncConfig(boolean loadConfigFromFile, boolean readFieldsFromConfig) {
|
||||
if (loadConfigFromFile) {
|
||||
config.load();
|
||||
}
|
||||
|
||||
final int RESFAC_MIN_VALUE = 0;
|
||||
final int RESFAC_MAX_VALUE = 100;
|
||||
|
||||
final int IRON_DEFAULT = 20;
|
||||
final int TIBERIUM_DEFAULT = 15;
|
||||
final int PROMETHEUM_DEFAULT = 18;
|
||||
final int VALYRIUM_DEFAULT = 10;
|
||||
final int DILITHIUM_DEFAULT = 12;
|
||||
final int OSRAM_DEFAULT = 1;
|
||||
final int DURANITE_DEFAULT = 1;
|
||||
final int BASALT_DEFAULT = 12;
|
||||
final int EEZO_DEFAULT = 3;
|
||||
final int KARMESINE_DEFAULT = 8;
|
||||
final int JAUXUM_DEFAULT = 8;
|
||||
final int OVIUM_DEFAULT = 8;
|
||||
final int VIBRANIUM_DEFAULT = 8;
|
||||
final int URU_DEFAULT = 1;
|
||||
final int AURORIUM_DEFAULT = 10;
|
||||
final int PALLADIUM_DEFAULT = 10;
|
||||
final int ABYSSUM_DEFAULT = 4;
|
||||
|
||||
|
||||
Property ironSwitch = config.get(CATEGORY_NAME_GENERAL, "Additional Iron", false);
|
||||
ironSwitch.setComment("Switch additional ore on/off");
|
||||
ironSwitch.setLanguageKey("gui.taiga_configuration.gen_iron");
|
||||
|
||||
Property endSwitch = config.get(CATEGORY_NAME_GENERAL, "Additional Endstone", true);
|
||||
endSwitch.setComment("Switch additional endstone on/off");
|
||||
endSwitch.setLanguageKey("gui.taiga_configuration.gen_end");
|
||||
|
||||
/*
|
||||
Stuff which probably gonna come back
|
||||
|
||||
Property durabilityFactorGeneralProp = config.get(CATEGORY_NAME_GENERAL, "Durability factor",
|
||||
RESFAC_DEFAULT_VALUE,
|
||||
"General multiplier for all TAIGA materials", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
durabilityFactorGeneralProp.setLanguageKey("gui.taiga_configuration.durability_multiplier");
|
||||
durabilityFactorGeneralProp.setRequiresMcRestart(true);
|
||||
|
||||
*/
|
||||
|
||||
List<String> propOrderGeneral = new ArrayList<String>();
|
||||
propOrderGeneral.add(ironSwitch.getName());
|
||||
propOrderGeneral.add(endSwitch.getName());
|
||||
// propOrderGeneral.add(durabilityFactorGeneralProp.getName());
|
||||
config.setCategoryPropertyOrder(CATEGORY_NAME_GENERAL, propOrderGeneral);
|
||||
|
||||
/*
|
||||
* Declaration of specific ore generation values: <br>
|
||||
* Generation chance multiplier
|
||||
*/
|
||||
|
||||
|
||||
Property ironValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Iron", IRON_DEFAULT, "generation count per " +
|
||||
"chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
ironValueProp.setLanguageKey("gui.taiga_configuration.iron_multiplier");
|
||||
Property basaltValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Basalt", BASALT_DEFAULT, "generation count per " +
|
||||
"chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
basaltValueProp.setLanguageKey("gui.taiga_configuration.basalt_multiplier");
|
||||
Property tiberiumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Tiberium", TIBERIUM_DEFAULT, "generation " +
|
||||
"count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
tiberiumValueProp.setLanguageKey("gui.taiga_configuration.tiberium_multiplier");
|
||||
Property auroriumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Aurorium", AURORIUM_DEFAULT, "generation " +
|
||||
"count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
auroriumValueProp.setLanguageKey("gui.taiga_configuration.aurorium_multiplier");
|
||||
Property prometheumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Prometheum", PROMETHEUM_DEFAULT,
|
||||
"generation count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
prometheumValueProp.setLanguageKey("gui.taiga_configuration.prometheum_multiplier");
|
||||
Property duraniteValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Duranite", DURANITE_DEFAULT, "generation " +
|
||||
"count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
duraniteValueProp.setLanguageKey("gui.taiga_configuration.duranite_multiplier");
|
||||
Property valyriumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Valyrium", VALYRIUM_DEFAULT, "generation " +
|
||||
"count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
valyriumValueProp.setLanguageKey("gui.taiga_configuration.valyrium_multiplier");
|
||||
Property vibraniumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Vibranium", VIBRANIUM_DEFAULT, "generation " +
|
||||
"count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
vibraniumValueProp.setLanguageKey("gui.taiga_configuration.vibranium_multiplier");
|
||||
Property dilithiumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Dilithium", DILITHIUM_DEFAULT, "generation " +
|
||||
"count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
dilithiumValueProp.setLanguageKey("gui.taiga_configuration.dilithium_multiplier");
|
||||
Property karmesineValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Karmesine", KARMESINE_DEFAULT, "generation " +
|
||||
"count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
karmesineValueProp.setLanguageKey("gui.taiga_configuration.karmesine_multiplier");
|
||||
Property oviumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Ovium", OVIUM_DEFAULT, "generation count per " +
|
||||
"chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
oviumValueProp.setLanguageKey("gui.taiga_configuration.ovium_multiplier");
|
||||
Property jauxumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Jauxum", JAUXUM_DEFAULT, "generation count per " +
|
||||
"chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
jauxumValueProp.setLanguageKey("gui.taiga_configuration.jauxum_multiplier");
|
||||
Property palladiumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Palladium", PALLADIUM_DEFAULT, "generation " +
|
||||
"count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
palladiumValueProp.setLanguageKey("gui.taiga_configuration.palladium_multiplier");
|
||||
Property uruValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Uru", URU_DEFAULT, "generation count per chunk",
|
||||
RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
uruValueProp.setLanguageKey("gui.taiga_configuration.uru_multiplier");
|
||||
Property osramValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Osram", OSRAM_DEFAULT, "generation count per " +
|
||||
"chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
osramValueProp.setLanguageKey("gui.taiga_configuration.osram_multiplier");
|
||||
Property abyssumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Abyssum", ABYSSUM_DEFAULT, "generation count " +
|
||||
"per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
abyssumValueProp.setLanguageKey("gui.taiga_configuration.abyssum_multiplier");
|
||||
Property eezoValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Eezo", EEZO_DEFAULT, "generation count per " +
|
||||
"chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
|
||||
eezoValueProp.setLanguageKey("gui.taiga_configuration.eezo_multiplier");
|
||||
|
||||
|
||||
List<String> propOrderOreGen = new ArrayList<String>();
|
||||
propOrderOreGen.add(ironValueProp.getName());
|
||||
propOrderOreGen.add(basaltValueProp.getName());
|
||||
propOrderOreGen.add(tiberiumValueProp.getName());
|
||||
propOrderOreGen.add(auroriumValueProp.getName());
|
||||
propOrderOreGen.add(prometheumValueProp.getName());
|
||||
propOrderOreGen.add(duraniteValueProp.getName());
|
||||
propOrderOreGen.add(valyriumValueProp.getName());
|
||||
propOrderOreGen.add(vibraniumValueProp.getName());
|
||||
propOrderOreGen.add(dilithiumValueProp.getName());
|
||||
propOrderOreGen.add(karmesineValueProp.getName());
|
||||
propOrderOreGen.add(oviumValueProp.getName());
|
||||
propOrderOreGen.add(jauxumValueProp.getName());
|
||||
propOrderOreGen.add(palladiumValueProp.getName());
|
||||
propOrderOreGen.add(uruValueProp.getName());
|
||||
propOrderOreGen.add(osramValueProp.getName());
|
||||
propOrderOreGen.add(abyssumValueProp.getName());
|
||||
propOrderOreGen.add(eezoValueProp.getName());
|
||||
config.setCategoryPropertyOrder(CATEGORY_NAME_ORE_GEN, propOrderOreGen);
|
||||
|
||||
|
||||
if (readFieldsFromConfig) {
|
||||
ironGen = ironSwitch.getBoolean(false);
|
||||
endGen = endSwitch.getBoolean(true);
|
||||
IRON_VAL = ironValueProp.getInt(IRON_DEFAULT);
|
||||
if (IRON_VAL > RESFAC_MAX_VALUE || IRON_VAL < RESFAC_MIN_VALUE) {
|
||||
IRON_VAL = IRON_DEFAULT;
|
||||
}
|
||||
TIBERIUM_VAL = tiberiumValueProp.getInt(TIBERIUM_DEFAULT);
|
||||
if (TIBERIUM_VAL > RESFAC_MAX_VALUE || TIBERIUM_VAL < RESFAC_MIN_VALUE) {
|
||||
TIBERIUM_VAL = TIBERIUM_DEFAULT;
|
||||
}
|
||||
PROMETHEUM_VAL = prometheumValueProp.getInt(PROMETHEUM_DEFAULT);
|
||||
if (PROMETHEUM_VAL > RESFAC_MAX_VALUE || PROMETHEUM_VAL < RESFAC_MIN_VALUE) {
|
||||
PROMETHEUM_VAL = PROMETHEUM_DEFAULT;
|
||||
}
|
||||
VALYRIUM_VAL = valyriumValueProp.getInt(VALYRIUM_DEFAULT);
|
||||
if (VALYRIUM_VAL > RESFAC_MAX_VALUE || VALYRIUM_VAL < RESFAC_MIN_VALUE) {
|
||||
VALYRIUM_VAL = VALYRIUM_DEFAULT;
|
||||
}
|
||||
OSRAM_VAL = osramValueProp.getInt(OSRAM_DEFAULT);
|
||||
if (OSRAM_VAL > RESFAC_MAX_VALUE || OSRAM_VAL < RESFAC_MIN_VALUE) {
|
||||
OSRAM_VAL = OSRAM_DEFAULT;
|
||||
}
|
||||
DURANITE_VAL = duraniteValueProp.getInt(DURANITE_DEFAULT);
|
||||
if (DURANITE_VAL > RESFAC_MAX_VALUE || DURANITE_VAL < RESFAC_MIN_VALUE) {
|
||||
DURANITE_VAL = DURANITE_DEFAULT;
|
||||
}
|
||||
BASALT_VAL = basaltValueProp.getInt(BASALT_DEFAULT);
|
||||
if (BASALT_VAL > RESFAC_MAX_VALUE || BASALT_VAL < RESFAC_MIN_VALUE) {
|
||||
BASALT_VAL = BASALT_DEFAULT;
|
||||
}
|
||||
EEZO_VAL = eezoValueProp.getInt(EEZO_DEFAULT);
|
||||
if (EEZO_VAL > RESFAC_MAX_VALUE || EEZO_VAL < RESFAC_MIN_VALUE) {
|
||||
EEZO_VAL = EEZO_DEFAULT;
|
||||
}
|
||||
KARMESINE_VAL = karmesineValueProp.getInt(KARMESINE_DEFAULT);
|
||||
if (KARMESINE_VAL > RESFAC_MAX_VALUE || KARMESINE_VAL < RESFAC_MIN_VALUE) {
|
||||
KARMESINE_VAL = KARMESINE_DEFAULT;
|
||||
}
|
||||
OVIUM_VAL = oviumValueProp.getInt(OVIUM_DEFAULT);
|
||||
if (OVIUM_VAL > RESFAC_MAX_VALUE || OVIUM_VAL < RESFAC_MIN_VALUE) {
|
||||
OVIUM_VAL = KARMESINE_DEFAULT;
|
||||
}
|
||||
JAUXUM_VAL = jauxumValueProp.getInt(OVIUM_DEFAULT);
|
||||
if (JAUXUM_VAL > RESFAC_MAX_VALUE || JAUXUM_VAL < RESFAC_MIN_VALUE) {
|
||||
JAUXUM_VAL = JAUXUM_DEFAULT;
|
||||
}
|
||||
VIBRANIUM_VAL = vibraniumValueProp.getInt(VIBRANIUM_DEFAULT);
|
||||
if (VIBRANIUM_VAL > RESFAC_MAX_VALUE || VIBRANIUM_VAL < RESFAC_MIN_VALUE) {
|
||||
VIBRANIUM_VAL = VIBRANIUM_DEFAULT;
|
||||
}
|
||||
DILITHIUM_VAL = dilithiumValueProp.getInt(DILITHIUM_DEFAULT);
|
||||
if (DILITHIUM_VAL > RESFAC_MAX_VALUE || DILITHIUM_VAL < RESFAC_MIN_VALUE) {
|
||||
DILITHIUM_VAL = DILITHIUM_DEFAULT;
|
||||
}
|
||||
URU_VAL = uruValueProp.getInt(URU_DEFAULT);
|
||||
if (URU_VAL > RESFAC_MAX_VALUE || URU_VAL < RESFAC_MIN_VALUE) {
|
||||
URU_VAL = URU_DEFAULT;
|
||||
}
|
||||
AURORIUM_VAL = auroriumValueProp.getInt(AURORIUM_DEFAULT);
|
||||
if (AURORIUM_VAL > RESFAC_MAX_VALUE || AURORIUM_VAL < RESFAC_MIN_VALUE) {
|
||||
AURORIUM_VAL = AURORIUM_DEFAULT;
|
||||
}
|
||||
PALLADIUM_VAL = palladiumValueProp.getInt(PALLADIUM_DEFAULT);
|
||||
if (PALLADIUM_VAL > RESFAC_MAX_VALUE || PALLADIUM_VAL < RESFAC_MIN_VALUE) {
|
||||
PALLADIUM_VAL = PALLADIUM_DEFAULT;
|
||||
}
|
||||
ABYSSUM_VAL = abyssumValueProp.getInt(ABYSSUM_DEFAULT);
|
||||
if (ABYSSUM_VAL > RESFAC_MAX_VALUE || ABYSSUM_VAL < RESFAC_MIN_VALUE) {
|
||||
ABYSSUM_VAL = ABYSSUM_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
ironSwitch.set(ironGen);
|
||||
endSwitch.set(endGen);
|
||||
ironValueProp.set(IRON_VAL);
|
||||
tiberiumValueProp.set(TIBERIUM_VAL);
|
||||
prometheumValueProp.set(PROMETHEUM_VAL);
|
||||
valyriumValueProp.set(VALYRIUM_VAL);
|
||||
osramValueProp.set(OSRAM_VAL);
|
||||
duraniteValueProp.set(DURANITE_VAL);
|
||||
basaltValueProp.set(BASALT_VAL);
|
||||
eezoValueProp.set(EEZO_VAL);
|
||||
karmesineValueProp.set(KARMESINE_VAL);
|
||||
oviumValueProp.set(OVIUM_VAL);
|
||||
jauxumValueProp.set(JAUXUM_VAL);
|
||||
vibraniumValueProp.set(VIBRANIUM_VAL);
|
||||
dilithiumValueProp.set(DILITHIUM_VAL);
|
||||
uruValueProp.set(URU_VAL);
|
||||
auroriumValueProp.set(AURORIUM_VAL);
|
||||
palladiumValueProp.set(PALLADIUM_VAL);
|
||||
abyssumValueProp.set(ABYSSUM_VAL);
|
||||
|
||||
|
||||
if (config.hasChanged()) {
|
||||
config.save();
|
||||
}
|
||||
}
|
||||
|
||||
public static class ConfigEventHandler {
|
||||
@SubscribeEvent(priority = EventPriority.NORMAL)
|
||||
public void onEvent(ConfigChangedEvent.OnConfigChangedEvent event) {
|
||||
if (TAIGA.MODID.equals(event.getModID()) && !event.isWorldRunning()) {
|
||||
if (event.getConfigID().equals(CATEGORY_NAME_GENERAL) || event.getConfigID().equals
|
||||
(CATEGORY_NAME_ORE_GEN)) {
|
||||
syncFromGUI();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
94
src/main/java/com/sosnitzka/taiga/TAIGAGuiFactory.java
Normal file
94
src/main/java/com/sosnitzka/taiga/TAIGAGuiFactory.java
Normal file
@@ -0,0 +1,94 @@
|
||||
package com.sosnitzka.taiga;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraftforge.common.config.ConfigElement;
|
||||
import net.minecraftforge.common.config.Configuration;
|
||||
import net.minecraftforge.fml.client.IModGuiFactory;
|
||||
import net.minecraftforge.fml.client.config.DummyConfigElement;
|
||||
import net.minecraftforge.fml.client.config.GuiConfig;
|
||||
import net.minecraftforge.fml.client.config.GuiConfigEntries;
|
||||
import net.minecraftforge.fml.client.config.IConfigElement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class TAIGAGuiFactory implements IModGuiFactory {
|
||||
@Override
|
||||
public void initialize(Minecraft minecraftInstance) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasConfigGui() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GuiScreen createConfigGui(GuiScreen parentScreen) {
|
||||
return new TAIGAConfigGui(parentScreen);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<RuntimeOptionCategoryElement> runtimeGuiCategories() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static class TAIGAConfigGui extends GuiConfig {
|
||||
|
||||
public TAIGAConfigGui(GuiScreen parentScreen) {
|
||||
super(parentScreen, getConfigElements(), TAIGA.MODID, false, false, I18n.format("gui.taiga_configuration" +
|
||||
".mainTitle"));
|
||||
}
|
||||
|
||||
private static List<IConfigElement> getConfigElements() {
|
||||
List<IConfigElement> list = new ArrayList<IConfigElement>();
|
||||
list.add(new DummyConfigElement.DummyCategoryElement("Basic configuration", "gui.taiga_configuration.ctgy" +
|
||||
".general", CategoryEntryGeneral.class));
|
||||
list.add(new DummyConfigElement.DummyCategoryElement("Ore specific settings", "gui.taiga_configuration" +
|
||||
".ctgy.oregen", CategoryEntryOreGen.class));
|
||||
return list;
|
||||
}
|
||||
|
||||
public static class CategoryEntryGeneral extends GuiConfigEntries.CategoryEntry {
|
||||
public CategoryEntryGeneral(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop) {
|
||||
super(owningScreen, owningEntryList, prop);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GuiScreen buildChildScreen() {
|
||||
Configuration configuration = TAIGAConfiguration.getConfig();
|
||||
ConfigElement cat_general = new ConfigElement(configuration.getCategory(TAIGAConfiguration
|
||||
.CATEGORY_NAME_GENERAL));
|
||||
List<IConfigElement> propertiesOnThisScreen = cat_general.getChildElements();
|
||||
String windowTitle = configuration.toString();
|
||||
|
||||
return new GuiConfig(this.owningScreen, propertiesOnThisScreen, this.owningScreen.modID,
|
||||
TAIGAConfiguration.CATEGORY_NAME_GENERAL, this.configElement.requiresWorldRestart() || this
|
||||
.owningScreen.allRequireWorldRestart, this.configElement.requiresMcRestart() || this
|
||||
.owningScreen.allRequireMcRestart, windowTitle);
|
||||
}
|
||||
}
|
||||
|
||||
public static class CategoryEntryOreGen extends GuiConfigEntries.CategoryEntry {
|
||||
public CategoryEntryOreGen(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop) {
|
||||
super(owningScreen, owningEntryList, prop);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GuiScreen buildChildScreen() {
|
||||
Configuration configuration = TAIGAConfiguration.getConfig();
|
||||
ConfigElement cat_general = new ConfigElement(configuration.getCategory(TAIGAConfiguration
|
||||
.CATEGORY_NAME_ORE_GEN));
|
||||
List<IConfigElement> propertiesOnThisScreen = cat_general.getChildElements();
|
||||
String windowTitle = configuration.toString();
|
||||
|
||||
return new GuiConfig(this.owningScreen, propertiesOnThisScreen, this.owningScreen.modID,
|
||||
TAIGAConfiguration.CATEGORY_NAME_ORE_GEN, this.configElement.requiresWorldRestart() || this
|
||||
.owningScreen.allRequireWorldRestart, this.configElement.requiresMcRestart() || this
|
||||
.owningScreen.allRequireMcRestart, windowTitle);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
35
src/main/java/com/sosnitzka/taiga/blocks/BlockCobble.java
Normal file
35
src/main/java/com/sosnitzka/taiga/blocks/BlockCobble.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package com.sosnitzka.taiga.blocks;
|
||||
|
||||
import com.sosnitzka.taiga.generic.BasicBlock;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
|
||||
import static slimeknights.tconstruct.TConstruct.random;
|
||||
|
||||
public class BlockCobble extends BasicBlock {
|
||||
|
||||
public BlockCobble(String name, Material material, float hardness, float resistance, int harvestlevel, float
|
||||
light, String oreDictPrefix) {
|
||||
super(name, material, hardness, resistance, harvestlevel, light, oreDictPrefix);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void breakMoonRock(BlockEvent.BreakEvent e) {
|
||||
if (e.getWorld().getBlockState(e.getPos()).getBlock().equals(this)) {
|
||||
if (!e.getWorld().isRemote && random.nextFloat() > .9) {
|
||||
e.setCanceled(true);
|
||||
if (random.nextBoolean()) {
|
||||
e.getWorld().setBlockState(e.getPos(), Blocks.LAVA.getDefaultState());
|
||||
} else {
|
||||
e.getWorld().newExplosion(null, e.getPos().getX(), e.getPos().getY() + 1 / 16f, e.getPos().getZ()
|
||||
, 0.5f + random.nextFloat() * 1.5f, false, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -1,48 +0,0 @@
|
||||
package com.sosnitzka.taiga.blocks;
|
||||
|
||||
import com.sosnitzka.taiga.generic.BasicBlock;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import static com.sosnitzka.taiga.Items.lignite;
|
||||
import static com.sosnitzka.taiga.Items.lignite2;
|
||||
import static com.sosnitzka.taiga.Items.lignite3;
|
||||
|
||||
public class BlockLignite extends BasicBlock {
|
||||
|
||||
public BlockLignite() {
|
||||
super("lignite_ore", Material.ROCK, 4.0f, 5.0f, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune) {
|
||||
Random rand = world instanceof World ? ((World) world).rand : new Random();
|
||||
int r = RANDOM.nextInt(11);
|
||||
if (r > 7) {
|
||||
return MathHelper.getRandomIntegerInRange(rand, 0, 10) + fortune;
|
||||
} else return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int quantityDropped(IBlockState state, int fortune, Random random) {
|
||||
return MathHelper.getRandomIntegerInRange(random, 1, 3 + fortune);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
|
||||
int r = RANDOM.nextInt(3);
|
||||
if (r == 0) {
|
||||
return lignite;
|
||||
} else if (r == 1) {
|
||||
return lignite2;
|
||||
} else
|
||||
return lignite3;
|
||||
}
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
package com.sosnitzka.taiga.blocks;
|
||||
|
||||
import com.sosnitzka.taiga.generic.BasicBlock;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
|
||||
import static slimeknights.tconstruct.TConstruct.random;
|
||||
|
||||
public class BlockMeteoriteRock extends BasicBlock {
|
||||
|
||||
private IBlockState cobbblestate;
|
||||
|
||||
public BlockMeteoriteRock(String name, Material material, float hardness, float resistance, int harvestlevel,
|
||||
float light, String oreDictPrefix, IBlockState cobble) {
|
||||
super(name, material, hardness, resistance, harvestlevel, light, oreDictPrefix);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
this.cobbblestate = cobble;
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void breakMoonRock(BlockEvent.BreakEvent e) {
|
||||
if (e.getWorld().getBlockState(e.getPos()).getBlock().equals(this)) {
|
||||
if (!e.getWorld().isRemote && random.nextFloat() > .25) {
|
||||
e.setCanceled(true);
|
||||
e.getWorld().setBlockState(e.getPos(), cobbblestate);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -4,60 +4,60 @@ import com.sosnitzka.taiga.Items;
|
||||
import com.sosnitzka.taiga.generic.BasicBlock;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.Explosion;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.Random;
|
||||
|
||||
import static com.sosnitzka.taiga.util.Utils.PREFIX_ORE;
|
||||
import static slimeknights.tconstruct.TConstruct.random;
|
||||
import static slimeknights.tconstruct.library.utils.HarvestLevels.OBSIDIAN;
|
||||
import static slimeknights.tconstruct.library.utils.HarvestLevels.STONE;
|
||||
|
||||
public class BlockTiberium extends BasicBlock {
|
||||
|
||||
public BlockTiberium() {
|
||||
super("tiberium_ore", Material.ROCK, 15.0f, 2.0f, OBSIDIAN, 1.0F, PREFIX_ORE);
|
||||
super("tiberium_ore", Material.ROCK, 10.0f, 2.0f, STONE, 1.0F, PREFIX_ORE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune) {
|
||||
Random rand = world instanceof World ? ((World) world).rand : new Random();
|
||||
int r = RANDOM.nextInt(11);
|
||||
if (r > 7) {
|
||||
return MathHelper.getRandomIntegerInRange(rand, 0, 10) + fortune;
|
||||
if (random.nextBoolean()) {
|
||||
return random.nextInt(10) + fortune;
|
||||
} else return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ParametersAreNonnullByDefault
|
||||
public int quantityDropped(IBlockState state, int fortune, Random random) {
|
||||
return MathHelper.getRandomIntegerInRange(random, 1, MathHelper.getRandomIntegerInRange(random, 1, 5 + fortune));
|
||||
return (random.nextInt(3 + fortune) + 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
|
||||
return Items.tiberiumShardInstable;
|
||||
return Items.tiberiumCrystal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) {
|
||||
if (!worldIn.isRemote) {
|
||||
if (MathHelper.getRandomIntegerInRange(random, 1, 15) > 10) {
|
||||
worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), 1.6f, true, true);
|
||||
if (random.nextFloat() < 0.5) {
|
||||
worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), random.nextFloat() * 2f + 1.5f, true,
|
||||
true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) {
|
||||
if (MathHelper.getRandomIntegerInRange(random, 1, 30) < 3) {
|
||||
public void onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player) {
|
||||
if (random.nextFloat() < 0.1) {
|
||||
if (!worldIn.isRemote) {
|
||||
worldIn.newExplosion(null, pos.getX(), pos.getY() + 1 / 16f, pos.getZ(), 1.1f, true, true);
|
||||
worldIn.newExplosion(null, pos.getX(), pos.getY() + 1 / 16f, pos.getZ(), 1.5f, true, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
63
src/main/java/com/sosnitzka/taiga/book/ContentOre.java
Normal file
63
src/main/java/com/sosnitzka/taiga/book/ContentOre.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package com.sosnitzka.taiga.book;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import slimeknights.mantle.client.book.data.BookData;
|
||||
import slimeknights.mantle.client.book.data.element.ItemStackData;
|
||||
import slimeknights.mantle.client.book.data.element.TextData;
|
||||
import slimeknights.mantle.client.gui.book.GuiBook;
|
||||
import slimeknights.mantle.client.gui.book.element.BookElement;
|
||||
import slimeknights.mantle.client.gui.book.element.ElementItem;
|
||||
import slimeknights.mantle.client.gui.book.element.ElementText;
|
||||
import slimeknights.tconstruct.library.book.TinkerPage;
|
||||
import slimeknights.tconstruct.library.client.CustomFontColor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class ContentOre extends TinkerPage {
|
||||
|
||||
public static final transient int INPUT_X = 110;
|
||||
public static final transient int INPUT_Y = 80;
|
||||
|
||||
public static final transient float ITEM_SCALE = 1.5F;
|
||||
|
||||
public String title;
|
||||
public int r, g, b;
|
||||
|
||||
public ItemStackData input;
|
||||
public TextData[] description;
|
||||
public String[] informations;
|
||||
|
||||
@Override
|
||||
public void build(BookData book, ArrayList<BookElement> list, boolean rightSide) {
|
||||
TextData tdTitle = new TextData(title);
|
||||
tdTitle.underlined = true;
|
||||
|
||||
addTitle(list, CustomFontColor.encodeColor(r, g, b) + title, true);
|
||||
|
||||
if (input != null && !input.id.equals("")) {
|
||||
list.add(new ElementItem(INPUT_X, INPUT_Y, ITEM_SCALE * 2.5f, input.getItems(), input.action));
|
||||
}
|
||||
|
||||
if (description != null && description.length > 0) {
|
||||
list.add(new ElementText(0, 15, GuiBook.PAGE_WIDTH, GuiBook.PAGE_HEIGHT - 15, description));
|
||||
}
|
||||
|
||||
int h = GuiBook.PAGE_WIDTH / 3 - 10;
|
||||
if (informations != null && informations.length > 0) {
|
||||
TextData head = new TextData(parent.translate("modifier.informations"));
|
||||
head.underlined = true;
|
||||
list.add(new ElementText(10, 20 + h, GuiBook.PAGE_WIDTH / 2 - 5, GuiBook.PAGE_HEIGHT - h - 20, head));
|
||||
|
||||
List<TextData> effectData = Lists.newArrayList();
|
||||
for (String e : informations) {
|
||||
effectData.add(new TextData("\u25CF "));
|
||||
effectData.add(new TextData(e));
|
||||
effectData.add(new TextData("\n"));
|
||||
}
|
||||
|
||||
list.add(new ElementText(10, 30 + h, GuiBook.PAGE_WIDTH / 2 + 5, GuiBook.PAGE_HEIGHT - h - 20, effectData));
|
||||
}
|
||||
}
|
||||
}
|
@@ -6,7 +6,8 @@ import net.minecraft.block.material.Material;
|
||||
public class BasicBlock extends Block {
|
||||
private String oreDictPrefix;
|
||||
|
||||
public BasicBlock(String name, Material material, float hardness, float resistance, int harvest, float lightLevel, String oreDictPrefix) {
|
||||
public BasicBlock(String name, Material material, float hardness, float resistance, int harvest, float
|
||||
lightLevel, String oreDictPrefix) {
|
||||
super(material);
|
||||
setUnlocalizedName(name);
|
||||
setRegistryName(name);
|
||||
@@ -25,7 +26,8 @@ public class BasicBlock extends Block {
|
||||
this(name, material, hardness, resistance, harvest, lightLevel, null);
|
||||
}
|
||||
|
||||
public BasicBlock(String name, Material material, float hardness, float resistance, int harvest, String oreDictPrefix) {
|
||||
public BasicBlock(String name, Material material, float hardness, float resistance, int harvest, String
|
||||
oreDictPrefix) {
|
||||
this(name, material, hardness, resistance, harvest, 0.0F, oreDictPrefix);
|
||||
}
|
||||
|
||||
@@ -36,5 +38,4 @@ public class BasicBlock extends Block {
|
||||
public String getOreDictPrefix() {
|
||||
return this.oreDictPrefix;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,18 +0,0 @@
|
||||
package com.sosnitzka.taiga.generic;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.SoundType;
|
||||
import net.minecraft.block.material.Material;
|
||||
|
||||
public class BasicBlockGround extends Block {
|
||||
|
||||
public BasicBlockGround(String name, Material material, float hardness, float resistance, int harvest) {
|
||||
super(material);
|
||||
setUnlocalizedName(name);
|
||||
setRegistryName(name);
|
||||
setHardness(hardness);
|
||||
setResistance(resistance);
|
||||
setHarvestLevel("shovel", harvest);
|
||||
setSoundType(SoundType.GROUND);
|
||||
}
|
||||
}
|
@@ -2,6 +2,9 @@ package com.sosnitzka.taiga.generic;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
/**
|
||||
* A "wrapper" for Item that makes construction and manipulation easier
|
||||
*/
|
||||
public class BasicItem extends Item {
|
||||
private String oreDictPrefix;
|
||||
|
||||
@@ -11,16 +14,6 @@ public class BasicItem extends Item {
|
||||
this.oreDictPrefix = oreDictPrefix;
|
||||
}
|
||||
|
||||
public BasicItem(String name, String oreDictPrefix, String registryname) {
|
||||
setUnlocalizedName(name);
|
||||
setRegistryName(registryname);
|
||||
this.oreDictPrefix = oreDictPrefix;
|
||||
}
|
||||
|
||||
public BasicItem(String name) {
|
||||
this(name, null);
|
||||
}
|
||||
|
||||
public boolean isOreDict() {
|
||||
return this.oreDictPrefix != null;
|
||||
}
|
||||
|
@@ -4,21 +4,19 @@ import net.minecraft.util.ResourceLocation;
|
||||
import slimeknights.tconstruct.library.Util;
|
||||
import slimeknights.tconstruct.library.fluid.FluidMolten;
|
||||
|
||||
/**
|
||||
* A "wrapper" for FluidMolten that makes construction and manipulation easier
|
||||
*/
|
||||
public class BasicTinkerFluid extends FluidMolten {
|
||||
|
||||
private boolean toolForge;
|
||||
|
||||
public BasicTinkerFluid(String fluidName, int color, boolean toolForge, int temp, int lumen, int visk) {
|
||||
super(fluidName, color, new ResourceLocation("tconstruct:blocks/fluids/molten_metal"), new ResourceLocation("tconstruct:blocks/fluids/molten_metal_flow"));
|
||||
public BasicTinkerFluid(String fluidName, int color, int temp, int lumen, int visk) {
|
||||
// Constructs the FluidMolten with textures and color
|
||||
super(fluidName, color, new ResourceLocation("tconstruct:blocks/fluids/molten_metal"), new ResourceLocation
|
||||
("tconstruct:blocks/fluids/molten_metal_flow"));
|
||||
//Settings
|
||||
this.setUnlocalizedName(Util.prefix(fluidName));
|
||||
this.setTemperature(temp);
|
||||
this.setLuminosity(lumen);
|
||||
this.setViscosity(visk);
|
||||
this.setDensity(2000);
|
||||
this.toolForge = toolForge;
|
||||
}
|
||||
|
||||
public boolean isToolForge() {
|
||||
return toolForge;
|
||||
}
|
||||
}
|
||||
|
64
src/main/java/com/sosnitzka/taiga/generic/BlockOre.java
Normal file
64
src/main/java/com/sosnitzka/taiga/generic/BlockOre.java
Normal file
@@ -0,0 +1,64 @@
|
||||
package com.sosnitzka.taiga.generic;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.Explosion;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.Random;
|
||||
|
||||
import static slimeknights.tconstruct.TConstruct.random;
|
||||
|
||||
public class BlockOre extends Block {
|
||||
|
||||
private Item dropItem;
|
||||
private int itemAmount;
|
||||
private int xpAmount;
|
||||
|
||||
public BlockOre(String name, Material material, float hardness, float resistance, int harvest, float lightLevel,
|
||||
Item item, int amount, int xp) {
|
||||
super(material);
|
||||
setUnlocalizedName(name);
|
||||
setRegistryName(name);
|
||||
setHardness(hardness);
|
||||
setResistance(resistance);
|
||||
setHarvestLevel("pickaxe", harvest);
|
||||
setLightLevel(lightLevel);
|
||||
this.dropItem = item;
|
||||
this.itemAmount = amount;
|
||||
this.xpAmount = xp;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune) {
|
||||
return random.nextInt(xpAmount) + fortune;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ParametersAreNonnullByDefault
|
||||
public int quantityDropped(IBlockState state, int fortune, Random random) {
|
||||
return (random.nextInt(itemAmount + fortune) + 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
|
||||
return dropItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) {
|
||||
if (!worldIn.isRemote) {
|
||||
if (random.nextFloat() < 0.5) {
|
||||
worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), random.nextFloat() * 4f + 1.5f, true,
|
||||
true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,10 +0,0 @@
|
||||
package com.sosnitzka.taiga.items;
|
||||
|
||||
import com.sosnitzka.taiga.generic.BasicItem;
|
||||
|
||||
public class ItemIronNugget extends BasicItem {
|
||||
|
||||
public ItemIronNugget() {
|
||||
super("iron_nugget");
|
||||
}
|
||||
}
|
@@ -1,11 +0,0 @@
|
||||
package com.sosnitzka.taiga.items;
|
||||
|
||||
import com.sosnitzka.taiga.generic.BasicItem;
|
||||
|
||||
public class ItemLignite extends BasicItem {
|
||||
|
||||
public ItemLignite(String name, String registry) {
|
||||
super(name, null, registry);
|
||||
}
|
||||
|
||||
}
|
@@ -1,10 +0,0 @@
|
||||
package com.sosnitzka.taiga.items;
|
||||
|
||||
import com.sosnitzka.taiga.generic.BasicItem;
|
||||
|
||||
public class ItemSlaggoldIngot extends BasicItem {
|
||||
|
||||
public ItemSlaggoldIngot() {
|
||||
super("slaggold_ingot");
|
||||
}
|
||||
}
|
@@ -1,10 +0,0 @@
|
||||
package com.sosnitzka.taiga.items;
|
||||
|
||||
import com.sosnitzka.taiga.generic.BasicItem;
|
||||
|
||||
public class ItemSlagironIngot extends BasicItem {
|
||||
|
||||
public ItemSlagironIngot() {
|
||||
super("slagiron_ingot");
|
||||
}
|
||||
}
|
@@ -3,6 +3,8 @@ package com.sosnitzka.taiga.proxy;
|
||||
import com.sosnitzka.taiga.Blocks;
|
||||
import com.sosnitzka.taiga.Items;
|
||||
import com.sosnitzka.taiga.TAIGA;
|
||||
import com.sosnitzka.taiga.TAIGAConfiguration;
|
||||
import com.sosnitzka.taiga.book.ContentOre;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
@@ -10,11 +12,16 @@ import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||
import net.minecraft.client.renderer.block.statemap.StateMapperBase;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraftforge.client.model.ModelLoader;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
||||
import slimeknights.mantle.client.book.repository.FileRepository;
|
||||
import slimeknights.tconstruct.library.book.TinkerBook;
|
||||
import slimeknights.tconstruct.library.client.MaterialRenderInfo;
|
||||
import slimeknights.tconstruct.library.client.texture.MetalTextureTexture;
|
||||
import slimeknights.tconstruct.library.materials.Material;
|
||||
@@ -22,9 +29,14 @@ import slimeknights.tconstruct.library.materials.Material;
|
||||
import javax.annotation.Nonnull;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import static com.sosnitzka.taiga.Fluids.*;
|
||||
import static com.sosnitzka.taiga.Keybindings.altKey;
|
||||
import static com.sosnitzka.taiga.MaterialTraits.*;
|
||||
import static slimeknights.mantle.client.book.BookLoader.registerPageType;
|
||||
import static slimeknights.tconstruct.library.utils.HarvestLevels.harvestLevelNames;
|
||||
|
||||
public class ClientProxy extends ServerProxy {
|
||||
@SuppressWarnings("unused")
|
||||
public class ClientProxy extends CommonProxy {
|
||||
|
||||
private static void registerBlockModel(Block block) {
|
||||
registerItemModel(Item.getItemFromBlock(block));
|
||||
@@ -35,14 +47,18 @@ public class ClientProxy extends ServerProxy {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerStuff() {
|
||||
public void regsiterKeyBindings() {
|
||||
ClientRegistry.registerKeyBinding(altKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerModels() {
|
||||
Field[] itemFields = Items.class.getDeclaredFields();
|
||||
for (Field field : itemFields) {
|
||||
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
|
||||
Class<?> targetType = field.getType();
|
||||
try {
|
||||
Item item = (Item) field.get(targetType);
|
||||
|
||||
registerItemModel(item);
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
@@ -56,7 +72,6 @@ public class ClientProxy extends ServerProxy {
|
||||
Class<?> targetType = field.getType();
|
||||
try {
|
||||
Block block = (Block) field.get(targetType);
|
||||
|
||||
registerBlockModel(block);
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
@@ -66,30 +81,37 @@ public class ClientProxy extends ServerProxy {
|
||||
}
|
||||
|
||||
public void setRenderInfo(final Material material) {
|
||||
/* if (material != bismuth) {
|
||||
material.setRenderInfo(new MaterialRenderInfo.Metal(fluid.getColor(), 0.4f, 0.2f, 0f));
|
||||
} else bismuth.setRenderInfo(new MaterialRenderInfo.BlockTexture("taiga:blocks/bismuth_block")); */
|
||||
|
||||
if (material == adamantite) renderTo(material, 0xd55cdf, 0.5f, 0.8f, 0.2f);
|
||||
else if (material == solarium) renderTo(material, 0xffff00, 0.6f, 1.8f, 0.0f);
|
||||
else if (material == proxideum) renderTo(material, 0x2d8f8b, 0.4f, 0.3f, 0.1f);
|
||||
else if (material == tiberium) renderTo(material, 0x33ff33, 0.5f, 0.2f, 0.1f);
|
||||
else if (material == bismuth) renderTo(material, 0xffffff, 0.4f, 0.2f, 0.0f);
|
||||
else if (material == dyonite) renderTo(material, 0xffe240, 0.6f, 0.8f, 0.2f);
|
||||
if (material.equals(adamant)) metalRender(material, adamantFluid.getColor(), 1f, 0.8f, 0f);
|
||||
else if (material.equals(duranite)) metalRender(material, duraniteFluid.getColor(), .4f, .4f, 0);
|
||||
else if (material.equals(tiberium)) metalRender(material, tiberiumFluid.getColor(), 1f, .3f, 0f);
|
||||
else if (material.equals(palladium)) metalRender(material, palladiumFluid.getColor(), .7f, .6f, 0f);
|
||||
else if (material.equals(osram)) metalRender(material, osramFluid.getColor(), .7f, .6f, 0f);
|
||||
else if (material.equals(tritonite)) metalRender(material, tritoniteFluid.getColor(), .3f, .3f, 0f);
|
||||
else if (material.equals(nucleum)) metalRender(material, nucleumFluid.getColor(), .4f, .6f, .2f);
|
||||
else if (material.equals(triberium)) metalRender(material, triberiumFluid.getColor(), 2f, 2f, 0.5f);
|
||||
else if (material.equals(solarium)) metalRender(material, solariumFluid.getColor(), 1.5f, 1.5f, 0.5f);
|
||||
else if (material.equals(uru)) metalRender(material, uruFluid.getColor(), 1.0f, 1.0f, 0.3f);
|
||||
else if (material.equals(imperomite)) metalRender(material, imperomiteFluid.getColor(), 0.4f, 1.0f, 0.7f);
|
||||
else if (material.equals(vibranium)) metalRender(material, vibraniumFluid.getColor(), 0.6f, .8f, 1f);
|
||||
else if (material.equals(valyrium)) metalRender(material, valyriumFluid.getColor(), .8f, 1.5f, -0.1f);
|
||||
else {
|
||||
material.setRenderInfo(new MaterialRenderInfo.BlockTexture("taiga:blocks/" + material.getFluid().getName() + "_block"));
|
||||
material.setRenderInfo(new MaterialRenderInfo.BlockTexture(new ResourceLocation("taiga:blocks/block/" +
|
||||
material.getIdentifier())));
|
||||
}
|
||||
}
|
||||
|
||||
private void renderTo(Material material, final int f, final float shine, final float brightness, final float hueshift) {
|
||||
private void metalRender(final Material material, final int f, final float shine, final float brightness, final
|
||||
float hueshift) {
|
||||
material.setRenderInfo(new MaterialRenderInfo.AbstractMaterialRenderInfo() {
|
||||
@Override
|
||||
public TextureAtlasSprite getTexture(TextureAtlasSprite baseTexture, String location) {
|
||||
return new MetalTextureTexture("taiga:blocks/materials/adamantite", baseTexture, location, f, shine, brightness, hueshift);
|
||||
public TextureAtlasSprite getTexture(ResourceLocation baseTexture, String location) {
|
||||
return new MetalTextureTexture(new ResourceLocation("taiga:materials/" + material.getIdentifier()),
|
||||
baseTexture, location, f, shine, brightness, hueshift);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void registerFluidModels(Fluid fluid) {
|
||||
if (fluid == null) {
|
||||
@@ -102,17 +124,26 @@ public class ClientProxy extends ServerProxy {
|
||||
FluidStateMapper mapper = new FluidStateMapper(fluid);
|
||||
|
||||
// item-model
|
||||
if (item != null) {
|
||||
ModelLoader.registerItemVariants(item);
|
||||
ModelLoader.setCustomMeshDefinition(item, mapper);
|
||||
}
|
||||
// block-model
|
||||
ModelLoader.setCustomStateMapper(block, mapper);
|
||||
}
|
||||
}
|
||||
|
||||
public static class FluidStateMapper extends StateMapperBase implements ItemMeshDefinition {
|
||||
@Override
|
||||
public void initConfig() {
|
||||
super.initConfig();
|
||||
TAIGAConfiguration.clientPreInit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerBookPages() {
|
||||
TinkerBook.INSTANCE.addRepository(new FileRepository("taiga:book"));
|
||||
registerPageType("taigaore", ContentOre.class);
|
||||
}
|
||||
|
||||
public static class FluidStateMapper extends StateMapperBase implements ItemMeshDefinition {
|
||||
public final Fluid fluid;
|
||||
public final ModelResourceLocation location;
|
||||
|
||||
@@ -120,7 +151,8 @@ public class ClientProxy extends ServerProxy {
|
||||
this.fluid = fluid;
|
||||
|
||||
// have each block hold its fluid per nbt? hm
|
||||
this.location = new ModelResourceLocation(new ResourceLocation(TAIGA.MODID, "fluid_block"), fluid.getName());
|
||||
this.location = new ModelResourceLocation(new ResourceLocation(TAIGA.MODID, "fluid_block"), fluid.getName
|
||||
());
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@@ -135,4 +167,11 @@ public class ClientProxy extends ServerProxy {
|
||||
return location;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerHarvestLevels() {
|
||||
harvestLevelNames.put(DURANITE, I18n.format("harvestlevel.duranite", TextFormatting.GREEN, TextFormatting.RESET));
|
||||
harvestLevelNames.put(VALYRIUM, I18n.format("harvestlevel.valyrium", TextFormatting.GOLD, TextFormatting.RESET));
|
||||
harvestLevelNames.put(VIBRANIUM, I18n.format("harvestlevel.vibranium", TextFormatting.DARK_PURPLE, TextFormatting.RESET));
|
||||
}
|
||||
}
|
||||
|
43
src/main/java/com/sosnitzka/taiga/proxy/CommonProxy.java
Normal file
43
src/main/java/com/sosnitzka/taiga/proxy/CommonProxy.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package com.sosnitzka.taiga.proxy;
|
||||
|
||||
import com.sosnitzka.taiga.TAIGAConfiguration;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
|
||||
import slimeknights.tconstruct.library.materials.Material;
|
||||
|
||||
import static com.sosnitzka.taiga.MaterialTraits.*;
|
||||
import static slimeknights.tconstruct.library.utils.HarvestLevels.harvestLevelNames;
|
||||
|
||||
public class CommonProxy {
|
||||
|
||||
public void registerModels() {
|
||||
|
||||
}
|
||||
|
||||
public void setRenderInfo(Material material) {
|
||||
|
||||
}
|
||||
|
||||
public void registerFluidModels(Fluid fluid) {
|
||||
}
|
||||
|
||||
public void initConfig() {
|
||||
TAIGAConfiguration.preInit();
|
||||
}
|
||||
|
||||
public void registerServerCommands(FMLServerStartingEvent e) {
|
||||
}
|
||||
|
||||
public void registerBookPages() {
|
||||
}
|
||||
|
||||
public void regsiterKeyBindings() {
|
||||
|
||||
}
|
||||
|
||||
public void registerHarvestLevels() {
|
||||
harvestLevelNames.put(DURANITE, "harvestlevel.duranite");
|
||||
harvestLevelNames.put(VALYRIUM, "harvestlevel.valyrium");
|
||||
harvestLevelNames.put(VIBRANIUM, "harvestlevel.vibranium");
|
||||
}
|
||||
}
|
@@ -1,18 +0,0 @@
|
||||
package com.sosnitzka.taiga.proxy;
|
||||
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import slimeknights.tconstruct.library.materials.Material;
|
||||
|
||||
public class ServerProxy {
|
||||
|
||||
public void registerStuff() {
|
||||
|
||||
}
|
||||
|
||||
public void setRenderInfo(Material material) {
|
||||
|
||||
}
|
||||
|
||||
public void registerFluidModels(Fluid fluid) {
|
||||
}
|
||||
}
|
@@ -1,37 +0,0 @@
|
||||
package com.sosnitzka.taiga.recipes;
|
||||
|
||||
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
|
||||
import static com.sosnitzka.taiga.Items.*;
|
||||
import static slimeknights.tconstruct.shared.TinkerCommons.matNecroticBone;
|
||||
|
||||
public class Crafting {
|
||||
public static void register() {
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(fuel_brick), Items.COAL, Items.COAL, Items.COAL, lignite, lignite, lignite);
|
||||
GameRegistry.addShapedRecipe(new ItemStack((tiberiumShardStable), 3), "STS", "TST", "STS", 'T', new ItemStack(tiberiumShardInstable), 'S', new ItemStack(Item.getItemFromBlock(Blocks.SAND)));
|
||||
GameRegistry.addShapedRecipe(new ItemStack((tiberiumShardStable), 2), "GTG", "TGT", "GTG", 'T', new ItemStack(tiberiumShardInstable), 'G', new ItemStack(Item.getItemFromBlock(Blocks.GRAVEL)));
|
||||
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(luminar_dust), Items.REDSTONE, Items.GLOWSTONE_DUST);
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(glimmerstone_dust), luminar_dust, Items.BLAZE_POWDER);
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(glimmerstone_dust), Items.REDSTONE, Items.GLOWSTONE_DUST, Items.BLAZE_POWDER);
|
||||
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(glimmercoal), Items.COAL, glimmerstone_dust);
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(glimmercoal), lignite, glimmerstone_dust);
|
||||
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(radiant_pearl), Items.ENDER_PEARL, luminar_dust, new ItemStack(Items.DYE, 1, 4));
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(glimmer_pearl), Items.ENDER_PEARL, glimmerstone_dust);
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(energy_pearl), Items.ENDER_PEARL, luminar_dust, Items.GUNPOWDER);
|
||||
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(nitro_brick), fuel_brick, Items.GUNPOWDER, Items.BLAZE_POWDER);
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(anthracite_dust), matNecroticBone, Items.COAL, Items.GUNPOWDER);
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(spectrum_dust), matNecroticBone, glimmerstone_dust);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,61 @@
|
||||
package com.sosnitzka.taiga.recipes;
|
||||
|
||||
import com.sosnitzka.taiga.Blocks;
|
||||
import com.sosnitzka.taiga.Items;
|
||||
import com.sosnitzka.taiga.TAIGA;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.Ingredient;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
|
||||
public class CraftingRegistry {
|
||||
|
||||
public static void register() {
|
||||
convertion(Item.getItemFromBlock(Blocks.tiberiumBlock), Items.tiberiumIngot, Items.tiberiumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.auroriumBlock), Items.auroriumIngot, Items.auroriumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.prometheumBlock), Items.prometheumIngot, Items.prometheumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.duraniteBlock), Items.duraniteIngot, Items.duraniteNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.valyriumBlock), Items.valyriumIngot, Items.valyriumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.vibraniumBlock), Items.vibraniumIngot, Items.vibraniumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.karmesineBlock), Items.karmesineIngot, Items.karmesineNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.oviumBlock), Items.oviumIngot, Items.oviumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.jauxumBlock), Items.jauxumIngot, Items.jauxumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.palladiumBlock), Items.palladiumIngot, Items.palladiumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.uruBlock), Items.uruIngot, Items.uruNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.osramBlock), Items.osramIngot, Items.osramNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.eezoBlock), Items.eezoIngot, Items.eezoNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.abyssumBlock), Items.abyssumIngot, Items.abyssumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.terraxBlock), Items.terraxIngot, Items.terraxNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.triberiumBlock), Items.triberiumIngot, Items.triberiumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.fractumBlock), Items.fractumIngot, Items.fractumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.violiumBlock), Items.violiumIngot, Items.violiumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.proxiiBlock), Items.proxiiIngot, Items.proxiiNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.tritoniteBlock), Items.tritoniteIngot, Items.tritoniteNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.ignitzBlock), Items.ignitzIngot, Items.ignitzNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.imperomiteBlock), Items.imperomiteIngot, Items.imperomiteNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.solariumBlock), Items.solariumIngot, Items.solariumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.nihiliteBlock), Items.nihiliteIngot, Items.nihiliteNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.adamantBlock), Items.adamantIngot, Items.adamantNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.dyoniteBlock), Items.dyoniteIngot, Items.dyoniteNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.nucleumBlock), Items.nucleumIngot, Items.nucleumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.lumixBlock), Items.lumixIngot, Items.lumixNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.seismumBlock), Items.seismumIngot, Items.seismumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.astriumBlock), Items.astriumIngot, Items.astriumNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.niobBlock), Items.niobIngot, Items.niobNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.yrdeenBlock), Items.yrdeenIngot, Items.yrdeenNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.ioxBlock), Items.ioxIngot, Items.ioxNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.blockMeteorite), Items.meteoriteIngot, Items.meteoriteNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.blockObsidiorite), Items.obsidioriteIngot, Items.obsidioriteNugget);
|
||||
convertion(Item.getItemFromBlock(Blocks.dilithiumBlock), Items.dilithiumIngot, Items.dilithiumNugget);
|
||||
}
|
||||
|
||||
public static void convertion(Item block, Item ingot, Item nugget) {
|
||||
GameRegistry.addShapelessRecipe(new ResourceLocation(TAIGA.MODID + ":recipe_ingot_from_block_" + block
|
||||
.getUnlocalizedName()), new ResourceLocation(""), new ItemStack(ingot, 9), Ingredient.fromStacks(new
|
||||
ItemStack(block)));
|
||||
GameRegistry.addShapelessRecipe(new ResourceLocation(TAIGA.MODID + ":recipe_ingot_from_nugget_" + block
|
||||
.getUnlocalizedName()), new ResourceLocation(""), new ItemStack(nugget, 9), Ingredient.fromStacks(new
|
||||
ItemStack(ingot)));
|
||||
}
|
||||
}
|
@@ -1,37 +0,0 @@
|
||||
package com.sosnitzka.taiga.recipes;
|
||||
|
||||
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import org.apache.commons.lang3.RandomUtils;
|
||||
|
||||
import static com.sosnitzka.taiga.Blocks.*;
|
||||
import static com.sosnitzka.taiga.Items.*;
|
||||
|
||||
public class Smelting {
|
||||
public static void register() {
|
||||
GameRegistry.addSmelting(slagironOre, new ItemStack(slagironIngot), 1.0F);
|
||||
GameRegistry.addSmelting(new ItemStack(slagironIngot), new ItemStack(iron_nugget), 0);
|
||||
GameRegistry.addSmelting(new ItemStack(slaggoldIngot), new ItemStack(Items.GOLD_NUGGET), 0);
|
||||
GameRegistry.addSmelting(new ItemStack(tiberiumShardInstable), new ItemStack(tiberiumShardStable), 0.2F);
|
||||
|
||||
GameRegistry.addSmelting(titaniteOre, new ItemStack(titaniteIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(arcaniteOre, new ItemStack(arcaniteIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(adamantiteOre, new ItemStack(adamantiteIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(violiumOre, new ItemStack(violiumIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(bismuthOre, new ItemStack(bismuthIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(eterniteOre, new ItemStack(eterniteIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(ignititeOre, new ItemStack(ignititeIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(karmesineOre, new ItemStack(karmesineIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(meteoriteOre, new ItemStack(meteoriteIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(mindoriteOre, new ItemStack(mindoriteIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(mythrilOre, new ItemStack(mythrilIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(palladiumOre, new ItemStack(palladiumIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(prometheumOre, new ItemStack(prometheumIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(tiberiumOre, new ItemStack(tiberiumShardStable, 2), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(vibraniumOre, new ItemStack(vibraniumIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
GameRegistry.addSmelting(rubiumOre, new ItemStack(rubiumIngot), RandomUtils.nextFloat(0F, 2F));
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
package com.sosnitzka.taiga.recipes;
|
||||
|
||||
|
||||
public class SmeltingRegistry {
|
||||
public static void register() {
|
||||
|
||||
}
|
||||
}
|
@@ -25,42 +25,43 @@ public class TraitAnalysing extends AbstractTrait {
|
||||
@SubscribeEvent
|
||||
public void onXpDrop(LivingExperienceDropEvent event) {
|
||||
EntityPlayer player = event.getAttackingPlayer();
|
||||
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
|
||||
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)
|
||||
&& event.getDroppedExperience() > 0) {
|
||||
event.setDroppedExperience(this.getUpdateXP(event.getDroppedExperience()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onBlockBreak(BlockEvent.BreakEvent event) {
|
||||
EntityPlayer player = event.getPlayer();
|
||||
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
|
||||
if (!event.getWorld().isRemote && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player
|
||||
.getHeldItemMainhand()), this.identifier) && event.getExpToDrop() > 0) {
|
||||
event.setExpToDrop(this.getUpdateXP(event.getExpToDrop()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onMobDrops(LivingDropsEvent event) {
|
||||
World w = event.getEntity().getEntityWorld();
|
||||
if (event.getSource().getEntity() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
|
||||
if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
if (random.nextFloat() < .1f && event.getSource().getTrueSource() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
|
||||
if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe
|
||||
(player.getHeldItemMainhand()), identifier)) {
|
||||
event.getDrops().clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int getUpdateXP(int xp) {
|
||||
float exp = (float) random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + 18) * 50;
|
||||
float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextInt(xp) * (1 +
|
||||
random.nextFloat()));
|
||||
return Math.round(exp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
|
||||
if (random.nextFloat() < 0.85) {
|
||||
if (random.nextFloat() < 0.1) {
|
||||
event.getDrops().clear();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,42 +1,60 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityCreature;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
import static com.sosnitzka.taiga.util.Utils.isNight;
|
||||
|
||||
public class TraitArcane extends AbstractTrait {
|
||||
|
||||
public TraitArcane() {
|
||||
super("arcane", TextFormatting.DARK_PURPLE);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
|
||||
player, boolean wasEffective) {
|
||||
int time = (int) world.getWorldTime();
|
||||
if (random.nextFloat() <= 0.1 && isNight(time)) {
|
||||
ToolHelper.healTool(tool, random.nextInt(15) + 1, null);
|
||||
if (random.nextFloat() <= 0.05 && isNight(time)) {
|
||||
ToolHelper.healTool(tool, random.nextInt(8) + 1, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean
|
||||
wasCritical, boolean wasHit) {
|
||||
int time = (int) player.getEntityWorld().getWorldTime();
|
||||
if (random.nextFloat() <= 0.1 && isNight(time)) {
|
||||
ToolHelper.healTool(tool, random.nextInt(15) + 1, null);
|
||||
if (random.nextFloat() <= 0.05 && isNight(time)) {
|
||||
ToolHelper.healTool(tool, random.nextInt(8) + 1, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public boolean isNight(int time) {
|
||||
if (time > 12500) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
@SubscribeEvent
|
||||
public void onEntityKill(LivingDeathEvent e) {
|
||||
World w = e.getEntity().getEntityWorld();
|
||||
if (!w.isRemote && e.getSource().getTrueSource() != null) {
|
||||
if (e.getSource().getTrueSource() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) {
|
||||
ItemStack tool = ((EntityPlayer) e.getSource().getTrueSource()).getHeldItemMainhand();
|
||||
if (isNight((int) w.getWorldTime()) && random.nextFloat() < 0.1 && TinkerUtil.hasTrait(TagUtil
|
||||
.getTagSafe(tool), identifier)) {
|
||||
ToolHelper.healTool(tool, random.nextInt(16), null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
107
src/main/java/com/sosnitzka/taiga/traits/TraitBerserk.java
Normal file
107
src/main/java/com/sosnitzka/taiga/traits/TraitBerserk.java
Normal file
@@ -0,0 +1,107 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.util.FakePlayer;
|
||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.tools.ToolNBT;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
import static com.sosnitzka.taiga.Keybindings.altKey;
|
||||
|
||||
|
||||
public class TraitBerserk extends TraitProgressiveStats {
|
||||
|
||||
protected static int TICK_PER_STAT = 8;
|
||||
|
||||
public TraitBerserk() {
|
||||
super(TraitBerserk.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void miningSpeed(ItemStack tool, PlayerInteractEvent.BreakSpeed event) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if (!data.active) return;
|
||||
event.setNewSpeed(event.getNewSpeed() * 4);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float
|
||||
newDamage, boolean isCritical) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if (!data.active) return newDamage;
|
||||
return newDamage * 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
|
||||
if (!world.isRemote) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
EntityLivingBase player = (EntityLivingBase) entity;
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
NBTTagCompound root = TagUtil.getTagSafe(tool);
|
||||
StatNBT distributed = getBonus(root);
|
||||
if (data.active) {
|
||||
if (!TagUtil.hasEnchantEffect(root))
|
||||
TagUtil.setEnchantEffect(root, true);
|
||||
|
||||
if (entity instanceof FakePlayer || entity.ticksExisted % TICK_PER_STAT != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
ToolNBT stat = TagUtil.getToolStats(tool);
|
||||
if (random.nextFloat() > .80f) {
|
||||
stat.durability -= 1;
|
||||
distributed.durability -= 1;
|
||||
} else
|
||||
ToolHelper.damageTool(tool, 1, player);
|
||||
TagUtil.setToolTag(root, stat.get());
|
||||
setBonus(root, distributed);
|
||||
} else {
|
||||
if (TagUtil.hasEnchantEffect(root))
|
||||
TagUtil.setEnchantEffect(root, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRightClickItem(PlayerInteractEvent.RightClickItem event) {
|
||||
World w = event.getWorld();
|
||||
ItemStack tool = event.getEntityPlayer().getHeldItemMainhand();
|
||||
if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier) && altKey.isKeyDown()) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
NBTTagCompound root = TagUtil.getTagSafe(tool);
|
||||
StatNBT distributed = getBonus(root);
|
||||
ToolNBT stat = TagUtil.getToolStats(tool);
|
||||
if (data.active) {
|
||||
data.active = false;
|
||||
TagUtil.setEnchantEffect(root, false);
|
||||
TagUtil.setExtraTag(root, tag);
|
||||
data.write(tag);
|
||||
} else {
|
||||
stat.durability -= 10;
|
||||
distributed.durability -= 10;
|
||||
TagUtil.setToolTag(root, stat.get());
|
||||
setBonus(root, distributed);
|
||||
data.active = true;
|
||||
data.write(tag);
|
||||
|
||||
TagUtil.setExtraTag(root, tag);
|
||||
data.write(tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -10,6 +10,8 @@ import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
|
||||
import static com.sosnitzka.taiga.util.Utils.isNight;
|
||||
|
||||
public class TraitBlind extends AbstractTrait {
|
||||
|
||||
public TraitBlind() {
|
||||
@@ -17,28 +19,26 @@ public class TraitBlind extends AbstractTrait {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
|
||||
player, boolean wasEffective) {
|
||||
int time = (int) world.getWorldTime();
|
||||
if (random.nextFloat() <= 0.05 || (random.nextFloat() <= 0.1 && isNight(time))) {
|
||||
player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(400) + 200));
|
||||
player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, random.nextInt(400) + 200));
|
||||
if (random.nextFloat() <= 0.01 || (random.nextFloat() <= 0.03 && isNight(time))) {
|
||||
if (random.nextBoolean())
|
||||
player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(200) + 100));
|
||||
else
|
||||
player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, random.nextInt(200) + 100));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean
|
||||
wasCritical, boolean wasHit) {
|
||||
int time = (int) player.getEntityWorld().getWorldTime();
|
||||
if (random.nextFloat() <= 0.05 || (random.nextFloat() <= 0.1 && isNight(time))) {
|
||||
if (random.nextFloat() <= 0.01 || (random.nextFloat() <= 0.03 && isNight(time))) {
|
||||
if (random.nextBoolean())
|
||||
player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(400) + 200));
|
||||
else
|
||||
player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, random.nextInt(400) + 200));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isNight(int time) {
|
||||
if (time > 12500) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,50 +1,41 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.MobEffects;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
import static com.sosnitzka.taiga.util.Utils.isNight;
|
||||
import static net.minecraft.init.MobEffects.GLOWING;
|
||||
|
||||
|
||||
public class TraitBright extends AbstractTrait {
|
||||
|
||||
private static final float chance = 0.90f;
|
||||
|
||||
public TraitBright() {
|
||||
super("bright", TextFormatting.DARK_GRAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) {
|
||||
public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float
|
||||
newDamage, boolean isCritical) {
|
||||
int time = (int) target.getEntityWorld().getWorldTime();
|
||||
if (isDay(time)) {
|
||||
newDamage += damage / 2f;
|
||||
}
|
||||
if (!isNight(time)) {
|
||||
newDamage = damage * (1 + random.nextFloat() / 2f);
|
||||
} else newDamage = damage / (1 + random.nextFloat() / 3f);
|
||||
return super.damage(tool, player, target, damage, newDamage, isCritical);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack item, World world, Entity entity, int i, boolean b) {
|
||||
if (entity instanceof EntityPlayer) {
|
||||
EntityPlayer e = (EntityPlayer) entity;
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getHeldItemMainhand()), identifier)) {
|
||||
e.addPotionEffect(new PotionEffect(MobEffects.GLOWING, 100));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean isDay(int time) {
|
||||
if (time < 12500) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
|
||||
player, boolean wasEffective) {
|
||||
if (random.nextFloat() >= chance) {
|
||||
player.addPotionEffect(new PotionEffect(GLOWING, 200));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -16,15 +16,17 @@ public class TraitCascade extends AbstractTrait {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
|
||||
player, boolean wasEffective) {
|
||||
float f = random.nextFloat();
|
||||
float b = 0.99F * calcBonus(tool);
|
||||
if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) {
|
||||
if (!world.isRemote && tool.canHarvestBlock(state) && f <= 0.1) {
|
||||
double x, y, z, sx, sy, sz;
|
||||
sx = x = pos.getX();
|
||||
sy = y = pos.getY();
|
||||
sz = z = pos.getZ();
|
||||
for (int i = random.nextInt(ToolHelper.getCurrentDurability(tool)); i > 0; i--) {
|
||||
int i = random.nextInt((int) Math.min(300f * (float) ToolHelper.getCurrentDurability(tool) / ToolHelper
|
||||
.getMaxDurability(tool), 50f));
|
||||
for (int a = i; a > 0; a--) {
|
||||
int r = random.nextInt(3);
|
||||
int d = random.nextBoolean() ? 1 : -1;
|
||||
if (r == 0) x += d;
|
||||
@@ -36,22 +38,13 @@ public class TraitCascade extends AbstractTrait {
|
||||
sx = x = nextBlock.getX();
|
||||
sy = y = nextBlock.getY();
|
||||
sz = z = nextBlock.getZ();
|
||||
ToolHelper.damageTool(tool, random.nextInt(2), player);
|
||||
ToolHelper.damageTool(tool, 1, player);
|
||||
} else {
|
||||
x = sx;
|
||||
y = sy;
|
||||
z = sz;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private float calcBonus(ItemStack tool) {
|
||||
int durability = ToolHelper.getCurrentDurability(tool);
|
||||
int maxDurability = ToolHelper.getMaxDurability(tool);
|
||||
return (0.4f) / (maxDurability - 50) * (durability) + 0.55f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
150
src/main/java/com/sosnitzka/taiga/traits/TraitCatcher.java
Normal file
150
src/main/java/com/sosnitzka/taiga/traits/TraitCatcher.java
Normal file
@@ -0,0 +1,150 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
import static com.sosnitzka.taiga.Keybindings.altKey;
|
||||
|
||||
|
||||
public class TraitCatcher extends AbstractTrait {
|
||||
|
||||
public static int chance = 3;
|
||||
public static float costMulti = 0.25f;
|
||||
|
||||
public TraitCatcher() {
|
||||
super(TraitCatcher.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void killEntity(LivingDeathEvent event) {
|
||||
if (!(event.getSource().getTrueSource() instanceof EntityPlayer))
|
||||
return;
|
||||
if (event.getEntityLiving() instanceof EntityPlayer || event.getEntityLiving() instanceof EntityPlayerMP)
|
||||
return;
|
||||
|
||||
World w = event.getSource().getTrueSource().getEntityWorld();
|
||||
EntityPlayer p = (EntityPlayer) event.getSource().getTrueSource();
|
||||
|
||||
if (!TinkerUtil.hasTrait(TagUtil.getTagSafe(p.getHeldItemMainhand()), identifier))
|
||||
return;
|
||||
|
||||
EntityLivingBase target = event.getEntityLiving();
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(p.getHeldItemMainhand());
|
||||
Data data = Data.read(tag);
|
||||
|
||||
if (!data.mobClass.isEmpty())
|
||||
return;
|
||||
|
||||
if (!w.isRemote && random.nextInt((int) target.getMaxHealth()) <= chance && target instanceof EntityLiving) {
|
||||
event.setCanceled(true);
|
||||
target.setDropItemsWhenDead(false);
|
||||
|
||||
if (data.mobClass.isEmpty()) {
|
||||
data.mobClass = target.getClass().getName();
|
||||
data.mobName = target.getName();
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(p.getHeldItemMainhand(), tag);
|
||||
p.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
target.setDropItemsWhenDead(false);
|
||||
target.setDead();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
|
||||
if (!world.isRemote) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Data data = Data.read(tag);
|
||||
if (data.mobClass.isEmpty()) {
|
||||
TagUtil.setEnchantEffect(tool, false);
|
||||
} else
|
||||
TagUtil.setEnchantEffect(tool, true);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRightClickItem(PlayerInteractEvent.RightClickItem event) {
|
||||
World w = event.getWorld();
|
||||
BlockPos pos = event.getEntityPlayer().getPosition();
|
||||
ItemStack tool = event.getEntityPlayer().getHeldItemMainhand();
|
||||
if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier) && altKey.isKeyDown()) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Data data = Data.read(tag);
|
||||
if (!data.mobClass.isEmpty()) {
|
||||
Entity ent = null;
|
||||
try {
|
||||
ent = (Entity) Class.forName(data.mobClass).getConstructor(World.class).newInstance(w);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.toString());
|
||||
}
|
||||
|
||||
if (ent != null) {
|
||||
ent.setPosition(pos.getX(), pos.getY(), pos.getZ()); // TODO: set to player view target
|
||||
w.spawnEntity(ent);
|
||||
event.getEntityPlayer().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
data.mobClass = "";
|
||||
data.mobName = "";
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(tool, tag);
|
||||
ToolHelper.damageTool(tool, random.nextInt((int) (ToolHelper.getCurrentDurability(tool) *
|
||||
costMulti)), event.getEntityPlayer());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void onItemTooltip(ItemTooltipEvent e) {
|
||||
ItemStack tool = e.getItemStack();
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Data data = Data.read(tag);
|
||||
if (!data.mobClass.isEmpty())
|
||||
e.getToolTip().add(TextFormatting.DARK_PURPLE + "Captured: " + TextFormatting.LIGHT_PURPLE + data
|
||||
.mobName);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Data {
|
||||
String mobClass;
|
||||
String mobName;
|
||||
|
||||
public static Data read(NBTTagCompound tag) {
|
||||
Data data = new Data();
|
||||
data.mobName = tag.getString("mobName");
|
||||
data.mobClass = tag.getString("mobClass");
|
||||
return data;
|
||||
}
|
||||
|
||||
public void write(NBTTagCompound tag) {
|
||||
tag.setString("mobClass", mobClass);
|
||||
tag.setString("mobName", mobName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
80
src/main/java/com/sosnitzka/taiga/traits/TraitCongenial.java
Normal file
80
src/main/java/com/sosnitzka/taiga/traits/TraitCongenial.java
Normal file
@@ -0,0 +1,80 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import net.minecraft.entity.EntityCreature;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
|
||||
public class TraitCongenial extends AbstractTrait {
|
||||
public TraitCongenial() {
|
||||
super(TraitCongenial.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onEntityKill(LivingDeathEvent e) {
|
||||
if (e.getSource().getTrueSource() instanceof EntityPlayer && !e.getSource().getTrueSource().world.isRemote &&
|
||||
e.getEntity() instanceof EntityCreature) {
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e.getSource().getTrueSource())
|
||||
.getHeldItemMainhand()), identifier)) {
|
||||
ItemStack tool = ((EntityPlayer) e.getSource().getTrueSource()).getHeldItemMainhand();
|
||||
String name = e.getEntity().getName();
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if (!data.name.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
data.name = name;
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(tool, tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float
|
||||
newDamage, boolean isCritical) {
|
||||
World w = player.getEntityWorld();
|
||||
if (!w.isRemote) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if (data.name.isEmpty()) {
|
||||
return damage;
|
||||
}
|
||||
if (!data.name.equals(target.getName())) {
|
||||
return damage / (random.nextInt(5) + 5);
|
||||
}
|
||||
float x = (1 + random.nextFloat() * 9);
|
||||
return damage * x;
|
||||
}
|
||||
return damage;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void onItemTooltip(ItemTooltipEvent e) {
|
||||
ItemStack tool = e.getItemStack();
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if (data.name.isEmpty()) e.getToolTip().add(TextFormatting.LIGHT_PURPLE + "Unbound");
|
||||
else {
|
||||
e.getToolTip().add(TextFormatting.DARK_PURPLE + "Bound to: " + TextFormatting.LIGHT_PURPLE + data.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
33
src/main/java/com/sosnitzka/taiga/traits/TraitCrushing.java
Normal file
33
src/main/java/com/sosnitzka/taiga/traits/TraitCrushing.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
|
||||
public class TraitCrushing extends AbstractTrait {
|
||||
|
||||
public TraitCrushing() {
|
||||
super(TraitCrushing.class.getSimpleName().toLowerCase().substring(5), TextFormatting.GRAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent e) {
|
||||
if (!e.getWorld().isRemote) {
|
||||
IBlockState state = e.getState();
|
||||
float f = random.nextFloat();
|
||||
if (state.equals(Blocks.STONE.getDefaultState())) {
|
||||
e.getDrops().clear();
|
||||
if (f < .3f) {
|
||||
e.getDrops().add(new ItemStack(Blocks.SAND));
|
||||
} else if (f < .6f) {
|
||||
e.getDrops().add(new ItemStack(Blocks.GRAVEL));
|
||||
} else if (f <= .9f) {
|
||||
e.getDrops().add(new ItemStack(Blocks.COBBLESTONE));
|
||||
} else e.getDrops().add(new ItemStack(Blocks.STONE));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
56
src/main/java/com/sosnitzka/taiga/traits/TraitCursed.java
Normal file
56
src/main/java/com/sosnitzka/taiga/traits/TraitCursed.java
Normal file
@@ -0,0 +1,56 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
|
||||
public class TraitCursed extends AbstractTrait {
|
||||
|
||||
public TraitCursed() {
|
||||
super(TraitCursed.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
int chance = 60 * 1000;
|
||||
if (random.nextInt((chance + data.curse) / (data.curse + 1)) == 1) {
|
||||
if (isSelected) data.curse += 10;
|
||||
else data.curse++;
|
||||
entity.attackEntityFrom(new DamageSource("Curse"), random.nextFloat() * ((EntityPlayer) entity).getHealth
|
||||
() / 2);
|
||||
}
|
||||
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(tool, tag);
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void onItemTooltip(ItemTooltipEvent e) {
|
||||
ItemStack tool = e.getItemStack();
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if (data.curse != 0) {
|
||||
e.getToolTip().add(TextFormatting.DARK_PURPLE + "Curse: " + TextFormatting.WHITE + data.curse);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,5 +1,7 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
@@ -10,70 +12,82 @@ import net.minecraft.init.Items;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextComponentString;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.living.LivingDropsEvent;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class TraitCurvature extends AbstractTrait {
|
||||
|
||||
public static int chance = 5;
|
||||
public static int distance = 10;
|
||||
|
||||
public TraitCurvature() {
|
||||
super("curvature", TextFormatting.BLACK);
|
||||
super("curvature", TextFormatting.DARK_PURPLE);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
if (random.nextFloat() <= 0.05 && world.provider.getDimension() != -1) {
|
||||
teleport(player, world);
|
||||
player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
|
||||
if (!event.getWorld().isRemote && random.nextFloat() < 0.05) {
|
||||
List<IBlockState> blockstates = Lists.newArrayList(Blocks.STONE.getDefaultState(), Blocks.NETHERRACK
|
||||
.getDefaultState(), Blocks.END_STONE.getDefaultState(), Blocks.AIR.getDefaultState(), Blocks.DIRT
|
||||
.getDefaultState());
|
||||
IBlockState mainstate = event.getState();
|
||||
if (blockstates.contains(mainstate)) return;
|
||||
for (int i = 0; i < chance; i++) {
|
||||
int x = event.getPos().getX() + Utils.nextInt(random, -distance, distance);
|
||||
int y = event.getPos().getY() + Utils.nextInt(random, -distance, distance);
|
||||
int z = event.getPos().getZ() + Utils.nextInt(random, -distance, distance);
|
||||
BlockPos cPos = new BlockPos(x, y, z);
|
||||
IBlockState state = event.getWorld().getBlockState(cPos);
|
||||
if (blockstates.contains(state)) {
|
||||
event.getDrops().clear();
|
||||
event.getWorld().setBlockState(cPos, mainstate);
|
||||
event.getHarvester().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
event.getHarvester().sendStatusMessage(new TextComponentString("Teleported to: " + x + " " + y +
|
||||
" " + z), false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
|
||||
World w = player.getEntityWorld();
|
||||
if (random.nextFloat() <= 0.1 && w.provider.getDimension() != -1) {
|
||||
if (random.nextBoolean()) {
|
||||
teleport(player, w);
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean
|
||||
wasCritical, boolean wasHit) {
|
||||
if (random.nextFloat() <= 0.15) {
|
||||
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
} else {
|
||||
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
teleport(target, w);
|
||||
}
|
||||
changePos(player, target);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onMobDrops(LivingDropsEvent event) {
|
||||
World w = event.getEntity().getEntityWorld();
|
||||
if (event.getSource().getEntity() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
|
||||
if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
ItemStack i = new ItemStack(Items.ENDER_PEARL, random.nextInt(3));
|
||||
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i));
|
||||
if (!w.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
|
||||
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player
|
||||
.getHeldItemMainhand()), identifier)) {
|
||||
ItemStack i = new ItemStack(Items.ENDER_PEARL, random.nextInt(2));
|
||||
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event
|
||||
.getEntity().posZ, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void teleport(EntityLivingBase e, World w) {
|
||||
int x = e.getPosition().getX() + random.nextInt(250) - 125;
|
||||
int y = e.getPosition().getY();
|
||||
int z = e.getPosition().getZ() + random.nextInt(250) - 125;
|
||||
while (w.getBlockState(new BlockPos(x, y, z)).getBlock() != Blocks.AIR) {
|
||||
y++;
|
||||
private void changePos(EntityLivingBase player, EntityLivingBase target) {
|
||||
BlockPos pp = new BlockPos(player.getPosition());
|
||||
BlockPos tp = new BlockPos(target.getPosition());
|
||||
player.setPosition(tp.getX(), tp.getY(), tp.getZ());
|
||||
target.setPosition(pp.getX(), pp.getY(), pp.getZ());
|
||||
}
|
||||
while (w.getBlockState(new BlockPos(x, y - 1, z)).getBlock() == Blocks.AIR) {
|
||||
y--;
|
||||
}
|
||||
|
||||
e.setPosition(x, y, z);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -5,6 +5,8 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
|
||||
import static com.sosnitzka.taiga.util.Utils.isNight;
|
||||
|
||||
|
||||
public class TraitDark extends AbstractTrait {
|
||||
|
||||
@@ -13,20 +15,12 @@ public class TraitDark extends AbstractTrait {
|
||||
}
|
||||
|
||||
@Override
|
||||
public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) {
|
||||
public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float
|
||||
newDamage, boolean isCritical) {
|
||||
int time = (int) target.getEntityWorld().getWorldTime();
|
||||
if (isNight(time)) {
|
||||
newDamage += damage / 2f;
|
||||
}
|
||||
newDamage = damage * (1 + random.nextFloat() / 2f);
|
||||
} else newDamage = damage / (1 + random.nextFloat() / 3f);
|
||||
return super.damage(tool, player, target, damage, newDamage, isCritical);
|
||||
|
||||
}
|
||||
|
||||
public boolean isNight(int time) {
|
||||
if (time > 12500) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
106
src/main/java/com/sosnitzka/taiga/traits/TraitDecay.java
Normal file
106
src/main/java/com/sosnitzka/taiga/traits/TraitDecay.java
Normal file
@@ -0,0 +1,106 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.FakePlayer;
|
||||
import slimeknights.tconstruct.library.materials.HeadMaterialStats;
|
||||
import slimeknights.tconstruct.library.tools.ToolNBT;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Gives the tool bonus stats on crafting.
|
||||
* The bonus stats are distributed over time and are more or less random.
|
||||
* The stats that will be rewarded are already designated on the first time the tool is crafted
|
||||
*/
|
||||
public class TraitDecay extends TraitProgressiveStats {
|
||||
|
||||
protected static int TICK_PER_STAT = 24;
|
||||
protected static int DURABILITY_STEP = 1;
|
||||
protected static float SPEED_STEP = 0.05f;
|
||||
protected static float ATTACK_STEP = 0.05f;
|
||||
|
||||
public TraitDecay() {
|
||||
super("decay", TextFormatting.GREEN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) {
|
||||
// check if we have stats already distributed, and if not add them
|
||||
if (!hasPool(rootCompound)) {
|
||||
// ok, we need new stats. Let the fun begin!
|
||||
StatNBT data = new StatNBT();
|
||||
|
||||
int statPoints = 800; // we distribute a whopping X points worth of stats!
|
||||
for (; statPoints > 0; statPoints--) {
|
||||
switch (random.nextInt(3)) {
|
||||
// durability
|
||||
case 0:
|
||||
data.durability += DURABILITY_STEP;
|
||||
break;
|
||||
// speed
|
||||
case 1:
|
||||
data.speed += SPEED_STEP;
|
||||
break;
|
||||
// attack
|
||||
case 2:
|
||||
data.attack += ATTACK_STEP;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
setPool(rootCompound, data);
|
||||
}
|
||||
|
||||
super.applyEffect(rootCompound, modifierTag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
|
||||
if (entity instanceof FakePlayer || entity.world.isRemote || entity.ticksExisted % TICK_PER_STAT != 0 || playerIsBreakingBlock(entity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
NBTTagCompound root = TagUtil.getTagSafe(tool);
|
||||
StatNBT distributed = getBonus(root);
|
||||
ToolNBT data = TagUtil.getToolStats(tool);
|
||||
|
||||
// attack
|
||||
if (entity.ticksExisted % (TICK_PER_STAT * 3) == 0) {
|
||||
float A = ATTACK_STEP * random.nextFloat();
|
||||
data.attack -= A;
|
||||
distributed.attack -= A;
|
||||
}
|
||||
// speed
|
||||
else if (entity.ticksExisted % (TICK_PER_STAT * 2) == 0) {
|
||||
float S = SPEED_STEP * random.nextFloat();
|
||||
data.speed -= S;
|
||||
distributed.speed -= S;
|
||||
}
|
||||
// durability
|
||||
else {
|
||||
int D = random.nextInt(DURABILITY_STEP) + 1;
|
||||
data.durability -= D;
|
||||
distributed.durability -= D;
|
||||
}
|
||||
|
||||
// update tool stats
|
||||
TagUtil.setToolTag(root, data.get());
|
||||
// update statistics on distributed stats
|
||||
setBonus(root, distributed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getExtraInfo(ItemStack tool, NBTTagCompound modifierTag) {
|
||||
StatNBT pool = getBonus(TagUtil.getTagSafe(tool));
|
||||
|
||||
return ImmutableList.of(HeadMaterialStats.formatDurability(pool.durability),
|
||||
HeadMaterialStats.formatMiningSpeed(pool.speed),
|
||||
HeadMaterialStats.formatAttack(pool.attack));
|
||||
}
|
||||
}
|
@@ -1,19 +1,19 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.entity.monster.EntityMob;
|
||||
import net.minecraft.entity.EntityCreature;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.living.LivingDropsEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingExperienceDropEvent;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
|
||||
public class TraitDiffuse extends AbstractTrait {
|
||||
|
||||
public TraitDiffuse() {
|
||||
@@ -21,47 +21,38 @@ public class TraitDiffuse extends AbstractTrait {
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onXpDrop(LivingExperienceDropEvent event) {
|
||||
EntityPlayer player = event.getAttackingPlayer();
|
||||
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
|
||||
event.setDroppedExperience(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onBlockBreak(BlockEvent.BreakEvent event) {
|
||||
EntityPlayer player = event.getPlayer();
|
||||
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
|
||||
event.setExpToDrop(this.getUpdateXP(event.getExpToDrop()));
|
||||
if (!player.getEntityWorld().isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()),
|
||||
this.identifier)) {
|
||||
event.setExpToDrop((int) this.getUpdateXP(event.getExpToDrop()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onMobDrops(LivingDropsEvent event) {
|
||||
World w = event.getEntity().getEntityWorld();
|
||||
if (event.getSource().getEntity() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
|
||||
if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
if (!w.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
|
||||
if (event.getEntity() instanceof EntityCreature && TinkerUtil.hasTrait(TagUtil.getTagSafe(player
|
||||
.getHeldItemMainhand()), identifier)) {
|
||||
event.getDrops().clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int getUpdateXP(int xp) {
|
||||
float exp = (float) random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextInt(10));
|
||||
if (random.nextBoolean())
|
||||
return Math.round(exp);
|
||||
private float getUpdateXP(int xp) {
|
||||
float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (1 + random.nextFloat() * xp);
|
||||
if (random.nextFloat() <= 0.25)
|
||||
return exp;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
|
||||
if (random.nextFloat() < 0.75) {
|
||||
if (random.nextFloat() < 0.35) {
|
||||
event.getDrops().clear();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -20,13 +20,17 @@ public class TraitDissolving extends AbstractTrait {
|
||||
// high chance to remove XP, low chance to double,triple or quatruple dropped Experience
|
||||
@SubscribeEvent
|
||||
public void onXpDrop(LivingExperienceDropEvent event) {
|
||||
if (!event.getEntity().getEntityWorld().isRemote) {
|
||||
EntityPlayer player = event.getAttackingPlayer();
|
||||
float r = random.nextFloat();
|
||||
if (r <= 0.75 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
|
||||
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this
|
||||
.identifier)) {
|
||||
if (r <= 0.80) {
|
||||
event.setDroppedExperience(0);
|
||||
}
|
||||
if (r > 0.95 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
|
||||
} else {
|
||||
event.setDroppedExperience(event.getDroppedExperience() * (random.nextInt(3) + 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@ package com.sosnitzka.taiga.traits;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
@@ -19,43 +20,56 @@ public class TraitFracture extends AbstractTrait {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
|
||||
player, boolean wasEffective) {
|
||||
float f = random.nextFloat();
|
||||
float b = 0.99F * calcBonus(tool);
|
||||
if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) {
|
||||
RayTraceResult mop = ((ToolCore) tool.getItem()).rayTrace(world, (EntityPlayer) player, false);
|
||||
if (mop == null) return;
|
||||
if (mop != null) {
|
||||
for (int i = random.nextInt(9) + 1; i >= 0; i--) {
|
||||
switch (mop.sideHit) {
|
||||
case UP:
|
||||
BlockPos next1 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ());
|
||||
if (tool.canHarvestBlock(world.getBlockState(next1))) world.destroyBlock(next1, true);
|
||||
if (tool.canHarvestBlock(world.getBlockState(next1)) && !world.getBlockState(next1)
|
||||
.equals(Blocks.BEDROCK.getDefaultState()))
|
||||
world.destroyBlock(next1, true);
|
||||
break;
|
||||
case DOWN:
|
||||
BlockPos next2 = new BlockPos(pos.getX(), pos.getY() + i, pos.getZ());
|
||||
if (tool.canHarvestBlock(world.getBlockState(next2))) world.destroyBlock(next2, true);
|
||||
if (tool.canHarvestBlock(world.getBlockState(next2)) && !world.getBlockState(next2)
|
||||
.equals(Blocks.BEDROCK.getDefaultState()))
|
||||
world.destroyBlock(next2, true);
|
||||
break;
|
||||
case WEST:
|
||||
BlockPos next3 = new BlockPos(pos.getX() + i, pos.getY(), pos.getZ());
|
||||
if (tool.canHarvestBlock(world.getBlockState(next3))) world.destroyBlock(next3, true);
|
||||
if (tool.canHarvestBlock(world.getBlockState(next3)) && !world.getBlockState(next3)
|
||||
.equals(Blocks.BEDROCK.getDefaultState()))
|
||||
world.destroyBlock(next3, true);
|
||||
break;
|
||||
case EAST:
|
||||
BlockPos next4 = new BlockPos(pos.getX() - i, pos.getY(), pos.getZ());
|
||||
if (tool.canHarvestBlock(world.getBlockState(next4))) world.destroyBlock(next4, true);
|
||||
if (tool.canHarvestBlock(world.getBlockState(next4)) && !world.getBlockState(next4)
|
||||
.equals(Blocks.BEDROCK.getDefaultState()))
|
||||
world.destroyBlock(next4, true);
|
||||
break;
|
||||
case SOUTH:
|
||||
BlockPos next5 = new BlockPos(pos.getX(), pos.getY(), pos.getZ() - i);
|
||||
if (tool.canHarvestBlock(world.getBlockState(next5))) world.destroyBlock(next5, true);
|
||||
if (tool.canHarvestBlock(world.getBlockState(next5)) && !world.getBlockState(next5)
|
||||
.equals(Blocks.BEDROCK.getDefaultState()))
|
||||
world.destroyBlock(next5, true);
|
||||
break;
|
||||
case NORTH:
|
||||
BlockPos next6 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ() + i);
|
||||
if (tool.canHarvestBlock(world.getBlockState(next6))) world.destroyBlock(next6, true);
|
||||
if (tool.canHarvestBlock(world.getBlockState(next6)) && !world.getBlockState(next6)
|
||||
.equals(Blocks.BEDROCK.getDefaultState()))
|
||||
world.destroyBlock(next6, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(5), player);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private float calcBonus(ItemStack tool) {
|
||||
|
@@ -18,12 +18,14 @@ public class TraitFragile extends AbstractTrait {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
|
||||
player, boolean wasEffective) {
|
||||
if (random.nextBoolean()) {
|
||||
float f = random.nextFloat();
|
||||
float b = 0.99F * calcBonus(tool);
|
||||
if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) {
|
||||
if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(3), player);
|
||||
else ToolHelper.healTool(tool, random.nextInt(3), player);
|
||||
}
|
||||
} else {
|
||||
float f = random.nextFloat();
|
||||
@@ -33,29 +35,26 @@ public class TraitFragile extends AbstractTrait {
|
||||
sx = x = pos.getX();
|
||||
sy = y = pos.getY();
|
||||
sz = z = pos.getZ();
|
||||
for (int i = random.nextInt(50) + 50; i > 0; i--) {
|
||||
for (int i = random.nextInt(10) + 9; i > 0; i--) {
|
||||
int r = random.nextInt(3);
|
||||
int d = random.nextBoolean() ? 1 : -1;
|
||||
if (r == 0) x += d;
|
||||
if (r == 1) y += d;
|
||||
if (r == 2) z += d;
|
||||
BlockPos nextBlock = new BlockPos(x, y, z);
|
||||
int tn = (int) world.getWorldTime() + 5;
|
||||
if (world.getBlockState(nextBlock) == world.getBlockState(pos)) {
|
||||
Block block = Blocks.STONE;
|
||||
int ib = random.nextInt(3);
|
||||
Block block = null;
|
||||
int ib = random.nextInt(2);
|
||||
switch (ib) {
|
||||
case 0:
|
||||
block = Blocks.COBBLESTONE;
|
||||
break;
|
||||
case 1:
|
||||
block = Blocks.MOSSY_COBBLESTONE;
|
||||
break;
|
||||
case 2:
|
||||
block = Blocks.GRAVEL;
|
||||
break;
|
||||
if (random.nextFloat() <= 0.9) block = Blocks.GRAVEL;
|
||||
else block = Blocks.MOSSY_COBBLESTONE;
|
||||
}
|
||||
f = random.nextFloat();
|
||||
assert block != null;
|
||||
if (f < 0.85) {
|
||||
world.setBlockState(nextBlock, block.getDefaultState());
|
||||
} else if (f > 95) {
|
||||
@@ -78,7 +77,6 @@ public class TraitFragile extends AbstractTrait {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private float calcBonus(ItemStack tool) {
|
||||
int durability = ToolHelper.getCurrentDurability(tool);
|
||||
int maxDurability = ToolHelper.getMaxDurability(tool);
|
||||
|
@@ -18,8 +18,6 @@ import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
import static com.sosnitzka.taiga.Items.*;
|
||||
|
||||
public class TraitGarishly extends AbstractTrait {
|
||||
|
||||
public TraitGarishly() {
|
||||
@@ -30,11 +28,12 @@ public class TraitGarishly extends AbstractTrait {
|
||||
@SubscribeEvent
|
||||
public void onMobDrops(LivingDropsEvent event) {
|
||||
World w = event.getEntity().getEntityWorld();
|
||||
if (event.getSource().getEntity() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
|
||||
if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
if (!w.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
|
||||
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player
|
||||
.getHeldItemMainhand()), identifier)) {
|
||||
|
||||
int r = random.nextInt(5);
|
||||
int r = random.nextInt(2);
|
||||
ItemStack i = null;
|
||||
switch (r) {
|
||||
case 0:
|
||||
@@ -44,20 +43,12 @@ public class TraitGarishly extends AbstractTrait {
|
||||
i = new ItemStack(Items.BLAZE_ROD, random.nextInt(3));
|
||||
break;
|
||||
case 2:
|
||||
i = new ItemStack(glimmerstone_dust, random.nextInt(3));
|
||||
break;
|
||||
case 3:
|
||||
i = new ItemStack(luminar_dust, random.nextInt(3));
|
||||
break;
|
||||
case 4:
|
||||
i = new ItemStack(Items.COAL, random.nextInt(3));
|
||||
break;
|
||||
case 5:
|
||||
i = new ItemStack(lignite, random.nextInt(3));
|
||||
break;
|
||||
}
|
||||
|
||||
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i));
|
||||
assert i != null;
|
||||
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event
|
||||
.getEntity().posZ, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -65,15 +56,14 @@ public class TraitGarishly extends AbstractTrait {
|
||||
@Override
|
||||
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
|
||||
float r = random.nextFloat();
|
||||
if (r > 0.5f) event.getDrops().clear();
|
||||
else if (r < 0.1 && event.getWorld().getBlockState(event.getPos()).getMaterial() == Material.ROCK) {
|
||||
ItemStack stack = new ItemStack(Item.getItemFromBlock(event.getWorld().getBlockState(event.getPos()).getBlock()), random.nextInt(5));
|
||||
if (random.nextBoolean()) event.getDrops().clear();
|
||||
else if (r < 0.25 && event.getWorld().getBlockState(event.getPos()).getMaterial() == Material.ROCK) {
|
||||
@SuppressWarnings("ConstantConditions") ItemStack stack = new ItemStack(Item.getItemFromBlock(event
|
||||
.getWorld().getBlockState(event.getPos()).getBlock()), random.nextInt(3));
|
||||
event.getDrops().add(0, stack);
|
||||
ToolHelper.damageTool(tool, random.nextInt(6) + 1, event.getHarvester());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@@ -16,7 +16,6 @@ import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
public class TraitGlimmer extends AbstractTrait {
|
||||
|
||||
|
||||
public TraitGlimmer() {
|
||||
super("glimmer", TextFormatting.DARK_GRAY);
|
||||
}
|
||||
@@ -33,15 +32,17 @@ public class TraitGlimmer extends AbstractTrait {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
if (random.nextFloat() <= 0.08) {
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
|
||||
player, boolean wasEffective) {
|
||||
if (random.nextFloat() <= 0.05) {
|
||||
player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, random.nextInt(600) + 300));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
|
||||
if (random.nextFloat() <= 0.08) {
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean
|
||||
wasCritical, boolean wasHit) {
|
||||
if (random.nextFloat() <= 0.05) {
|
||||
player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, random.nextInt(600) + 300));
|
||||
}
|
||||
}
|
||||
|
@@ -1,44 +0,0 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.sosnitzka.taiga.util.EntityAIPermanentPanic;
|
||||
import net.minecraft.entity.EntityCreature;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.monster.*;
|
||||
import net.minecraft.entity.passive.*;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
|
||||
public class TraitHaunted extends AbstractTrait {
|
||||
|
||||
public TraitHaunted() {
|
||||
super("haunted", TextFormatting.DARK_GRAY);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
|
||||
// Just several tested Vanilla-Mobs, e.g. no ghasts, bats or skeletons
|
||||
@Override
|
||||
public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean isCritical) {
|
||||
int time = (int) player.getEntityWorld().getWorldTime();
|
||||
if (random.nextFloat() <= 0.1 || (random.nextFloat() <= 0.3 && isNight(time)))
|
||||
if (target instanceof EntityCow || target instanceof EntityZombie || target instanceof EntityWolf || target instanceof EntityPig || target instanceof EntitySpider ||
|
||||
target instanceof EntityVillager || target instanceof EntitySheep || target instanceof EntityEnderman || target instanceof EntityEndermite ||
|
||||
target instanceof EntityBlaze || target instanceof EntityWitch || target instanceof EntityHorse) {
|
||||
((EntityLiving) target).tasks.taskEntries.clear();
|
||||
((EntityLiving) target).targetTasks.taskEntries.clear();
|
||||
((EntityLiving) target).tasks.addTask(0, new EntityAIPermanentPanic((EntityCreature) target, target.getAIMoveSpeed() + 3.5D));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isNight(int time) {
|
||||
if (time > 12500) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,9 +16,20 @@ public class TraitHeroic extends AbstractTrait {
|
||||
public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) {
|
||||
int durability = ToolHelper.getCurrentDurability(tool);
|
||||
int durabilitymax = ToolHelper.getMaxDurability(tool);
|
||||
float calc = (float) (newDamage + (newDamage / 2) / (durability * durabilitymax / (durabilitymax - durability - 1)));
|
||||
|
||||
int safeDenominator = durabilitymax - durability - 1;
|
||||
if (safeDenominator <= 0) {
|
||||
safeDenominator = 1;
|
||||
}
|
||||
|
||||
float calc;
|
||||
if ((durability * durabilitymax / (durabilitymax - durability - 1 / safeDenominator)) != 0) {
|
||||
calc = newDamage + (newDamage / 2) / (durability * durabilitymax / safeDenominator);
|
||||
} else {
|
||||
calc = newDamage + (newDamage / 2) / ((durability * durabilitymax / safeDenominator) + 1);
|
||||
}
|
||||
if ((float) durability < (float) (0.10 * durabilitymax) || player.getHealth() < player.getMaxHealth() / 8 || (target.getHealth() == target.getMaxHealth() && random.nextFloat() > 0.8)) {
|
||||
return super.damage(tool, player, target, damage, calc, isCritical);
|
||||
} else return super.damage(tool, player, target, damage, newDamage, isCritical);
|
||||
} else return super.damage(tool, player, target, damage, newDamage * 0.9f, isCritical);
|
||||
}
|
||||
}
|
||||
|
@@ -15,6 +15,8 @@ import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
import static com.sosnitzka.taiga.util.Utils.isNight;
|
||||
|
||||
public class TraitHollow extends AbstractTrait {
|
||||
|
||||
public TraitHollow() {
|
||||
@@ -22,14 +24,14 @@ public class TraitHollow extends AbstractTrait {
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean isCritical) {
|
||||
public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean
|
||||
isCritical) {
|
||||
int time = (int) player.getEntityWorld().getWorldTime();
|
||||
if (random.nextFloat() <= 0.2 || (random.nextFloat() <= 0.2 && isNight(time))) {
|
||||
if (random.nextFloat() <= 0.01 || (random.nextFloat() <= 0.03 && isNight(time))) {
|
||||
((EntityLiving) target).setNoAI(true);
|
||||
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
if (target.getMaxHealth() < 200) {
|
||||
if (target.getMaxHealth() < 250) {
|
||||
target.setHealth(target.getMaxHealth() * (1.8f - random.nextFloat() * 0.4f));
|
||||
}
|
||||
}
|
||||
@@ -38,19 +40,12 @@ public class TraitHollow extends AbstractTrait {
|
||||
@SubscribeEvent
|
||||
public void onMobDrops(LivingDropsEvent event) {
|
||||
World w = event.getEntity().getEntityWorld();
|
||||
if (event.getSource().getEntity() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
|
||||
if (!w.isRemote && random.nextFloat() <= 0.9 && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
if (!w.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
|
||||
if (random.nextFloat() <= 0.9 && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil
|
||||
.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
event.getDrops().clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isNight(int time) {
|
||||
if (time > 12500) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,31 +2,34 @@ package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
|
||||
/**
|
||||
* Created by Robert on 03.06.2016.
|
||||
*/
|
||||
public class TraitMelting extends AbstractTrait {
|
||||
|
||||
public TraitMelting() {
|
||||
super("melting", TextFormatting.YELLOW);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
|
||||
float r = random.nextFloat();
|
||||
Block b = event.getWorld().getBlockState(event.getPos()).getBlock();
|
||||
if (r <= 0.01 && (b == Blocks.STONE || b == Blocks.COBBLESTONE || b == Blocks.NETHERRACK)) {
|
||||
event.getWorld().setBlockState(event.getPos(), Blocks.LAVA.getDefaultState());
|
||||
@SubscribeEvent
|
||||
public void blockbreak(BlockEvent.BreakEvent e) {
|
||||
Block b = e.getWorld().getBlockState(e.getPos()).getBlock();
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getPlayer().getHeldItemMainhand()), identifier)) {
|
||||
if (!e.getWorld().isRemote && random.nextFloat() <= 0.025 && (b == Blocks.STONE || b == Blocks
|
||||
.COBBLESTONE || b == Blocks.NETHERRACK || b == Blocks.OBSIDIAN)) {
|
||||
e.setCanceled(true);
|
||||
e.getWorld().setBlockState(e.getPos(), Blocks.LAVA.getDefaultState());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
42
src/main/java/com/sosnitzka/taiga/traits/TraitMutate.java
Normal file
42
src/main/java/com/sosnitzka/taiga/traits/TraitMutate.java
Normal file
@@ -0,0 +1,42 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.google.common.collect.Lists.newArrayList;
|
||||
|
||||
|
||||
public class TraitMutate extends AbstractTrait {
|
||||
|
||||
public TraitMutate() {
|
||||
super(TraitMutate.class.getSimpleName().toLowerCase().substring(5), TextFormatting.YELLOW);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeBlockBreak(ItemStack tool, BlockEvent.BreakEvent event) {
|
||||
if (!event.getWorld().isRemote && random.nextFloat() > 0.95) {
|
||||
IBlockState state = event.getState();
|
||||
List<Block> blist = newArrayList(Blocks.STONE, Blocks.COBBLESTONE, Blocks.DIRT, Blocks.SAND, Blocks
|
||||
.GRASS, Blocks.CLAY, Blocks.NETHERRACK, Blocks.ICE, Blocks.SNOW, Blocks.BONE_BLOCK, Blocks.LAVA,
|
||||
Blocks.WATER, Blocks.WHEAT);
|
||||
if (blist.contains(state.getBlock())) {
|
||||
Block newBlock = blist.get(random.nextInt(blist.size()));
|
||||
IBlockState newState = newBlock.getDefaultState();
|
||||
event.setCanceled(true);
|
||||
event.getWorld().setBlockState(event.getPos(), newState);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -1,24 +1,17 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
|
||||
public class TraitNatureBound extends AbstractTrait {
|
||||
public static DamageSource splinter = new DamageSource("splinter").setDamageBypassesArmor();
|
||||
private static int chance = 10;
|
||||
|
||||
public TraitNatureBound() {
|
||||
super("naturebound", TextFormatting.GREEN);
|
||||
@@ -27,30 +20,19 @@ public class TraitNatureBound extends AbstractTrait {
|
||||
|
||||
@Override
|
||||
public int onToolHeal(ItemStack tool, int amount, int newAmount, EntityLivingBase entity) {
|
||||
// 5% less durability repaired!
|
||||
return newAmount - amount * 5 / 100;
|
||||
// 10% less durability repaired!
|
||||
return newAmount - amount * 10 / 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
|
||||
// * 20 because 20 ticks in a second
|
||||
if (!world.isRemote && entity instanceof EntityLivingBase && random.nextInt(20 * chance) == 0) {
|
||||
ToolHelper.healTool(tool, 1, (EntityLivingBase) entity);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onBlockBreak(BlockEvent.BreakEvent e) {
|
||||
Block b = e.getWorld().getBlockState(e.getPos()).getBlock();
|
||||
if (random.nextFloat() <= .07 && (b == Blocks.DIRT || b == Blocks.GRASS || b == Blocks.LOG || b == Blocks.LOG2 || b == Blocks.STONE)) {
|
||||
e.setCanceled(true);
|
||||
e.getPlayer().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
int chance = 20 * 20;
|
||||
Material m = world.getBlockState(entity.getPosition().down()).getMaterial();
|
||||
if (!world.isRemote && entity instanceof EntityLivingBase && random.nextInt(chance) == 0) {
|
||||
if (m.equals(Material.GRASS) || m.equals(Material.LEAVES)) {
|
||||
ToolHelper.healTool(tool, random.nextInt(2) + 1, (EntityLivingBase) entity);
|
||||
} else ToolHelper.damageTool(tool, 1, (EntityLivingBase) entity);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@@ -1,29 +0,0 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
public class TraitOrganizing extends AbstractTrait {
|
||||
|
||||
private static final float chance = 0.1f;
|
||||
|
||||
public TraitOrganizing() {
|
||||
super("organizing", TextFormatting.GREEN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
if (!world.isRemote && (state.getMaterial() == Material.ROCK) && random.nextFloat() < chance) {
|
||||
world.setBlockState(pos, Blocks.LOG.getDefaultState());
|
||||
ToolHelper.healTool(tool, random.nextInt(5), player);
|
||||
}
|
||||
}
|
||||
}
|
71
src/main/java/com/sosnitzka/taiga/traits/TraitPorted.java
Normal file
71
src/main/java/com/sosnitzka/taiga/traits/TraitPorted.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.sosnitzka.taiga.Keybindings;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
|
||||
public class TraitPorted extends AbstractTrait {
|
||||
|
||||
public static int distance = 10;
|
||||
|
||||
public TraitPorted() {
|
||||
super("ported", TextFormatting.DARK_PURPLE);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onItemRightClick(PlayerInteractEvent.RightClickItem e) {
|
||||
ItemStack tool = e.getEntityPlayer().getHeldItemMainhand();
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier) && Keybindings.altKey.isKeyDown())
|
||||
teleport(e.getEntityPlayer(), e.getWorld());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
|
||||
player, boolean wasEffective) {
|
||||
if (random.nextFloat() <= 0.005) {
|
||||
player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
teleport(player, world);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean
|
||||
wasCritical, boolean wasHit) {
|
||||
if (random.nextFloat() <= 0.005) {
|
||||
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
teleport(player, player.getEntityWorld());
|
||||
}
|
||||
}
|
||||
|
||||
private void teleport(EntityLivingBase e, World w) {
|
||||
BlockPos tPos = new BlockPos(e.getPosition().up(distance));
|
||||
if (e.getPosition().getY() >= 128) {
|
||||
return;
|
||||
}
|
||||
|
||||
while (!w.getBlockState(tPos).equals(Blocks.AIR.getDefaultState()) && tPos.getY() <= 128) {
|
||||
tPos = tPos.up();
|
||||
}
|
||||
if (!w.getBlockState(tPos).equals(Blocks.AIR.getDefaultState())) {
|
||||
return;
|
||||
}
|
||||
e.setPosition(tPos.getX(), tPos.getY(), tPos.getZ());
|
||||
ToolHelper.damageTool(e.getHeldItemMainhand(), ToolHelper.getCurrentDurability(e.getHeldItemMainhand()) / 2 +
|
||||
1, e);
|
||||
}
|
||||
}
|
@@ -0,0 +1,108 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import slimeknights.tconstruct.library.modifiers.ModifierNBT;
|
||||
import slimeknights.tconstruct.library.tools.ToolNBT;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
|
||||
/**
|
||||
* Base class for tools that progressively gain/award stats.
|
||||
* The modifier persists 2 different stat-data on the tool:
|
||||
* - A 'pool' of stats to award
|
||||
* - A 'bonus' of already awarded stats
|
||||
* <p>
|
||||
* The modifier reapplies the 'bonus' stats on application.
|
||||
* The pool is not touched inheritly but only provided for the logic of the deriving trait.
|
||||
*/
|
||||
public abstract class TraitProgressiveStats extends AbstractTrait {
|
||||
|
||||
protected final String pool_key; // Key to the tag that contains the free unassigned
|
||||
protected final String applied_key; // Key to the tag that contains the already applied bonus stats
|
||||
|
||||
public TraitProgressiveStats(String identifier, TextFormatting color) {
|
||||
super(identifier, color);
|
||||
|
||||
pool_key = identifier + "StatPool";
|
||||
applied_key = identifier + "StatBonus";
|
||||
}
|
||||
|
||||
/* Modifier management */
|
||||
|
||||
protected static StatNBT getStats(NBTTagCompound root, String key) {
|
||||
return ModifierNBT.readTag(TagUtil.getTagSafe(TagUtil.getExtraTag(root), key), StatNBT.class);
|
||||
}
|
||||
|
||||
protected static void setStats(NBTTagCompound root, StatNBT data, String key) {
|
||||
NBTTagCompound extra = TagUtil.getExtraTag(root);
|
||||
NBTTagCompound tag = new NBTTagCompound();
|
||||
data.write(tag);
|
||||
extra.setTag(key, tag);
|
||||
TagUtil.setExtraTag(root, extra);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) {
|
||||
super.applyEffect(rootCompound, modifierTag);
|
||||
// called on tool loading only
|
||||
// we just apply the saved bonus stats
|
||||
ToolNBT data = TagUtil.getToolStats(rootCompound);
|
||||
StatNBT bonus = getBonus(rootCompound);
|
||||
|
||||
data.durability += bonus.durability;
|
||||
data.speed += bonus.speed;
|
||||
data.attack += bonus.attack;
|
||||
|
||||
TagUtil.setToolTag(rootCompound, data.get());
|
||||
}
|
||||
|
||||
protected boolean hasPool(NBTTagCompound root) {
|
||||
return TagUtil.getExtraTag(root).hasKey(pool_key);
|
||||
}
|
||||
|
||||
protected StatNBT getPool(NBTTagCompound root) {
|
||||
return getStats(root, pool_key);
|
||||
}
|
||||
|
||||
protected void setPool(NBTTagCompound root, StatNBT data) {
|
||||
setStats(root, data, pool_key);
|
||||
}
|
||||
|
||||
protected StatNBT getBonus(NBTTagCompound root) {
|
||||
return getStats(root, applied_key);
|
||||
}
|
||||
|
||||
protected void setBonus(NBTTagCompound root, StatNBT data) {
|
||||
setStats(root, data, applied_key);
|
||||
}
|
||||
|
||||
protected boolean playerIsBreakingBlock(Entity entity) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static class StatNBT extends ModifierNBT {
|
||||
|
||||
// statpool
|
||||
public int durability;
|
||||
public float attack;
|
||||
public float speed;
|
||||
|
||||
@Override
|
||||
public void read(NBTTagCompound tag) {
|
||||
super.read(tag);
|
||||
durability = tag.getInteger("durability");
|
||||
attack = tag.getFloat("attack");
|
||||
speed = tag.getFloat("speed");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(NBTTagCompound tag) {
|
||||
super.write(tag);
|
||||
tag.setInteger("durability", durability);
|
||||
tag.setFloat("attack", attack);
|
||||
tag.setFloat("speed", speed);
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,24 +16,21 @@ public class TraitPulverizing extends AbstractTrait {
|
||||
@Override
|
||||
public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) {
|
||||
if (ToolHelper.isToolEffective2(tool, event.getState())) {
|
||||
event.setNewSpeed((float) (event.getNewSpeed() + calcBonus(tool)));
|
||||
event.setNewSpeed((float) (event.getNewSpeed() * calcBonus(tool)));
|
||||
}
|
||||
}
|
||||
|
||||
private double calcBonus(ItemStack tool) {
|
||||
int durability = ToolHelper.getCurrentDurability(tool);
|
||||
int maxDurability = ToolHelper.getMaxDurability(tool);
|
||||
float speed = ToolHelper.getMiningSpeedStat(tool);
|
||||
tool.setItemDamage(tool.getItemDamage() + 1);
|
||||
return speed * (maxDurability - maxDurability / 10) / (durability);
|
||||
return (1 + .9f * (maxDurability - durability) / maxDurability);
|
||||
// Min 1.0; Max 1.9
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
|
||||
if (random.nextFloat() < 0.9) {
|
||||
if (random.nextFloat() < 0.6) {
|
||||
event.getDrops().clear();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,175 +0,0 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityTNTPrimed;
|
||||
import net.minecraft.entity.monster.*;
|
||||
import net.minecraft.entity.passive.*;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.event.entity.player.PlayerEvent;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
import slimeknights.tconstruct.world.entity.EntityBlueSlime;
|
||||
|
||||
import static com.sosnitzka.taiga.Blocks.*;
|
||||
import static slimeknights.tconstruct.shared.TinkerCommons.oreArdite;
|
||||
import static slimeknights.tconstruct.shared.TinkerCommons.oreCobalt;
|
||||
|
||||
public class TraitRandomize extends AbstractTrait {
|
||||
|
||||
public TraitRandomize() {
|
||||
super("randomize", TextFormatting.DARK_RED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) {
|
||||
if (ToolHelper.isToolEffective2(tool, event.getState())) {
|
||||
event.setNewSpeed((float) (event.getNewSpeed() + random.nextFloat() * 2));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean isCritical) {
|
||||
if (random.nextFloat() <= .15 && target instanceof EntityLiving) {
|
||||
World w = player.getEntityWorld();
|
||||
Entity e = new EntityCow(w);
|
||||
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
if (!w.isRemote) {
|
||||
int i = random.nextInt(22);
|
||||
switch (i) {
|
||||
case 0:
|
||||
e = new EntityCow(w);
|
||||
break;
|
||||
case 1:
|
||||
e = new EntityPig(w);
|
||||
break;
|
||||
case 2:
|
||||
e = new EntityHorse(w);
|
||||
break;
|
||||
case 3:
|
||||
e = new EntityChicken(w);
|
||||
break;
|
||||
case 4:
|
||||
e = new EntityVillager(w);
|
||||
break;
|
||||
case 5:
|
||||
e = new EntityEnderman(w);
|
||||
break;
|
||||
case 6:
|
||||
e = new EntityPolarBear(w);
|
||||
break;
|
||||
case 7:
|
||||
e = new EntityIronGolem(w);
|
||||
break;
|
||||
case 8:
|
||||
e = new EntitySilverfish(w);
|
||||
break;
|
||||
case 9:
|
||||
e = new EntityCaveSpider(w);
|
||||
break;
|
||||
case 10:
|
||||
e = new EntityWolf(w);
|
||||
break;
|
||||
case 11:
|
||||
e = new EntityWitch(w);
|
||||
break;
|
||||
case 12:
|
||||
e = new EntityTNTPrimed(w);
|
||||
break;
|
||||
case 13:
|
||||
e = new EntityGhast(w);
|
||||
break;
|
||||
case 14:
|
||||
e = new EntitySpider(w);
|
||||
break;
|
||||
case 15:
|
||||
e = new EntitySkeleton(w);
|
||||
break;
|
||||
case 16:
|
||||
e = new EntityMagmaCube(w);
|
||||
break;
|
||||
case 17:
|
||||
e = new EntitySlime(w);
|
||||
break;
|
||||
case 18:
|
||||
e = new EntityBlueSlime(w);
|
||||
break;
|
||||
case 19:
|
||||
e = new EntityBat(w);
|
||||
break;
|
||||
case 20:
|
||||
e = new EntityPigZombie(w);
|
||||
break;
|
||||
case 21:
|
||||
e = new EntityBlaze(w);
|
||||
break;
|
||||
}
|
||||
e.setPosition(target.getPosition().getX(), target.getPosition().getY() + 0.1f, target.getPosition().getZ());
|
||||
e.setCustomNameTag("Missingno");
|
||||
((EntityLiving) e).setHealth(((EntityLiving) e).getHealth() * (random.nextInt(5) + 1));
|
||||
w.spawnEntityInWorld(e);
|
||||
target.setDead();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
|
||||
float r = random.nextFloat();
|
||||
if (r > 0.95f) event.getDrops().clear();
|
||||
if (event.getDrops() != null) {
|
||||
if (r < 0.4f && (event.getDrops().get(0).getItem() == Item.getItemFromBlock(Blocks.IRON_ORE) || event.getDrops().get(0).getItem() == Item.getItemFromBlock(Blocks.GOLD_ORE))) {
|
||||
ItemStack change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE));
|
||||
int i = random.nextInt(12);
|
||||
switch (i) {
|
||||
case 0:
|
||||
change = new ItemStack(Item.getItemFromBlock(Blocks.GOLD_ORE));
|
||||
break;
|
||||
case 1:
|
||||
change = new ItemStack(Item.getItemFromBlock(Blocks.REDSTONE_ORE));
|
||||
break;
|
||||
case 2:
|
||||
change = new ItemStack(Item.getItemFromBlock(Blocks.LAPIS_ORE));
|
||||
break;
|
||||
case 3:
|
||||
change = new ItemStack(Item.getItemFromBlock(Blocks.DIAMOND_ORE));
|
||||
break;
|
||||
case 4:
|
||||
change = new ItemStack(Item.getItemFromBlock(Blocks.QUARTZ_ORE));
|
||||
break;
|
||||
case 5:
|
||||
change = new ItemStack(oreCobalt.getItem());
|
||||
break;
|
||||
case 6:
|
||||
change = new ItemStack(oreArdite.getItem());
|
||||
break;
|
||||
case 7:
|
||||
change = new ItemStack(titaniteOre);
|
||||
break;
|
||||
case 8:
|
||||
change = new ItemStack(bismuthOre);
|
||||
break;
|
||||
case 9:
|
||||
change = new ItemStack(tiberiumOre);
|
||||
break;
|
||||
case 10:
|
||||
change = new ItemStack(eterniteOre);
|
||||
break;
|
||||
case 11:
|
||||
change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE));
|
||||
break;
|
||||
}
|
||||
event.getDrops().set(0, change);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -7,20 +7,21 @@ import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
|
||||
public class TraitResonance extends AbstractTrait {
|
||||
|
||||
public static float chance = 0.33f;
|
||||
|
||||
public TraitResonance() {
|
||||
super("resonance", TextFormatting.AQUA);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
|
||||
if (random.nextFloat() <= .33) {
|
||||
target.knockBack(target, random.nextFloat() * random.nextFloat() * 12, player.posX - target.posX, player.posZ - target.posZ);
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean
|
||||
wasCritical, boolean wasHit) {
|
||||
if (random.nextFloat() <= chance) {
|
||||
target.knockBack(target, random.nextFloat() * random.nextFloat() * 10, player.posX - target.posX, player
|
||||
.posZ - target.posZ);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@@ -1,12 +1,10 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityCreature;
|
||||
import net.minecraft.entity.EntityList;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
@@ -16,14 +14,12 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
|
||||
/**
|
||||
* Created by Robert on 03.06.2016.
|
||||
*/
|
||||
public class TraitReviving extends AbstractTrait {
|
||||
|
||||
public final float chance = 0.15f;
|
||||
|
||||
public TraitReviving() {
|
||||
super("reviving", TextFormatting.DARK_PURPLE);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
@@ -33,40 +29,19 @@ public class TraitReviving extends AbstractTrait {
|
||||
public void onEntityKill(LivingDeathEvent e) {
|
||||
BlockPos pos = e.getEntity().getPosition();
|
||||
World w = e.getEntity().getEntityWorld();
|
||||
if (!w.isRemote && e.getSource().getEntity() != null) {
|
||||
if (e.getSource().getEntity() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) {
|
||||
if (isNight((int) w.getWorldTime()) && random.nextFloat() > 0.85 && TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand()), identifier)) {
|
||||
String name = EntityList.getEntityString(e.getEntity());
|
||||
Entity ent = EntityList.createEntityByName(name, w);
|
||||
if (!w.isRemote && e.getSource().getTrueSource() != null) {
|
||||
if (e.getSource().getTrueSource() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) {
|
||||
if (random.nextFloat() <= chance && TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e
|
||||
.getSource().getTrueSource()).getHeldItemMainhand()), identifier)) {
|
||||
int id = e.getEntity().getEntityId();
|
||||
Entity ent = EntityList.createEntityByID(id, w);
|
||||
if (ent != null) {
|
||||
ent.setPosition(pos.getX(), pos.getY(), pos.getZ());
|
||||
w.spawnEntityInWorld(ent);
|
||||
w.spawnEntity(ent);
|
||||
e.getSource().getTrueSource().playSound(SoundEvents.AMBIENT_CAVE, 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
int time = (int) world.getWorldTime();
|
||||
if (random.nextFloat() <= 0.1 && isNight(time)) {
|
||||
ToolHelper.healTool(tool, random.nextInt(15) + 1, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
|
||||
int time = (int) player.getEntityWorld().getWorldTime();
|
||||
if (random.nextFloat() <= 0.1 && isNight(time)) {
|
||||
ToolHelper.healTool(tool, random.nextInt(15) + 1, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public boolean isNight(int time) {
|
||||
if (time > 12500) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,7 +3,6 @@ package com.sosnitzka.taiga.traits;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
@@ -21,19 +20,19 @@ public class TraitSlaughtering extends AbstractTrait {
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
|
||||
@SubscribeEvent
|
||||
public void onMobDrops(LivingDropsEvent event) {
|
||||
World w = event.getEntity().getEntityWorld();
|
||||
if (event.getSource().getEntity() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
|
||||
if (!w.isRemote && event.getEntity() instanceof EntityLiving && !(event.getEntity() instanceof EntityPlayer) && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
Item i = event.getDrops().get(random.nextInt(event.getDrops().size())).getEntityItem().getItem();
|
||||
if (i != null) {
|
||||
event.getDrops().add(new EntityItem(event.getEntity().getEntityWorld(), event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, new ItemStack(i, random.nextInt(4) + 1)));
|
||||
if (event.getSource().getTrueSource() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
|
||||
if (!w.isRemote && event.getEntity() instanceof EntityLiving && !(event.getEntity() instanceof
|
||||
EntityPlayer) && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()),
|
||||
identifier)) {
|
||||
ItemStack i = event.getDrops().get(random.nextInt(event.getDrops().size())).getItem();
|
||||
event.getDrops().add(new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event
|
||||
.getEntity().posZ, new ItemStack(i.getItem(), random.nextInt(4) + 1, i.getMetadata(), i
|
||||
.getTagCompound())));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,33 +1,52 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.player.PlayerEvent;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
public class TraitSofty extends AbstractTrait {
|
||||
private static final float chance = 0.2f;
|
||||
|
||||
private static final float chance = 0.1f;
|
||||
private static final float speedmulti = 1.3f;
|
||||
|
||||
public TraitSofty() {
|
||||
super("softy", TextFormatting.AQUA);
|
||||
super("softy", TextFormatting.GRAY);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void blockbreak(BlockEvent.BreakEvent e) {
|
||||
float r = random.nextFloat();
|
||||
float hardness = e.getWorld().getBlockState(e.getPos()).getBlockHardness(e.getWorld(), e.getPos());
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getPlayer().getHeldItemMainhand()), identifier)) {
|
||||
if (!e.getWorld().isRemote && r <= chance && hardness >= 1.0f) {
|
||||
e.setCanceled(true);
|
||||
ToolHelper.damageTool(e.getPlayer().getHeldItemMainhand(), random.nextInt(3) + 1, e.getPlayer());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
if (!world.isRemote && state.getMaterial() != Material.ROCK && state.getMaterial() != Material.GROUND && random.nextFloat() < chance) {
|
||||
ToolHelper.healTool(tool, random.nextInt(10), player);
|
||||
public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) {
|
||||
World w = event.getEntity().getEntityWorld();
|
||||
IBlockState state = w.getBlockState(event.getPos());
|
||||
float speed = event.getOriginalSpeed();
|
||||
if (!w.isRemote) {
|
||||
if (state.getBlockHardness(w, event.getPos()) <= 1.0f) {
|
||||
event.setNewSpeed(speed * speedmulti);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
72
src/main/java/com/sosnitzka/taiga/traits/TraitSoulEater.java
Normal file
72
src/main/java/com/sosnitzka/taiga/traits/TraitSoulEater.java
Normal file
@@ -0,0 +1,72 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
|
||||
public class TraitSoulEater extends AbstractTrait {
|
||||
|
||||
public TraitSoulEater() {
|
||||
super(TraitSoulEater.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onTargetKilled(LivingDeathEvent event) {
|
||||
if (event.getSource().getTrueSource() instanceof EntityPlayer && event.getEntity() instanceof EntityLiving) {
|
||||
World w = event.getSource().getTrueSource().world;
|
||||
ItemStack tool = ((EntityPlayer) event.getSource().getTrueSource()).getHeldItemMainhand();
|
||||
if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
float health = ((EntityLiving) event.getEntity()).getMaxHealth();
|
||||
data.killcount += 1;
|
||||
data.health = health;
|
||||
float divisor = 25000f;
|
||||
float bonus = Math.round(random.nextFloat() * health * 100) / divisor;
|
||||
data.bonus += bonus;
|
||||
data.bonus = (float) Math.round(data.bonus * 100f) / 100f;
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(tool, tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float
|
||||
newDamage, boolean isCritical) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
float bonus = data.bonus;
|
||||
return newDamage + bonus;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void onItemTooltip(ItemTooltipEvent e) {
|
||||
ItemStack tool = e.getItemStack();
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if (data.killcount != 0) {
|
||||
e.getToolTip().add(TextFormatting.WHITE + "Killed: " + TextFormatting.WHITE + data.killcount);
|
||||
e.getToolTip().add(TextFormatting.WHITE + "Bonus: " + TextFormatting.WHITE + data.bonus);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,83 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
|
||||
public class TraitSuperHeavy extends TraitProgressiveStats {
|
||||
|
||||
protected static int TICK_PER_STAT = 50;
|
||||
protected static float blockcount = 500f;
|
||||
|
||||
public TraitSuperHeavy() {
|
||||
super(TraitSuperHeavy.class.getSimpleName().toLowerCase().substring(5), TextFormatting.DARK_GRAY);
|
||||
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void miningSpeed(ItemStack tool, PlayerInteractEvent.BreakSpeed event) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if (data.brokenblocks == 0) return;
|
||||
event.setNewSpeed(Math.max(event.getNewSpeed() - data.brokenblocks * event.getOriginalSpeed() / blockcount,
|
||||
0.35f));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
|
||||
player, boolean wasEffective) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
data.brokenblocks += 1;
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(tool, tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
|
||||
// every 3.6 seconds we distribute one stat. This means 1h = 1000 applications
|
||||
if (entity.ticksExisted % TICK_PER_STAT > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// we don't update if the player is currently breaking a block because that'd reset it
|
||||
if (playerIsBreakingBlock(entity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if (data.brokenblocks > 0)
|
||||
data.brokenblocks -= 1;
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(tool, tag);
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void onItemTooltip(ItemTooltipEvent e) {
|
||||
ItemStack tool = e.getItemStack();
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
e.getToolTip().add(TextFormatting.RED + "Broken Blocks: " + TextFormatting.WHITE + data.brokenblocks);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
107
src/main/java/com/sosnitzka/taiga/traits/TraitTantrum.java
Normal file
107
src/main/java/com/sosnitzka/taiga/traits/TraitTantrum.java
Normal file
@@ -0,0 +1,107 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.sosnitzka.taiga.Keybindings;
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import slimeknights.tconstruct.common.Sounds;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
import static com.sosnitzka.taiga.Blocks.tiberiumOre;
|
||||
|
||||
/*
|
||||
* Collects tiberium, to release it for an explosion
|
||||
*/
|
||||
public class TraitTantrum extends AbstractTrait {
|
||||
|
||||
public static float max_charges = 12f;
|
||||
public static float max_power = 5;
|
||||
|
||||
public TraitTantrum() {
|
||||
super("tantrum", TextFormatting.RED);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
|
||||
World w = event.getWorld();
|
||||
if (!w.isRemote) {
|
||||
if (event.getState().getBlock().equals(tiberiumOre)) {
|
||||
event.getDrops().clear();
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Data data = Data.read(tag);
|
||||
if (data.amount >= max_charges) {
|
||||
return;
|
||||
}
|
||||
data.amount += (0.25f + Utils.round2(random.nextDouble() / 4));
|
||||
if (data.amount >= max_charges) {
|
||||
TagUtil.setEnchantEffect(tool, true);
|
||||
if (event.getHarvester() instanceof EntityPlayerMP) {
|
||||
Sounds.PlaySoundForPlayer(event.getHarvester(), Sounds.shocking_discharge, 1f, 0.8f + .2f *
|
||||
random.nextFloat());
|
||||
}
|
||||
}
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(tool, tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void rightClickItem(PlayerInteractEvent.RightClickItem event) {
|
||||
World w = event.getWorld();
|
||||
BlockPos pos = event.getPos();
|
||||
ItemStack tool = event.getEntityPlayer().getHeldItemMainhand();
|
||||
if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier) && Keybindings.altKey.isKeyDown()) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Data data = Data.read(tag);
|
||||
if (data.amount > 1f) {
|
||||
double d = Math.min(Utils.round2(random.nextDouble() * data.amount), max_power);
|
||||
w.newExplosion(event.getEntityPlayer(), pos.getX(), pos.getY(), pos.getZ(), (float) Math.pow((double)
|
||||
1.2f, d), false, true);
|
||||
data.amount -= d;
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(tool, tag);
|
||||
TagUtil.setEnchantEffect(tool, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void onItemTooltip(ItemTooltipEvent e) {
|
||||
ItemStack tool = e.getItemStack();
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Data data = Data.read(tag);
|
||||
e.getToolTip().add(TextFormatting.RED + "Charge: " + data.amount);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Data {
|
||||
float amount;
|
||||
|
||||
public static Data read(NBTTagCompound tag) {
|
||||
Data data = new Data();
|
||||
data.amount = tag.getFloat("amount");
|
||||
return data;
|
||||
}
|
||||
|
||||
public void write(NBTTagCompound tag) {
|
||||
tag.setFloat("amount", amount);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,78 +0,0 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.monster.EntityMob;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.living.LivingDropsEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
import static com.sosnitzka.taiga.Items.glimmerstone_dust;
|
||||
import static com.sosnitzka.taiga.Items.tiberiumShardStable;
|
||||
|
||||
|
||||
public class TraitUncertain extends AbstractTrait {
|
||||
|
||||
|
||||
public TraitUncertain() {
|
||||
super("uncertain", TextFormatting.RED);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
if (random.nextFloat() <= 0.05) {
|
||||
if (!world.isRemote) {
|
||||
if (random.nextFloat() > 0.1f) {
|
||||
explode(world, player, pos.getX(), pos.getY(), pos.getZ());
|
||||
} else explode(world, null, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
ToolHelper.damageTool(tool, random.nextInt(5) + 1, null);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onMobDrops(LivingDropsEvent event) {
|
||||
World w = event.getEntity().getEntityWorld();
|
||||
if (event.getSource().getEntity() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
|
||||
if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
ItemStack i = new ItemStack(Items.COAL, random.nextInt(4));
|
||||
if (random.nextBoolean()) {
|
||||
int r = random.nextInt(4);
|
||||
switch (r) {
|
||||
case 0:
|
||||
i = new ItemStack(Items.GUNPOWDER, random.nextInt(4));
|
||||
break;
|
||||
case 1:
|
||||
i = new ItemStack(tiberiumShardStable, random.nextInt(4));
|
||||
break;
|
||||
case 2:
|
||||
i = new ItemStack(tiberiumShardStable, random.nextInt(4));
|
||||
break;
|
||||
case 3:
|
||||
i = new ItemStack(glimmerstone_dust, random.nextInt(4));
|
||||
break;
|
||||
}
|
||||
}
|
||||
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void explode(World w, Entity e, double x, double y, double z) {
|
||||
w.newExplosion(e, x, y, z, 1.2f + random.nextFloat() * 5, random.nextBoolean(), true);
|
||||
}
|
||||
}
|
@@ -20,11 +20,10 @@ import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
|
||||
public class TraitInstable extends AbstractTrait {
|
||||
public class TraitUnstable extends AbstractTrait {
|
||||
|
||||
|
||||
public TraitInstable() {
|
||||
super("instable", TextFormatting.DARK_RED);
|
||||
public TraitUnstable() {
|
||||
super("unstable", TextFormatting.DARK_RED);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@@ -36,7 +35,7 @@ public class TraitInstable extends AbstractTrait {
|
||||
explode(world, player, pos.getX(), pos.getY(), pos.getZ());
|
||||
} else explode(world, null, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
ToolHelper.damageTool(tool, 11 + random.nextInt(10), null);
|
||||
ToolHelper.damageTool(tool, random.nextInt(10) + 2, player);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,22 +48,24 @@ public class TraitInstable extends AbstractTrait {
|
||||
explode(player.getEntityWorld(), player, pos.getX(), pos.getY(), pos.getZ());
|
||||
} else explode(player.getEntityWorld(), target, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
ToolHelper.damageTool(tool, 3 + random.nextInt(18), null);
|
||||
ToolHelper.damageTool(tool, 2 + random.nextInt(10), player);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onMobDrops(LivingDropsEvent event) {
|
||||
World w = event.getEntity().getEntityWorld();
|
||||
if (event.getSource().getEntity() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
|
||||
if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
ItemStack i = new ItemStack(Items.GUNPOWDER, random.nextInt(4));
|
||||
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i));
|
||||
if (random.nextFloat() < 0.05 && !w.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
|
||||
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
ItemStack i = new ItemStack(Items.GUNPOWDER, random.nextInt(2));
|
||||
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event
|
||||
.getEntity().posZ, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void explode(World w, Entity e, double x, double y, double z) {
|
||||
w.newExplosion(e, x, y, z, 1.2f + random.nextFloat() * 35, random.nextBoolean(), true);
|
||||
w.newExplosion(e, x, y, z, 1.2f + random.nextFloat() * 5, random.nextBoolean(), true);
|
||||
}
|
||||
}
|
98
src/main/java/com/sosnitzka/taiga/traits/TraitWhirl.java
Normal file
98
src/main/java/com/sosnitzka/taiga/traits/TraitWhirl.java
Normal file
@@ -0,0 +1,98 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.sosnitzka.taiga.Keybindings;
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.util.FakePlayer;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
import slimeknights.tconstruct.library.utils.ToolHelper;
|
||||
|
||||
|
||||
public class TraitWhirl extends AbstractTrait {
|
||||
|
||||
protected static int TICK_PER_STAT = 36;
|
||||
|
||||
public TraitWhirl() {
|
||||
super(TraitWhirl.class.getSimpleName().toLowerCase().substring(5), TextFormatting.DARK_BLUE);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
|
||||
if (entity instanceof FakePlayer || entity.world.isRemote || entity.ticksExisted % TICK_PER_STAT != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
data.radius += random.nextFloat() * 0.5f;
|
||||
if (data.radius >= 1) {
|
||||
TagUtil.setEnchantEffect(tool, true);
|
||||
}
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(tool, tag);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRightClickItem(PlayerInteractEvent.RightClickItem event) {
|
||||
World w = event.getWorld();
|
||||
ItemStack tool = event.getEntityPlayer().getHeldItemMainhand();
|
||||
if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier) && Keybindings.altKey.isKeyDown()) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if ((int) data.radius >= 1) {
|
||||
int r = Math.min((int) data.radius, 8);
|
||||
for (int x = -r; x <= r; x++) {
|
||||
for (int y = -r; y <= r; y++) {
|
||||
for (int z = -r; z <= r; z++) {
|
||||
if (MathHelper.sqrt(x * x + y * y + z * z) > r) {
|
||||
continue;
|
||||
}
|
||||
BlockPos nPos = new BlockPos(event.getPos().getX() + x, event.getPos().getY() + y, event
|
||||
.getPos().getZ() + z);
|
||||
if (!(event.getWorld().getBlockState(nPos).equals(Blocks.WATER.getDefaultState()) ||
|
||||
event.getWorld().getBlockState(nPos).equals(Blocks.FLOWING_WATER.getDefaultState
|
||||
())))
|
||||
continue;
|
||||
event.getWorld().destroyBlock(nPos, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
data.radius -= r;
|
||||
data.write(tag);
|
||||
TagUtil.setExtraTag(tool, tag);
|
||||
TagUtil.setEnchantEffect(tool, false);
|
||||
ToolHelper.damageTool(tool, 2 * r, event.getEntityPlayer());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void onItemTooltip(ItemTooltipEvent e) {
|
||||
ItemStack tool = e.getItemStack();
|
||||
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
|
||||
NBTTagCompound tag = TagUtil.getExtraTag(tool);
|
||||
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
|
||||
if (data.radius > 0) {
|
||||
e.getToolTip().add(TextFormatting.BLUE + "Actual Radius: " + TextFormatting.WHITE + Math.round(data
|
||||
.radius * 100) / 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,99 +0,0 @@
|
||||
package com.sosnitzka.taiga.util;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityCreature;
|
||||
import net.minecraft.entity.ai.EntityAIBase;
|
||||
import net.minecraft.entity.ai.RandomPositionGenerator;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityAIPermanentPanic extends EntityAIBase {
|
||||
private EntityCreature theEntityCreature;
|
||||
protected double speed;
|
||||
private double randPosX;
|
||||
private double randPosY;
|
||||
private double randPosZ;
|
||||
|
||||
public EntityAIPermanentPanic(EntityCreature creature, double speedIn) {
|
||||
this.theEntityCreature = creature;
|
||||
this.speed = speedIn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the EntityAIBase should begin execution.
|
||||
*/
|
||||
public boolean shouldExecute() {
|
||||
|
||||
Vec3d vec3d = RandomPositionGenerator.findRandomTarget(this.theEntityCreature, 5, 4);
|
||||
|
||||
if (vec3d == null) {
|
||||
return false;
|
||||
} else {
|
||||
this.randPosX = vec3d.xCoord;
|
||||
this.randPosY = vec3d.yCoord;
|
||||
this.randPosZ = vec3d.zCoord;
|
||||
|
||||
if (this.theEntityCreature.isBurning()) {
|
||||
BlockPos blockpos = this.getRandPos(this.theEntityCreature.worldObj, this.theEntityCreature, 5, 4);
|
||||
|
||||
if (blockpos != null) {
|
||||
this.randPosX = (double) blockpos.getX();
|
||||
this.randPosY = (double) blockpos.getY();
|
||||
this.randPosZ = (double) blockpos.getZ();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute a one shot task or start executing a continuous task
|
||||
*/
|
||||
public void startExecuting() {
|
||||
this.theEntityCreature.getNavigator().tryMoveToXYZ(this.randPosX, this.randPosY, this.randPosZ, this.speed);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether an in-progress EntityAIBase should continue executing
|
||||
*/
|
||||
public boolean continueExecuting() {
|
||||
return !this.theEntityCreature.getNavigator().noPath();
|
||||
}
|
||||
|
||||
private BlockPos getRandPos(World worldIn, Entity entityIn, int horizontalRange, int verticalRange) {
|
||||
BlockPos blockpos = new BlockPos(entityIn);
|
||||
BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();
|
||||
int i = blockpos.getX();
|
||||
int j = blockpos.getY();
|
||||
int k = blockpos.getZ();
|
||||
float f = (float) (horizontalRange * horizontalRange * verticalRange * 2);
|
||||
BlockPos blockpos1 = null;
|
||||
|
||||
for (int l = i - horizontalRange; l <= i + horizontalRange; ++l) {
|
||||
for (int i1 = j - verticalRange; i1 <= j + verticalRange; ++i1) {
|
||||
for (int j1 = k - horizontalRange; j1 <= k + horizontalRange; ++j1) {
|
||||
blockpos$mutableblockpos.setPos(l, i1, j1);
|
||||
IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos);
|
||||
Block block = iblockstate.getBlock();
|
||||
|
||||
if (block == Blocks.WATER || block == Blocks.FLOWING_WATER) {
|
||||
float f1 = (float) ((l - i) * (l - i) + (i1 - j) * (i1 - j) + (j1 - k) * (j1 - k));
|
||||
|
||||
if (f1 < f) {
|
||||
f = f1;
|
||||
blockpos1 = new BlockPos(blockpos$mutableblockpos);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return blockpos1;
|
||||
}
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
package com.sosnitzka.taiga.util;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fml.common.IFuelHandler;
|
||||
|
||||
import static com.sosnitzka.taiga.Items.*;
|
||||
import static slimeknights.tconstruct.TConstruct.random;
|
||||
|
||||
public class FuelHandler implements IFuelHandler {
|
||||
|
||||
@Override
|
||||
public int getBurnTime(ItemStack fuel) {
|
||||
if (fuel.getItem().equals(lignite)) {
|
||||
return 200 * 8;
|
||||
}
|
||||
if (fuel.getItem().equals(lignite2)) {
|
||||
return 200 * 6;
|
||||
}
|
||||
if (fuel.getItem().equals(lignite3)) {
|
||||
return 200 * 10;
|
||||
}
|
||||
if (fuel.getItem().equals(fuel_brick)) {
|
||||
return 200 * 16;
|
||||
}
|
||||
if (fuel.getItem().equals(glimmercoal)) {
|
||||
return (random.nextInt(32) + 32) * 200;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
@@ -1,41 +1,267 @@
|
||||
package com.sosnitzka.taiga.util;
|
||||
|
||||
import com.sosnitzka.taiga.world.ZWorldGenMinable;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.sosnitzka.taiga.world.MeteorWorldSaveData;
|
||||
import com.sosnitzka.taiga.world.WorldGenMinable;
|
||||
import net.minecraft.block.BlockStone;
|
||||
import net.minecraft.block.properties.IProperty;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.google.common.collect.Lists.newArrayList;
|
||||
import static com.sosnitzka.taiga.util.Utils.nextInt;
|
||||
|
||||
public class Generator {
|
||||
|
||||
public static void generateOre(IBlockState state, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) {
|
||||
generateOre(state, Blocks.STONE.getDefaultState(), null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize);
|
||||
public static void generateOre(IBlockState newState, IBlockState oldState, Random random, int chunkX, int chunkZ,
|
||||
World world, int count, int minY, int maxY, int minSize, int maxSize) {
|
||||
generateOre(newState, oldState, null, null, random, chunkX, chunkZ, world, count, 100, minY, maxY, minSize,
|
||||
maxSize, null);
|
||||
}
|
||||
|
||||
public static void generateNetherOre(IBlockState state, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) {
|
||||
generateOre(state, Blocks.NETHERRACK.getDefaultState(), null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize);
|
||||
public static void generateOre(IBlockState newState, IBlockState oldState, Random random, int chunkX, int chunkZ,
|
||||
World world, int count, int chance, int minY, int maxY, int minSize, int maxSize,
|
||||
List<Biome> biome) {
|
||||
generateOre(newState, oldState, null, null, random, chunkX, chunkZ, world, count, chance, minY, maxY,
|
||||
minSize, maxSize, biome);
|
||||
}
|
||||
|
||||
public static void generateEndOre(IBlockState state, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) {
|
||||
generateOre(state, Blocks.END_STONE.getDefaultState(), null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize);
|
||||
}
|
||||
|
||||
public static void generateOre(IBlockState state, IBlockState replace, Random random, int chunkX, int chunkZ, World world, int chance, int minY, int maxY, int minSize, int maxSize) {
|
||||
generateOre(state, replace, null, null, random, chunkX, chunkZ, world, chance, minY, maxY, minSize, maxSize);
|
||||
}
|
||||
|
||||
public static void generateOre(IBlockState state, IBlockState replace, IProperty property, Comparable comparable, Random random, int chunkX, int chunkZ, World world, int chance, int minY, int maxY, int minSize, int maxSize) {
|
||||
public static void generateOre(IBlockState newState, IBlockState oldState, IProperty property, Comparable
|
||||
comparable, Random random, int chunkX, int chunkZ, World world, int count, int chance, int minY, int
|
||||
maxY, int minSize, int maxSize, List<Biome> biome) {
|
||||
int size = minSize + random.nextInt(maxSize - minSize);
|
||||
int height = maxY - minY;
|
||||
|
||||
for (int i = 0; i < chance; i++) {
|
||||
for (int i = 0; i < count; i++) {
|
||||
if (0.01f * chance >= random.nextFloat()) {
|
||||
int posX = chunkX + random.nextInt(16);
|
||||
int posY = random.nextInt(height) + minY;
|
||||
int posZ = chunkZ + random.nextInt(16);
|
||||
new ZWorldGenMinable(state, size, StateMatcher.forState(replace, property, comparable)).generate(world, random, new BlockPos(posX, posY, posZ));
|
||||
BlockPos cPos = new BlockPos(posX, posY, posZ);
|
||||
if (biome == null || biome.contains(world.getBiome(cPos))) {
|
||||
new WorldGenMinable(newState, size, StateMatcher.forState(oldState, property, comparable))
|
||||
.generate(world, random, new BlockPos(posX, posY, posZ));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void generateOre(List<IBlockState> replaceBlockList, IBlockState replacementBlock, Random random,
|
||||
int chunkX, int chunkZ, World world, int count, int minY, int maxY, int chance) {
|
||||
if (random.nextFloat() < (float) (0.01 * chance))
|
||||
generateOreDescending(replaceBlockList, replacementBlock, random, chunkX, chunkZ, world, count, minY, maxY);
|
||||
}
|
||||
|
||||
public static void generateOreDescending(List<IBlockState> replaceBlockList, IBlockState replacementBlock, Random
|
||||
random, int chunkX, int chunkZ, World world, int count, int minY, int maxY) {
|
||||
for (int i = 0; i < count; i++) {
|
||||
int posX = chunkX + random.nextInt(16);
|
||||
int posZ = chunkZ + random.nextInt(16);
|
||||
BlockPos cPos = new BlockPos(posX, maxY, posZ);
|
||||
if (replaceBlockList.contains(world.getBlockState(cPos)) && replaceBlockList.contains(world.getBlockState
|
||||
(cPos.up()))) {
|
||||
continue;
|
||||
}
|
||||
if (replaceBlockList.contains(world.getBlockState(cPos)) && !replaceBlockList.contains(world
|
||||
.getBlockState(cPos.up())))
|
||||
world.setBlockState(cPos, replacementBlock);
|
||||
while (!replaceBlockList.contains(world.getBlockState(cPos.down())) && cPos.getY() > minY) {
|
||||
cPos = cPos.down();
|
||||
}
|
||||
if (replaceBlockList.contains(world.getBlockState(cPos.down())))
|
||||
world.setBlockState(cPos.down(), replacementBlock);
|
||||
}
|
||||
}
|
||||
|
||||
public static void generateOreStoneVariant(IBlockState newState, BlockStone.EnumType type, Random random, int
|
||||
chunkX, int chunkZ, World world, int count) {
|
||||
List<BlockStone.EnumType> list = newArrayList(type);
|
||||
for (int i = 0; i < count; i += 2) {
|
||||
int posX = chunkX + random.nextInt(16);
|
||||
int posZ = chunkZ + random.nextInt(16);
|
||||
BlockPos cPos = new BlockPos(posX, random.nextInt(64) + 32, posZ);
|
||||
IBlockState state = world.getBlockState(cPos);
|
||||
if (state.getBlock().equals(Blocks.STONE.getDefaultState().getBlock())) {
|
||||
if (list.contains(state.getValue(BlockStone.VARIANT))) {
|
||||
world.setBlockState(cPos, newState);
|
||||
}
|
||||
} else {
|
||||
while (cPos.getY() >= 0) {
|
||||
cPos = cPos.down();
|
||||
state = world.getBlockState(cPos);
|
||||
if (state.getBlock().equals(Blocks.STONE.getDefaultState().getBlock())) {
|
||||
if (list.contains(state.getValue(BlockStone.VARIANT))) {
|
||||
world.setBlockState(cPos, newState);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
cPos = new BlockPos(posX, random.nextInt(32), posZ);
|
||||
state = world.getBlockState(cPos);
|
||||
if (state.getBlock().equals(Blocks.STONE.getDefaultState().getBlock())) {
|
||||
if (list.contains(state.getValue(BlockStone.VARIANT))) {
|
||||
world.setBlockState(cPos, newState);
|
||||
}
|
||||
} else {
|
||||
while (cPos.getY() <= 96) {
|
||||
cPos = cPos.up();
|
||||
state = world.getBlockState(cPos);
|
||||
if (state.getBlock().equals(Blocks.STONE.getDefaultState().getBlock())) {
|
||||
if (list.contains(state.getValue(BlockStone.VARIANT))) {
|
||||
world.setBlockState(cPos, newState);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void generateOreBottom(IBlockState oldState, IBlockState newState, Random random, int chunkX, int
|
||||
chunkZ, World world, int chance, int spread, int maxY) {
|
||||
for (int i = 0; i < chance; i++) {
|
||||
int posX = chunkX + random.nextInt(16);
|
||||
int posY = 0;
|
||||
int posZ = chunkZ + random.nextInt(16);
|
||||
BlockPos cPos = new BlockPos(posX, posY, posZ);
|
||||
if (Blocks.AIR.getDefaultState().equals(world.getBlockState(cPos))) {
|
||||
while (world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()) && cPos.getY() < maxY) {
|
||||
cPos = cPos.up();
|
||||
}
|
||||
if (world.getBlockState(cPos).equals(oldState)) {
|
||||
world.setBlockState(cPos.up(random.nextInt(spread)), newState);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void generateCube(boolean fly, IBlockState centerBlock, IBlockState hullBlock, Random random, int
|
||||
chunkX, int chunkZ, World world, int count, int chance, int minY, int maxY, int maxS) {
|
||||
for (int i = 0; i < count; i++) {
|
||||
if (random.nextFloat() < 0.01 * chance) {
|
||||
int outer = nextInt(random, 1, maxS);
|
||||
int inner = random.nextInt(2);
|
||||
int posX = chunkX + random.nextInt(16);
|
||||
int posY = nextInt(random, minY, maxY);
|
||||
int posZ = chunkZ + random.nextInt(16);
|
||||
BlockPos cPos = new BlockPos(posX, posY, posZ);
|
||||
if (!fly) {
|
||||
if (world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()) && world.getBlockState(cPos
|
||||
.down()).equals(Blocks.AIR.getDefaultState())) {
|
||||
// we are in mid air, go down
|
||||
while (world.getBlockState(cPos.down()).equals(Blocks.AIR.getDefaultState())) {
|
||||
cPos = cPos.down();
|
||||
}
|
||||
}
|
||||
}
|
||||
cPos.down((random.nextInt(4) + 2) * outer);
|
||||
for (int x = -inner; x <= inner; x++) {
|
||||
for (int y = -inner; y <= inner; y++) {
|
||||
for (int z = -inner; z <= inner; z++) {
|
||||
if (!world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()))
|
||||
continue;
|
||||
world.setBlockState(new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z),
|
||||
centerBlock);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int x = -outer; x <= outer; x++) {
|
||||
for (int y = -outer; y <= outer; y++) {
|
||||
for (int z = -outer; z <= outer; z++) {
|
||||
BlockPos nPos = new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z);
|
||||
if (world.getBlockState(nPos).equals(centerBlock) || !world.getBlockState(nPos).equals
|
||||
(Blocks.AIR.getDefaultState()))
|
||||
continue;
|
||||
world.setBlockState(nPos, hullBlock);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static int generateMeteor(IBlockState centerBlock, IBlockState hullBlock, Random random, int chunkX, int
|
||||
chunkZ, World world, int count, int chance, int minY, int maxY) {
|
||||
Set<Item> validSurface = new HashSet<Item>();
|
||||
List<String> oredictentries = Lists.newArrayList("dirt", "grass", "stone", "sand", "gravel", "cobblestone",
|
||||
"sandstone");
|
||||
for (String e : oredictentries) {
|
||||
for (ItemStack stack : OreDictionary.getOres(e)) {
|
||||
validSurface.add(stack.getItem());
|
||||
}
|
||||
}
|
||||
|
||||
int mGenerated = 0;
|
||||
|
||||
for (int i = 0; i < count; i++) {
|
||||
if (random.nextFloat() < 0.01 * chance) {
|
||||
int r = nextInt(random, 1, 5);
|
||||
int posX = chunkX + random.nextInt(16);
|
||||
int posY = nextInt(random, minY, maxY);
|
||||
int posZ = chunkZ + random.nextInt(16);
|
||||
BlockPos cPos = new BlockPos(posX, posY, posZ);
|
||||
if (world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()) && world.getBlockState(cPos.down()
|
||||
).equals(Blocks.AIR.getDefaultState())) {
|
||||
// we are in mid air, go down
|
||||
while (world.getBlockState(cPos.down()).equals(Blocks.AIR.getDefaultState())) {
|
||||
cPos = cPos.down();
|
||||
|
||||
if (cPos.getY() < minY)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!validSurface.contains(Item.getItemFromBlock(world.getBlockState(cPos.down()).getBlock())))
|
||||
continue;
|
||||
cPos = cPos.down(random.nextInt(r * 2) + r + 1);
|
||||
|
||||
MeteorWorldSaveData saveData = MeteorWorldSaveData.getForWorld(world);
|
||||
saveData.addPos(cPos);
|
||||
saveData.markDirty();
|
||||
|
||||
mGenerated++;
|
||||
|
||||
int t = 1;
|
||||
if (r > 3) t = random.nextInt(r - 1);
|
||||
for (int x = -t; x <= t; x++) {
|
||||
for (int y = -t; y <= t; y++) {
|
||||
for (int z = -t; z <= t; z++) {
|
||||
if (MathHelper.sqrt(x * x + y * y + z * z) > t) {
|
||||
continue;
|
||||
}
|
||||
world.setBlockState(new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z),
|
||||
centerBlock);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int x = -r; x <= r; x++) {
|
||||
for (int y = -r; y <= r; y++) {
|
||||
for (int z = -r; z <= r; z++) {
|
||||
if (MathHelper.sqrt(x * x + y * y + z * z) > r) {
|
||||
continue;
|
||||
}
|
||||
BlockPos nPos = new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z);
|
||||
if (world.getBlockState(nPos).equals(centerBlock))
|
||||
continue;
|
||||
world.setBlockState(nPos, hullBlock);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return mGenerated;
|
||||
}
|
||||
}
|
||||
|
@@ -18,7 +18,7 @@ public class StateMatcher implements Predicate<IBlockState> {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public static StateMatcher forState(IBlockState state, IProperty property, Comparable value) {
|
||||
static StateMatcher forState(IBlockState state, IProperty property, Comparable value) {
|
||||
return new StateMatcher(state, property, value);
|
||||
}
|
||||
|
||||
@@ -26,10 +26,9 @@ public class StateMatcher implements Predicate<IBlockState> {
|
||||
if (state != null) {
|
||||
if (property != null && value != null) {
|
||||
if (state.getBlock() == this.state.getBlock())
|
||||
if (checkLayerForBlocks(3, 3, -1, world, pos) ||
|
||||
return checkLayerForBlocks(3, 3, -1, world, pos) ||
|
||||
checkLayerForBlocks(3, 3, 0, world, pos) ||
|
||||
checkLayerForBlocks(3, 3, 1, world, pos))
|
||||
return true;
|
||||
checkLayerForBlocks(3, 3, 1, world, pos);
|
||||
|
||||
} else
|
||||
return state.getBlock() == this.state.getBlock();
|
||||
@@ -64,8 +63,6 @@ public class StateMatcher implements Predicate<IBlockState> {
|
||||
|
||||
IBlockState bState = world.getBlockState(blockPos);
|
||||
if (bState.getBlock() == this.state.getBlock() && bState.getValue(property) == value) {
|
||||
// Check if a replacable block is near origin block - show pos in console
|
||||
// System.out.println(String.format("Found block with desired state! (%s), Block: %s, try #%s, y=%s", i, Y));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@@ -1,73 +1,151 @@
|
||||
package com.sosnitzka.taiga.util;
|
||||
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import com.sosnitzka.taiga.Items;
|
||||
import com.sosnitzka.taiga.TAIGA;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraftforge.fml.common.event.FMLInterModComms;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import slimeknights.tconstruct.library.MaterialIntegration;
|
||||
import slimeknights.tconstruct.library.TinkerRegistry;
|
||||
import slimeknights.tconstruct.library.materials.*;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Random;
|
||||
|
||||
import static com.sosnitzka.taiga.TAIGA.proxy;
|
||||
|
||||
public class Utils {
|
||||
public static String PREFIX_INGOT = "ingot";
|
||||
public static String PREFIX_NUGGET = "nugget";
|
||||
public static String PREFIX_ORE = "ore";
|
||||
public static String PREFIX_BLOCK = "block";
|
||||
public static String PREFIX_DUST = "dust";
|
||||
public static String PREFIX_CRYSTAL = "crystal";
|
||||
|
||||
|
||||
public static void registerBlockWithItem(Block block) {
|
||||
GameRegistry.register(block);
|
||||
GameRegistry.register(new ItemBlock(block).setRegistryName(block.getRegistryName()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the fluid and its bucket item
|
||||
*
|
||||
* @param fluid the fluid
|
||||
*/
|
||||
public static void registerFluid(Fluid fluid) {
|
||||
FluidRegistry.registerFluid(fluid);
|
||||
FluidRegistry.addBucketForFluid(fluid);
|
||||
}
|
||||
|
||||
public static void registerTinkerAlloys(Fluid alloy, int out, Fluid first, int inOne, Fluid second, int inTwo) {
|
||||
NBTTagList tagList = new NBTTagList();
|
||||
NBTTagCompound fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", alloy.getName());
|
||||
fluid.setInteger("Amount", out);
|
||||
tagList.appendTag(fluid);
|
||||
fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", first.getName());
|
||||
fluid.setInteger("Amount", inOne);
|
||||
tagList.appendTag(fluid);
|
||||
fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", second.getName());
|
||||
fluid.setInteger("Amount", inTwo);
|
||||
tagList.appendTag(fluid);
|
||||
|
||||
NBTTagCompound message = new NBTTagCompound();
|
||||
message.setTag("alloy", tagList);
|
||||
FMLInterModComms.sendMessage("tconstruct", "alloy", message);
|
||||
}
|
||||
|
||||
public static void registerTinkerAlloys(Fluid alloy, int out, Fluid first, int inOne, Fluid second, int inTwo, Fluid third, int inThree) {
|
||||
NBTTagList tagList = new NBTTagList();
|
||||
NBTTagCompound fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", alloy.getName());
|
||||
fluid.setInteger("Amount", out);
|
||||
tagList.appendTag(fluid);
|
||||
fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", first.getName());
|
||||
fluid.setInteger("Amount", inOne);
|
||||
tagList.appendTag(fluid);
|
||||
fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", second.getName());
|
||||
fluid.setInteger("Amount", inTwo);
|
||||
tagList.appendTag(fluid);
|
||||
fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", third.getName());
|
||||
fluid.setInteger("Amount", inThree);
|
||||
tagList.appendTag(fluid);
|
||||
|
||||
NBTTagCompound message = new NBTTagCompound();
|
||||
message.setTag("alloy", tagList);
|
||||
FMLInterModComms.sendMessage("tconstruct", "alloy", message);
|
||||
public static void registerTinkerAlloy(FluidStack output, FluidStack... inputs) {
|
||||
if (inputs.length >= 2 && output != null) {
|
||||
TinkerRegistry.registerAlloy(output, inputs);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isNight(int time) {
|
||||
return time > 12500;
|
||||
}
|
||||
|
||||
public static double round2(double d) {
|
||||
return (Math.round(d * 100.0) / 100.0);
|
||||
}
|
||||
|
||||
public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura,
|
||||
float headSpeed, float headAttack, float handleMod, int handleDura, int
|
||||
extra, int headLevel, float draw, float range, int bdamage) {
|
||||
integrateMaterial(oreSuffix, material, fluid, headDura, headSpeed, headAttack, handleMod, handleDura, extra,
|
||||
headLevel, new BowMaterialStats(draw, range, bdamage), false, true);
|
||||
}
|
||||
|
||||
public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, BowMaterialStats bowstats) {
|
||||
integrateMaterial(oreSuffix, material, fluid, headDura, headSpeed, headAttack, handleMod, handleDura, extra, headLevel, bowstats, false, true);
|
||||
}
|
||||
|
||||
public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, BowMaterialStats bowstats, boolean craft, boolean cast) {
|
||||
if (material != null) {
|
||||
if (TinkerRegistry.getMaterial(material.identifier) != Material.UNKNOWN)
|
||||
return;
|
||||
|
||||
TinkerRegistry.addMaterialStats(material, new HeadMaterialStats(headDura, headSpeed, headAttack,
|
||||
headLevel));
|
||||
TinkerRegistry.addMaterialStats(material, new HandleMaterialStats(handleMod, handleDura));
|
||||
TinkerRegistry.addMaterialStats(material, new ExtraMaterialStats(extra));
|
||||
TinkerRegistry.addMaterialStats(material, bowstats);
|
||||
|
||||
Item item = null;
|
||||
Field[] items = Items.class.getDeclaredFields();
|
||||
for (Field i : items) {
|
||||
if (i.getName().equals(StringUtils.uncapitalize(oreSuffix) + "Ingot")) {
|
||||
Item r = null;
|
||||
try {
|
||||
r = (Item) i.get(i.getType());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
item = r;
|
||||
}
|
||||
}
|
||||
|
||||
material.setFluid(fluid).setCraftable(craft).setCastable(cast).addItem(item, 1, Material.VALUE_Ingot);
|
||||
material.setRepresentativeItem(item);
|
||||
proxy.setRenderInfo(material);
|
||||
}
|
||||
|
||||
MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix);
|
||||
integration.preInit();
|
||||
TAIGA.integrateList.add(integration);
|
||||
}
|
||||
|
||||
public static void integrateOre(String oreSuffix, Fluid fluid) {
|
||||
integrateMaterial(oreSuffix, null, fluid, -1, -1, -1, -1, -1, -1, -1, new BowMaterialStats(0.1f, 0.1f, -1f),
|
||||
true, true);
|
||||
}
|
||||
|
||||
public static int nextInt(Random random, int min, int max) {
|
||||
return random.nextInt((max - min) + 1) + min;
|
||||
}
|
||||
|
||||
public static class GeneralNBTData {
|
||||
|
||||
public int killcount;
|
||||
public float health;
|
||||
public int brokenblocks;
|
||||
public float bonus;
|
||||
public int curse;
|
||||
public String name;
|
||||
public float radius;
|
||||
public float dfloat;
|
||||
public int dint;
|
||||
public boolean active;
|
||||
|
||||
public static GeneralNBTData read(NBTTagCompound tag) {
|
||||
GeneralNBTData data = new GeneralNBTData();
|
||||
data.killcount = tag.getInteger("killcount");
|
||||
data.brokenblocks = tag.getInteger("brokenblocks");
|
||||
data.health = tag.getFloat("health");
|
||||
data.bonus = tag.getFloat("bonus");
|
||||
data.curse = tag.getInteger("curse");
|
||||
data.name = tag.getString("name");
|
||||
data.radius = tag.getFloat("radius");
|
||||
data.dfloat = tag.getFloat("dfloat");
|
||||
data.dint = tag.getInteger("dint");
|
||||
data.active = tag.getBoolean("active");
|
||||
return data;
|
||||
}
|
||||
|
||||
public void write(NBTTagCompound tag) {
|
||||
tag.setInteger("killcount", killcount);
|
||||
tag.setInteger("brokenblocks", brokenblocks);
|
||||
tag.setFloat("health", health);
|
||||
tag.setFloat("bonus", bonus);
|
||||
tag.setInteger("curse", curse);
|
||||
tag.setString("name", name);
|
||||
tag.setFloat("radius", radius);
|
||||
tag.setInteger("dint", dint);
|
||||
tag.setFloat("dfloat", dfloat);
|
||||
tag.setBoolean("active", active);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,72 @@
|
||||
package com.sosnitzka.taiga.world;
|
||||
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import com.google.gson.Gson;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.storage.MapStorage;
|
||||
import net.minecraft.world.storage.WorldSavedData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.sosnitzka.taiga.TAIGA.MODID;
|
||||
|
||||
public class MeteorWorldSaveData extends WorldSavedData {
|
||||
private static final String DATA_NAME = MODID + "_meteors";
|
||||
private List<BlockPos> posList;
|
||||
|
||||
public MeteorWorldSaveData() {
|
||||
super(DATA_NAME);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public MeteorWorldSaveData(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
public static MeteorWorldSaveData getForWorld(World world) {
|
||||
MapStorage storage = world.getPerWorldStorage();
|
||||
MeteorWorldSaveData instance = (MeteorWorldSaveData) storage.getOrLoadData(MeteorWorldSaveData.class,
|
||||
DATA_NAME);
|
||||
|
||||
if (instance == null) {
|
||||
instance = new MeteorWorldSaveData();
|
||||
storage.setData(DATA_NAME, instance);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
public List<BlockPos> getPosList() {
|
||||
return posList;
|
||||
}
|
||||
|
||||
public void addPos(BlockPos pos) {
|
||||
if (posList == null)
|
||||
posList = new ArrayList<BlockPos>();
|
||||
|
||||
posList.add(pos);
|
||||
}
|
||||
|
||||
public boolean removePos(BlockPos pos) {
|
||||
return posList != null && posList.remove(pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
if (nbt.hasKey("posData") && !nbt.getString("posData").isEmpty()) {
|
||||
posList = new Gson().fromJson(nbt.getString("posData"), new TypeToken<List<BlockPos>>() {
|
||||
}.getType());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound compound) {
|
||||
if (posList == null)
|
||||
return null;
|
||||
|
||||
compound.setString("posData", new Gson().toJson(posList));
|
||||
return compound;
|
||||
}
|
||||
}
|
172
src/main/java/com/sosnitzka/taiga/world/WorldGen.java
Normal file
172
src/main/java/com/sosnitzka/taiga/world/WorldGen.java
Normal file
@@ -0,0 +1,172 @@
|
||||
package com.sosnitzka.taiga.world;
|
||||
|
||||
|
||||
import com.sosnitzka.taiga.TAIGA;
|
||||
import com.sosnitzka.taiga.util.Generator;
|
||||
import net.minecraft.block.BlockStone;
|
||||
import net.minecraft.init.Biomes;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.chunk.IChunkProvider;
|
||||
import net.minecraft.world.gen.IChunkGenerator;
|
||||
import net.minecraftforge.fml.common.IWorldGenerator;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static com.google.common.collect.Lists.newArrayList;
|
||||
import static com.sosnitzka.taiga.Blocks.*;
|
||||
import static com.sosnitzka.taiga.TAIGAConfiguration.*;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class WorldGen implements IWorldGenerator {
|
||||
private static WorldGen INSTANCE;
|
||||
private final List<Integer> blackList = new ArrayList();
|
||||
private final Map<Integer, Integer> meteorGenStats = new HashMap();
|
||||
private final Map<Integer, Integer> meteorChunkStats = new HashMap();
|
||||
|
||||
public static WorldGen getInstance() {
|
||||
if (INSTANCE == null)
|
||||
INSTANCE = new WorldGen();
|
||||
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
private void nether(Random random, int x, int z, World world) {
|
||||
Generator.generateOre(tiberiumOre.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), random, x, z,
|
||||
world, TIBERIUM_VAL, 32, 128, 10, 35);
|
||||
Generator.generateOre(prometheumOre.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), random, x, z,
|
||||
world, PROMETHEUM_VAL, 0, 32, 2, 4);
|
||||
Generator.generateOre(valyriumOre.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), random, x, z,
|
||||
world, VALYRIUM_VAL, 0, 128, 2, 4);
|
||||
Generator.generateOre(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA.getDefaultState()),
|
||||
osramOre.getDefaultState(), random, x, z, world, OSRAM_VAL, 0, 64, 15);
|
||||
}
|
||||
|
||||
private void other(Random random, int x, int z, World world) {
|
||||
int dim = world.provider.getDimension();
|
||||
if (!meteorGenStats.containsKey(dim))
|
||||
meteorGenStats.put(dim, 0);
|
||||
|
||||
if (!meteorChunkStats.containsKey(dim))
|
||||
meteorChunkStats.put(dim, 0);
|
||||
|
||||
meteorChunkStats.put(dim, meteorChunkStats.get(dim) + 1);
|
||||
meteorGenStats.put(meteorGenStats.get(dim), meteorGenStats.get(dim) + Generator.generateMeteor(duraniteOre
|
||||
.getDefaultState(), blockMeteorite.getDefaultState(), random, x, z, world, DURANITE_VAL, 6, 16, 112));
|
||||
Generator.generateOreDescending(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA
|
||||
.getDefaultState()), basaltBlock.getDefaultState(), random, x, z, world, BASALT_VAL, 0, 64);
|
||||
Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), eezoOre.getDefaultState(),
|
||||
random, x, z, world, EEZO_VAL, 0, 10);
|
||||
Generator.generateOreStoneVariant(karmesineOre.getDefaultState(), BlockStone.EnumType.ANDESITE, random, x, z,
|
||||
world, KARMESINE_VAL);
|
||||
Generator.generateOreStoneVariant(oviumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z,
|
||||
world, OVIUM_VAL);
|
||||
Generator.generateOreStoneVariant(jauxumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
|
||||
world, JAUXUM_VAL);
|
||||
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
|
||||
VIBRANIUM_VAL, 100, 0, 64, 2, 6, newArrayList(Biomes.DESERT_HILLS, Biomes.EXTREME_HILLS, Biomes
|
||||
.EXTREME_HILLS_EDGE, Biomes.EXTREME_HILLS_WITH_TREES, Biomes.DESERT));
|
||||
Generator.generateOre(dilithiumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
|
||||
DILITHIUM_VAL, 100, 0, 64, 2, 8, newArrayList(Biomes.DESERT, Biomes.DESERT_HILLS, Biomes
|
||||
.MUTATED_DESERT, Biomes.OCEAN, Biomes.DEEP_OCEAN, Biomes.FROZEN_OCEAN, Biomes.BEACH));
|
||||
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world, 1,
|
||||
15, 0, 128, 1, 5, null);
|
||||
if (ironGen) {
|
||||
Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z,
|
||||
world, IRON_VAL, 0, 32, 2, 8);
|
||||
}
|
||||
|
||||
if (meteorChunkStats.get(dim) > 100 && meteorGenStats.get(dim) == 0) {
|
||||
blackList.add(dim);
|
||||
TAIGA.logger.info(String.format("Detected void dimension, adding to blacklist: %d", dim));
|
||||
}
|
||||
}
|
||||
|
||||
private void world(Random random, int x, int z, World world) {
|
||||
Generator.generateMeteor(duraniteOre.getDefaultState(), blockMeteorite.getDefaultState(), random, x, z,
|
||||
world, DURANITE_VAL, 6, 16, 112);
|
||||
Generator.generateOreDescending(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA
|
||||
.getDefaultState()), basaltBlock.getDefaultState(), random, x, z, world, BASALT_VAL, 0, 64);
|
||||
Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), eezoOre.getDefaultState(),
|
||||
random, x, z, world, EEZO_VAL, 0, 10);
|
||||
Generator.generateOreStoneVariant(karmesineOre.getDefaultState(), BlockStone.EnumType.ANDESITE, random, x, z,
|
||||
world, KARMESINE_VAL);
|
||||
Generator.generateOreStoneVariant(oviumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z,
|
||||
world, OVIUM_VAL);
|
||||
Generator.generateOreStoneVariant(jauxumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
|
||||
world, JAUXUM_VAL);
|
||||
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
|
||||
VIBRANIUM_VAL, 100, 0, 64, 2, 6, newArrayList(Biomes.DESERT_HILLS, Biomes.EXTREME_HILLS, Biomes
|
||||
.EXTREME_HILLS_EDGE, Biomes.EXTREME_HILLS_WITH_TREES, Biomes.DESERT));
|
||||
Generator.generateOre(dilithiumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
|
||||
DILITHIUM_VAL, 100, 0, 64, 2, 8, newArrayList(Biomes.DESERT, Biomes.DESERT_HILLS, Biomes
|
||||
.MUTATED_DESERT, Biomes.OCEAN, Biomes.DEEP_OCEAN, Biomes.FROZEN_OCEAN, Biomes.BEACH));
|
||||
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world, 1,
|
||||
15, 0, 128, 1, 5, null);
|
||||
if (ironGen) {
|
||||
Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z,
|
||||
world, IRON_VAL, 0, 32, 2, 8);
|
||||
}
|
||||
}
|
||||
|
||||
private void end(Random random, int x, int z, World world) {
|
||||
Generator.generateCube(true, uruOre.getDefaultState(), blockObsidiorite.getDefaultState(), random, x, z,
|
||||
world, URU_VAL, 2, 0, 96, 3);
|
||||
if (endGen)
|
||||
Generator.generateOre(Blocks.AIR.getDefaultState(), Blocks.END_STONE.getDefaultState(), null, null,
|
||||
random, x, z, world, 1, 100, 3, 64, 3, 8, null);
|
||||
Generator.generateOre(auroriumOre.getDefaultState(), Blocks.END_STONE.getDefaultState(), random, x, z, world,
|
||||
AURORIUM_VAL, 32, 48, 2, 4);
|
||||
Generator.generateOre(palladiumOre.getDefaultState(), Blocks.END_STONE.getDefaultState(), random, x, z,
|
||||
world, PALLADIUM_VAL, 48, 64, 2, 4);
|
||||
Generator.generateOreBottom(Blocks.END_STONE.getDefaultState(), abyssumOre.getDefaultState(), random, x, z,
|
||||
world, ABYSSUM_VAL, 4, 64);
|
||||
}
|
||||
|
||||
/** Spawns nether/end ores in the Overworld if the server has allow-nether set to 0 WIP: needs alternate textures */
|
||||
private void worldNetherless(Random random, int x, int z, World world) {
|
||||
Generator.generateCube(true, uruOre.getDefaultState(), blockObsidiorite.getDefaultState(), random, x, z,
|
||||
world, URU_VAL, 2, 0, 96, 3);
|
||||
Generator.generateOre(auroriumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z, world,
|
||||
AURORIUM_VAL, 8, 48, 2, 4);
|
||||
Generator.generateOre(palladiumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z,
|
||||
world, PALLADIUM_VAL, 12, 64, 2, 4);
|
||||
Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), abyssumOre.getDefaultState(), random, x, z,
|
||||
world, ABYSSUM_VAL, 4, 6);
|
||||
Generator.generateOre(tiberiumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
|
||||
world, TIBERIUM_VAL, 16, 128, 10, 35);
|
||||
Generator.generateOre(prometheumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
|
||||
world, PROMETHEUM_VAL, 0, 32, 2, 4);
|
||||
Generator.generateOre(valyriumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
|
||||
world, VALYRIUM_VAL, 0, 128, 2, 4);
|
||||
Generator.generateOre(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA.getDefaultState()),
|
||||
osramOre.getDefaultState(), random, x, z, world, OSRAM_VAL, 0, 64, 15);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator,
|
||||
IChunkProvider chunkProvider) {
|
||||
int x = chunkX * 16;
|
||||
int z = chunkZ * 16;
|
||||
switch (world.provider.getDimension()) {
|
||||
case -1:
|
||||
nether(random, x, z, world);
|
||||
break;
|
||||
case 0:
|
||||
world(random, x, z, world);
|
||||
if(!net.minecraft.server.MinecraftServer.getAllowNether()) {
|
||||
|
||||
/** worldNetherless generates nether/end ores in overworld */
|
||||
worldNetherless(random, x, z, world);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
end(random, x, z, world);
|
||||
break;
|
||||
default:
|
||||
if (!blackList.contains(world.provider.getDimension()))
|
||||
other(random, x, z, world);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,37 +1,31 @@
|
||||
package com.sosnitzka.taiga.world;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.sosnitzka.taiga.util.StateMatcher;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.block.state.pattern.BlockMatcher;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.gen.feature.WorldGenMinable;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.Random;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class ZWorldGenMinable extends WorldGenMinable {
|
||||
public class WorldGenMinable extends net.minecraft.world.gen.feature.WorldGenMinable {
|
||||
private final IBlockState oreBlock;
|
||||
/**
|
||||
* The number of com.sosnitzka.taiga.blocks to generate.
|
||||
*/
|
||||
|
||||
// The number of com.sosnitzka.taiga.blocks to generate.
|
||||
private final int numberOfBlocks;
|
||||
private final Predicate<IBlockState> predicate;
|
||||
|
||||
public ZWorldGenMinable(IBlockState state, int blockCount) {
|
||||
this(state, blockCount, BlockMatcher.forBlock(Blocks.STONE));
|
||||
}
|
||||
|
||||
public ZWorldGenMinable(IBlockState state, int blockCount, Predicate<IBlockState> predicate) {
|
||||
super(state, blockCount, predicate);
|
||||
public WorldGenMinable(IBlockState state, int blockCount, Predicate<IBlockState> predicate) {
|
||||
super(state, blockCount, predicate::test);
|
||||
this.oreBlock = state;
|
||||
this.numberOfBlocks = blockCount;
|
||||
this.predicate = predicate;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ParametersAreNonnullByDefault
|
||||
public boolean generate(World worldIn, Random rand, BlockPos position) {
|
||||
float f = rand.nextFloat() * (float) Math.PI;
|
||||
double d0 = (double) ((float) (position.getX() + 8) + MathHelper.sin(f) * (float) this.numberOfBlocks / 8.0F);
|
||||
@@ -49,12 +43,12 @@ public class ZWorldGenMinable extends WorldGenMinable {
|
||||
double d9 = rand.nextDouble() * (double) this.numberOfBlocks / 16.0D;
|
||||
double d10 = (double) (MathHelper.sin((float) Math.PI * f1) + 1.0F) * d9 + 1.0D;
|
||||
double d11 = (double) (MathHelper.sin((float) Math.PI * f1) + 1.0F) * d9 + 1.0D;
|
||||
int j = MathHelper.floor_double(d6 - d10 / 2.0D);
|
||||
int k = MathHelper.floor_double(d7 - d11 / 2.0D);
|
||||
int l = MathHelper.floor_double(d8 - d10 / 2.0D);
|
||||
int i1 = MathHelper.floor_double(d6 + d10 / 2.0D);
|
||||
int j1 = MathHelper.floor_double(d7 + d11 / 2.0D);
|
||||
int k1 = MathHelper.floor_double(d8 + d10 / 2.0D);
|
||||
int j = MathHelper.floor(d6 - d10 / 2.0D);
|
||||
int k = MathHelper.floor(d7 - d11 / 2.0D);
|
||||
int l = MathHelper.floor(d8 - d10 / 2.0D);
|
||||
int i1 = MathHelper.floor(d6 + d10 / 2.0D);
|
||||
int j1 = MathHelper.floor(d7 + d11 / 2.0D);
|
||||
int k1 = MathHelper.floor(d8 + d10 / 2.0D);
|
||||
|
||||
for (int l1 = j; l1 <= i1; ++l1) {
|
||||
double d12 = ((double) l1 + 0.5D - d6) / (d10 / 2.0D);
|
@@ -1,67 +0,0 @@
|
||||
package com.sosnitzka.taiga.world;
|
||||
|
||||
import com.sosnitzka.taiga.util.Generator;
|
||||
import net.minecraft.block.BlockStone;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.chunk.IChunkGenerator;
|
||||
import net.minecraft.world.chunk.IChunkProvider;
|
||||
import net.minecraftforge.fml.common.IWorldGenerator;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import static com.sosnitzka.taiga.Blocks.*;
|
||||
|
||||
public class ZWorldGen implements IWorldGenerator {
|
||||
private void nether(Random random, int x, int z, World world) {
|
||||
Generator.generateNetherOre(adamantiteOre.getDefaultState(), random, x, z, world, 25, 1, 32, 2, 5);
|
||||
Generator.generateNetherOre(tiberiumOre.getDefaultState(), random, x, z, world, 60, 1, 128, 2, 7);
|
||||
Generator.generateNetherOre(palladiumOre.getDefaultState(), random, x, z, world, 21, 32, 64, 2, 5);
|
||||
Generator.generateOre(prometheumOre.getDefaultState(), random, x, z, world, 21, 48, 64, 2, 4);
|
||||
}
|
||||
|
||||
private void world(Random random, int x, int z, World world) {
|
||||
Generator.generateOre(slagironOre.getDefaultState(), random, x, z, world, 40, 8, 96, 5, 16);
|
||||
Generator.generateOre(slaggoldOre.getDefaultState(), random, x, z, world, 20, 8, 48, 5, 9);
|
||||
Generator.generateOre(ligniteOre.getDefaultState(), random, x, z, world, 40, 8, 96, 5, 15);
|
||||
Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), random, x, z, world, 40, 8, 96, 2, 14);
|
||||
Generator.generateOre(basalt.getDefaultState(), Blocks.LAVA.getDefaultState(), random, x, z, world, 100, 8, 24, 2, 5);
|
||||
Generator.generateOre(rottenGround.getDefaultState(), Blocks.DIRT.getDefaultState(), random, x, z, world, 25, 50, 70, 2, 15);
|
||||
|
||||
Generator.generateOre(vibraniumOre.getDefaultState(), random, x, z, world, 18, 48, 64, 2, 4);
|
||||
Generator.generateOre(karmesineOre.getDefaultState(), random, x, z, world, 30, 16, 48, 2, 5);
|
||||
Generator.generateOre(bismuthOre.getDefaultState(), random, x, z, world, 50, 50, 130, 2, 4);
|
||||
Generator.generateOre(mythrilOre.getDefaultState(), random, x, z, world, 18, 16, 32, 2, 4);
|
||||
Generator.generateOre(meteoriteOre.getDefaultState(), random, x, z, world, 12, 0, 32, 2, 10);
|
||||
Generator.generateOre(mindoriteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.DIORITE, random, x, z, world, 200, 16, 96, 2, 4);
|
||||
Generator.generateOre(arcaniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.GRANITE, random, x, z, world, 200, 16, 96, 2, 4);
|
||||
Generator.generateOre(eterniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.ANDESITE, random, x, z, world, 200, 16, 96, 2, 4);
|
||||
}
|
||||
|
||||
private void end(Random random, int x, int z, World world) {
|
||||
|
||||
Generator.generateEndOre(rubiumOre.getDefaultState(), random, x, z, world, 16, 10, 35, 2, 6);
|
||||
Generator.generateEndOre(ignititeOre.getDefaultState(), random, x, z, world, 16, 20, 45, 2, 6);
|
||||
Generator.generateEndOre(violiumOre.getDefaultState(), random, x, z, world, 16, 30, 55, 2, 6);
|
||||
Generator.generateEndOre(titaniteOre.getDefaultState(), random, x, z, world, 16, 40, 65, 2, 6);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator,
|
||||
IChunkProvider chunkProvider) {
|
||||
int x = chunkX * 16;
|
||||
int z = chunkZ * 16;
|
||||
switch (world.provider.getDimension()) {
|
||||
case -1:
|
||||
nether(random, x, z, world);
|
||||
break;
|
||||
case 0:
|
||||
world(random, x, z, world);
|
||||
break;
|
||||
case 1:
|
||||
end(random, x, z, world);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
171
src/main/java/sosnitzka/taiga/world/WorldGen.java
Normal file
171
src/main/java/sosnitzka/taiga/world/WorldGen.java
Normal file
@@ -0,0 +1,171 @@
|
||||
package com.sosnitzka.taiga.world;
|
||||
|
||||
|
||||
import com.sosnitzka.taiga.TAIGA;
|
||||
import com.sosnitzka.taiga.util.Generator;
|
||||
import net.minecraft.block.BlockStone;
|
||||
import net.minecraft.init.Biomes;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.chunk.IChunkProvider;
|
||||
import net.minecraft.world.gen.IChunkGenerator;
|
||||
import net.minecraftforge.fml.common.IWorldGenerator;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static com.google.common.collect.Lists.newArrayList;
|
||||
import static com.sosnitzka.taiga.Blocks.*;
|
||||
import static com.sosnitzka.taiga.TAIGAConfiguration.*;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class WorldGen implements IWorldGenerator {
|
||||
private static WorldGen INSTANCE;
|
||||
private final List<Integer> blackList = new ArrayList();
|
||||
private final Map<Integer, Integer> meteorGenStats = new HashMap();
|
||||
private final Map<Integer, Integer> meteorChunkStats = new HashMap();
|
||||
|
||||
public static WorldGen getInstance() {
|
||||
if (INSTANCE == null)
|
||||
INSTANCE = new WorldGen();
|
||||
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
private void nether(Random random, int x, int z, World world) {
|
||||
Generator.generateOre(tiberiumOre.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), random, x, z,
|
||||
world, TIBERIUM_VAL, 32, 128, 10, 35);
|
||||
Generator.generateOre(prometheumOre.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), random, x, z,
|
||||
world, PROMETHEUM_VAL, 0, 32, 2, 4);
|
||||
Generator.generateOre(valyriumOre.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), random, x, z,
|
||||
world, VALYRIUM_VAL, 0, 128, 2, 4);
|
||||
Generator.generateOre(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA.getDefaultState()),
|
||||
osramOre.getDefaultState(), random, x, z, world, OSRAM_VAL, 0, 64, 15);
|
||||
}
|
||||
|
||||
private void other(Random random, int x, int z, World world) {
|
||||
int dim = world.provider.getDimension();
|
||||
if (!meteorGenStats.containsKey(dim))
|
||||
meteorGenStats.put(dim, 0);
|
||||
|
||||
if (!meteorChunkStats.containsKey(dim))
|
||||
meteorChunkStats.put(dim, 0);
|
||||
|
||||
meteorChunkStats.put(dim, meteorChunkStats.get(dim) + 1);
|
||||
meteorGenStats.put(meteorGenStats.get(dim), meteorGenStats.get(dim) + Generator.generateMeteor(duraniteOre
|
||||
.getDefaultState(), blockMeteorite.getDefaultState(), random, x, z, world, DURANITE_VAL, 6, 16, 112));
|
||||
Generator.generateOreDescending(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA
|
||||
.getDefaultState()), basaltBlock.getDefaultState(), random, x, z, world, BASALT_VAL, 0, 64);
|
||||
Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), eezoOre.getDefaultState(),
|
||||
random, x, z, world, EEZO_VAL, 0, 10);
|
||||
Generator.generateOreStoneVariant(karmesineOre.getDefaultState(), BlockStone.EnumType.ANDESITE, random, x, z,
|
||||
world, KARMESINE_VAL);
|
||||
Generator.generateOreStoneVariant(oviumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z,
|
||||
world, OVIUM_VAL);
|
||||
Generator.generateOreStoneVariant(jauxumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
|
||||
world, JAUXUM_VAL);
|
||||
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
|
||||
VIBRANIUM_VAL, 100, 0, 64, 2, 6, newArrayList(Biomes.DESERT_HILLS, Biomes.EXTREME_HILLS, Biomes
|
||||
.EXTREME_HILLS_EDGE, Biomes.EXTREME_HILLS_WITH_TREES, Biomes.DESERT));
|
||||
Generator.generateOre(dilithiumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
|
||||
DILITHIUM_VAL, 100, 0, 64, 2, 8, newArrayList(Biomes.DESERT, Biomes.DESERT_HILLS, Biomes
|
||||
.MUTATED_DESERT, Biomes.OCEAN, Biomes.DEEP_OCEAN, Biomes.FROZEN_OCEAN, Biomes.BEACH));
|
||||
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world, 1,
|
||||
15, 0, 128, 1, 5, null);
|
||||
if (ironGen) {
|
||||
Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z,
|
||||
world, IRON_VAL, 0, 32, 2, 8);
|
||||
}
|
||||
|
||||
if (meteorChunkStats.get(dim) > 100 && meteorGenStats.get(dim) == 0) {
|
||||
blackList.add(dim);
|
||||
TAIGA.logger.info(String.format("Detected void dimension, adding to blacklist: %d", dim));
|
||||
}
|
||||
}
|
||||
|
||||
private void world(Random random, int x, int z, World world) {
|
||||
Generator.generateMeteor(duraniteOre.getDefaultState(), blockMeteorite.getDefaultState(), random, x, z,
|
||||
world, DURANITE_VAL, 6, 16, 112);
|
||||
Generator.generateOreDescending(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA
|
||||
.getDefaultState()), basaltBlock.getDefaultState(), random, x, z, world, BASALT_VAL, 0, 64);
|
||||
Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), eezoOre.getDefaultState(),
|
||||
random, x, z, world, EEZO_VAL, 0, 10);
|
||||
Generator.generateOreStoneVariant(karmesineOre.getDefaultState(), BlockStone.EnumType.ANDESITE, random, x, z,
|
||||
world, KARMESINE_VAL);
|
||||
Generator.generateOreStoneVariant(oviumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z,
|
||||
world, OVIUM_VAL);
|
||||
Generator.generateOreStoneVariant(jauxumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
|
||||
world, JAUXUM_VAL);
|
||||
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
|
||||
VIBRANIUM_VAL, 100, 0, 64, 2, 6, newArrayList(Biomes.DESERT_HILLS, Biomes.EXTREME_HILLS, Biomes
|
||||
.EXTREME_HILLS_EDGE, Biomes.EXTREME_HILLS_WITH_TREES, Biomes.DESERT));
|
||||
Generator.generateOre(dilithiumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
|
||||
DILITHIUM_VAL, 100, 0, 64, 2, 8, newArrayList(Biomes.DESERT, Biomes.DESERT_HILLS, Biomes
|
||||
.MUTATED_DESERT, Biomes.OCEAN, Biomes.DEEP_OCEAN, Biomes.FROZEN_OCEAN, Biomes.BEACH));
|
||||
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world, 1,
|
||||
15, 0, 128, 1, 5, null);
|
||||
if (ironGen) {
|
||||
Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z,
|
||||
world, IRON_VAL, 0, 32, 2, 8);
|
||||
}
|
||||
}
|
||||
|
||||
private void end(Random random, int x, int z, World world) {
|
||||
Generator.generateCube(true, uruOre.getDefaultState(), blockObsidiorite.getDefaultState(), random, x, z,
|
||||
world, URU_VAL, 2, 0, 96, 3);
|
||||
if (endGen)
|
||||
Generator.generateOre(Blocks.AIR.getDefaultState(), Blocks.END_STONE.getDefaultState(), null, null,
|
||||
random, x, z, world, 1, 100, 3, 64, 3, 8, null);
|
||||
Generator.generateOre(auroriumOre.getDefaultState(), Blocks.END_STONE.getDefaultState(), random, x, z, world,
|
||||
AURORIUM_VAL, 32, 48, 2, 4);
|
||||
Generator.generateOre(palladiumOre.getDefaultState(), Blocks.END_STONE.getDefaultState(), random, x, z,
|
||||
world, PALLADIUM_VAL, 48, 64, 2, 4);
|
||||
Generator.generateOreBottom(Blocks.END_STONE.getDefaultState(), abyssumOre.getDefaultState(), random, x, z,
|
||||
world, ABYSSUM_VAL, 4, 64);
|
||||
}
|
||||
|
||||
/** Spawns nether/end ores in the Overworld if the server has allow-nether set to 0 WIP: needs alternate textures */
|
||||
private void worldNetherless(Random random, int x, int z, World world) {
|
||||
Generator.generateCube(true, uruOre.getDefaultState(), blockObsidiorite.getDefaultState(), random, x, z,
|
||||
world, URU_VAL, 2, 0, 96, 3);
|
||||
Generator.generateOre(auroriumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z, world,
|
||||
AURORIUM_VAL, 8, 48, 2, 4);
|
||||
Generator.generateOre(palladiumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z,
|
||||
world, PALLADIUM_VAL, 12, 64, 2, 4);
|
||||
Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), abyssumOre.getDefaultState(), random, x, z,
|
||||
world, ABYSSUM_VAL, 4, 6);
|
||||
Generator.generateOre(tiberiumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
|
||||
world, TIBERIUM_VAL, 16, 128, 10, 35);
|
||||
Generator.generateOre(prometheumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
|
||||
world, PROMETHEUM_VAL, 0, 32, 2, 4);
|
||||
Generator.generateOre(valyriumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
|
||||
world, VALYRIUM_VAL, 0, 128, 2, 4);
|
||||
Generator.generateOre(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA.getDefaultState()),
|
||||
osramOre.getDefaultState(), random, x, z, world, OSRAM_VAL, 0, 64, 15);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator,
|
||||
IChunkProvider chunkProvider) {
|
||||
int x = chunkX * 16;
|
||||
int z = chunkZ * 16;
|
||||
switch (world.provider.getDimension()) {
|
||||
case -1:
|
||||
nether(random, x, z, world);
|
||||
break;
|
||||
case 0:
|
||||
world(random, x, z, world);
|
||||
if (!net.minecraft.server.MinecraftServer.getAllowNether()) {
|
||||
/** worldNetherless generates nether/end ores in overworld */
|
||||
worldNetherless(random, x, z, world);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
end(random, x, z, world);
|
||||
break;
|
||||
default:
|
||||
if (!blackList.contains(world.provider.getDimension()))
|
||||
other(random, x, z, world);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "minecraft:cube_all",
|
||||
"textures": {
|
||||
"all": "taiga:blocks/block/abyssum"
|
||||
},
|
||||
"transform": "forge:default-block"
|
||||
},
|
||||
"variants": {
|
||||
"normal": [
|
||||
{}
|
||||
],
|
||||
"inventory": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
18
src/main/resources/assets/taiga/blockstates/abyssum_ore.json
Normal file
18
src/main/resources/assets/taiga/blockstates/abyssum_ore.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "minecraft:cube_all",
|
||||
"textures": {
|
||||
"all": "taiga:blocks/ore/abyssum"
|
||||
},
|
||||
"transform": "forge:default-block"
|
||||
},
|
||||
"variants": {
|
||||
"normal": [
|
||||
{}
|
||||
],
|
||||
"inventory": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "minecraft:cube_all",
|
||||
"textures": {
|
||||
"all": "taiga:blocks/block/adamant"
|
||||
},
|
||||
"transform": "forge:default-block"
|
||||
},
|
||||
"variants": {
|
||||
"normal": [
|
||||
{}
|
||||
],
|
||||
"inventory": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:adamantite_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:adamantite_ore"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:aegisalt_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:arcanite_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:arcanite_ore"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +1,18 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "minecraft:cube_all",
|
||||
"textures": {
|
||||
"all": "taiga:blocks/block/astrium"
|
||||
},
|
||||
"transform": "forge:default-block"
|
||||
},
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:astrium_block"
|
||||
}
|
||||
"normal": [
|
||||
{}
|
||||
],
|
||||
"inventory": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "minecraft:cube_all",
|
||||
"textures": {
|
||||
"all": "taiga:blocks/block/aurorium"
|
||||
},
|
||||
"transform": "forge:default-block"
|
||||
},
|
||||
"variants": {
|
||||
"normal": [
|
||||
{}
|
||||
],
|
||||
"inventory": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "minecraft:cube_all",
|
||||
"textures": {
|
||||
"all": "taiga:blocks/ore/aurorium"
|
||||
},
|
||||
"transform": "forge:default-block"
|
||||
},
|
||||
"variants": {
|
||||
"normal": [
|
||||
{}
|
||||
],
|
||||
"inventory": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user