94 Commits

Author SHA1 Message Date
5320a955b9 Update 'README.md' 2020-08-27 16:54:21 +02:00
5dd38a4324 Merge pull request 'Update 'README.md'' (#16) from idlegandalf-patch-1 into master 2020-05-22 15:52:24 +02:00
d936c57e27 Update 'README.md' 2020-05-22 15:52:12 +02:00
18dc97de61 Merge pull request 'Update 'LICENSE'' (#12) from license-change into master 2020-05-04 04:56:47 +02:00
bfec4bc442 Update 'LICENSE' 2020-05-04 04:56:30 +02:00
1e7ab1fc49 Merge pull request 'Spawn Nether/End ores in Overworld if allow-nether is set to FALSE on server' (#7) from Blaster/TAIGA-OV:master into master 2020-04-23 15:18:03 +02:00
Blaster
18543ec172 Formatting fix 2020-02-13 17:21:11 +01:00
Blaster
cda20df501 Formatting fix 2020-02-13 17:16:52 +01:00
Blaster
ada8e9e004 Upload files to 'src/main/java/com/sosnitzka/taiga/world'
Formatting fixes
2020-02-13 17:14:05 +01:00
Blaster
9828cc1a66 Delete 'WorldGen.java' 2020-02-13 17:12:46 +01:00
Blaster
4f852b0d32 src/main/java/com/sosnitzka/taiga/world/ 2020-02-13 17:09:13 +01:00
Blaster
c509b4cdd9 Upload files to 'src/main/java/com/sosnitzka/taiga/world'
Reupload
2020-02-01 23:58:59 +01:00
Blaster
fd80efa354 Upload files to 'src/main/java/com/sosnitzka/taiga/world'
Edited source as requested
2019-12-20 04:03:43 +01:00
Blaster
5ff045ecac Upload files to 'src/main/java/com/sosnitzka/taiga/world' 2019-12-11 20:07:32 +01:00
4c4268aa3d Update 'README.md' 2019-07-26 00:38:23 +02:00
abdc6da21d moved harvest level translation to client proxy 2018-10-10 15:56:22 +02:00
1ff00daf4b updated forge, tconstuct 2018-10-08 03:38:27 +02:00
804a02d3fd prevent TraitCatcher from picking up mobs killed without a weapon with the trait, fixes #177 2018-10-08 03:06:54 +02:00
adf19453c5 updated gradle wrapper 2018-10-08 02:27:26 +02:00
7e4c4baf05 fixed #174: added missing safety factor to division
Signed-off-by: Giovanni Harting <539@idlegandalf.com>
2018-08-26 00:26:43 +02:00
809c10ef51 Merge branch 'master' into 'master'
Add ja_JP.lang

See merge request TeamFRM/TAIGA!169
2018-06-30 13:05:33 +02:00
koh
058ec404a2 Add ja_JP.lang 2018-06-30 09:33:53 +02:00
2227b0017e made naming of Unstable/Instable trait consistent
added translating options for harvest levels

Signed-off-by: Giovanni Harting <539@idlegandalf.com>
2018-06-28 17:03:24 +02:00
05ebd28180 Update README.md 2018-06-17 14:16:33 +02:00
468a5e4aac Update README.md 2018-06-15 21:14:16 +02:00
e98fc61144 general code cleanup
removed some unused classes

Signed-off-by: Giovanni Harting <539@idlegandalf.com>
2018-06-12 18:12:36 +02:00
f4befa63c9 fixed some typos
Signed-off-by: Giovanni Harting <539@idlegandalf.com>
2018-06-12 10:34:55 +02:00
ddb56b6043 added modifier key to right click actions of traits, now requires default LCONTROL to be pressed. fixes #112
Signed-off-by: Giovanni Harting <539@idlegandalf.com>
2018-06-12 10:23:41 +02:00
d585d781f6 fixed book; added zh_TW lang thanks to CLOVERsquare 2018-06-11 07:59:49 +02:00
556d79156b fixed #157
removed some not used traits

Signed-off-by: Giovanni Harting <539@idlegandalf.com>
2018-06-11 07:35:45 +02:00
冷风
15e62a8530 Update zh_CN.lang (#159)
* Update zh_CN.lang

* Update abyssum.json

* Update aurorium.json

* Update jauxum.json

* Update karmesine.json

* Update obsidiorite.json

* Update ovium.json

* Update uru.json

* Update zh_CN.lang

* Update zh_CN.lang

* Update zh_CN.lang

* Update abyssum.json

* Update prometheum.json
2018-02-12 01:54:28 +01:00
5a111ba290 fixed #160: tooltips preventing server to start 2018-02-12 01:51:22 +01:00
冷风
b98cc5284c Update zh_CN.lang (#158)
Updated zh_CN language files (+ book)
2018-02-10 05:36:49 +01:00
9f1b4e066c added name & desc for trait crushing and leveled 2018-02-09 14:25:46 +01:00
25aee96d6d use correct oreDict prefix for dilithium, fixed #124 2018-02-08 19:57:12 +01:00
ee2fa56eca removed not used iron_nugget from oreDict, fixing #151 2018-02-08 19:50:52 +01:00
17ae55c359 1.12.2; not well tested; book integration still broken 2018-02-08 19:37:21 +01:00
1c07cfc5ee Revert "Started with rework of alloying process and balancing of levels of natural ores." 2017-09-23 15:22:50 +02:00
076a6d6f87 fixed #149, some more cleanup 2017-07-09 17:55:52 +02:00
Jason Spradlin
b063257977 Fixes #147 - Eezo ingot now converts to 9 nuggets (#148)
Conversion previously listed as Eezo Block = 9 Ingots, 1 Ingot = 9 *Ingots*.

Now listed as  Eezo Block = 9 Ingots, 1 Ingot = 9 *nuggets*
2017-07-08 22:22:19 +02:00
TechieJunk
5dca654237 Fix for Tiberium melting into Dilithium. (#145) 2017-07-08 22:22:10 +02:00
2e51738c45 first 1.11.1 attempt 2017-07-08 22:15:11 +02:00
Robert Sosnitzka
4b256caff9 Started with rework of alloying process and balancing of levels of natural ores. 2017-05-11 23:04:36 +02:00
Bill Parrott
b874a41abb fix divide by zero error (#121) 2017-02-02 16:06:23 +01:00
Robert Sosnitzka
719d326f7e Fixed something 2017-01-19 22:13:20 +01:00
8fbef49b10 separated overworld and others dimensions worldgen 2017-01-16 19:27:33 +01:00
c9f6d820b7 added void detection in worldgen 2017-01-16 19:13:21 +01:00
Robert Sosnitzka
d2cd916be7 Merge remote-tracking branch 'origin/master' 2017-01-15 23:38:07 +01:00
Robert Sosnitzka
26ab0139c0 Added missing icon, added Trait Mutate. 2017-01-15 23:37:38 +01:00
ab7c7fc2de updated forge and mappings, removed some images not in use 2017-01-14 09:09:33 +01:00
Robert Sosnitzka
251e1d9d78 Fixed pissble crash by adding missing texture. Changed texture path for book images. 2017-01-14 08:20:27 +01:00
e24a8390ec loads of spelling improvments (didn't catch all) 2017-01-14 08:07:40 +01:00
Robert Sosnitzka
f65114d333 Changed ambiguous information of config 2017-01-14 00:56:49 +01:00
Robert Sosnitzka
450b8b0899 Added Trait Crushing, changed old assignment, fixed two variables to prevent annoyance 2017-01-14 00:54:57 +01:00
Robert Sosnitzka
8145002326 Added Crafting recipes for blocks, ingots and nuggets 2017-01-13 19:30:14 +01:00
Robert Sosnitzka
0d5df06eb0 Added two missing german translation files 2017-01-13 18:49:15 +01:00
Robert Sosnitzka
4db215fc65 Finished creation of book pages for Ores. Other pages will come (e.g. about fuels / temperatures). Added german translation. 2017-01-12 22:57:48 +01:00
Robert Sosnitzka
933a640144 Added pages for aurorium, duranite, jauxum, karmesine, ovium, palladium, prometheum, tiberium, valyrium and vibranium. Changed two generation default variables for balancing. 2017-01-10 23:45:51 +01:00
Robert Sosnitzka
bb7a50bebb Reformatted tinker page for type ore to get coloured titles, and reduced the size of the icon. 2017-01-09 23:33:48 +01:00
Robert Sosnitzka
39976d1319 Moved tinker page to client to prevent for server crash 2017-01-09 22:16:01 +01:00
Robert Sosnitzka
9afe6b1b99 Some fixes for page-template of tinker book 2017-01-08 23:41:01 +01:00
4f9a734581 forgot to fix it for the end as well -.- 2017-01-05 05:41:39 +01:00
87e965f505 fixed ores not generating in the nether #91 2017-01-05 05:04:48 +01:00
f7b9c7f25a reformat 2017-01-04 04:30:22 +01:00
805eb1f5f3 Break out of meteor generation if we are in a void dim 92; Added a file type to gitignore 2017-01-04 04:02:11 +01:00
2418918ebd refactored some config related parts 2017-01-04 03:24:34 +01:00
Robert Sosnitzka
0eb536e16b Fixed broken book page. Added examples for showing up in the book. Todo: Create a separate template! 2017-01-03 00:05:03 +01:00
Robert Sosnitzka
18bd88e7f9 Added Dilithium Ore and assigned crystals. Added some Book pages as a test (need to be fixed before next release).
Removed deprecated stuff.
Removed 2016, Added 2017.
2017-01-01 21:39:02 +01:00
Giovanni Harting
6b1a9d4b27 added some badges to readme 2017-01-01 03:57:58 +01:00
1c4458481e be sure dropped xp is positive/null, fixes #89 2017-01-01 03:45:39 +01:00
2fd2bcce06 Added png version of logo and use it in README 2016-12-27 23:21:48 +01:00
Giovanni Harting
24bfe2e24d fixed readme 2016-12-27 23:18:37 +01:00
Giovanni Harting
26197a5558 add svg to readme 2016-12-27 23:16:14 +01:00
Robert Sosnitzka
92291be4ca Added SVG Logo 2016-12-27 23:07:09 +01:00
Robert Sosnitzka
115e349219 Update README.md 2016-12-26 23:55:17 +01:00
Robert Sosnitzka
f8916c3716 Update README.md 2016-12-26 23:53:17 +01:00
ac15fd9da1 first progress on book integration, need to introduce a custom json structure 2016-12-25 23:16:58 +01:00
176e39f5e6 fixed NPE #86 2016-12-25 16:55:57 +01:00
Robert Sosnitzka
eabc1ffe8c Added missing json files, fixed some coloring and spelling issues 2016-12-24 13:39:55 +01:00
Robert Sosnitzka
e539e506c3 Added missing png images files 2016-12-24 13:07:15 +01:00
Robert Sosnitzka
613850e2b5 Fixed some names and wrote more clear descriptions. Fixed 2 Traits with possible NPE 2016-12-23 01:21:30 +01:00
Robert Sosnitzka
1c34ded555 Resolved a possible arithmetic exception. Divided by zero. 2016-12-22 20:39:28 +01:00
7adec10002 fixed possible NPE 2016-12-22 15:54:45 +01:00
Robert Sosnitzka
36c425e143 Fixed a Trait where no enchantment effect has been shown after restart. Added beserk trait. 2016-12-22 14:54:05 +01:00
Robert Sosnitzka
c0a5d56278 Created Trait SuperHeavy, rebalanced material stats for lore. 2016-12-19 14:53:08 +01:00
Robert Sosnitzka
224c3bd91f Merge pull request #78 from 3TUSK/patch-1
Update zh_CN.lang
2016-12-18 14:11:59 +01:00
Robert Sosnitzka
e167f0da5b Balanced out block hardness. It's tinkers alloying addon, not tinkers annoying addon!
Fixed some language files and fluid models.
2016-12-18 14:10:03 +01:00
6f906428d0 fixed a potential NPE 2016-12-17 14:20:45 +01:00
Robert Sosnitzka
f6521cdddf Reimplemented different ore-types for Grantie, Diorite, Andensite. Added material, items and other stuff for each ore. Oregen rebalanced. Fixed Generator for Oregen. 2016-12-17 13:28:08 +01:00
Urey. Xue
fdd34ae097 Update zh_CN.lang 2016-12-16 23:26:35 -05:00
Robert Sosnitzka
851eaabb16 small generator fix, not ready yet 2016-12-15 02:11:19 +01:00
Robert Sosnitzka
29576086f8 Some generator changes 2016-12-14 23:09:26 +01:00
Robert Sosnitzka
e104803854 Added missing names and two missing textures for liquids. Reworked Configuration, did not work - still need to be fixed. Changed some Temperatures, added two additional liquids for melting. 2016-12-14 02:10:56 +01:00
1b908988be fixed some crash with WorldSaveData 2016-12-09 18:58:09 +01:00
241 changed files with 5416 additions and 1914 deletions

1
.gitignore vendored
View File

@@ -172,6 +172,7 @@ gradle-app.setting
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties
*.hprof
# Forge
run/

View File

View File

@@ -1,8 +1,12 @@
![TAIGA IMAGE](http://www.sosnitzka.com/alt/files/taiga256.jpg)
> This project needs new maintainers, see #15.
Tinkers Alloying Addon(TAIGA)
![TAIGA IMAGE](https://git.harting.dev/TAIGA/TAIGA/raw/branch/master/taiga.png)
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)
@@ -20,13 +24,9 @@ Download
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
Latest tests done with:
* [Tinkers Construct 2.5.5](http://minecraft.curseforge.com/projects/tinkers-construct/files)
* [Minecraft Forge 12.18.2.2107](http://files.minecraftforge.net/)
What's going on?
===
@@ -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.

View File

@@ -10,8 +10,8 @@ buildscript {
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
classpath 'gradle.plugin.com.matthewprenger:CurseGradle:1.0.8'
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
classpath 'gradle.plugin.com.matthewprenger:CurseGradle:1.1.0'
}
}
@@ -35,7 +35,7 @@ repositories {
group = "com.sosnitzka" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "taiga"
sourceCompatibility = JavaVersion.VERSION_1_7
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
@@ -50,7 +50,6 @@ task buildInfo {
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()
@@ -64,9 +63,9 @@ task buildInfo {
version = project.buildInfo.revision
minecraft {
version = "1.10.2-12.18.2.2147"
version = "1.12.2-14.23.5.2768"
runDir = "run"
mappings = "snapshot_20161101"
mappings = "snapshot_20170801"
replace '@VERSION@', project.version
}
@@ -75,15 +74,9 @@ 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-1.1.+:deobf"
//Old: deobfCompile "slimeknights.mantle:Mantle:1.9-0.10.0.jenkins132:deobf"
deobfCompile "mezz.jei:jei_1.10.2:3.+"
deobfCompile "slimeknights:TConstruct:1.10.2-2.6.+:deobf"
//compile files('libs/TConstruct-1.9-2.3.1.DEV.1d4c1de-deobf.jar')
//compile group: 'com.google.guava', name: 'guava', version: '20.0'
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 {
@@ -140,7 +133,7 @@ curseforge {
}
relations {
requiredLibrary 'tinkers-construct'
requiredDependency 'tinkers-construct'
}
}
}

Binary file not shown.

View File

@@ -1,6 +1,5 @@
#Wed Jul 20 03:42:23 CEST 2016
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.13-bin.zip

26
gradlew vendored
View File

@@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
##############################################################################
##
@@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS=""
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
warn () {
echo "$*"
}
die ( ) {
die () {
echo
echo "$*"
echo
@@ -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" "$@"

6
gradlew.bat vendored
View File

@@ -49,7 +49,6 @@ goto fail
@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

View File

@@ -13,31 +13,63 @@ public class Alloys {
* Registers alloying in the smeltery
*/
public static void register() {
registerTinkerAlloy(new FluidStack(triberiumFluid, 1), new FluidStack(tiberiumFluid, 5), new FluidStack(basaltFluid, 1));
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(karmesineFluid, 2));
registerTinkerAlloy(new FluidStack(ignitzFluid, 2), new FluidStack(TinkerFluids.ardite, 2), new FluidStack(karmesineFluid, 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(karmesineFluid, 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(karmesineFluid, 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(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));
}
}

View File

@@ -5,9 +5,12 @@ 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.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;
@@ -21,61 +24,92 @@ import static slimeknights.tconstruct.library.utils.HarvestLevels.*;
public class Blocks {
// blocks and ores spawned via worldgen
public static Block basaltBlock = new BasicBlock("basalt_block", Material.ROCK, 45.0f, 35.0f, DIAMOND, PREFIX_BLOCK);
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 auroriumOre = new BasicBlock("aurorium_ore", Material.ROCK, 13.0f, 12f, COBALT, 0.2f, PREFIX_ORE);
public static Block prometheumOre = new BasicBlock("prometheum_ore", Material.ROCK, 35.0f, 12f, DURANITE, 0.4f, PREFIX_ORE);
public static Block duraniteOre = new BasicBlock("duranite_ore", Material.ROCK, 80.0f, 70f, DURANITE, PREFIX_ORE);
public static Block valyriumOre = new BasicBlock("valyrium_ore", Material.ROCK, 60.0f, 50f, VALYRIUM, PREFIX_ORE);
public static Block vibraniumOre = new BasicBlock("vibranium_ore", Material.ROCK, 70.0f, 60f, VIBRANIUM, PREFIX_ORE);
public static Block karmesineOre = new BasicBlock("karmesine_ore", Material.ROCK, 13.0f, 10f, COBALT, PREFIX_ORE);
public static Block palladiumOre = new BasicBlock("palladium_ore", Material.ROCK, 25.0f, 15f, DURANITE, 0.4f, PREFIX_ORE);
public static Block uruOre = new BasicBlock("uru_ore", Material.ROCK, 25.0f, 15f, VALYRIUM, PREFIX_ORE);
public static Block osramOre = new BasicBlock("osram_ore", Material.ROCK, 45.0f, 35.0f, COBALT, PREFIX_ORE);
public static Block eezoOre = new BasicBlock("eezo_ore", Material.ROCK, 45.0f, 35.0f, COBALT, PREFIX_ORE);
public static Block abyssumOre = new BasicBlock("abyssum_ore", Material.ROCK, 45.0f, 35.0f, COBALT, 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);
// Ore Casts
public static Block tiberiumBlock = new BasicBlock("tiberium_block", Material.ROCK, 30.0f, 15f, STONE, 1f, PREFIX_BLOCK);
public static Block auroriumBlock = new BasicBlock("aurorium_block", Material.ROCK, 13.0f, 15f, COBALT, PREFIX_BLOCK);
public static Block prometheumBlock = new BasicBlock("prometheum_block", Material.ROCK, 35.0f, 15f, DURANITE, 0.5f, PREFIX_BLOCK);
public static Block duraniteBlock = new BasicBlock("duranite_block", Material.ROCK, 60.0f, 60f, DURANITE, PREFIX_BLOCK);
public static Block valyriumBlock = new BasicBlock("valyrium_block", Material.ROCK, 70.0f, 70f, VALYRIUM, PREFIX_BLOCK);
public static Block vibraniumBlock = new BasicBlock("vibranium_block", Material.ROCK, 80.0f, 80f, VIBRANIUM, PREFIX_BLOCK);
public static Block karmesineBlock = new BasicBlock("karmesine_block", Material.ROCK, 13.0f, 12f, COBALT, PREFIX_BLOCK);
public static Block palladiumBlock = new BasicBlock("palladium_block", Material.ROCK, 25.0f, 20f, DURANITE, 0.5f, PREFIX_BLOCK);
public static Block uruBlock = new BasicBlock("uru_block", Material.ROCK, 25.0f, 20f, VALYRIUM, PREFIX_BLOCK);
public static Block osramBlock = new BasicBlock("osram_block", Material.ROCK, 13.0f, 12f, COBALT, PREFIX_BLOCK);
public static Block abyssumBlock = new BasicBlock("abyssum_block", Material.ROCK, 13.0f, 12f, COBALT, PREFIX_BLOCK);
public static Block eezoBlock = new BasicBlock("eezo_block", Material.ROCK, 13.0f, 12f, COBALT, 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 triberiumBlock = new BasicBlock("triberium_block", Material.ROCK, 30.0f, 15f, OBSIDIAN, 1f, PREFIX_BLOCK);
public static Block fractumBlock = new BasicBlock("fractum_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block violiumBlock = new BasicBlock("violium_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block proxiiBlock = new BasicBlock("proxii_block", Material.ROCK, 25.0f, 25f, DURANITE, PREFIX_BLOCK);
public static Block tritoniteBlock = new BasicBlock("tritonite_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block ignitzBlock = new BasicBlock("ignitz_block", Material.ROCK, 23.0f, 20f, COBALT, PREFIX_BLOCK);
public static Block imperomiteBlock = new BasicBlock("imperomite_block", Material.ROCK, 25.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, 25.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, 25.0f, 25f, DURANITE, PREFIX_BLOCK);
public static Block nucleumBlock = new BasicBlock("nucleum_block", Material.ROCK, 25.0f, 25f, VALYRIUM, PREFIX_BLOCK);
public static Block lumixBlock = new BasicBlock("lumix_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block seismumBlock = new BasicBlock("seismum_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block niobBlock = new BasicBlock("niob_block", Material.ROCK, 25.0f, 25f, DURANITE, PREFIX_BLOCK);
public static Block yrdeenBlock = new BasicBlock("yrdeen_block", Material.ROCK, 25.0f, 25f, VALYRIUM, PREFIX_BLOCK);
public static Block ioxBlock = new BasicBlock("iox_block", Material.ROCK, 25.0f, 25f, DURANITE, 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 blockMeteoriteCobble = new BlockCobble("meteoritecobble_block", Material.ROCK, 35f, 10f, COBALT, 0.075f, PREFIX_BLOCK);
public static Block blockObsidioriteCobble = new BlockCobble("obsidioritecobble_block", Material.ROCK, 60f, 20f, DURANITE, 0.035f, PREFIX_BLOCK);
public static Block blockMeteorite = new BlockMeteoriteRock("meteorite_block", Material.ROCK, 70f, 2000f, COBALT, 0.15f, PREFIX_BLOCK, blockMeteoriteCobble.getDefaultState());
public static Block blockObsidiorite = new BlockMeteoriteRock("obsidiorite_block", Material.ROCK, 120f, 4000f, DURANITE, 0.2f, PREFIX_BLOCK, blockObsidioriteCobble.getDefaultState());
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());
// 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);
/**
* Registers all materials' ingots and nuggets <br>
@@ -83,26 +117,32 @@ public class Blocks {
* 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
*/
public static void register() {
@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); // Gets the field as a BasicBlock which is then casted to an Block
block.setCreativeTab(CreativeTab.tabTaigaBlock);
Utils.registerBlockWithItem(block); // Registers block and its item
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("_");
Block block = (Block) field.get(targetType);
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));
} else {
oreDictName = nameParts[0];
if (nameParts.length > 2) {
oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts
.length - 1));
} else {
oreDictName = nameParts[0];
}
OreDictionary.registerOre(((BasicBlock) block).getOreDictPrefix() + StringUtils
.capitalize(oreDictName), block); // Registers the block's oreDict
}
OreDictionary.registerOre(((BasicBlock) block).getOreDictPrefix() + StringUtils.capitalize(oreDictName), block); // Registers the block's oreDict
}
}
} catch (IllegalAccessException e) {
@@ -111,4 +151,21 @@ public class Blocks {
}
}
}
@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();
}
}
}
}
}

View File

@@ -3,6 +3,7 @@ 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;
@@ -12,15 +13,15 @@ public class CreativeTab {
public static final CreativeTabs tabTaigaBlock = new CreativeTabs("taiga_block") {
@Override
public Item getTabIconItem() {
return Item.getItemFromBlock(adamantBlock);
public ItemStack getTabIconItem() {
return new ItemStack(Item.getItemFromBlock(adamantBlock));
}
};
public static final CreativeTabs tabTaigaItem = new CreativeTabs("taiga_item") {
@Override
public Item getTabIconItem() {
return solariumIngot;
public ItemStack getTabIconItem() {
return new ItemStack(solariumIngot);
}
};
}

View File

@@ -2,7 +2,9 @@ package com.sosnitzka.taiga;
import com.sosnitzka.taiga.generic.BasicTinkerFluid;
import com.sosnitzka.taiga.util.Utils;
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;
@@ -13,25 +15,31 @@ import static com.sosnitzka.taiga.util.Utils.registerFluid;
public class Fluids {
public static BasicTinkerFluid basaltFluid = new BasicTinkerFluid("basalt_fluid", 0xFFe4ddc3, 550, 10, 6000);
public static BasicTinkerFluid tiberiumFluid = new BasicTinkerFluid("tiberium_fluid", 0xFF66f136, 400, 10, 8000);
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", 0xFF271c29, 850, 10, 10000);
public static BasicTinkerFluid duraniteFluid = new BasicTinkerFluid("duranite_fluid", 0xFFacddeb, 10000, 10, 10000);
public static BasicTinkerFluid valyriumFluid = new BasicTinkerFluid("valyrium_fluid", 0xFFe85c31, 1250, 10, 10000);
public static BasicTinkerFluid vibraniumFluid = new BasicTinkerFluid("vibranium_fluid", 0xFFbad2d9, 1400, 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", 0xFFe4ff00, 550, 10, 9000);
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 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);
@@ -44,7 +52,13 @@ public class Fluids {
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 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>
@@ -58,16 +72,18 @@ public class Fluids {
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); // Gets the field as a BasicTinkerFluid
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());
// Registers the fluid in its block form and its corresponding item (block/fluid as item in inventory)
Utils.registerBlockWithItem(block);
// Registers the fluid's model but only on the client side
// 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();
@@ -80,7 +96,15 @@ public class Fluids {
* Registers special smeltery recipes (not alloying)
*/
static void registerfromItem() {
TinkerRegistry.registerMelting(Blocks.blockMeteoriteCobble, meteoriteFluid, 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);
}
}

View File

@@ -4,7 +4,8 @@ package com.sosnitzka.taiga;
import com.google.common.base.Joiner;
import com.sosnitzka.taiga.generic.BasicItem;
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;
@@ -45,6 +46,18 @@ public class Items {
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);
@@ -149,38 +162,48 @@ public class Items {
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(); // 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); // Gets the field as a BasicItem which is then casted to an Item
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);
GameRegistry.register(item); // Registers the item into the game
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
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); // Registers into oreDict
OreDictionary.registerOre(((BasicItem) item).getOreDictPrefix() + StringUtils.capitalize
(oreDictName), item); // Registers into oreDict
}
}
} catch (IllegalAccessException e) {

View 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");
}

View File

@@ -8,7 +8,8 @@ import slimeknights.tconstruct.library.materials.MaterialTypes;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import static com.sosnitzka.taiga.Fluids.obsidioriteFluid;
import static slimeknights.tconstruct.tools.TinkerTraits.*;
import static slimeknights.tconstruct.tools.TinkerTraits.alien;
import static slimeknights.tconstruct.tools.TinkerTraits.crumbling;
public class MaterialTraits {
@@ -18,9 +19,8 @@ public class MaterialTraits {
public static final int VIBRANIUM = 7;
// 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();
@@ -42,7 +42,6 @@ public class MaterialTraits {
public static final AbstractTrait diffuse = new TraitDiffuse();
public static final AbstractTrait reviving = new TraitReviving();
public static final AbstractTrait melting = new TraitMelting();
public static final AbstractTrait traditional = new TraitTraditional();
public static final AbstractTrait tantrum = new TraitTantrum();
public static final AbstractTrait catcher = new TraitCatcher();
public static final AbstractTrait congenial = new TraitCongenial();
@@ -51,8 +50,13 @@ public class MaterialTraits {
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();
/**
/*
* Assign traits to related materials. <br>
* <p>
* <p> Example:
@@ -66,11 +70,11 @@ public class MaterialTraits {
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 karmesine = new Material("karmesine", TextFormatting.RED).addTrait(slaughtering);
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);
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);
@@ -78,21 +82,24 @@ public class MaterialTraits {
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(pulverizing);
public static Material nihilite = new Material("nihilite", TextFormatting.BLACK).addTrait(souleater);
public static Material adamant = new Material("adamant", TextFormatting.GOLD);
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);
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(cheap);
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 iox = new Material("iox", TextFormatting.RED);
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);
}

View File

@@ -13,9 +13,9 @@ 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.materials.BowMaterialStats;
import slimeknights.tconstruct.tools.TinkerMaterials;
import java.util.List;
@@ -25,51 +25,63 @@ 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, guiFactory = TAIGA.GUIFACTORY, dependencies = "required-after:tconstruct@[1.10.2-2.5.0,);" + "required-after:mantle@[1.10.2-1.0.0,)")
@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.CommonProxy")
@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) {
logger = e.getModLog();
Fluids.register();
Blocks.register(false);
Blocks.registerItems();
Items.register();
proxy.initConfig();
Items.register(); // Registers items and its oreDict
Blocks.register(); // Registers blocks and its items form a long with its oreDict
Fluids.register(); // Registers all fluids and its buckets
Fluids.registerfromItem(); // Registers some special smeltery recipes (not alloying)
Alloys.register(); // Registers alloying recipes
registerTinkerMaterials(); // Registers materials and associated fluids and stats into tconstruct
registerTinkerMaterials();
}
@EventHandler
public void init(FMLInitializationEvent e) {
proxy.registerModels(); // Registers models on the client side
GameRegistry.registerWorldGenerator(new WorldGen(), 100); // Generates ores
proxy.regsiterKeyBindings();
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
// Adds new harvest levels' names
harvestLevelNames.put(DURANITE, TinkerMaterials.bone.getTextColor() + "Duranite");
harvestLevelNames.put(VALYRIUM, TinkerMaterials.bone.getTextColor() + "Valyrium");
harvestLevelNames.put(VIBRANIUM, TinkerMaterials.blueslime.getTextColor() + "Vibranium");
for (MaterialIntegration m : integrateList) {
m.integrateRecipes();
m.integrate();
}
}
@EventHandler
public void postInit(FMLPostInitializationEvent e) {
proxy.registerBookPages();
}
@EventHandler
@@ -83,17 +95,17 @@ public class TAIGA {
*/
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("Karmesine", karmesine, karmesineFluid, 444, 4.77f, 2.9f, 0.8f, 100, 50, COBALT, shitty, true, true);
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, 8.2f, 1.5f, -50, 175, VALYRIUM, 1.3f, 0.8f, 6);
integrateMaterial("Eezo", eezo, eezoFluid, 50, 14f, 3.5f, .1f, 10, 10, COBALT, shitty, true, false);
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);
@@ -102,11 +114,11 @@ public class TAIGA {
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, 13.78f, 7f, 1.25f, 150, 150, VIBRANIUM, .8f, 1.5f, 5);
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, 15.5f, 9.5f, 1.05f, 100, 125, VALYRIUM, shitty);
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);
@@ -114,14 +126,14 @@ public class TAIGA {
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);
// when more traits / ideas are available
// integrateMaterial("Uru", uru, uruFluid, (552), 8.75f, 2.87f, 0.98f, -100, 200, DIAMOND);
// integrateMaterial("Osram", osram, osramFluid, 500, 5f, 3f, 0.8f, -50, 50, DIAMOND);
// integrateMaterial("Abyssum", abyssum, abyssumFluid, 100, 1f, 1f, 1f, 300, 300, DIAMOND);
integrateOre("Osram", osramFluid);
integrateOre("Abyssum", abyssumFluid);
integrateOre("Iox", ioxFluid);
integrateOre("Karmesine", karmesineFluid);
integrateOre("Ovium", oviumFluid);
integrateOre("Jauxum", jauxumFluid);
// Community Wishlist
integrateOre("Dilithium", dilithiumFluid);
}
}

View File

@@ -13,36 +13,48 @@ 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 final String CATEGORY_NAME_ORE_VAL = "category_ore_val";
public static double speedFactorGeneral;
public static double attackFactorGeneral;
public static double durabilityFactorGeneral;
public static double ironFactor;
public static double titaniteFactor;
public static double adamantiteFactor;
public static double arcaniteFactor;
public static double violiumFactor;
public static double bismuthFactor;
public static double eterniteFactor;
public static double ignititeFactor;
public static double karmesineFactor;
public static double meteoriteFactor;
public static double mindoriteFactor;
public static double mythrilFactor;
public static double palladiumFactor;
public static double prometheumFactor;
public static double tiberiumFactor;
public static double vibraniumFactor;
public static double rubiumFactor;
public static double basaltFactor;
public static double rottengroundFactor;
public static double ligniteFactor;
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() {
@@ -68,271 +80,231 @@ public class TAIGAConfiguration {
syncConfig(false, true);
}
public static void syncFromFields() {
syncConfig(false, false);
}
private static void syncConfig(boolean loadConfigFromFile, boolean readFieldsFromConfig) {
if (loadConfigFromFile) {
config.load();
}
/*
* Declaration of general ore generation values: <br>
* Activation of additional ores (iron/gold) <br>
* Ore generation chance multiplier
*/
final int RESFAC_MIN_VALUE = 0;
final int RESFAC_MAX_VALUE = 100;
final boolean GENERATION_DEFAULT_VALUE = true;
final double RESFAC_MIN_VALUE = 0;
final double RESFAC_MAX_VALUE = 9999;
final double RESFAC_DEFAULT_VALUE = 1.0;
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 slagIronSwitch = config.get(CATEGORY_NAME_GENERAL, "SlagIron Switch", GENERATION_DEFAULT_VALUE);
slagIronSwitch.setComment("Switch ore on/off");
slagIronSwitch.setLanguageKey("gui.taiga_configuration.gen_slagiron");
Property slagGoldSwitch = config.get(CATEGORY_NAME_GENERAL, "SlagGold Switch", GENERATION_DEFAULT_VALUE);
slagGoldSwitch.setComment("Switch ore on/off");
slagGoldSwitch.setLanguageKey("gui.taiga_configuration.gen_slaggold");
Property ironSwitch = config.get(CATEGORY_NAME_GENERAL, "Extra Iron Switch", GENERATION_DEFAULT_VALUE);
ironSwitch.setComment("Switch ore on/off");
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 durabilityFactorGeneralProp = config.get(CATEGORY_NAME_GENERAL, "Durability factor", RESFAC_DEFAULT_VALUE,
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);
Property speedFactorGeneralProp = config.get(CATEGORY_NAME_GENERAL, "Speed factor", RESFAC_DEFAULT_VALUE,
"General multiplier for all TAIGA materials", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
speedFactorGeneralProp.setLanguageKey("gui.taiga_configuration.speed_multiplier");
speedFactorGeneralProp.setRequiresMcRestart(true);
Property attackFactorGeneralProp = config.get(CATEGORY_NAME_GENERAL, "Attack factor", RESFAC_DEFAULT_VALUE,
"General multiplier for all TAIGA materials", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
attackFactorGeneralProp.setLanguageKey("gui.taiga_configuration.attack_multiplier");
attackFactorGeneralProp.setRequiresMcRestart(true);
*/
List<String> propOrderGeneral = new ArrayList<String>();
propOrderGeneral.add(ironSwitch.getName());
propOrderGeneral.add(slagIronSwitch.getName());
propOrderGeneral.add(slagGoldSwitch.getName());
propOrderGeneral.add(durabilityFactorGeneralProp.getName());
propOrderGeneral.add(speedFactorGeneralProp.getName());
propOrderGeneral.add(attackFactorGeneralProp.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 ironFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Iron factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
ironFactorProp.setLanguageKey("gui.taiga_configuration.titanite_multiplier");
Property titaniteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Titanite factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
titaniteFactorProp.setLanguageKey("gui.taiga_configuration.titanite_multiplier");
Property adamantiteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Adamantite factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
adamantiteFactorProp.setLanguageKey("gui.taiga_configuration.adamantite_multiplier");
Property arcaniteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Arcanite factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
arcaniteFactorProp.setLanguageKey("gui.taiga_configuration.arcanite_multiplier");
Property violiumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Violium factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
violiumFactorProp.setLanguageKey("gui.taiga_configuration.violium_multiplier");
Property bismuthFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Bismuth factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
bismuthFactorProp.setLanguageKey("gui.taiga_configuration.bismuth_multiplier");
Property eterniteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Eternite factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
eterniteFactorProp.setLanguageKey("gui.taiga_configuration.eternite_multiplier");
Property ignititeFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Ignitite factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
ignititeFactorProp.setLanguageKey("gui.taiga_configuration.ignitite_multiplier");
Property karmesineFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Karmesine factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
karmesineFactorProp.setLanguageKey("gui.taiga_configuration.karmesine_multiplier");
Property meteoriteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Meteorite factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
meteoriteFactorProp.setLanguageKey("gui.taiga_configuration.meteorite_multiplier");
Property mindoriteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Mindorite factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
mindoriteFactorProp.setLanguageKey("gui.taiga_configuration.mindorite_multiplier");
Property mythrilFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Mythril factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
mythrilFactorProp.setLanguageKey("gui.taiga_configuration.mythril_multiplier");
Property palladiumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Palladium factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
palladiumFactorProp.setLanguageKey("gui.taiga_configuration.palladium_multiplier");
Property prometheumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Prometheum factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
prometheumFactorProp.setLanguageKey("gui.taiga_configuration.prometheum_multiplier");
Property tiberiumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Tiberium factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
tiberiumFactorProp.setLanguageKey("gui.taiga_configuration.tiberium_multiplier");
Property vibraniumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Vibranium factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
vibraniumFactorProp.setLanguageKey("gui.taiga_configuration.vibranium_multiplier");
Property rubiumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Rubium factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
rubiumFactorProp.setLanguageKey("gui.taiga_configuration.rubium_multiplier");
// RottenGround + Basalt
Property basaltFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Basalt factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
basaltFactorProp.setLanguageKey("gui.taiga_configuration.basalt_multiplier");
Property rottengroundFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "RottenGround factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
rottengroundFactorProp.setLanguageKey("gui.taiga_configuration.rottenground_multiplier");
Property ligniteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Lignite factor", RESFAC_DEFAULT_VALUE,
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
ligniteFactorProp.setLanguageKey("gui.taiga_configuration.lignite_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(ironFactorProp.getName());
propOrderOreGen.add(ligniteFactorProp.getName());
propOrderOreGen.add(basaltFactorProp.getName());
propOrderOreGen.add(rottengroundFactorProp.getName());
propOrderOreGen.add(titaniteFactorProp.getName());
propOrderOreGen.add(adamantiteFactorProp.getName());
propOrderOreGen.add(arcaniteFactorProp.getName());
propOrderOreGen.add(violiumFactorProp.getName());
propOrderOreGen.add(bismuthFactorProp.getName());
propOrderOreGen.add(eterniteFactorProp.getName());
propOrderOreGen.add(ignititeFactorProp.getName());
propOrderOreGen.add(karmesineFactorProp.getName());
propOrderOreGen.add(meteoriteFactorProp.getName());
propOrderOreGen.add(mindoriteFactorProp.getName());
propOrderOreGen.add(mythrilFactorProp.getName());
propOrderOreGen.add(palladiumFactorProp.getName());
propOrderOreGen.add(prometheumFactorProp.getName());
propOrderOreGen.add(tiberiumFactorProp.getName());
propOrderOreGen.add(vibraniumFactorProp.getName());
propOrderOreGen.add(rubiumFactorProp.getName());
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);
List<String> propOrderOreVal = new ArrayList<String>();
config.setCategoryPropertyOrder(CATEGORY_NAME_ORE_VAL, propOrderOreVal);
if (readFieldsFromConfig) {
durabilityFactorGeneral = durabilityFactorGeneralProp.getDouble(RESFAC_DEFAULT_VALUE);
if (durabilityFactorGeneral > RESFAC_MAX_VALUE || durabilityFactorGeneral < RESFAC_MIN_VALUE) {
durabilityFactorGeneral = RESFAC_DEFAULT_VALUE;
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;
}
speedFactorGeneral = speedFactorGeneralProp.getDouble(RESFAC_DEFAULT_VALUE);
if (speedFactorGeneral > RESFAC_MAX_VALUE || speedFactorGeneral < RESFAC_MIN_VALUE) {
speedFactorGeneral = RESFAC_DEFAULT_VALUE;
TIBERIUM_VAL = tiberiumValueProp.getInt(TIBERIUM_DEFAULT);
if (TIBERIUM_VAL > RESFAC_MAX_VALUE || TIBERIUM_VAL < RESFAC_MIN_VALUE) {
TIBERIUM_VAL = TIBERIUM_DEFAULT;
}
attackFactorGeneral = attackFactorGeneralProp.getDouble(RESFAC_DEFAULT_VALUE);
if (attackFactorGeneral > RESFAC_MAX_VALUE || attackFactorGeneral < RESFAC_MIN_VALUE) {
attackFactorGeneral = RESFAC_DEFAULT_VALUE;
PROMETHEUM_VAL = prometheumValueProp.getInt(PROMETHEUM_DEFAULT);
if (PROMETHEUM_VAL > RESFAC_MAX_VALUE || PROMETHEUM_VAL < RESFAC_MIN_VALUE) {
PROMETHEUM_VAL = PROMETHEUM_DEFAULT;
}
ironGen = ironSwitch.getBoolean(GENERATION_DEFAULT_VALUE);
ironFactor = ironFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (ironFactor > RESFAC_MAX_VALUE || ironFactor < RESFAC_MIN_VALUE) {
ironFactor = RESFAC_DEFAULT_VALUE;
VALYRIUM_VAL = valyriumValueProp.getInt(VALYRIUM_DEFAULT);
if (VALYRIUM_VAL > RESFAC_MAX_VALUE || VALYRIUM_VAL < RESFAC_MIN_VALUE) {
VALYRIUM_VAL = VALYRIUM_DEFAULT;
}
titaniteFactor = titaniteFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (titaniteFactor > RESFAC_MAX_VALUE || titaniteFactor < RESFAC_MIN_VALUE) {
titaniteFactor = RESFAC_DEFAULT_VALUE;
OSRAM_VAL = osramValueProp.getInt(OSRAM_DEFAULT);
if (OSRAM_VAL > RESFAC_MAX_VALUE || OSRAM_VAL < RESFAC_MIN_VALUE) {
OSRAM_VAL = OSRAM_DEFAULT;
}
adamantiteFactor = adamantiteFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (adamantiteFactor > RESFAC_MAX_VALUE || adamantiteFactor < RESFAC_MIN_VALUE) {
adamantiteFactor = RESFAC_DEFAULT_VALUE;
DURANITE_VAL = duraniteValueProp.getInt(DURANITE_DEFAULT);
if (DURANITE_VAL > RESFAC_MAX_VALUE || DURANITE_VAL < RESFAC_MIN_VALUE) {
DURANITE_VAL = DURANITE_DEFAULT;
}
arcaniteFactor = arcaniteFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (arcaniteFactor > RESFAC_MAX_VALUE || arcaniteFactor < RESFAC_MIN_VALUE) {
arcaniteFactor = RESFAC_DEFAULT_VALUE;
BASALT_VAL = basaltValueProp.getInt(BASALT_DEFAULT);
if (BASALT_VAL > RESFAC_MAX_VALUE || BASALT_VAL < RESFAC_MIN_VALUE) {
BASALT_VAL = BASALT_DEFAULT;
}
violiumFactor = violiumFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (violiumFactor > RESFAC_MAX_VALUE || violiumFactor < RESFAC_MIN_VALUE) {
violiumFactor = RESFAC_DEFAULT_VALUE;
EEZO_VAL = eezoValueProp.getInt(EEZO_DEFAULT);
if (EEZO_VAL > RESFAC_MAX_VALUE || EEZO_VAL < RESFAC_MIN_VALUE) {
EEZO_VAL = EEZO_DEFAULT;
}
bismuthFactor = bismuthFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (bismuthFactor > RESFAC_MAX_VALUE || bismuthFactor < RESFAC_MIN_VALUE) {
bismuthFactor = RESFAC_DEFAULT_VALUE;
KARMESINE_VAL = karmesineValueProp.getInt(KARMESINE_DEFAULT);
if (KARMESINE_VAL > RESFAC_MAX_VALUE || KARMESINE_VAL < RESFAC_MIN_VALUE) {
KARMESINE_VAL = KARMESINE_DEFAULT;
}
eterniteFactor = eterniteFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (eterniteFactor > RESFAC_MAX_VALUE || eterniteFactor < RESFAC_MIN_VALUE) {
eterniteFactor = RESFAC_DEFAULT_VALUE;
OVIUM_VAL = oviumValueProp.getInt(OVIUM_DEFAULT);
if (OVIUM_VAL > RESFAC_MAX_VALUE || OVIUM_VAL < RESFAC_MIN_VALUE) {
OVIUM_VAL = KARMESINE_DEFAULT;
}
ignititeFactor = ignititeFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (ignititeFactor > RESFAC_MAX_VALUE || ignititeFactor < RESFAC_MIN_VALUE) {
ignititeFactor = RESFAC_DEFAULT_VALUE;
JAUXUM_VAL = jauxumValueProp.getInt(OVIUM_DEFAULT);
if (JAUXUM_VAL > RESFAC_MAX_VALUE || JAUXUM_VAL < RESFAC_MIN_VALUE) {
JAUXUM_VAL = JAUXUM_DEFAULT;
}
karmesineFactor = karmesineFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (karmesineFactor > RESFAC_MAX_VALUE || karmesineFactor < RESFAC_MIN_VALUE) {
karmesineFactor = RESFAC_DEFAULT_VALUE;
VIBRANIUM_VAL = vibraniumValueProp.getInt(VIBRANIUM_DEFAULT);
if (VIBRANIUM_VAL > RESFAC_MAX_VALUE || VIBRANIUM_VAL < RESFAC_MIN_VALUE) {
VIBRANIUM_VAL = VIBRANIUM_DEFAULT;
}
meteoriteFactor = meteoriteFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (meteoriteFactor > RESFAC_MAX_VALUE || meteoriteFactor < RESFAC_MIN_VALUE) {
meteoriteFactor = RESFAC_DEFAULT_VALUE;
DILITHIUM_VAL = dilithiumValueProp.getInt(DILITHIUM_DEFAULT);
if (DILITHIUM_VAL > RESFAC_MAX_VALUE || DILITHIUM_VAL < RESFAC_MIN_VALUE) {
DILITHIUM_VAL = DILITHIUM_DEFAULT;
}
mindoriteFactor = mindoriteFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (mindoriteFactor > RESFAC_MAX_VALUE || mindoriteFactor < RESFAC_MIN_VALUE) {
mindoriteFactor = RESFAC_DEFAULT_VALUE;
URU_VAL = uruValueProp.getInt(URU_DEFAULT);
if (URU_VAL > RESFAC_MAX_VALUE || URU_VAL < RESFAC_MIN_VALUE) {
URU_VAL = URU_DEFAULT;
}
mythrilFactor = mythrilFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (mythrilFactor > RESFAC_MAX_VALUE || mythrilFactor < RESFAC_MIN_VALUE) {
mythrilFactor = RESFAC_DEFAULT_VALUE;
AURORIUM_VAL = auroriumValueProp.getInt(AURORIUM_DEFAULT);
if (AURORIUM_VAL > RESFAC_MAX_VALUE || AURORIUM_VAL < RESFAC_MIN_VALUE) {
AURORIUM_VAL = AURORIUM_DEFAULT;
}
palladiumFactor = palladiumFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (palladiumFactor > RESFAC_MAX_VALUE || palladiumFactor < RESFAC_MIN_VALUE) {
palladiumFactor = RESFAC_DEFAULT_VALUE;
PALLADIUM_VAL = palladiumValueProp.getInt(PALLADIUM_DEFAULT);
if (PALLADIUM_VAL > RESFAC_MAX_VALUE || PALLADIUM_VAL < RESFAC_MIN_VALUE) {
PALLADIUM_VAL = PALLADIUM_DEFAULT;
}
prometheumFactor = prometheumFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (prometheumFactor > RESFAC_MAX_VALUE || prometheumFactor < RESFAC_MIN_VALUE) {
prometheumFactor = RESFAC_DEFAULT_VALUE;
}
tiberiumFactor = tiberiumFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (tiberiumFactor > RESFAC_MAX_VALUE || tiberiumFactor < RESFAC_MIN_VALUE) {
tiberiumFactor = RESFAC_DEFAULT_VALUE;
}
vibraniumFactor = vibraniumFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (vibraniumFactor > RESFAC_MAX_VALUE || vibraniumFactor < RESFAC_MIN_VALUE) {
vibraniumFactor = RESFAC_DEFAULT_VALUE;
}
rubiumFactor = rubiumFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (rubiumFactor > RESFAC_MAX_VALUE || rubiumFactor < RESFAC_MIN_VALUE) {
rubiumFactor = RESFAC_DEFAULT_VALUE;
}
basaltFactor = basaltFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (basaltFactor > RESFAC_MAX_VALUE || basaltFactor < RESFAC_MIN_VALUE) {
basaltFactor = RESFAC_DEFAULT_VALUE;
}
rottengroundFactor = rottengroundFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (rottengroundFactor > RESFAC_MAX_VALUE || rottengroundFactor < RESFAC_MIN_VALUE) {
rottengroundFactor = RESFAC_DEFAULT_VALUE;
}
ligniteFactor = ligniteFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (ligniteFactor > RESFAC_MAX_VALUE || ligniteFactor < RESFAC_MIN_VALUE) {
ligniteFactor = RESFAC_DEFAULT_VALUE;
ABYSSUM_VAL = abyssumValueProp.getInt(ABYSSUM_DEFAULT);
if (ABYSSUM_VAL > RESFAC_MAX_VALUE || ABYSSUM_VAL < RESFAC_MIN_VALUE) {
ABYSSUM_VAL = ABYSSUM_DEFAULT;
}
}
ironSwitch.set(ironGen);
durabilityFactorGeneralProp.set(durabilityFactorGeneral);
speedFactorGeneralProp.set(speedFactorGeneral);
attackFactorGeneralProp.set(attackFactorGeneral);
titaniteFactorProp.set(titaniteFactor);
adamantiteFactorProp.set(adamantiteFactor);
arcaniteFactorProp.set(arcaniteFactor);
violiumFactorProp.set(violiumFactor);
bismuthFactorProp.set(bismuthFactor);
eterniteFactorProp.set(eterniteFactor);
ignititeFactorProp.set(ignititeFactor);
karmesineFactorProp.set(karmesineFactor);
meteoriteFactorProp.set(meteoriteFactor);
mindoriteFactorProp.set(mindoriteFactor);
mythrilFactorProp.set(mythrilFactor);
palladiumFactorProp.set(palladiumFactor);
prometheumFactorProp.set(prometheumFactor);
tiberiumFactorProp.set(tiberiumFactor);
vibraniumFactorProp.set(vibraniumFactor);
rubiumFactorProp.set(rubiumFactor);
basaltFactorProp.set(basaltFactor);
rottengroundFactorProp.set(rottengroundFactor);
ligniteFactorProp.set(ligniteFactor);
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();
@@ -343,7 +315,8 @@ public class TAIGAConfiguration {
@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) || event.getConfigID().equals(CATEGORY_NAME_ORE_VAL)) {
if (event.getConfigID().equals(CATEGORY_NAME_GENERAL) || event.getConfigID().equals
(CATEGORY_NAME_ORE_GEN)) {
syncFromGUI();
}
}

View File

@@ -21,8 +21,13 @@ public class TAIGAGuiFactory implements IModGuiFactory {
}
@Override
public Class<? extends GuiScreen> mainConfigGuiClass() {
return TAIGAConfigGui.class;
public boolean hasConfigGui() {
return true;
}
@Override
public GuiScreen createConfigGui(GuiScreen parentScreen) {
return new TAIGAConfigGui(parentScreen);
}
@Override
@@ -30,22 +35,19 @@ public class TAIGAGuiFactory implements IModGuiFactory {
return null;
}
@Override
public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) {
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"));
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("Basics configuration", "gui.taiga_configuration.ctgy.general", CategoryEntryGeneral.class));
list.add(new DummyConfigElement.DummyCategoryElement("Specific ore generation", "gui.taiga_configuration.ctgy.oregen", CategoryEntryOreGen.class));
//list.add(new DummyConfigElement.DummyCategoryElement("Specific ore values", "gui.taiga_configuration.ctgy.oreval", CategoryEntryOreVal.class));
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;
}
@@ -57,11 +59,15 @@ public class TAIGAGuiFactory implements IModGuiFactory {
@Override
protected GuiScreen buildChildScreen() {
Configuration configuration = TAIGAConfiguration.getConfig();
ConfigElement cat_general = new ConfigElement(configuration.getCategory(TAIGAConfiguration.CATEGORY_NAME_GENERAL));
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);
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);
}
}
@@ -73,27 +79,15 @@ public class TAIGAGuiFactory implements IModGuiFactory {
@Override
protected GuiScreen buildChildScreen() {
Configuration configuration = TAIGAConfiguration.getConfig();
ConfigElement cat_general = new ConfigElement(configuration.getCategory(TAIGAConfiguration.CATEGORY_NAME_ORE_GEN));
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);
}
}
public static class CategoryEntryOreVal extends GuiConfigEntries.CategoryEntry {
public CategoryEntryOreVal(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_VAL));
List<IConfigElement> propertiesOnThisScreen = cat_general.getChildElements();
String windowTitle = configuration.toString();
return new GuiConfig(this.owningScreen, propertiesOnThisScreen, this.owningScreen.modID, TAIGAConfiguration.CATEGORY_NAME_ORE_VAL, this.configElement.requiresWorldRestart() || this.owningScreen.allRequireWorldRestart, this.configElement.requiresMcRestart() || this.owningScreen.allRequireMcRestart, windowTitle);
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);
}
}
}

View File

@@ -11,7 +11,8 @@ 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) {
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);
}
@@ -24,7 +25,8 @@ public class BlockCobble extends BasicBlock {
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);
e.getWorld().newExplosion(null, e.getPos().getX(), e.getPos().getY() + 1 / 16f, e.getPos().getZ()
, 0.5f + random.nextFloat() * 1.5f, false, true);
}
}
}

View File

@@ -1,34 +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.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import javax.annotation.ParametersAreNonnullByDefault;
import java.util.Random;
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
@ParametersAreNonnullByDefault
public int quantityDropped(IBlockState state, int fortune, Random random) {
return random.nextInt(3) + 1 + fortune;
}
}

View File

@@ -1,70 +0,0 @@
package com.sosnitzka.taiga.blocks;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IStringSerializable;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import slimeknights.mantle.block.EnumBlock;
import javax.annotation.Nonnull;
import java.util.List;
import java.util.Locale;
public class BlockMetal extends EnumBlock<BlockMetal.MetalTypes> {
public static final PropertyEnum<MetalTypes> TYPE = PropertyEnum.create("type", MetalTypes.class);
public BlockMetal() {
super(Material.IRON, TYPE, MetalTypes.class);
}
@SideOnly(Side.CLIENT)
@Override
public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, List<ItemStack> list) {
for (MetalTypes type : MetalTypes.values()) {
list.add(new ItemStack(this, 1, type.getMeta()));
}
}
public enum MetalTypes implements IStringSerializable, EnumBlock.IEnumMeta {
TIBERIUM,
AURODIUM,
PROMETHEUM,
ARCANITE,
TITANITE,
MYTHRIL,
URU,
VIBRANIUM,
ETERNITE,
FRACTORYTE,
PALLADIUM,
IGNITITE,
BISMUTH,
JAUXITE,
VIOLIUM,
KARMESINE;
public final int meta;
MetalTypes() {
meta = ordinal();
}
@Override
public String getName() {
return this.toString().toLowerCase(Locale.US);
}
@Override
public int getMeta() {
return meta;
}
}
}

View File

@@ -13,7 +13,8 @@ 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) {
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;

View File

@@ -1,68 +0,0 @@
package com.sosnitzka.taiga.blocks;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.IStringSerializable;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import slimeknights.mantle.block.EnumBlock;
import javax.annotation.Nonnull;
import java.util.Locale;
public class BlockOre extends EnumBlock<BlockOre.OreTypes> {
public static final PropertyEnum<OreTypes> TYPE = PropertyEnum.create("type", OreTypes.class);
public BlockOre() {
this(Material.ROCK);
}
public BlockOre(Material material) {
super(material, TYPE, OreTypes.class);
}
@Nonnull
@Override
@SideOnly(Side.CLIENT)
public BlockRenderLayer getBlockLayer() {
return BlockRenderLayer.CUTOUT_MIPPED;
}
public enum OreTypes implements IStringSerializable, EnumBlock.IEnumMeta {
TIBERIUM,
AURODIUM,
PROMETHEUM,
ARCANITE,
TITANITE,
MYTHRIL,
URU,
VIBRANIUM,
ETERNITE,
FRACTORYTE,
PALLADIUM,
IGNITITE,
BISMUTH,
JAUXITE,
VIOLIUM,
KARMESINE;
public final int meta;
OreTypes() {
meta = ordinal();
}
@Override
public String getName() {
return this.toString().toLowerCase(Locale.US);
}
@Override
public int getMeta() {
return meta;
}
}
}

View File

@@ -21,7 +21,7 @@ import static slimeknights.tconstruct.library.utils.HarvestLevels.STONE;
public class BlockTiberium extends BasicBlock {
public BlockTiberium() {
super("tiberium_ore", Material.ROCK, 15.0f, 2.0f, STONE, 1.0F, PREFIX_ORE);
super("tiberium_ore", Material.ROCK, 10.0f, 2.0f, STONE, 1.0F, PREFIX_ORE);
}
@Override
@@ -39,14 +39,15 @@ public class BlockTiberium extends BasicBlock {
@Override
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
return Items.tiberiumDust;
return Items.tiberiumCrystal;
}
@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() * 2f + 1.5f, true, true);
worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), random.nextFloat() * 2f + 1.5f, true,
true);
}
}
}

View 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));
}
}
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -14,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;
}

View File

@@ -8,23 +8,15 @@ 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, 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"));
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 = true;
}
public boolean isToolForge() {
return toolForge;
}
}

View 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);
}
}
}
}

View File

@@ -4,6 +4,7 @@ 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;
@@ -11,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;
@@ -24,7 +30,10 @@ 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;
@SuppressWarnings("unused")
public class ClientProxy extends CommonProxy {
@@ -37,6 +46,11 @@ public class ClientProxy extends CommonProxy {
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
}
@Override
public void regsiterKeyBindings() {
ClientRegistry.registerKeyBinding(altKey);
}
@Override
public void registerModels() {
Field[] itemFields = Items.class.getDeclaredFields();
@@ -81,15 +95,18 @@ public class ClientProxy extends CommonProxy {
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/block/" + material.getIdentifier()));
material.setRenderInfo(new MaterialRenderInfo.BlockTexture(new ResourceLocation("taiga:blocks/block/" +
material.getIdentifier())));
}
}
private void metalRender(final 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:materials/" + material.getIdentifier(), 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);
}
});
}
@@ -107,10 +124,8 @@ public class ClientProxy extends CommonProxy {
FluidStateMapper mapper = new FluidStateMapper(fluid);
// item-model
if (item != null) {
ModelLoader.registerItemVariants(item);
ModelLoader.setCustomMeshDefinition(item, mapper);
}
ModelLoader.registerItemVariants(item);
ModelLoader.setCustomMeshDefinition(item, mapper);
// block-model
ModelLoader.setCustomStateMapper(block, mapper);
}
@@ -122,8 +137,13 @@ public class ClientProxy extends CommonProxy {
TAIGAConfiguration.clientPreInit();
}
public static class FluidStateMapper extends StateMapperBase implements ItemMeshDefinition {
@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;
@@ -131,7 +151,8 @@ public class ClientProxy extends CommonProxy {
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
@@ -146,4 +167,11 @@ public class ClientProxy extends CommonProxy {
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));
}
}

View File

@@ -5,6 +5,9 @@ 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() {
@@ -24,4 +27,17 @@ public class CommonProxy {
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");
}
}

View File

@@ -1,7 +1,61 @@
package com.sosnitzka.taiga.recipes;
public class CraftingRegistry {
public static void register() {
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)));
}
}

View File

@@ -1,13 +1,8 @@
package com.sosnitzka.taiga.recipes;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
public class SmeltingRegistry {
public static void register() {
ItemStack nugget_iron = OreDictionary.getOres("nuggetIron").get(OreDictionary.getOres("nuggetIron").size() - 1);
//GameRegistry.addSmelting(tiberiumOre, new ItemStack(tiberiumShardInstable, 6), (1F));
//GameRegistry.addSmelting(tiberiumShardInstable, new ItemStack(tiberiumIngot), (.1F));
}
}

View File

@@ -25,34 +25,36 @@ 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 (!event.getWorld().isRemote && 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 (random.nextFloat() < .1f && 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 = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextInt(xp) * (1 + random.nextFloat()));
float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextInt(xp) * (1 +
random.nextFloat()));
return Math.round(exp);
}

View File

@@ -26,7 +26,8 @@ public class TraitArcane 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 && isNight(time)) {
ToolHelper.healTool(tool, random.nextInt(8) + 1, null);
@@ -34,7 +35,8 @@ public class TraitArcane extends AbstractTrait {
}
@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 && isNight(time)) {
ToolHelper.healTool(tool, random.nextInt(8) + 1, null);
@@ -45,10 +47,11 @@ public class TraitArcane extends AbstractTrait {
@SubscribeEvent
public void onEntityKill(LivingDeathEvent e) {
World w = e.getEntity().getEntityWorld();
if (!w.isRemote && e.getSource().getEntity() != null) {
if (e.getSource().getEntity() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) {
ItemStack tool = ((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand();
if (isNight((int) w.getWorldTime()) && random.nextFloat() < 0.1 && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
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);
}
}

View 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);
}
}
}
}

View File

@@ -19,7 +19,8 @@ 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.01 || (random.nextFloat() <= 0.03 && isNight(time))) {
if (random.nextBoolean())
@@ -30,7 +31,8 @@ public class TraitBlind extends AbstractTrait {
}
@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.01 || (random.nextFloat() <= 0.03 && isNight(time))) {
if (random.nextBoolean())

View File

@@ -22,7 +22,8 @@ public class TraitBright 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 * (1 + random.nextFloat() / 2f);
@@ -30,9 +31,9 @@ public class TraitBright extends AbstractTrait {
return super.damage(tool, player, target, damage, newDamage, isCritical);
}
@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.nextFloat() >= chance) {
player.addPotionEffect(new PotionEffect(GLOWING, 200));
}

View File

@@ -16,14 +16,16 @@ 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();
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();
int i = random.nextInt((int) Math.min(300f * (float) ToolHelper.getCurrentDurability(tool) / ToolHelper.getMaxDurability(tool), 50f));
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;

View File

@@ -3,6 +3,8 @@ 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;
@@ -10,18 +12,23 @@ 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 = 1;
public static int chance = 3;
public static float costMulti = 0.25f;
public TraitCatcher() {
@@ -29,31 +36,60 @@ public class TraitCatcher extends AbstractTrait {
MinecraftForge.EVENT_BUS.register(this);
}
@Override
public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean isCritical) {
World w = player.worldObj;
@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) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Data data = Data.read(tag);
event.setCanceled(true);
target.setDropItemsWhenDead(false);
if (data.mobClass.isEmpty()) {
data.mobClass = target.getClass().getName();
data.mobName = target.getName();
data.write(tag);
TagUtil.setEnchantEffect(tool, true);
TagUtil.setExtraTag(tool, tag);
player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
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)) {
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()) {
@@ -66,20 +102,20 @@ public class TraitCatcher extends AbstractTrait {
if (ent != null) {
ent.setPosition(pos.getX(), pos.getY(), pos.getZ()); // TODO: set to player view target
w.spawnEntityInWorld(ent);
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);
TagUtil.setEnchantEffect(tool, false);
ToolHelper.damageTool(tool, random.nextInt((int) (ToolHelper.getCurrentDurability(tool) * costMulti)), event.getEntityPlayer());
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();
@@ -87,7 +123,8 @@ public class TraitCatcher extends AbstractTrait {
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);
e.getToolTip().add(TextFormatting.DARK_PURPLE + "Captured: " + TextFormatting.LIGHT_PURPLE + data
.mobName);
}
}

View File

@@ -12,14 +12,14 @@ 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);
@@ -27,9 +27,11 @@ public class TraitCongenial extends AbstractTrait {
@SubscribeEvent
public void onEntityKill(LivingDeathEvent e) {
if (e.getSource().getEntity() instanceof EntityPlayer && !e.getSource().getEntity().worldObj.isRemote && e.getEntity() instanceof EntityCreature) {
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand()), identifier)) {
ItemStack tool = ((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand();
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);
@@ -38,14 +40,14 @@ public class TraitCongenial extends AbstractTrait {
}
data.name = name;
data.write(tag);
assert tool != null;
TagUtil.setExtraTag(tool, tag);
}
}
}
@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) {
World w = player.getEntityWorld();
if (!w.isRemote) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
@@ -62,6 +64,7 @@ public class TraitCongenial extends AbstractTrait {
return damage;
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent e) {
ItemStack tool = e.getItemStack();
@@ -74,5 +77,4 @@ public class TraitCongenial extends AbstractTrait {
}
}
}
}

View 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));
}
}
}
}

View File

@@ -11,6 +11,8 @@ 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;
@@ -18,8 +20,6 @@ import slimeknights.tconstruct.library.utils.TinkerUtil;
public class TraitCursed extends AbstractTrait {
private static int chance = 60 * 1000;
public TraitCursed() {
super(TraitCursed.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
MinecraftForge.EVENT_BUS.register(this);
@@ -27,21 +27,21 @@ public class TraitCursed extends AbstractTrait {
@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);
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();
@@ -53,6 +53,4 @@ public class TraitCursed extends AbstractTrait {
}
}
}
}

View File

@@ -38,7 +38,9 @@ public class TraitCurvature extends AbstractTrait {
@Override
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());
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++) {
@@ -51,17 +53,17 @@ public class TraitCurvature extends AbstractTrait {
event.getDrops().clear();
event.getWorld().setBlockState(cPos, mainstate);
event.getHarvester().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
event.getHarvester().addChatComponentMessage(new TextComponentString("Teleported to: " + x + " " + y + " " + z));
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) {
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);
changePos(player, target);
@@ -71,11 +73,13 @@ public class TraitCurvature extends AbstractTrait {
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
if (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)) {
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));
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event
.getEntity().posZ, i));
}
}
}

View File

@@ -15,7 +15,8 @@ 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 * (1 + random.nextFloat() / 2f);

View File

@@ -21,7 +21,7 @@ import java.util.List;
public class TraitDecay extends TraitProgressiveStats {
protected static int TICK_PER_STAT = 24;
protected static int DURABILITY_STEP = 10;
protected static int DURABILITY_STEP = 1;
protected static float SPEED_STEP = 0.05f;
protected static float ATTACK_STEP = 0.05f;
@@ -62,16 +62,7 @@ public class TraitDecay extends TraitProgressiveStats {
@Override
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
if (entity instanceof FakePlayer || entity.worldObj.isRemote) {
return;
}
// 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)) {
if (entity instanceof FakePlayer || entity.world.isRemote || entity.ticksExisted % TICK_PER_STAT != 0 || playerIsBreakingBlock(entity)) {
return;
}

View File

@@ -13,6 +13,7 @@ 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() {
@@ -23,7 +24,8 @@ public class TraitDiffuse extends AbstractTrait {
@SubscribeEvent
public void onBlockBreak(BlockEvent.BreakEvent event) {
EntityPlayer player = event.getPlayer();
if (!player.getEntityWorld().isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
if (!player.getEntityWorld().isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()),
this.identifier)) {
event.setExpToDrop((int) this.getUpdateXP(event.getExpToDrop()));
}
}
@@ -31,16 +33,17 @@ public class TraitDiffuse extends AbstractTrait {
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
if (event.getEntity() instanceof EntityCreature && 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 float getUpdateXP(int xp) {
float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextFloat() * xp);
float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (1 + random.nextFloat() * xp);
if (random.nextFloat() <= 0.25)
return exp;
else return 0;

View File

@@ -18,13 +18,13 @@ 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 (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);
} else {

View File

@@ -20,46 +20,55 @@ 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);
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.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.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.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.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.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.getBlockState(next6).equals(Blocks.BEDROCK.getDefaultState()))
world.destroyBlock(next6, true);
break;
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.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.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.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.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.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.getBlockState(next6)
.equals(Blocks.BEDROCK.getDefaultState()))
world.destroyBlock(next6, true);
break;
}
}
if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(5), player);
}
if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(5), player);
}
}

View File

@@ -18,7 +18,8 @@ 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);

View File

@@ -28,9 +28,10 @@ public class TraitGarishly extends AbstractTrait {
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
if (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(2);
ItemStack i = null;
@@ -46,7 +47,8 @@ public class TraitGarishly extends AbstractTrait {
break;
}
assert i != null;
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i));
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event
.getEntity().posZ, i));
}
}
}
@@ -56,13 +58,12 @@ public class TraitGarishly extends AbstractTrait {
float r = random.nextFloat();
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));
@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());
}
}
}

View File

@@ -16,7 +16,6 @@ import slimeknights.tconstruct.library.utils.TinkerUtil;
public class TraitGlimmer extends AbstractTrait {
public TraitGlimmer() {
super("glimmer", TextFormatting.DARK_GRAY);
}
@@ -33,14 +32,16 @@ public class TraitGlimmer 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.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) {
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));
}

View File

@@ -16,7 +16,18 @@ 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 = 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 * 0.9f, isCritical);

View File

@@ -24,9 +24,9 @@ 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.01 || (random.nextFloat() <= 0.03 && isNight(time))) {
((EntityLiving) target).setNoAI(true);
@@ -40,9 +40,10 @@ public class TraitHollow extends AbstractTrait {
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
if (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();
}
}

View File

@@ -18,12 +18,12 @@ public class TraitMelting extends AbstractTrait {
MinecraftForge.EVENT_BUS.register(this);
}
@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)) {
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());
}

View 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);
}
}
}
}

View File

@@ -1,5 +1,6 @@
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;
@@ -18,6 +19,7 @@ import slimeknights.tconstruct.library.utils.ToolHelper;
public class TraitPorted extends AbstractTrait {
public static int distance = 10;
public TraitPorted() {
@@ -28,21 +30,22 @@ public class TraitPorted extends AbstractTrait {
@SubscribeEvent
public void onItemRightClick(PlayerInteractEvent.RightClickItem e) {
ItemStack tool = e.getEntityPlayer().getHeldItemMainhand();
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier))
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) {
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) {
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());
@@ -62,6 +65,7 @@ public class TraitPorted extends AbstractTrait {
return;
}
e.setPosition(tPos.getX(), tPos.getY(), tPos.getZ());
ToolHelper.damageTool(e.getHeldItemMainhand(), ToolHelper.getCurrentDurability(e.getHeldItemMainhand()) / 2 + 1, e);
ToolHelper.damageTool(e.getHeldItemMainhand(), ToolHelper.getCurrentDurability(e.getHeldItemMainhand()) / 2 +
1, e);
}
}

View File

@@ -29,13 +29,6 @@ public abstract class TraitProgressiveStats extends AbstractTrait {
applied_key = identifier + "StatBonus";
}
public TraitProgressiveStats(String identifier, int color) {
super(identifier, color);
pool_key = identifier + "StatPool";
applied_key = identifier + "StatBonus";
}
/* Modifier management */
protected static StatNBT getStats(NBTTagCompound root, String key) {

View File

@@ -29,7 +29,7 @@ public class TraitPulverizing extends AbstractTrait {
@Override
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
if (random.nextFloat() < 0.9) {
if (random.nextFloat() < 0.6) {
event.getDrops().clear();
}
}

View File

@@ -7,7 +7,6 @@ import slimeknights.tconstruct.library.traits.AbstractTrait;
public class TraitResonance extends AbstractTrait {
public static float chance = 0.33f;
public TraitResonance() {
@@ -15,9 +14,11 @@ public class TraitResonance extends AbstractTrait {
}
@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) {
if (random.nextFloat() <= chance) {
target.knockBack(target, random.nextFloat() * random.nextFloat() * 10, player.posX - target.posX, player.posZ - target.posZ);
target.knockBack(target, random.nextFloat() * random.nextFloat() * 10, player.posX - target.posX, player
.posZ - target.posZ);
}
}
}

View File

@@ -3,7 +3,6 @@ package com.sosnitzka.taiga.traits;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityCreature;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.monster.EntitySkeleton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents;
import net.minecraft.util.math.BlockPos;
@@ -19,7 +18,6 @@ import slimeknights.tconstruct.library.utils.TinkerUtil;
public class TraitReviving extends AbstractTrait {
public final float chance = 0.15f;
public TraitReviving() {
@@ -31,18 +29,16 @@ 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 (random.nextFloat() <= chance && 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) {
if (ent instanceof EntitySkeleton && e.getEntity() instanceof EntitySkeleton) {
((EntitySkeleton) ent).setSkeletonType(((EntitySkeleton) e.getEntity()).getSkeletonType());
}
ent.setPosition(pos.getX(), pos.getY(), pos.getZ());
w.spawnEntityInWorld(ent);
e.getSource().getEntity().playSound(SoundEvents.AMBIENT_CAVE, 1.0F, 1.0F);
w.spawnEntity(ent);
e.getSource().getTrueSource().playSound(SoundEvents.AMBIENT_CAVE, 1.0F, 1.0F);
}
}
}

View File

@@ -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,15 +20,18 @@ 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();
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())));
}
}
}

View File

@@ -12,6 +12,8 @@ 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;
@@ -19,8 +21,6 @@ import slimeknights.tconstruct.library.utils.TinkerUtil;
public class TraitSoulEater extends AbstractTrait {
private static float divisor = 20000f;
public TraitSoulEater() {
super(TraitSoulEater.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
MinecraftForge.EVENT_BUS.register(this);
@@ -28,15 +28,16 @@ public class TraitSoulEater extends AbstractTrait {
@SubscribeEvent
public void onTargetKilled(LivingDeathEvent event) {
if (event.getSource().getEntity() instanceof EntityPlayer && event.getEntity() instanceof EntityLiving) {
World w = event.getSource().getEntity().worldObj;
ItemStack tool = ((EntityPlayer) event.getSource().getEntity()).getHeldItemMainhand();
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;
@@ -47,13 +48,15 @@ public class TraitSoulEater 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) {
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();
@@ -66,5 +69,4 @@ public class TraitSoulEater extends AbstractTrait {
}
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -1,5 +1,6 @@
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;
@@ -12,6 +13,8 @@ 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;
@@ -19,12 +22,11 @@ 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 {
/*
* Collects tiberium, to release it for an explosion
*/
public static float max_charges = 12f;
public static float max_power = 5;
@@ -48,7 +50,8 @@ public class TraitTantrum extends AbstractTrait {
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());
Sounds.PlaySoundForPlayer(event.getHarvester(), Sounds.shocking_discharge, 1f, 0.8f + .2f *
random.nextFloat());
}
}
data.write(tag);
@@ -58,16 +61,17 @@ public class TraitTantrum extends AbstractTrait {
}
@SubscribeEvent
public void RightClickItem(PlayerInteractEvent.RightClickItem event) {
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)) {
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);
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);
@@ -76,6 +80,7 @@ public class TraitTantrum extends AbstractTrait {
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent e) {
ItemStack tool = e.getItemStack();
@@ -87,7 +92,6 @@ public class TraitTantrum extends AbstractTrait {
}
public static class Data {
float amount;
public static Data read(NBTTagCompound tag) {
@@ -100,6 +104,4 @@ public class TraitTantrum extends AbstractTrait {
tag.setFloat("amount", amount);
}
}
}

View File

@@ -1,17 +0,0 @@
package com.sosnitzka.taiga.traits;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.MinecraftForge;
import slimeknights.tconstruct.library.traits.AbstractTrait;
public class TraitTemplate extends AbstractTrait {
public TraitTemplate() {
super(TraitTemplate.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
MinecraftForge.EVENT_BUS.register(this);
}
}

View File

@@ -1,49 +0,0 @@
package com.sosnitzka.taiga.traits;
import net.minecraft.entity.EntityCreature;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
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;
public class TraitTraditional extends AbstractTrait {
public TraitTraditional() {
super("traditional", 0xff33ff);
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void onEntityKill(LivingDeathEvent e) {
World w = e.getEntity().getEntityWorld();
if (!w.isRemote && e.getSource().getEntity() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) {
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand()), identifier)) {
String name = EntityList.getEntityString(e.getEntity());
}
}
}
public static class Data {
String mobname;
public static Data read(NBTTagCompound tag) {
Data data = new Data();
data.mobname = tag.getString("mob");
return data;
}
public void write(NBTTagCompound tag) {
tag.setString("amount", mobname);
}
}
}

View File

@@ -1,15 +0,0 @@
package com.sosnitzka.taiga.traits;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.MinecraftForge;
import slimeknights.tconstruct.library.traits.AbstractTrait;
public class TraitUncertain extends AbstractTrait {
public TraitUncertain() {
super(TraitUncertain.class.getName().toLowerCase().substring(4), TextFormatting.RED);
MinecraftForge.EVENT_BUS.register(this);
}
}

View File

@@ -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);
}
@@ -56,11 +55,12 @@ public class TraitInstable extends AbstractTrait {
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (random.nextFloat() < 0.05 && !w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
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));
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event
.getEntity().posZ, i));
}
}
}

View File

@@ -1,17 +0,0 @@
package com.sosnitzka.taiga.traits;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.MinecraftForge;
import slimeknights.tconstruct.library.traits.AbstractTrait;
public class TraitVortex extends AbstractTrait {
public TraitVortex() {
super(TraitVortex.class.getSimpleName().toLowerCase().substring(5), TextFormatting.DARK_PURPLE);
MinecraftForge.EVENT_BUS.register(this);
}
}

View File

@@ -1,5 +1,6 @@
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;
@@ -14,6 +15,8 @@ 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;
@@ -31,12 +34,7 @@ public class TraitWhirl extends AbstractTrait {
@Override
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
if (entity instanceof FakePlayer || entity.worldObj.isRemote) {
return;
}
if (entity.ticksExisted % TICK_PER_STAT > 0) {
if (entity instanceof FakePlayer || entity.world.isRemote || entity.ticksExisted % TICK_PER_STAT != 0) {
return;
}
@@ -54,7 +52,7 @@ public class TraitWhirl extends AbstractTrait {
public void onRightClickItem(PlayerInteractEvent.RightClickItem event) {
World w = event.getWorld();
ItemStack tool = event.getEntityPlayer().getHeldItemMainhand();
if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
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) {
@@ -62,11 +60,14 @@ public class TraitWhirl extends AbstractTrait {
for (int x = -r; x <= r; x++) {
for (int y = -r; y <= r; y++) {
for (int z = -r; z <= r; z++) {
if (MathHelper.sqrt_double(x * x + y * y + z * z) > r) {
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())))
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);
}
@@ -78,11 +79,10 @@ public class TraitWhirl extends AbstractTrait {
TagUtil.setEnchantEffect(tool, false);
ToolHelper.damageTool(tool, 2 * r, event.getEntityPlayer());
}
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent e) {
ItemStack tool = e.getItemStack();
@@ -90,9 +90,9 @@ public class TraitWhirl extends AbstractTrait {
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);
e.getToolTip().add(TextFormatting.BLUE + "Actual Radius: " + TextFormatting.WHITE + Math.round(data
.radius * 100) / 100);
}
}
}
}

View File

@@ -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;
private 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;
}
}

View File

@@ -3,6 +3,7 @@ package com.sosnitzka.taiga.util;
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;
@@ -19,48 +20,61 @@ 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(boolean center, IBlockState state, IBlockState replace, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) {
if (center) {
generateOreDense(state, replace, random, x, z, world, chance, minY, maxY, minSize, maxSize, null);
} else {
generateOre(state, replace, null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize, null);
}
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 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 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, List<Biome> biome) {
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++) {
int posX = chunkX + random.nextInt(16);
int posY = random.nextInt(height) + minY;
int posZ = chunkZ + random.nextInt(16);
BlockPos cPos = new BlockPos(posX, posY, posZ);
if (biome == null || biome.contains(world.getBiome(cPos))) {
new WorldGenMinable(state, size, StateMatcher.forState(replace, property, comparable)).generate(world, random, new BlockPos(posX, posY, posZ));
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);
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 generateOreDescending(List<IBlockState> replaceBlockList, IBlockState replacementBlock, Random random, int chunkX, int chunkZ, World world, int count, int minY, int maxY, int chance) {
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) {
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()))) {
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())))
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();
@@ -70,7 +84,53 @@ public class Generator {
}
}
public static void generateOreBottom(IBlockState replacedBlock, IBlockState replacementBlock, Random random, int chunkX, int chunkZ, World world, int chance, int spread, int maxY) {
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;
@@ -80,14 +140,15 @@ public class Generator {
while (world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()) && cPos.getY() < maxY) {
cPos = cPos.up();
}
if (world.getBlockState(cPos).equals(replacedBlock)) {
world.setBlockState(cPos.up(random.nextInt(spread)), replacementBlock);
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) {
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);
@@ -97,7 +158,8 @@ public class Generator {
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())) {
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();
@@ -110,7 +172,8 @@ public class Generator {
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);
world.setBlockState(new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z),
centerBlock);
}
}
}
@@ -118,7 +181,8 @@ public class Generator {
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()))
if (world.getBlockState(nPos).equals(centerBlock) || !world.getBlockState(nPos).equals
(Blocks.AIR.getDefaultState()))
continue;
world.setBlockState(nPos, hullBlock);
}
@@ -129,16 +193,19 @@ public class Generator {
}
}
public static void generateMeteor(IBlockState centerBlock, IBlockState hullBlock, Random random, int chunkX, int chunkZ, World world, int count, int chance, int minY, int maxY) {
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");
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);
@@ -146,36 +213,43 @@ public class Generator {
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())) {
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.down((random.nextInt(3) + 1) * r);
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_double(x * x + y * y + z * z) > t) {
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);
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_double(x * x + y * y + z * z) > r) {
if (MathHelper.sqrt(x * x + y * y + z * z) > r) {
continue;
}
BlockPos nPos = new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z);
@@ -187,28 +261,7 @@ public class Generator {
}
}
}
}
public static void generateOreDense(IBlockState state, IBlockState replace, Random random, int chunkX, int chunkZ, World world, int chance, int minY, int maxY, int minSize, int maxSize, List<Biome> biome) {
int size = minSize + random.nextInt(maxSize - minSize);
int height = maxY - minY;
BlockPos cPos;
for (int i = 0; i < chance; i += 5) {
for (int j = 0; j <= 2; j++) {
cPos = new BlockPos(chunkX + random.nextInt(16), minY + height * j / 5 + random.nextInt(height * 3 / 5), chunkZ + random.nextInt(16));
if (biome == null || biome.contains(world.getBiome(cPos))) {
new WorldGenMinable(state, size, StateMatcher.forState(replace, null, null)).generate(world, random, cPos);
}
}
for (int j = 0; j <= 1; j++) {
int x = chunkX + random.nextInt(16);
int y = chunkZ + random.nextInt(16);
cPos = new BlockPos(x, minY + height * 4 / 9 + random.nextInt(height / 9), y);
if (biome == null || biome.contains(world.getBiome(cPos))) {
new WorldGenMinable(state, size, StateMatcher.forState(replace, null, null)).generate(world, random, cPos);
}
}
}
return mGenerated;
}
}

View File

@@ -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();

View File

@@ -3,14 +3,11 @@ package com.sosnitzka.taiga.util;
import com.sosnitzka.taiga.Items;
import com.sosnitzka.taiga.TAIGA;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.registry.GameRegistry;
import org.apache.commons.lang3.StringUtils;
import slimeknights.tconstruct.library.MaterialIntegration;
import slimeknights.tconstruct.library.TinkerRegistry;
@@ -28,16 +25,7 @@ public class Utils {
public static String PREFIX_ORE = "ore";
public static String PREFIX_BLOCK = "block";
public static String PREFIX_DUST = "dust";
/**
* Registers the block and its corresponding item (block as item in inventory)
*
* @param block the associated block
*/
public static void registerBlockWithItem(Block block) {
GameRegistry.register(block);
GameRegistry.register(new ItemBlock(block).setRegistryName(block.getRegistryName()));
}
public static String PREFIX_CRYSTAL = "crystal";
/**
* Registers the fluid and its bucket item
@@ -64,8 +52,11 @@ public class Utils {
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, 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) {
@@ -77,7 +68,8 @@ public class Utils {
if (TinkerRegistry.getMaterial(material.identifier) != Material.UNKNOWN)
return;
TinkerRegistry.addMaterialStats(material, new HeadMaterialStats(headDura, headSpeed, headAttack, headLevel));
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);
@@ -102,12 +94,13 @@ public class Utils {
}
MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix);
integration.integrate();
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);
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) {
@@ -123,6 +116,9 @@ public class Utils {
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();
@@ -133,6 +129,9 @@ public class Utils {
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;
}
@@ -144,6 +143,9 @@ public class Utils {
tag.setInteger("curse", curse);
tag.setString("name", name);
tag.setFloat("radius", radius);
tag.setInteger("dint", dint);
tag.setFloat("dfloat", dfloat);
tag.setBoolean("active", active);
}
}
}

View File

@@ -1,11 +1,12 @@
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.WorldSavedData;
import net.minecraft.world.storage.MapStorage;
import net.minecraft.world.storage.WorldSavedData;
import java.util.ArrayList;
import java.util.List;
@@ -20,9 +21,15 @@ public class MeteorWorldSaveData extends WorldSavedData {
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);
MeteorWorldSaveData instance = (MeteorWorldSaveData) storage.getOrLoadData(MeteorWorldSaveData.class,
DATA_NAME);
if (instance == null) {
instance = new MeteorWorldSaveData();
@@ -48,8 +55,9 @@ public class MeteorWorldSaveData extends WorldSavedData {
@Override
public void readFromNBT(NBTTagCompound nbt) {
if (nbt.hasKey("posData")) {
posList = new Gson().fromJson(nbt.getString("posData"), posList.getClass());
if (nbt.hasKey("posData") && !nbt.getString("posData").isEmpty()) {
posList = new Gson().fromJson(nbt.getString("posData"), new TypeToken<List<BlockPos>>() {
}.getType());
}
}

View File

@@ -1,56 +1,151 @@
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.IChunkGenerator;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.IChunkGenerator;
import net.minecraftforge.fml.common.IWorldGenerator;
import java.util.Random;
import java.util.*;
import static com.google.common.collect.Lists.newArrayList;
import static com.sosnitzka.taiga.Blocks.*;
import static com.sosnitzka.taiga.TAIGAConfiguration.ironGen;
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);
}
Generator.generateOre(false, Blocks.NETHERRACK.getDefaultState(), tiberiumOre.getDefaultState(), random, x, z, world, 15, 0, 128, 10, 35);
Generator.generateOre(true, Blocks.NETHERRACK.getDefaultState(), prometheumOre.getDefaultState(), random, x, z, world, 25, 0, 128, 2, 4);
Generator.generateOre(true, Blocks.NETHERRACK.getDefaultState(), valyriumOre.getDefaultState(), random, x, z, world, 10, 0, 32, 2, 4);
Generator.generateOreDescending(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA.getDefaultState()), osramOre.getDefaultState(), random, x, z, world, 1, 0, 64, 5);
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) {
// Optional
if (!ironGen) {
Generator.generateOre(false, Blocks.STONE.getDefaultState(), Blocks.IRON_ORE.getDefaultState(), random, x, z, world, 20, 0, 128, 1, 8);
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);
}
Generator.generateMeteor(duraniteOre.getDefaultState(), blockMeteorite.getDefaultState(), random, x, z, world, 1, 4, 16, 112);
Generator.generateOreDescending(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA.getDefaultState()), basaltBlock.getDefaultState(), random, x, z, world, 10, 0, 64);
Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), eezoOre.getDefaultState(), random, x, z, world, 3, 0, 10);
Generator.generateOre(karmesineOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.DIORITE, random, x, z, world, 15, 0, 96, 3, 4, null);
Generator.generateOre(karmesineOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.ANDESITE, random, x, z, world, 15, 0, 96, 3, 4, null);
Generator.generateOre(karmesineOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.GRANITE, random, x, z, world, 15, 0, 96, 3, 4, null);
Generator.generateOreDense(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world, 10, 0, 64, 2, 12, newArrayList(Biomes.DESERT_HILLS, Biomes.EXTREME_HILLS, Biomes.EXTREME_HILLS_EDGE, Biomes.EXTREME_HILLS_WITH_TREES, Biomes.DESERT));
}
private void end(Random random, int x, int z, World world) {
Generator.generateCube(true, uruOre.getDefaultState(), blockObsidiorite.getDefaultState(), random, x, z, world, 1, 2, 0, 96, 3);
Generator.generateOre(Blocks.END_STONE.getDefaultState(), Blocks.AIR.getDefaultState(), null, null, random, x, z, world, 1, 3, 64, 3, 8, null);
Generator.generateOre(false, Blocks.END_STONE.getDefaultState(), auroriumOre.getDefaultState(), random, x, z, world, 10, 32, 48, 2, 4);
Generator.generateOre(true, Blocks.END_STONE.getDefaultState(), palladiumOre.getDefaultState(), random, x, z, world, 10, 48, 64, 2, 4);
Generator.generateOreBottom(Blocks.END_STONE.getDefaultState(), abyssumOre.getDefaultState(), random, x, z, world, 12, 4, 64);
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) {
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()) {
@@ -59,12 +154,18 @@ public class WorldGen implements IWorldGenerator {
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:
world(random, x, z, world);
if (!blackList.contains(world.provider.getDimension()))
other(random, x, z, world);
break;
}
}

View File

@@ -1,31 +1,24 @@
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 javax.annotation.ParametersAreNonnullByDefault;
import java.util.Random;
import java.util.function.Predicate;
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 WorldGenMinable(IBlockState state, int blockCount) {
this(state, blockCount, BlockMatcher.forBlock(Blocks.STONE));
}
public WorldGenMinable(IBlockState state, int blockCount, Predicate<IBlockState> predicate) {
super(state, blockCount, predicate);
super(state, blockCount, predicate::test);
this.oreBlock = state;
this.numberOfBlocks = blockCount;
this.predicate = predicate;
@@ -50,12 +43,12 @@ public class WorldGenMinable extends net.minecraft.world.gen.feature.WorldGenMin
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);

View 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;
}
}
}

View File

@@ -3,7 +3,7 @@
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/karmesinediorite"
"all": "taiga:blocks/block/dilithium"
},
"transform": "forge:default-block"
},

View File

@@ -3,7 +3,7 @@
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/karmesinegranite"
"all": "taiga:blocks/ore/dilithium"
},
"transform": "forge:default-block"
},

View File

@@ -11,6 +11,27 @@
}
}
],
"magma_fluid": [
{
"custom": {
"fluid": "magma_fluid"
}
}
],
"dilithium_fluid": [
{
"custom": {
"fluid": "dilithium_fluid"
}
}
],
"nitronite_fluid": [
{
"custom": {
"fluid": "nitronite_fluid"
}
}
],
"meteorite_fluid": [
{
"custom": {
@@ -74,6 +95,27 @@
}
}
],
"jauxum_fluid": [
{
"custom": {
"fluid": "jauxum_fluid"
}
}
],
"ovium_fluid": [
{
"custom": {
"fluid": "ovium_fluid"
}
}
],
"terrax_fluid": [
{
"custom": {
"fluid": "terrax_fluid"
}
}
],
"palladium_fluid": [
{
"custom": {
@@ -109,13 +151,6 @@
}
}
],
"tiberiumX_fluid": [
{
"custom": {
"fluid": "tiberiumX_fluid"
}
}
],
"fractum_fluid": [
{
"custom": {

View File

@@ -3,7 +3,7 @@
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/karmesineandensite"
"all": "taiga:blocks/block/jauxum"
},
"transform": "forge:default-block"
},

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/jauxum"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/ovium"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/ovium"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/terrax"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,2 @@
index_title=TAIGA
modifier.informations=Informationen

View File

@@ -0,0 +1,18 @@
{
"title": "Abyssum",
"r": 33,
"g": 188,
"b": 194,
"input": {
"id": "taiga:abyssum_ore"
},
"description": [
{
"text": "Wie schon bei Eezo entsteht Abyssum durch Sonnenstürme, die bis ins End reichen. Das aufgeladenen Void fusioniert dabei mit Endstein zu Abyssum und setzt sich, da keine Bedrockbarriere existiert an den Boden der Enderinseln ab."
}
],
"informations": [
"Level: Cobalt",
"Achtung: Stürze nicht ins Void"
]
}

View File

@@ -0,0 +1,18 @@
{
"title": "Aurorium",
"r": 239,
"g": 174,
"b": 148,
"input": {
"id": "taiga:aurorium_ore"
},
"description": [
{
"text": "Aurorium ist nicht sehr häufig im Ende zu finden, aber mit ein wenig Fleiß und Geduld findet man genug. Aktuell besitzt Aurorium keine gesonderen Features."
}
],
"informations": [
"Level: Cobalt",
"Selten"
]
}

View File

@@ -0,0 +1,19 @@
{
"title": "Basalt",
"r": 220,
"g": 220,
"b": 220,
"input": {
"id": "taiga:basalt_block"
},
"description": [
{
"text": "Basalt entsteht bei hohen Temperaturen und sondert sich als Schlacke ab. Da es leichter ist, als Stein, schwimmt es auf der Lava, sodass man beim Abbau vorsichtig sein muss. Man nutzt Basalt zur Stabilisierung von Tiberium."
}
],
"informations": [
"Level: Iron",
"Swims on lava",
"Used for some alloys"
]
}

View File

@@ -0,0 +1,19 @@
{
"title": "Dilithium",
"r": 121,
"g": 174,
"b": 166,
"input": {
"id": "taiga:dilithium_ore"
},
"description": [
{
"text": "Wo es Sand gibt, ist Dilithium nicht weit entfernt. Man nutzt es, um Tiberium zu stabilisieren, wobei es selbst viel eigene Energie besitzt. Es kann explodieren, aber auch als Wärmequelle genutzt werden."
}
],
"informations": [
"Level: Diamant",
"Vorsicht: Kann bei Explosionen eine Kettenreaktion auslösen",
"Orte: Wüsten, Strände, Ozene"
]
}

View File

@@ -0,0 +1,19 @@
{
"title": "Duranite",
"r": 172,
"g": 221,
"b": 235,
"input": {
"id": "taiga:duranite_ore"
},
"description": [
{
"text": "Vor langer Zeit stürzten brennende Meteoriten vom Himmel. Die Reibungshitze war so groß, dass sie die Metalle im inneren zusammenschmolz und einen enorm harten Klumpen Duranite erzeugte."
}
],
"informations": [
"Level: Duranite",
"Sehr selten",
"Eingeschlossen in Meteoriten"
]
}

View File

@@ -0,0 +1,19 @@
{
"title": "Element Zero",
"r": 56,
"g": 89,
"b": 106,
"input": {
"id": "taiga:eezo_ore"
},
"description": [
{
"text": "Hin und wieder erzeugen Sonnenstürme enorm starke Magnetwellen, die bis unter die Erdoberfläche reichen. Das Void wird davon in Wallung versetzt und reicht selten bis an den Bedrock, wo es zu Element Zero fusioniert."
}
],
"informations": [
"Level: Cobalt",
"Selten",
"Achtung: Beim Abbau nicht ins Void stürzen"
]
}

View File

@@ -0,0 +1,18 @@
{
"title": "Jauxum",
"r": 104,
"g": 198,
"b": 99,
"input": {
"id": "taiga:jauxum_ore"
},
"description": [
{
"text": "Jauxum ist eines der drei etherischen Erze. Zusammen mit Karmesine und Ovium erzeugt es beim verschmelzen die Verbindung Terrax."
}
],
"informations": [
"Level: Cobalt",
"Entsteht in Granit"
]
}

View File

@@ -0,0 +1,18 @@
{
"title": "Karmesin",
"r": 235,
"g": 72,
"b": 74,
"input": {
"id": "taiga:karmesine_ore"
},
"description": [
{
"text": "Karmesin ist eines der drei etherischen Erze. Zusammen mit Jauxum und Ovium erzeugt es beim verschmelzen die Verbindung Terrax."
}
],
"informations": [
"Level: Cobalt",
"Entsteht in andensit"
]
}

View File

@@ -0,0 +1,19 @@
{
"title": "Meteorit",
"r": 35,
"g": 35,
"b": 35,
"input": {
"id": "taiga:meteorite_block"
},
"description": [
{
"text": "Man muss Geduld aufbringen, um Meteoriten zu finden. Vor vielen tausend Jahren stürzten sie vom Himmel. Die meisten von ihnen liegen unter der Erde begraben, entsprechend aufwändig gestaltet die Suche."
}
],
"informations": [
"Level: Cobalt",
"Manchmal zerbröselt es beim Abbau",
"Liegt häufig unterirdisch"
]
}

View File

@@ -0,0 +1,20 @@
{
"title": "Obsidiorit",
"r": 34,
"g": 72,
"b": 83,
"input": {
"id": "taiga:obsidiorite_block"
},
"description": [
{
"text": "Obsidiorit findet man im Ende ziemlich häufig. Scheinbar entstanden die kubischen Meteoriten im Void und schweben seither im Ende umher. Man muss fliegen können oder Treppen bauen, um sie abzubauen."
}
],
"informations": [
"Level: Duranite",
"Manchmal brechen sie nicht vollständig",
"Sehr hart",
"Schweben im Ende"
]
}

View File

@@ -0,0 +1,19 @@
{
"title": "Osram",
"r": 255,
"g": 188,
"b": 144,
"input": {
"id": "taiga:osram_ore"
},
"description": [
{
"text": "Osram entstand, als Glimmersteinpartikel unter hohem Druck und enormen Temperaturen schmolz. Dieses seltene Erz kann man in den vielen Lavaseen des Nethers entdecken."
}
],
"informations": [
"Level: Cobalt",
"Schwimmt in Nether-Lavaseen",
"Es ist hart und heiß"
]
}

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