112 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
261b67a74c deleted stuff 2016-12-06 16:46:22 +01:00
ccd699cd05 make compatible with 1.7 again 2016-12-05 21:37:27 +01:00
fd37c72cfc fixed build 2016-12-05 20:46:52 +01:00
c1b92eb7ae set java target version to java 8 2016-12-05 20:44:21 +01:00
Giovanni Harting
826ab1cf3a [1.2] Material rework (#60)
* Developement tests for nbt data in traits

* Lot of trait changes and better balancing

* Traits reworked a bit, new traits added.

* First correction of NBT Data in Trait (Soulbound). Is shown twice. Still needs corrections.

* Few fixes in traits and new trait "catcher"

* Small fix, needs workaround

* fixed some catch issues

* Fixed Catcher and Reviving Traits, new Trait: Souleater. Updated build.gradle for new TiC Version.

* Splitted SoulEater to get the bad touch to an extra trait "Cursed". Added method for using nbt more easily. Changed declaration names of fluids

* Some minor changes in Traits, Registry and Utils.

* Iron_nugget is replaced with oreDict Item when not loaded via TAIGA.

* Beginning of new material  integration. Lot of names changed, lot more work to do here. Many null pointer exceptions and no changes of values up to now.

* Some Small changes in names, registry and recipes

* Some weird stuff I don't remember :D

* fixed some things I missed while merging

* Rollback to something

* More Stuff

* fixed some merging stuff

* Fixed some misspelled names. Actually working with lots of restrictions.

* Rearranged alloys, tried to add blocks / ingots for non-tinker-materials, but they won't work.

* Again tried to fix the melting issue, but non-tinker materials still are not able to be casted as a block, ingot or nugget...

* Fixed integration of materials without tools.

* changed IMC to direct lib calls

* removed more IMC, removed redundant code

* some reformatting

* Alloy integration reworked, needs to be balanced.

* updated deps, renamed some func's, added duplicate material check

* some more renaming

* some reformatting, fixed wrong import, fixed string cmp's

* Added images for blocks, ingots, nuggets and dust. Json changes do not work yet.

* some reformatting

* Removed old json files. Placeholder needed.

* Fixed block json, items not working yet.

* Fixed my own derp (missing json files)

* Reduced materials to ensure unique traits for most of them. Still 30 though, but reduced by 20 more :'( RIP

* Changed some generator stuff, not working properly right now!

* rewrote offset generation, added some debug command, fixed some stuff

* fixed on-surface-generation, made dependencies more flexible

* reverted gen-weight back to its normal value

* Meteor generator implemented.

* fixed generating on ground

* optimized a thing

* Replaced Uru with Osram, replaced Meteorite with Uru, added Meteorite again for Hull-Material and late game alloy.

* Some changes in generation of ores, not ready yet.

* Added Cobble Meteorite. Added debug command. Implemented rest of ore generation. Some minor fixes left for generation including balancing.

* Some changes for ore generation. Added 2 separate Generic Blocks for meteorite and their cobble variant.

* some cleanup in Generator class, added meteor world save handler

* Added Textures. Added blockstates and item models. Fixed fluid rendering.

* renamed world save data file to be little more specific, removed a unused method

* some preps for the upcoming release

* First attempt of well balancing material stats. Renamed TiberiumX to Triberium.

* Final changes... ready for beta testing

* Added missing alloys.

* Corrected balancing of ore generation. Still WIP

* removed some last debug out

* one last reformat
2016-12-05 20:34:02 +01:00
9554b56931 fixed player being null when instable triggers (fixes #57) 2016-11-08 15:24:07 +01:00
Giovanni Harting
77a9fad5ce fixed typo in readme 2016-10-19 22:44:24 +02:00
Giovanni Harting
9d4e7213eb Update README.md 2016-10-19 22:43:29 +02:00
03e5b50459 fixed a typo 2016-10-18 21:01:04 +02:00
ea594cef3d fixed reviving trait not works with wither skeletons, closes #32 2016-10-18 20:57:03 +02:00
ae4aef454e fixed fracture breaking bedrock, closes #35 2016-10-18 20:27:53 +02:00
4e8222a884 fixed some versoning stuff 2016-10-18 19:39:38 +02:00
c170c9d21d updated deps 2016-10-16 02:32:25 +02:00
cf3aa58fa1 increased min-height 2016-09-12 22:26:02 +02:00
b7e996a9d7 fixed endless loop in teleport trait, closes #38 2016-09-12 22:24:56 +02:00
58eacac28c updated dependencies
compatibility with latest TCon
2016-09-11 23:10:57 +02:00
Robert Sosnitzka
8c334a4cdd Added recipes for ingots, blocks and nuggets! 2016-08-17 23:46:09 +02:00
Robert Sosnitzka
fafde83d4c Changed explosion size, cause users struggling with that piece of shit. Iron_nugget is replaced with oreDict Item when not loaded via TAIGA. 2016-08-05 15:46:45 +02:00
773 changed files with 8372 additions and 4531 deletions

1
.gitignore vendored
View File

@@ -172,6 +172,7 @@ gradle-app.setting
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 # # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties # gradle/wrapper/gradle-wrapper.properties
*.hprof
# Forge # Forge
run/ 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: Included:
* 16 new meltable Ores with 4 new hardness levels (5,6,7,8) * 16 new meltable Ores with 4 new hardness levels (5,6,7,8)
@@ -20,17 +24,13 @@ Download
Dependencies Dependencies
=============== ===============
Necessary: Necessary:
* Tinkers Construct for 1.10.2 + associated version of mantle * Tinkers Construct for 1.12.2 + associated version of mantle
* Minecraft Forge 1.10.2 * Minecraft Forge 1.12.2
Tested with:
* [Tinkers Construct 2.3.3a](http://minecraft.curseforge.com/projects/tinkers-construct/files)
* [Minecraft Forge 12.18.1.2011](http://files.minecraftforge.net/)
What's going on? What's going on?
=== ===
What's actually new? What does the mod add?
* There are 16 kinds of new ores, seperated in 4 categories each: Arcane, solide, ethere and ratio metals. * There are 16 kinds of new ores, seperated in 4 categories each: Arcane, solide, ethere and ratio metals.
* You are just able to combine some of them as neigbours in a "circle": Arcane <> Solide <> Ethere <> Ratio <> Arcane - you gonna check JEI for Recipes! * You are just able to combine some of them as neigbours in a "circle": Arcane <> Solide <> Ethere <> Ratio <> Arcane - you gonna check JEI for Recipes!
* The hardness of the new tool depends on their parents. Not every alloy is hard enough, to mine the next alloy-level. * The hardness of the new tool depends on their parents. Not every alloy is hard enough, to mine the next alloy-level.
@@ -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! 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

@@ -1,4 +1,3 @@
// For those who want the bleeding edge
buildscript { buildscript {
repositories { repositories {
jcenter() jcenter()
@@ -11,8 +10,8 @@ buildscript {
} }
} }
dependencies { dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT' classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
classpath 'gradle.plugin.com.matthewprenger:CurseGradle:1.0.8' classpath 'gradle.plugin.com.matthewprenger:CurseGradle:1.1.0'
} }
} }
@@ -36,6 +35,10 @@ repositories {
group = "com.sosnitzka" // http://maven.apache.org/guides/mini/guide-naming-conventions.html group = "com.sosnitzka" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "taiga" archivesBaseName = "taiga"
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
task buildInfo { task buildInfo {
if (System.getenv().TAIGA_TAG != null) { if (System.getenv().TAIGA_TAG != null) {
ext.revision = System.getenv().TAIGA_TAG ext.revision = System.getenv().TAIGA_TAG
@@ -47,7 +50,6 @@ task buildInfo {
ext.buildNum = System.getenv().BUILD_NUMBER 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 cmd = "git log \$(git tag --sort=-refname | sed -n '2p')..\$(git tag --sort=-refname | sed -n '1p') --oneline"
def proc = cmd.execute() def proc = cmd.execute()
proc.waitFor() proc.waitFor()
@@ -61,18 +63,10 @@ task buildInfo {
version = project.buildInfo.revision version = project.buildInfo.revision
minecraft { minecraft {
version = "1.10.2-12.18.1.2011" version = "1.12.2-14.23.5.2768"
runDir = "run" runDir = "run"
mappings = "snapshot_20170801"
// the mappings can be changed at any time, and must be in the following format. replace '@VERSION@', project.version
// snapshot_YYYYMMDD snapshot are built nightly.
// stable_# stables are built at the discretion of the MCP team.
// Use non-default mappings at your own risk. they may not allways work.
// simply re-run your setup task after changing the mappings to update your workspace.
mappings = "snapshot_20160701"
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
replace "${version}", project.version
} }
//noinspection GroovyAssignabilityCheck //noinspection GroovyAssignabilityCheck
@@ -80,14 +74,9 @@ ext.mc_version = project.minecraft.version.split('-')[0]
version = "${mc_version}-${project.buildInfo.revision}" version = "${mc_version}-${project.buildInfo.revision}"
dependencies { dependencies {
//deobfCompile "codechicken:CodeChickenLib:1.9.4-2.0.2.39:deobf" deobfCompile "slimeknights.mantle:Mantle:1.12-1.3.+:deobf"
//deobfCompile "codechicken:CodeChickenCore:1.9.4-2.0.3.65:deobf" deobfCompile "mezz.jei:jei_1.12.2:4.+"
//deobfCompile "codechicken:NotEnoughItems:1.9-${nei_version}:dev" deobfCompile "slimeknights:TConstruct:1.12.2-2.10.+:deobf"
deobfCompile "slimeknights.mantle:Mantle:1.10.2-0.10.3.jenkins161:deobf"
//Old: deobfCompile "slimeknights.mantle:Mantle:1.9-0.10.0.jenkins132:deobf"
deobfCompile "mezz.jei:jei_1.10.2:3.7.6.231"
deobfCompile "slimeknights:TConstruct:1.10-2.3.3a.jenkins271:deobf"
//compile files('libs/TConstruct-1.9-2.3.1.DEV.1d4c1de-deobf.jar')
} }
sourceSets { sourceSets {
@@ -119,6 +108,7 @@ processResources {
} }
task deobfJar(type: Jar) { task deobfJar(type: Jar) {
//noinspection GroovyAssignabilityCheck
from sourceSets.main.output from sourceSets.main.output
classifier = 'deobf' classifier = 'deobf'
} }
@@ -134,8 +124,8 @@ curseforge {
id = '247661' id = '247661'
changelog = project.buildInfo.changes // A file can also be set using: changelog = file('changelog.txt') changelog = project.buildInfo.changes // A file can also be set using: changelog = file('changelog.txt')
releaseType = 'release' releaseType = 'release'
addGameVersion '1.10.2' //addGameVersion '1.10.2'
addGameVersion '1.10.1' //addGameVersion '1.10.1'
addArtifact deobfJar addArtifact deobfJar
mainArtifact(jar) { mainArtifact(jar) {
@@ -143,7 +133,7 @@ curseforge {
} }
relations { 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 distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists 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. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum" MAX_FD="maximum"
warn ( ) { warn () {
echo "$*" echo "$*"
} }
die ( ) { die () {
echo echo
echo "$*" echo "$*"
echo echo
@@ -154,11 +154,19 @@ if $cygwin ; then
esac esac
fi fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules # Escape application args
function splitJvmOpts() { save () {
JVM_OPTS=("$@") for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
} }
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS APP_ARGS=$(save "$@")
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
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 @rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args :win9xME_args
@rem Slurp the command line arguments. @rem Slurp the command line arguments.
@@ -60,11 +59,6 @@ set _SKIP=2
if "x%~1" == "x" goto execute if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%* set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute :execute
@rem Setup the command line @rem Setup the command line

View File

@@ -1,35 +1,75 @@
package com.sosnitzka.taiga; package com.sosnitzka.taiga;
import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack;
import slimeknights.tconstruct.shared.TinkerFluids;
import static com.sosnitzka.taiga.Fluids.*; import static com.sosnitzka.taiga.Fluids.*;
import static com.sosnitzka.taiga.util.Utils.registerTinkerAlloys; import static com.sosnitzka.taiga.util.Utils.registerTinkerAlloy;
public class Alloys { public class Alloys {
/** /**
* Registers alloying in the smeltery * Registers alloying in the smeltery
*/ */
static void register() { public static void register() {
registerTinkerAlloys(nitroniteFluid, 2, tiberiumFluid, 4, vibraniumFluid, 3, nitroFluid, 3); registerTinkerAlloy(new FluidStack(terraxFluid, 2), new FluidStack(karmesineFluid, 1), new FluidStack
registerTinkerAlloys(bysmuidFluid, 1, rubiumFluid, 3, bismuthFluid, 2, anthraciteFluid, 3); (oviumFluid, 1), new FluidStack(jauxumFluid, 1));
registerTinkerAlloys(ultraniteFluid, 1, prometheumFluid, 3, adamantiteFluid, 2, radiant_enderium, 3); registerTinkerAlloy(new FluidStack(triberiumFluid, 1), new FluidStack(tiberiumFluid, 5), new FluidStack
registerTinkerAlloys(astriumFluid, 1, arcaniteFluid, 3, karmesineFluid, 2, energy_enderium, 3); (basaltFluid, 1));
registerTinkerAlloy(new FluidStack(triberiumFluid, 1), new FluidStack(tiberiumFluid, 5), new FluidStack
(dilithiumFluid, 2));
registerTinkerAlloy(new FluidStack(fractumFluid, 2), new FluidStack(triberiumFluid, 3), new FluidStack
(TinkerFluids.obsidian, 3), new FluidStack(abyssumFluid, 1));
registerTinkerAlloy(new FluidStack(violiumFluid, 2), new FluidStack(auroriumFluid, 3), new FluidStack
(TinkerFluids.ardite, 2));
registerTinkerAlloy(new FluidStack(proxiiFluid, 3), new FluidStack(prometheumFluid, 3), new FluidStack
(palladiumFluid, 3), new FluidStack(eezoFluid, 1));
registerTinkerAlloy(new FluidStack(tritoniteFluid, 2), new FluidStack(TinkerFluids.cobalt, 3), new FluidStack
(terraxFluid, 2));
registerTinkerAlloy(new FluidStack(ignitzFluid, 2), new FluidStack(TinkerFluids.ardite, 2), new FluidStack
(terraxFluid, 2), new FluidStack(osramFluid, 1));
registerTinkerAlloy(new FluidStack(imperomiteFluid, 2), new FluidStack(duraniteFluid, 3), new FluidStack
(prometheumFluid, 1), new FluidStack(abyssumFluid, 1));
registerTinkerAlloy(new FluidStack(solariumFluid, 2), new FluidStack(valyriumFluid, 2), new FluidStack
(uruFluid, 2), new FluidStack(nucleumFluid, 1));
registerTinkerAlloy(new FluidStack(adamantFluid, 3), new FluidStack(vibraniumFluid, 1), new FluidStack
(solariumFluid, 1), new FluidStack(ioxFluid, 3));
registerTinkerAlloy(new FluidStack(nihiliteFluid, 1), new FluidStack(vibraniumFluid, 1), new FluidStack
(solariumFluid, 1));
registerTinkerAlloy(new FluidStack(seismumFluid, 4), new FluidStack(TinkerFluids.obsidian, 4), new FluidStack
(triberiumFluid, 2), new FluidStack(eezoFluid, 1));
registerTinkerAlloy(new FluidStack(astriumFluid, 2), new FluidStack(terraxFluid, 3), new FluidStack
(auroriumFluid, 2));
registerTinkerAlloy(new FluidStack(niobFluid, 3), new FluidStack(palladiumFluid, 3), new FluidStack
(duraniteFluid, 1), new FluidStack(osramFluid, 1));
registerTinkerAlloy(new FluidStack(yrdeenFluid, 3), new FluidStack(uruFluid, 3), new FluidStack
(valyriumFluid, 3), new FluidStack(osramFluid, 1));
registerTinkerAlloy(new FluidStack(yrdeenFluid, 3), new FluidStack(uruFluid, 3), new FluidStack
(valyriumFluid, 3), new FluidStack(eezoFluid, 1));
registerTinkerAlloy(new FluidStack(yrdeenFluid, 3), new FluidStack(uruFluid, 3), new FluidStack
(valyriumFluid, 3), new FluidStack(abyssumFluid, 1));
registerTinkerAlloy(new FluidStack(ioxFluid, 1), new FluidStack(eezoFluid, 2), new FluidStack(abyssumFluid,
2), new FluidStack(osramFluid, 2), new FluidStack(obsidioriteFluid, 9));
registerTinkerAlloy(new FluidStack(ioxFluid, 1), new FluidStack(eezoFluid, 2), new FluidStack(abyssumFluid,
2), new FluidStack(osramFluid, 2), new FluidStack(meteoriteFluid, 9), new FluidStack(TinkerFluids
.obsidian, 9));
registerTinkerAlloy(new FluidStack(lumixFluid, 1), new FluidStack(palladiumFluid, 1), new FluidStack
(terraxFluid, 1));
registerTinkerAlloy(new FluidStack(obsidioriteFluid, 1), new FluidStack(meteoriteFluid, 1), new FluidStack
(TinkerFluids.obsidian, 1));
registerTinkerAlloy(new FluidStack(nucleumFluid, 3), new FluidStack(proxiiFluid, 3), new FluidStack
(abyssumFluid, 1), new FluidStack(osramFluid, 1));
registerTinkerAlloy(new FluidStack(nucleumFluid, 3), new FluidStack(imperomiteFluid, 3), new FluidStack
(osramFluid, 1), new FluidStack(eezoFluid, 1));
registerTinkerAlloy(new FluidStack(nucleumFluid, 3), new FluidStack(niobFluid, 3), new FluidStack(eezoFluid,
1), new FluidStack(abyssumFluid, 1));
registerTinkerAlloy(new FluidStack(dyoniteFluid, 3), new FluidStack(triberiumFluid, 3), new FluidStack
(fractumFluid, 1), new FluidStack(seismumFluid, 1), new FluidStack(osramFluid, 1));
registerTinkerAlloy(new FluidStack(dyoniteFluid, 3), new FluidStack(tiberiumFluid, 12), new FluidStack
(fractumFluid, 1), new FluidStack(seismumFluid, 1), new FluidStack(osramFluid, 1));
registerTinkerAlloy(new FluidStack(nitroniteFluid, 6), new FluidStack(magmaFluid, 6), new FluidStack
(osramFluid, 1));
registerTinkerAlloys(imperomiteFluid, 2, titaniteFluid, 3, palladiumFluid, 3, FluidRegistry.LAVA, 3);
registerTinkerAlloys(dyoniteFluid, 1, meteoriteFluid, 3, tiberiumFluid, 2, spectrumFluid, 3);
registerTinkerAlloys(solariumFluid, 2, vibraniumFluid, 4, ignititeFluid, 4, nitroFluid, 3);
registerTinkerAlloys(fractoryteFluid, 2, adamantiteFluid, 4, rubiumFluid, 2, FluidRegistry.LAVA, 3);
registerTinkerAlloys(aegisaltFluid, 1, eterniteFluid, 3, mindoriteFluid, 3, glimmercoalFluid, 3);
registerTinkerAlloys(noctunyxFluid, 1, mythrilFluid, 4, titaniteFluid, 2, spectrumFluid, 3);
registerTinkerAlloys(nucleumFluid, 1, palladiumFluid, 3, violiumFluid, 3, radiant_enderium, 3);
registerTinkerAlloys(seismodiumFluid, 2, ignititeFluid, 5, meteoriteFluid, 3, glimming_enderium, 3);
registerTinkerAlloys(lumixylFluid, 1, bismuthFluid, 3, prometheumFluid, 2, glimming_enderium, 6);
registerTinkerAlloys(terramiteFluid, 2, violiumFluid, 4, eterniteFluid, 2, energy_enderium, 3);
registerTinkerAlloys(cryptogenFluid, 1, mindoriteFluid, 4, arcaniteFluid, 2, anthraciteFluid, 3);
registerTinkerAlloys(proxideumFluid, 1, karmesineFluid, 3, mythrilFluid, 2, glimmercoalFluid, 3);
} }
} }

View File

@@ -1,13 +1,16 @@
package com.sosnitzka.taiga; package com.sosnitzka.taiga;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.sosnitzka.taiga.blocks.BlockLignite; import com.sosnitzka.taiga.blocks.BlockCobble;
import com.sosnitzka.taiga.blocks.BlockMeteoriteRock;
import com.sosnitzka.taiga.blocks.BlockTiberium; import com.sosnitzka.taiga.blocks.BlockTiberium;
import com.sosnitzka.taiga.generic.BasicBlock; import com.sosnitzka.taiga.generic.BasicBlock;
import com.sosnitzka.taiga.generic.BasicBlockGround; import com.sosnitzka.taiga.generic.BlockOre;
import com.sosnitzka.taiga.util.Utils;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; 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 net.minecraftforge.oredict.OreDictionary;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -21,76 +24,92 @@ import static slimeknights.tconstruct.library.utils.HarvestLevels.*;
public class Blocks { public class Blocks {
// blocks and ores spawned via worldgen
/// /regular Ores / Blocks without extra abilites public static Block basaltBlock = new BasicBlock("basalt_block", Material.ROCK, 20.0f, 35.0f, IRON, PREFIX_BLOCK);
public static Block basalt = new BasicBlock("basalt", Material.ROCK, 45.0f, 35.0f, OBSIDIAN);
public static Block rottenGround = new BasicBlockGround("rotten_ground", Material.GROUND, 2.0f, 2.0f, STONE);
public static Block ligniteOre = new BlockLignite();
// will be optional / config
public static Block slagironOre = new BasicBlock("slagiron_ore", Material.ROCK, 3.0f, 5.0f, IRON);
public static Block slaggoldOre = new BasicBlock("slaggold_ore", Material.ROCK, 3.0f, 5.0f, IRON);
// Ores
// Group: Solide
public static Block titaniteOre = new BasicBlock("titanite_ore", Material.ROCK, 55.0f, 40f, TITANITE, PREFIX_ORE);
public static Block meteoriteOre = new BasicBlock("meteorite_ore", Material.ROCK, 60.0f, 50f, METEORITE, PREFIX_ORE);
public static Block vibraniumOre = new BasicBlock("vibranium_ore", Material.ROCK, 70.0f, 60f, VIBRANIUM, PREFIX_ORE);
public static Block adamantiteOre = new BasicBlock("adamantite_ore", Material.ROCK, 80.0f, 70f, ADAMANTITE, PREFIX_ORE);
// Group: Arcane
public static Block prometheumOre = new BasicBlock("prometheum_ore", Material.ROCK, 35.0f, 12f, COBALT, 0.4f, PREFIX_ORE);
public static Block rubiumOre = new BasicBlock("rubium_ore", Material.ROCK, 13.0f, 12f, TITANITE, PREFIX_ORE);
public static Block tiberiumOre = new BlockTiberium(); public static Block tiberiumOre = new BlockTiberium();
public static Block arcaniteOre = new BasicBlock("arcanite_ore", Material.ROCK, 23.0f, 12f, METEORITE, PREFIX_ORE); public static Block auroriumOre = new BasicBlock("aurorium_ore", Material.ROCK, 15.0f, 12f, COBALT, 0.2f,
// Group: Etheri PREFIX_ORE);
public static Block eterniteOre = new BasicBlock("eternite_ore", Material.ROCK, 24.0f, 15f, COBALT, PREFIX_ORE); public static Block prometheumOre = new BasicBlock("prometheum_ore", Material.ROCK, 20.0f, 12f, DURANITE, 0.4f,
public static Block mythrilOre = new BasicBlock("mythril_ore", Material.ROCK, 25.0f, 15f, TITANITE, PREFIX_ORE); PREFIX_ORE);
public static Block palladiumOre = new BasicBlock("palladium_ore", Material.ROCK, 25.0f, 15f, METEORITE, 0.4f, PREFIX_ORE); public static Block duraniteOre = new BasicBlock("duranite_ore", Material.ROCK, 25.0f, 1000f, DURANITE, PREFIX_ORE);
public static Block ignititeOre = new BasicBlock("ignitite_ore", Material.ROCK, 23.0f, 15f, VIBRANIUM, PREFIX_ORE); public static Block valyriumOre = new BasicBlock("valyrium_ore", Material.ROCK, 35.0f, 2000f, VALYRIUM, PREFIX_ORE);
// Group: Ratio public static Block vibraniumOre = new BasicBlock("vibranium_ore", Material.ROCK, 40.0f, 3000f, VIBRANIUM,
public static Block violiumOre = new BasicBlock("violium_ore", Material.ROCK, 13.0f, 10f, COBALT, PREFIX_ORE); PREFIX_ORE);
public static Block bismuthOre = new BasicBlock("bismuth_ore", Material.ROCK, 8.0f, 5f, OBSIDIAN, PREFIX_ORE); public static Block karmesineOre = new BasicBlock("karmesine_ore", Material.ROCK, 10.0f, 10f, COBALT, PREFIX_ORE);
public static Block mindoriteOre = new BasicBlock("mindorite_ore", Material.ROCK, 12.0f, 10f, TITANITE, PREFIX_ORE); public static Block oviumOre = new BasicBlock("ovium_ore", Material.ROCK, 10.0f, 10f, COBALT, PREFIX_ORE);
public static Block karmesineOre = new BasicBlock("karmesine_ore", Material.ROCK, 13.0f, 10f, METEORITE, PREFIX_ORE); public static Block jauxumOre = new BasicBlock("jauxum_ore", Material.ROCK, 10.0f, 10f, COBALT, PREFIX_ORE);
public static Block palladiumOre = new BasicBlock("palladium_ore", Material.ROCK, 25.0f, 150f, DURANITE, 0.4f,
PREFIX_ORE);
public static Block uruOre = new BasicBlock("uru_ore", Material.ROCK, 35.0f, 500f, VALYRIUM, PREFIX_ORE);
public static Block osramOre = new BasicBlock("osram_ore", Material.ROCK, 15.0f, 35.0f, COBALT, PREFIX_ORE);
public static Block eezoOre = new BasicBlock("eezo_ore", Material.ROCK, 50.0f, 50000.0f, COBALT, PREFIX_ORE);
public static Block abyssumOre = new BasicBlock("abyssum_ore", Material.ROCK, 15.0f, 35.0f, COBALT, PREFIX_ORE);
// Blocks // Ore Castsee
// Group: Solide public static Block tiberiumBlock = new BasicBlock("tiberium_block", Material.GLASS, 10.0f, 15f, STONE, 1f,
public static Block titaniteBlock = new BasicBlock("titanite_block", Material.ROCK, 55.0f, 50f, 5, PREFIX_BLOCK); PREFIX_BLOCK);
public static Block meteoriteBlock = new BasicBlock("meteorite_block", Material.ROCK, 60.0f, 60f, 6, PREFIX_BLOCK); public static Block auroriumBlock = new BasicBlock("aurorium_block", Material.ROCK, 15.0f, 15f, COBALT,
public static Block vibraniumBlock = new BasicBlock("vibranium_block", Material.ROCK, 70.0f, 70f, 7, PREFIX_BLOCK); PREFIX_BLOCK);
public static Block adamantiteBlock = new BasicBlock("adamantite_block", Material.ROCK, 80.0f, 80f, 8, PREFIX_BLOCK); public static Block prometheumBlock = new BasicBlock("prometheum_block", Material.ROCK, 20.0f, 15f, DURANITE,
// Group: Arcane 0.5f, PREFIX_BLOCK);
public static Block prometheumBlock = new BasicBlock("prometheum_block", Material.ROCK, 35.0f, 15f, 2, 0.5f, PREFIX_BLOCK); public static Block duraniteBlock = new BasicBlock("duranite_block", Material.ROCK, 20.0f, 800f, DURANITE,
public static Block rubiumBlock = new BasicBlock("rubium_block", Material.ROCK, 13.0f, 15f, 5, PREFIX_BLOCK); PREFIX_BLOCK);
public static Block tiberiumBlock = new BasicBlock("tiberium_block", Material.ROCK, 30.0f, 15f, 6, 1f, PREFIX_BLOCK); public static Block valyriumBlock = new BasicBlock("valyrium_block", Material.ROCK, 20.0f, 1500f, VALYRIUM,
public static Block arcaniteBlock = new BasicBlock("arcanite_block", Material.ROCK, 23.0f, 15f, 7, PREFIX_BLOCK); PREFIX_BLOCK);
// Group: Etheri public static Block vibraniumBlock = new BasicBlock("vibranium_block", Material.ROCK, 20.0f, 3000f, VIBRANIUM,
public static Block eterniteBlock = new BasicBlock("eternite_block", Material.ROCK, 24.0f, 20f, 4, PREFIX_BLOCK); PREFIX_BLOCK);
public static Block mythrilBlock = new BasicBlock("mythril_block", Material.ROCK, 25.0f, 20f, 5, PREFIX_BLOCK); public static Block karmesineBlock = new BasicBlock("karmesine_block", Material.ROCK, 10.0f, 12f, COBALT,
public static Block palladiumBlock = new BasicBlock("palladium_block", Material.ROCK, 25.0f, 20f, 6, 0.5f, PREFIX_BLOCK); PREFIX_BLOCK);
public static Block ignititeBlock = new BasicBlock("ignitite_block", Material.ROCK, 23.0f, 20f, 7, PREFIX_BLOCK); public static Block oviumBlock = new BasicBlock("ovium_block", Material.ROCK, 10.0f, 12f, COBALT, PREFIX_BLOCK);
// Group: Ratio public static Block jauxumBlock = new BasicBlock("jauxum_block", Material.ROCK, 10.0f, 12f, COBALT, PREFIX_BLOCK);
public static Block violiumBlock = new BasicBlock("violium_block", Material.ROCK, 13.0f, 12f, 4, PREFIX_BLOCK); public static Block palladiumBlock = new BasicBlock("palladium_block", Material.ROCK, 25.0f, 150f, DURANITE,
public static Block bismuthBlock = new BasicBlock("bismuth_block", Material.ROCK, 8.0f, 10f, 5, PREFIX_BLOCK); 0.5f, PREFIX_BLOCK);
public static Block mindoriteBlock = new BasicBlock("mindorite_block", Material.ROCK, 12.0f, 12f, 2, PREFIX_BLOCK); public static Block uruBlock = new BasicBlock("uru_block", Material.ROCK, 30.0f, 500f, VALYRIUM, PREFIX_BLOCK);
public static Block karmesineBlock = new BasicBlock("karmesine_block", Material.ROCK, 13.0f, 12f, 3, PREFIX_BLOCK); public static Block osramBlock = new BasicBlock("osram_block", Material.ROCK, 15.0f, 12f, COBALT, PREFIX_BLOCK);
public static Block abyssumBlock = new BasicBlock("abyssum_block", Material.ROCK, 15.0f, 35f, COBALT, PREFIX_BLOCK);
public static Block eezoBlock = new BasicBlock("eezo_block", Material.ROCK, 20.0f, 1000f, COBALT, PREFIX_BLOCK);
public static Block terraxBlock = new BasicBlock("terrax_block", Material.ROCK, 10.0f, 15f, COBALT, PREFIX_BLOCK);
public static Block triberiumBlock = new BasicBlock("triberium_block", Material.ROCK, 15.0f, 15f, OBSIDIAN, 1f,
PREFIX_BLOCK);
public static Block fractumBlock = new BasicBlock("fractum_block", Material.ROCK, 15.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block violiumBlock = new BasicBlock("violium_block", Material.ROCK, 15.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block proxiiBlock = new BasicBlock("proxii_block", Material.ROCK, 15.0f, 25f, DURANITE, PREFIX_BLOCK);
public static Block tritoniteBlock = new BasicBlock("tritonite_block", Material.ROCK, 15.0f, 25f, COBALT,
PREFIX_BLOCK);
public static Block ignitzBlock = new BasicBlock("ignitz_block", Material.ROCK, 20.0f, 20f, COBALT, PREFIX_BLOCK);
public static Block imperomiteBlock = new BasicBlock("imperomite_block", Material.ROCK, 20.0f, 25f, DURANITE,
PREFIX_BLOCK);
public static Block solariumBlock = new BasicBlock("solarium_block", Material.ROCK, 25.0f, 25f, VIBRANIUM,
PREFIX_BLOCK);
public static Block nihiliteBlock = new BasicBlock("nihilite_block", Material.ROCK, 10.0f, 25f, VALYRIUM,
PREFIX_BLOCK);
public static Block adamantBlock = new BasicBlock("adamant_block", Material.ROCK, 25.0f, 25f, VIBRANIUM,
PREFIX_BLOCK);
public static Block dyoniteBlock = new BasicBlock("dyonite_block", Material.ROCK, 10.0f, 25f, DURANITE,
PREFIX_BLOCK);
public static Block nucleumBlock = new BasicBlock("nucleum_block", Material.ROCK, 10.0f, 25f, VALYRIUM,
PREFIX_BLOCK);
public static Block lumixBlock = new BasicBlock("lumix_block", Material.ROCK, 15.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block seismumBlock = new BasicBlock("seismum_block", Material.ROCK, 15.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 15.0f, 25f, COBALT, PREFIX_BLOCK);
public static Block niobBlock = new BasicBlock("niob_block", Material.ROCK, 15.0f, 25f, DURANITE, PREFIX_BLOCK);
public static Block yrdeenBlock = new BasicBlock("yrdeen_block", Material.ROCK, 15.0f, 25f, VALYRIUM, PREFIX_BLOCK);
public static Block ioxBlock = new BasicBlock("iox_block", Material.ROCK, 20.0f, 25f, DURANITE, PREFIX_BLOCK);
public static Block imperomiteBlock = new BasicBlock("imperomite_block", Material.ROCK, 24.0f, 25f, 5, PREFIX_BLOCK); public static Block blockMeteoriteCobble = new BlockCobble("meteoritecobble_block", Material.ROCK, 20f, 10f,
public static Block fractoryteBlock = new BasicBlock("fractoryte_block", Material.ROCK, 8.0f, 15f, 8, PREFIX_BLOCK); COBALT, 0.075f, PREFIX_BLOCK);
public static Block noctunyxBlock = new BasicBlock("noctunyx_block", Material.ROCK, 60.0f, 15f, 6, PREFIX_BLOCK); public static Block blockObsidioriteCobble = new BlockCobble("obsidioritecobble_block", Material.ROCK, 25f, 20f,
public static Block nitroniteBlock = new BasicBlock("nitronite_block", Material.ROCK, 13.0f, 12f, 7, 0.8f, PREFIX_BLOCK); DURANITE, 0.035f, PREFIX_BLOCK);
public static Block cryptogenBlock = new BasicBlock("cryptogen_block", Material.ROCK, 23.0f, 15f, 6, PREFIX_BLOCK); public static Block blockMeteorite = new BlockMeteoriteRock("meteorite_block", Material.ROCK, 40f, 2000f, COBALT,
public static Block seismodiumBlock = new BasicBlock("seismodium_block", Material.ROCK, 30.0f, 25f, 7, PREFIX_BLOCK); 0.15f, PREFIX_BLOCK, blockMeteoriteCobble.getDefaultState());
public static Block aegisaltBlock = new BasicBlock("aegisalt_block", Material.ROCK, 13.0f, 15f, 5, PREFIX_BLOCK); public static Block blockObsidiorite = new BlockMeteoriteRock("obsidiorite_block", Material.ROCK, 50f, 4000f,
public static Block ultraniteBlock = new BasicBlock("ultranite_block", Material.ROCK, 13.0f, 25f, 8, 0.6f, PREFIX_BLOCK); DURANITE, 0.2f, PREFIX_BLOCK, blockObsidioriteCobble.getDefaultState());
public static Block bysmuidBlock = new BasicBlock("bysmuid_block", Material.ROCK, 35.0f, 15f, 5, PREFIX_BLOCK);
public static Block nucleumBlock = new BasicBlock("nucleum_block", Material.ROCK, 25.0f, 15f, 4, 0.85f, PREFIX_BLOCK); // Community
public static Block terramiteBlock = new BasicBlock("terramite_block", Material.ROCK, 70.0f, 15f, 4, PREFIX_BLOCK); public static Block dilithiumOre = new BlockOre("dilithium_ore", Material.GLASS, 18f, 18f, DIAMOND, 0.73f, Items.dilithiumCrystal, 3, 10);
public static Block solariumBlock = new BasicBlock("solarium_block", Material.ROCK, 80.0f, 25f, 5, PREFIX_BLOCK); public static Block dilithiumBlock = new BasicBlock("dilithium_block", Material.GLASS, 18f, 18f, DIAMOND, 0.73f, PREFIX_BLOCK);
public static Block lumixylBlock = new BasicBlock("lumixyl_block", Material.ROCK, 12.0f, 15f, 5, 1f, PREFIX_BLOCK);
public static Block dyoniteBlock = new BasicBlock("dyonite_block", Material.ROCK, 23.0f, 15f, 4, 0.3f, PREFIX_BLOCK);
public static Block proxideumBlock = new BasicBlock("proxideum_block", Material.ROCK, 25.0f, 15f, 4, PREFIX_BLOCK);
public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 55.0f, 15f, 7, PREFIX_BLOCK);
/** /**
* Registers all materials' ingots and nuggets <br> * Registers all materials' ingots and nuggets <br>
@@ -98,26 +117,32 @@ public class Blocks {
* Gets the ingots declared in the class (fields and reflection) and iterates through them: <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 * 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 Field[] declaredFields = Blocks.class.getDeclaredFields(); // Gets the fields (ingots) declared above
for (Field field : declaredFields) { // Iterates through the fields 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 if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { // Checks that the fields are static
Class<?> targetType = field.getType(); Class<?> targetType = field.getType();
try { try {
Block block = (Block) field.get(targetType); // Gets the field as a BasicBlock which is then casted to an Block Block block = (Block) field.get(targetType);
block.setCreativeTab(CreativeTab.tabTaigaBlock); if (!oreDict) {
Utils.registerBlockWithItem(block); // Registers block and its item block.setCreativeTab(CreativeTab.tabTaigaBlock);
if (block instanceof BasicBlock) { // Checks that the block is a BasicBlock ForgeRegistries.BLOCKS.register(block); // Registers block and its item
if (((BasicBlock) block).isOreDict()) { // Checks that the block has an oreDict entry } else {
String oreDictName; if (block instanceof BasicBlock) { // Checks that the block is a BasicBlock
String[] nameParts = block.getUnlocalizedName().replace("tile.", "").split("_"); 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) { if (nameParts.length > 2) {
oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts.length - 1)); oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts
} else { .length - 1));
oreDictName = nameParts[0]; } 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) { } catch (IllegalAccessException e) {
@@ -126,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,25 +3,25 @@ package com.sosnitzka.taiga;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import static com.sosnitzka.taiga.Blocks.adamantBlock;
import static com.sosnitzka.taiga.Items.solariumIngot;
import static com.sosnitzka.taiga.Blocks.adamantiteBlock;
import static com.sosnitzka.taiga.Items.noctunyxIngot;
public class CreativeTab { public class CreativeTab {
public static final CreativeTabs tabTaigaBlock = new CreativeTabs("taiga_block") { public static final CreativeTabs tabTaigaBlock = new CreativeTabs("taiga_block") {
@Override @Override
public Item getTabIconItem() { public ItemStack getTabIconItem() {
return Item.getItemFromBlock(adamantiteBlock); return new ItemStack(Item.getItemFromBlock(adamantBlock));
} }
}; };
public static final CreativeTabs tabTaigaItem = new CreativeTabs("taiga_item") { public static final CreativeTabs tabTaigaItem = new CreativeTabs("taiga_item") {
@Override @Override
public Item getTabIconItem() { public ItemStack getTabIconItem() {
return noctunyxIngot; return new ItemStack(solariumIngot);
} }
}; };
} }

View File

@@ -2,64 +2,63 @@ package com.sosnitzka.taiga;
import com.sosnitzka.taiga.generic.BasicTinkerFluid; import com.sosnitzka.taiga.generic.BasicTinkerFluid;
import com.sosnitzka.taiga.util.Utils; import net.minecraft.item.ItemBlock;
import net.minecraft.init.Blocks; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fml.common.registry.ForgeRegistries;
import slimeknights.tconstruct.shared.TinkerFluids; import slimeknights.tconstruct.library.TinkerRegistry;
import slimeknights.tconstruct.smeltery.block.BlockMolten; import slimeknights.tconstruct.smeltery.block.BlockMolten;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import static com.sosnitzka.taiga.Blocks.slaggoldOre;
import static com.sosnitzka.taiga.Blocks.slagironOre;
import static com.sosnitzka.taiga.Items.*;
import static com.sosnitzka.taiga.util.Utils.registerFluid; import static com.sosnitzka.taiga.util.Utils.registerFluid;
import static slimeknights.tconstruct.library.TinkerRegistry.registerMelting;
public class Fluids { public class Fluids {
public static BasicTinkerFluid arcaniteFluid = new BasicTinkerFluid("arcanite", 0xFF272354, true, 538, 8, 3768); public static BasicTinkerFluid basaltFluid = new BasicTinkerFluid("basalt_fluid", 0xFFe4ddc3, 550, 10, 6000);
public static BasicTinkerFluid titaniteFluid = new BasicTinkerFluid("titanite", 0xFFe0ede7, true, 942, 7, 1858); public static BasicTinkerFluid tiberiumFluid = new BasicTinkerFluid("tiberium_fluid", 0xFFd4ff00, 400, 10, 8000);
public static BasicTinkerFluid adamantiteFluid = new BasicTinkerFluid("adamantite", 0xFFc45c82, true, 1100, 10, 3597); public static BasicTinkerFluid auroriumFluid = new BasicTinkerFluid("aurorium_fluid", 0xFFefae94, 750, 10, 10000);
public static BasicTinkerFluid violiumFluid = new BasicTinkerFluid("violium", 0xFF264c4f, true, 875, 10, 3970); public static BasicTinkerFluid prometheumFluid = new BasicTinkerFluid("prometheum_fluid", 0xFF372c49, 850, 10,
public static BasicTinkerFluid bismuthFluid = new BasicTinkerFluid("bismuth", 0xFF555555, true, 612, 9, 2552); 10000);
public static BasicTinkerFluid eterniteFluid = new BasicTinkerFluid("eternite", 0xFFfafa98, true, 542, 10, 3980); public static BasicTinkerFluid duraniteFluid = new BasicTinkerFluid("duranite_fluid", 0xFFacddeb, 1400, 10, 10000);
public static BasicTinkerFluid ignititeFluid = new BasicTinkerFluid("ignitite", 0xFFff6642, true, 422, 9, 3787); public static BasicTinkerFluid valyriumFluid = new BasicTinkerFluid("valyrium_fluid", 0xFFe85c31, 1915, 10, 10000);
public static BasicTinkerFluid karmesineFluid = new BasicTinkerFluid("karmesine", 0xFFc16d6d, true, 499, 7, 3978); public static BasicTinkerFluid vibraniumFluid = new BasicTinkerFluid("vibranium_fluid", 0xFFbad2d9, 3050, 10,
public static BasicTinkerFluid meteoriteFluid = new BasicTinkerFluid("meteorite", 0xFF6e6a62, true, 942, 10, 2588); 10000);
public static BasicTinkerFluid mindoriteFluid = new BasicTinkerFluid("mindorite", 0xFF6bbbff, true, 671, 8, 2956); public static BasicTinkerFluid karmesineFluid = new BasicTinkerFluid("karmesine_fluid", 0xFFeb484a, 750, 10, 9000);
public static BasicTinkerFluid mythrilFluid = new BasicTinkerFluid("mythril", 0xFFa8c0ba, true, 841, 10, 1579); public static BasicTinkerFluid jauxumFluid = new BasicTinkerFluid("jauxum_fluid", 0xFF68c663, 750, 10, 9000);
public static BasicTinkerFluid palladiumFluid = new BasicTinkerFluid("palladium", 0xFFfe5c05, true, 786, 10, 3302); public static BasicTinkerFluid oviumFluid = new BasicTinkerFluid("ovium_fluid", 0xFF7d77c3, 750, 10, 9000);
public static BasicTinkerFluid prometheumFluid = new BasicTinkerFluid("prometheum", 0xFF2b282f, true, 786, 2, 2256); public static BasicTinkerFluid terraxFluid = new BasicTinkerFluid("terrax_fluid", 0xFFa5978e, 850, 10, 9000);
public static BasicTinkerFluid tiberiumFluid = new BasicTinkerFluid("tiberium", 0xFF5f9e2d, true, 352, 10, 1553); public static BasicTinkerFluid palladiumFluid = new BasicTinkerFluid("palladium_fluid", 0xFFee8736, 690, 10, 10000);
public static BasicTinkerFluid vibraniumFluid = new BasicTinkerFluid("vibranium", 0xFFc4ddc8, true, 1050, 9, 3402); public static BasicTinkerFluid uruFluid = new BasicTinkerFluid("uru_fluid", 0xFFbfb9f0, 1200, 10, 10000);
public static BasicTinkerFluid rubiumFluid = new BasicTinkerFluid("rubium", 0xFFe371b0, true, 200, 600, 1653); public static BasicTinkerFluid osramFluid = new BasicTinkerFluid("osram_fluid", 0xFFffbc90, 800, 10, 4000);
public static BasicTinkerFluid astriumFluid = new BasicTinkerFluid("astrium", 0xFF7a3b74, true, 810, 10, 1525); public static BasicTinkerFluid abyssumFluid = new BasicTinkerFluid("abyssum_fluid", 0xFF21bcc2, 700, 10, 10000);
public static BasicTinkerFluid nitroniteFluid = new BasicTinkerFluid("nitronite", 0xFFdfe553, true, 680, 10, 2185); public static BasicTinkerFluid eezoFluid = new BasicTinkerFluid("eezo_fluid", 0xFF58798a, 450, 0, 1000);
public static BasicTinkerFluid proxideumFluid = new BasicTinkerFluid("proxideum", 0xFF2f7177, true, 700, 9, 3859); public static BasicTinkerFluid triberiumFluid = new BasicTinkerFluid("triberium_fluid", 0xFF66f136, 550, 10, 9000);
public static BasicTinkerFluid noctunyxFluid = new BasicTinkerFluid("noctunyx", 0xFF5f5081, true, 712, 8, 3983); public static BasicTinkerFluid fractumFluid = new BasicTinkerFluid("fractum_fluid", 0xFFd2c583, 750, 10, 10000);
public static BasicTinkerFluid imperomiteFluid = new BasicTinkerFluid("imperomite", 0xFF5cc96b, true, 510, 10, 2353); public static BasicTinkerFluid violiumFluid = new BasicTinkerFluid("violium_fluid", 0xFFbfb0e2, 850, 10, 10000);
public static BasicTinkerFluid cryptogenFluid = new BasicTinkerFluid("cryptogen", 0xFF9f8a4a, true, 560, 10, 3243); public static BasicTinkerFluid proxiiFluid = new BasicTinkerFluid("proxii_fluid", 0xFFcefde1, 750, 10, 10000);
public static BasicTinkerFluid fractoryteFluid = new BasicTinkerFluid("fractoryte", 0xFF983f11, true, 670, 8, 3805); public static BasicTinkerFluid tritoniteFluid = new BasicTinkerFluid("tritonite_fluid", 0xFF8edeff, 550, 10, 10000);
public static BasicTinkerFluid seismodiumFluid = new BasicTinkerFluid("seismodium", 0xFF46131D, true, 831, 10, 1837); public static BasicTinkerFluid ignitzFluid = new BasicTinkerFluid("ignitz_fluid", 0xFFff284b, 950, 10, 6000);
public static BasicTinkerFluid terramiteFluid = new BasicTinkerFluid("terramite", 0xFFa6b27a, true, 687, 10, 2121); public static BasicTinkerFluid imperomiteFluid = new BasicTinkerFluid("imperomite_fluid", 0xFF7fefa0, 900, 10,
public static BasicTinkerFluid lumixylFluid = new BasicTinkerFluid("lumixyl", 0xFFfbe8cb, true, 548, 10, 2165); 10000);
public static BasicTinkerFluid solariumFluid = new BasicTinkerFluid("solarium", 0xFFffc81d, true, 482, 8, 3232); public static BasicTinkerFluid solariumFluid = new BasicTinkerFluid("solarium_fluid", 0xFFfef864, 1500, 10, 2000);
public static BasicTinkerFluid dyoniteFluid = new BasicTinkerFluid("dyonite", 0xFFff6743, true, 486, 8, 3269); public static BasicTinkerFluid nihiliteFluid = new BasicTinkerFluid("nihilite_fluid", 0xFF6645ba, 580, 10, 10000);
public static BasicTinkerFluid ultraniteFluid = new BasicTinkerFluid("ultranite", 0xFFf5f294, true, 941, 9, 1784); public static BasicTinkerFluid adamantFluid = new BasicTinkerFluid("adamant_fluid", 0xFFff8efe, 1650, 10, 10000);
public static BasicTinkerFluid nucleumFluid = new BasicTinkerFluid("nucleum", 0xFFa8ea3b, true, 813, 10, 2355); public static BasicTinkerFluid dyoniteFluid = new BasicTinkerFluid("dyonite_fluid", 0xFFffbd3f, 660, 10, 7000);
public static BasicTinkerFluid aegisaltFluid = new BasicTinkerFluid("aegisalt", 0xFFb6af74, true, 660, 7, 2089); public static BasicTinkerFluid nucleumFluid = new BasicTinkerFluid("nucleum_fluid", 0xFFe6ff40, 490, 10, 10000);
public static BasicTinkerFluid bysmuidFluid = new BasicTinkerFluid("bysmuid", 0xFF7b97b0, true, 560, 8, 2674); public static BasicTinkerFluid lumixFluid = new BasicTinkerFluid("lumix_fluid", 0xFFf9f3cc, 450, 10, 8000);
public static BasicTinkerFluid seismumFluid = new BasicTinkerFluid("seismum_fluid", 0xFFecbca8, 720, 10, 10000);
public static BasicTinkerFluid astriumFluid = new BasicTinkerFluid("astrium_fluid", 0xFF8f385f, 680, 10, 10000);
public static BasicTinkerFluid niobFluid = new BasicTinkerFluid("niob_fluid", 0xFF7398b9, 550, 10, 10000);
public static BasicTinkerFluid yrdeenFluid = new BasicTinkerFluid("yrdeen_fluid", 0xFF8f385f, 710, 10, 10000);
public static BasicTinkerFluid ioxFluid = new BasicTinkerFluid("iox_fluid", 0xFF99323c, 900, 10, 10000);
public static BasicTinkerFluid meteoriteFluid = new BasicTinkerFluid("meteorite_fluid", 0xFF374f3d, 950, 10, 7000);
public static BasicTinkerFluid obsidioriteFluid = new BasicTinkerFluid("obsidiorite_fluid", 0xFF224853, 1050, 10,
7000);
public static BasicTinkerFluid magmaFluid = new BasicTinkerFluid("magma_fluid", 0xFFffc000, 2000, 10, 5000);
public static BasicTinkerFluid nitroniteFluid = new BasicTinkerFluid("nitronite_fluid", 0xFFCCFF00, 3100, 10, 5000);
// Community
// Additional fluids to cast alloys public static BasicTinkerFluid dilithiumFluid = new BasicTinkerFluid("dilithium_fluid", 0xFF79aea6, 1500, 10, 5000);
public static BasicTinkerFluid radiant_enderium = new BasicTinkerFluid("radiant_enderium", 0xFFbcea5d, false, 529, 10, 768);
public static BasicTinkerFluid glimming_enderium = new BasicTinkerFluid("glimming_enderium", 0xFFfffc98, false, 633, 10, 821);
public static BasicTinkerFluid energy_enderium = new BasicTinkerFluid("energy_enderium", 0xFFffb498, false, 562, 10, 421);
public static BasicTinkerFluid glimmercoalFluid = new BasicTinkerFluid("glimmercoal_fluid", 0xFFee7c28, false, 531, 10, 312);
public static BasicTinkerFluid nitroFluid = new BasicTinkerFluid("nitro_fluid", 0xFF223512, false, 405, 5, 772);
public static BasicTinkerFluid anthraciteFluid = new BasicTinkerFluid("anthracite_fluid", 0xFF111111, false, 500, 0, 632);
public static BasicTinkerFluid spectrumFluid = new BasicTinkerFluid("spectrum_fluid", 0xFF64748f, false, 600, 0, 512);
/** /**
* Registers all materials' fluids <br> * Registers all materials' fluids <br>
@@ -73,16 +72,18 @@ public class Fluids {
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { // Checks that the fields are static if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { // Checks that the fields are static
Class<?> targetType = field.getType(); Class<?> targetType = field.getType();
try { 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 registerFluid(fluid); // Registers the fluid into the game along wit its bucket
BlockMolten block = new BlockMolten(fluid); BlockMolten block = new BlockMolten(fluid);
// Sets names // Sets names
block.setUnlocalizedName("molten_" + fluid.getName()); block.setUnlocalizedName("molten_" + fluid.getName());
block.setRegistryName(TAIGA.MODID, "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) // Registers the fluid in its block form and its corresponding item (block/fluid as item in
Utils.registerBlockWithItem(block); // inventory)
// Registers the fluid's model but only on the client side ForgeRegistries.BLOCKS.register(block);
ForgeRegistries.ITEMS.register(new ItemBlock(block).setRegistryName(block.getRegistryName()));
TAIGA.proxy.registerFluidModels(fluid); TAIGA.proxy.registerFluidModels(fluid);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
e.printStackTrace(); e.printStackTrace();
@@ -95,20 +96,15 @@ public class Fluids {
* Registers special smeltery recipes (not alloying) * Registers special smeltery recipes (not alloying)
*/ */
static void registerfromItem() { static void registerfromItem() {
registerMelting(radiant_pearl, radiant_enderium, 72); TinkerRegistry.registerMelting(Blocks.blockMeteoriteCobble, meteoriteFluid, 288);
registerMelting(glimmer_pearl, glimming_enderium, 72); TinkerRegistry.registerMelting(Blocks.blockObsidiorite, meteoriteFluid, 288);
registerMelting(energy_pearl, energy_enderium, 72); TinkerRegistry.registerMelting(net.minecraft.init.Blocks.MAGMA, magmaFluid, 288);
registerMelting(glimmercoal, glimmercoalFluid, 72); TinkerRegistry.registerMelting(Items.dilithiumCrystal, dilithiumFluid, 72);
registerMelting(nitro_brick, nitroFluid, 72); TinkerRegistry.registerMelting(Items.tiberiumCrystal, tiberiumFluid, 72);
registerMelting(anthracite_dust, anthraciteFluid, 72);
registerMelting(spectrum_dust, spectrumFluid, 72);
registerMelting(Blocks.OBSIDIAN, FluidRegistry.LAVA, 432);
registerMelting(Blocks.NETHERRACK, FluidRegistry.LAVA, 48);
registerMelting(Blocks.STONE, FluidRegistry.LAVA, 144);
registerMelting(slagironOre, TinkerFluids.iron, 16);
registerMelting(slagironIngot, TinkerFluids.iron, 24);
registerMelting(slaggoldOre, TinkerFluids.gold, 16);
registerMelting(slaggoldIngot, TinkerFluids.gold, 24);
TinkerRegistry.registerSmelteryFuel(new FluidStack(magmaFluid, 50), 100);
TinkerRegistry.registerSmelteryFuel(new FluidStack(nitroniteFluid, 100), 500);
TinkerRegistry.registerSmelteryFuel(new FluidStack(dilithiumFluid, 50), 100);
} }
} }

View File

@@ -4,104 +4,169 @@ package com.sosnitzka.taiga;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.sosnitzka.taiga.generic.BasicItem; import com.sosnitzka.taiga.generic.BasicItem;
import net.minecraft.item.Item; 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 net.minecraftforge.oredict.OreDictionary;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Arrays; import java.util.Arrays;
import static com.sosnitzka.taiga.util.Utils.PREFIX_INGOT; import static com.sosnitzka.taiga.util.Utils.*;
import static com.sosnitzka.taiga.util.Utils.PREFIX_NUGGET;
public class Items { public class Items {
public static Item lignite = new BasicItem("lignite", null, "lignite"); public static Item ironNugget = new BasicItem("iron_nugget", PREFIX_NUGGET);
public static Item iron_nugget = new BasicItem("iron_nugget", PREFIX_NUGGET);
public static Item slaggoldIngot = new BasicItem("slaggold_ingot");
public static Item slagironIngot = new BasicItem("slagiron_ingot");
public static Item fuel_brick = new BasicItem("fuel_brick");
//Nuggets
public static Item titanite_nugget = new BasicItem("titanite_nugget", PREFIX_NUGGET);
public static Item adamantite_nugget = new BasicItem("adamantite_nugget", PREFIX_NUGGET);
public static Item arcanite_nugget = new BasicItem("arcanite_nugget", PREFIX_NUGGET);
public static Item violium_nugget = new BasicItem("violium_nugget", PREFIX_NUGGET);
public static Item bismuth_nugget = new BasicItem("bismuth_nugget", PREFIX_NUGGET);
public static Item eternite_nugget = new BasicItem("eternite_nugget", PREFIX_NUGGET);
public static Item ignitite_nugget = new BasicItem("ignitite_nugget", PREFIX_NUGGET);
public static Item karmesine_nugget = new BasicItem("karmesine_nugget", PREFIX_NUGGET);
public static Item meteorite_nugget = new BasicItem("meteorite_nugget", PREFIX_NUGGET);
public static Item mindorite_nugget = new BasicItem("mindorite_nugget", PREFIX_NUGGET);
public static Item mythril_nugget = new BasicItem("mythril_nugget", PREFIX_NUGGET);
public static Item palladium_nugget = new BasicItem("palladium_nugget", PREFIX_NUGGET);
public static Item prometheum_nugget = new BasicItem("prometheum_nugget", PREFIX_NUGGET);
// NAH! public static Item tiberium_nugget = new BasicItem("tiberium_nugget", PREFIX_NUGGET);
public static Item vibranium_nugget = new BasicItem("vibranium_nugget", PREFIX_NUGGET);
public static Item rubium_nugget = new BasicItem("rubium_nugget", PREFIX_NUGGET);
public static Item astrium_nugget = new BasicItem("astrium_nugget", PREFIX_NUGGET);
public static Item nitronite_nugget = new BasicItem("nitronite_nugget", PREFIX_NUGGET);
public static Item proxideum_nugget = new BasicItem("proxideum_nugget", PREFIX_NUGGET);
public static Item noctunyx_nugget = new BasicItem("noctunyx_nugget", PREFIX_NUGGET);
public static Item imperomite_nugget = new BasicItem("imperomite_nugget", PREFIX_NUGGET);
public static Item cryptogen_nugget = new BasicItem("cryptogen_nugget", PREFIX_NUGGET);
public static Item fractoryte_nugget = new BasicItem("fractoryte_nugget", PREFIX_NUGGET);
public static Item seismodium_nugget = new BasicItem("seismodium_nugget", PREFIX_NUGGET);
public static Item tiberium_nugget = new BasicItem("tiberium_nugget", PREFIX_NUGGET);
public static Item terramite_nugget = new BasicItem("terramite_nugget", PREFIX_NUGGET);
public static Item lumixyl_nugget = new BasicItem("lumixyl_nugget", PREFIX_NUGGET);
public static Item solarium_nugget = new BasicItem("solarium_nugget", PREFIX_NUGGET);
public static Item dyonite_nugget = new BasicItem("dyonite_nugget", PREFIX_NUGGET);
public static Item ultranite_nugget = new BasicItem("ultranite_nugget", PREFIX_NUGGET);
public static Item nucleum_nugget = new BasicItem("nucleum_nugget", PREFIX_NUGGET);
public static Item aegisalt_nugget = new BasicItem("aegisalt_nugget", PREFIX_NUGGET);
public static Item bysmuid_nugget = new BasicItem("bysmuid_nugget", PREFIX_NUGGET);
public static Item glimmercoal = new BasicItem("glimmercoal");
public static Item radiant_pearl = new BasicItem("radiant_pearl");
public static Item glimmer_pearl = new BasicItem("glimmer_pearl");
public static Item energy_pearl = new BasicItem("energy_pearl");
public static Item glimmerstone_dust = new BasicItem("glimmerstone_dust");
public static Item luminar_dust = new BasicItem("luminar_dust");
public static Item spectrum_dust = new BasicItem("spectrum_dust");
public static Item anthracite_dust = new BasicItem("anthracite_dust");
public static Item nitro_brick = new BasicItem("nitro_brick");
public static Item titaniteIngot = new BasicItem("titanite_ingot", PREFIX_INGOT);
public static Item adamantiteIngot = new BasicItem("adamantite_ingot", PREFIX_INGOT);
public static Item arcaniteIngot = new BasicItem("arcanite_ingot", PREFIX_INGOT);
public static Item violiumIngot = new BasicItem("violium_ingot", PREFIX_INGOT);
public static Item bismuthIngot = new BasicItem("bismuth_ingot", PREFIX_INGOT);
public static Item eterniteIngot = new BasicItem("eternite_ingot", PREFIX_INGOT);
public static Item ignititeIngot = new BasicItem("ignitite_ingot", PREFIX_INGOT);
public static Item karmesineIngot = new BasicItem("karmesine_ingot", PREFIX_INGOT);
public static Item meteoriteIngot = new BasicItem("meteorite_ingot", PREFIX_INGOT);
public static Item mindoriteIngot = new BasicItem("mindorite_ingot", PREFIX_INGOT);
public static Item mythrilIngot = new BasicItem("mythril_ingot", PREFIX_INGOT);
public static Item palladiumIngot = new BasicItem("palladium_ingot", PREFIX_INGOT);
public static Item prometheumIngot = new BasicItem("prometheum_ingot", PREFIX_INGOT);
public static Item tiberiumIngot = new BasicItem("tiberium_ingot", PREFIX_INGOT); public static Item tiberiumIngot = new BasicItem("tiberium_ingot", PREFIX_INGOT);
public static Item tiberiumDust = new BasicItem("tiberium_dust", PREFIX_DUST);
public static Item tiberiumNugget = new BasicItem("tiberium_nugget", PREFIX_NUGGET);
public static Item auroriumIngot = new BasicItem("aurorium_ingot", PREFIX_INGOT);
public static Item auroriumDust = new BasicItem("aurorium_dust", PREFIX_DUST);
public static Item auroriumNugget = new BasicItem("aurorium_nugget", PREFIX_NUGGET);
public static Item prometheumIngot = new BasicItem("prometheum_ingot", PREFIX_INGOT);
public static Item prometheumDust = new BasicItem("prometheum_dust", PREFIX_DUST);
public static Item prometheumNugget = new BasicItem("prometheum_nugget", PREFIX_NUGGET);
public static Item duraniteIngot = new BasicItem("duranite_ingot", PREFIX_INGOT);
public static Item duraniteDust = new BasicItem("duranite_dust", PREFIX_DUST);
public static Item duraniteNugget = new BasicItem("duranite_nugget", PREFIX_NUGGET);
public static Item valyriumIngot = new BasicItem("valyrium_ingot", PREFIX_INGOT);
public static Item valyriumDust = new BasicItem("valyrium_dust", PREFIX_DUST);
public static Item valyriumNugget = new BasicItem("valyrium_nugget", PREFIX_NUGGET);
public static Item vibraniumIngot = new BasicItem("vibranium_ingot", PREFIX_INGOT); public static Item vibraniumIngot = new BasicItem("vibranium_ingot", PREFIX_INGOT);
public static Item rubiumIngot = new BasicItem("rubium_ingot", PREFIX_INGOT); public static Item vibraniumDust = new BasicItem("vibranium_dust", PREFIX_DUST);
public static Item vibraniumNugget = new BasicItem("vibranium_nugget", PREFIX_NUGGET);
public static Item karmesineIngot = new BasicItem("karmesine_ingot", PREFIX_INGOT);
public static Item karmesineDust = new BasicItem("karmesine_dust", PREFIX_DUST);
public static Item karmesineNugget = new BasicItem("karmesine_nugget", PREFIX_NUGGET);
public static Item oviumIngot = new BasicItem("ovium_ingot", PREFIX_INGOT);
public static Item oviumDust = new BasicItem("ovium_dust", PREFIX_DUST);
public static Item oviumNugget = new BasicItem("ovium_nugget", PREFIX_NUGGET);
public static Item jauxumIngot = new BasicItem("jauxum_ingot", PREFIX_INGOT);
public static Item jauxumDust = new BasicItem("jauxum_dust", PREFIX_DUST);
public static Item jauxumNugget = new BasicItem("jauxum_nugget", PREFIX_NUGGET);
public static Item terraxIngot = new BasicItem("terrax_ingot", PREFIX_INGOT);
public static Item terraxDust = new BasicItem("terrax_dust", PREFIX_DUST);
public static Item terraxNugget = new BasicItem("terrax_nugget", PREFIX_NUGGET);
public static Item palladiumIngot = new BasicItem("palladium_ingot", PREFIX_INGOT);
public static Item palladiumDust = new BasicItem("palladium_dust", PREFIX_DUST);
public static Item palladiumNugget = new BasicItem("palladium_nugget", PREFIX_NUGGET);
public static Item uruIngot = new BasicItem("uru_ingot", PREFIX_INGOT);
public static Item uruDust = new BasicItem("uru_dust", PREFIX_DUST);
public static Item uruNugget = new BasicItem("uru_nugget", PREFIX_NUGGET);
public static Item osramIngot = new BasicItem("osram_ingot", PREFIX_INGOT);
public static Item osramDust = new BasicItem("osram_dust", PREFIX_DUST);
public static Item osramNugget = new BasicItem("osram_nugget", PREFIX_NUGGET);
public static Item abyssumIngot = new BasicItem("abyssum_ingot", PREFIX_INGOT);
public static Item abyssumDust = new BasicItem("abyssum_dust", PREFIX_DUST);
public static Item abyssumNugget = new BasicItem("abyssum_nugget", PREFIX_NUGGET);
public static Item eezoIngot = new BasicItem("eezo_ingot", PREFIX_INGOT);
public static Item eezoDust = new BasicItem("eezo_dust", PREFIX_DUST);
public static Item eezoNugget = new BasicItem("eezo_nugget", PREFIX_NUGGET);
public static Item triberiumIngot = new BasicItem("triberium_ingot", PREFIX_INGOT);
public static Item triberiumDust = new BasicItem("triberium_dust", PREFIX_DUST);
public static Item triberiumNugget = new BasicItem("triberium_nugget", PREFIX_NUGGET);
public static Item fractumIngot = new BasicItem("fractum_ingot", PREFIX_INGOT);
public static Item fractumDust = new BasicItem("fractum_dust", PREFIX_DUST);
public static Item fractumNugget = new BasicItem("fractum_nugget", PREFIX_NUGGET);
public static Item violiumIngot = new BasicItem("violium_ingot", PREFIX_INGOT);
public static Item violiumDust = new BasicItem("violium_dust", PREFIX_DUST);
public static Item violiumNugget = new BasicItem("violium_nugget", PREFIX_NUGGET);
public static Item proxiiIngot = new BasicItem("proxii_ingot", PREFIX_INGOT);
public static Item proxiiDust = new BasicItem("proxii_dust", PREFIX_DUST);
public static Item proxiiNugget = new BasicItem("proxii_nugget", PREFIX_NUGGET);
public static Item tritoniteIngot = new BasicItem("tritonite_ingot", PREFIX_INGOT);
public static Item tritoniteDust = new BasicItem("tritonite_dust", PREFIX_DUST);
public static Item tritoniteNugget = new BasicItem("tritonite_nugget", PREFIX_NUGGET);
public static Item ignitzIngot = new BasicItem("ignitz_ingot", PREFIX_INGOT);
public static Item ignitzDust = new BasicItem("ignitz_dust", PREFIX_DUST);
public static Item ignitzNugget = new BasicItem("ignitz_nugget", PREFIX_NUGGET);
public static Item imperomiteIngot = new BasicItem("imperomite_ingot", PREFIX_INGOT);
public static Item imperomiteDust = new BasicItem("imperomite_dust", PREFIX_DUST);
public static Item imperomiteNugget = new BasicItem("imperomite_nugget", PREFIX_NUGGET);
public static Item solariumIngot = new BasicItem("solarium_ingot", PREFIX_INGOT);
public static Item solariumDust = new BasicItem("solarium_dust", PREFIX_DUST);
public static Item solariumNugget = new BasicItem("solarium_nugget", PREFIX_NUGGET);
public static Item nihiliteIngot = new BasicItem("nihilite_ingot", PREFIX_INGOT);
public static Item nihiliteDust = new BasicItem("nihilite_dust", PREFIX_DUST);
public static Item nihiliteNugget = new BasicItem("nihilite_nugget", PREFIX_NUGGET);
public static Item adamantIngot = new BasicItem("adamant_ingot", PREFIX_INGOT);
public static Item adamantDust = new BasicItem("adamant_dust", PREFIX_DUST);
public static Item adamantNugget = new BasicItem("adamant_nugget", PREFIX_NUGGET);
public static Item dyoniteIngot = new BasicItem("dyonite_ingot", PREFIX_INGOT);
public static Item dyoniteDust = new BasicItem("dyonite_dust", PREFIX_DUST);
public static Item dyoniteNugget = new BasicItem("dyonite_nugget", PREFIX_NUGGET);
public static Item nucleumIngot = new BasicItem("nucleum_ingot", PREFIX_INGOT);
public static Item nucleumDust = new BasicItem("nucleum_dust", PREFIX_DUST);
public static Item nucleumNugget = new BasicItem("nucleum_nugget", PREFIX_NUGGET);
public static Item lumixIngot = new BasicItem("lumix_ingot", PREFIX_INGOT);
public static Item lumixDust = new BasicItem("lumix_dust", PREFIX_DUST);
public static Item lumixNugget = new BasicItem("lumix_nugget", PREFIX_NUGGET);
public static Item seismumIngot = new BasicItem("seismum_ingot", PREFIX_INGOT);
public static Item seismumDust = new BasicItem("seismum_dust", PREFIX_DUST);
public static Item seismumNugget = new BasicItem("seismum_nugget", PREFIX_NUGGET);
public static Item astriumIngot = new BasicItem("astrium_ingot", PREFIX_INGOT); public static Item astriumIngot = new BasicItem("astrium_ingot", PREFIX_INGOT);
public static Item nitroniteIngot = new BasicItem("nitronite_ingot", PREFIX_INGOT); public static Item astriumDust = new BasicItem("astrium_dust", PREFIX_DUST);
public static Item proxideumIngot = new BasicItem("proxideum_ingot", PREFIX_INGOT); public static Item astriumNugget = new BasicItem("astrium_nugget", PREFIX_NUGGET);
public static Item noctunyxIngot = new BasicItem("noctunyx_ingot", PREFIX_INGOT);
public static Item imperomiteIngot = new BasicItem("imperomite_ingot", PREFIX_INGOT);
public static Item cryptogenIngot = new BasicItem("cryptogen_ingot", PREFIX_INGOT);
public static Item fractoryteIngot = new BasicItem("fractoryte_ingot", PREFIX_INGOT);
public static Item seismodiumIngot = new BasicItem("seismodium_ingot", PREFIX_INGOT);
public static Item terramiteIngot = new BasicItem("terramite_ingot", PREFIX_INGOT);
public static Item lumixylIngot = new BasicItem("lumixyl_ingot", PREFIX_INGOT);
public static Item solariumIngot = new BasicItem("solarium_ingot", PREFIX_INGOT);
public static Item dyoniteIngot = new BasicItem("dyonite_ingot", PREFIX_INGOT);
public static Item ultraniteIngot = new BasicItem("ultranite_ingot", PREFIX_INGOT);
public static Item nucleumIngot = new BasicItem("nucleum_ingot", PREFIX_INGOT);
public static Item aegisaltIngot = new BasicItem("aegisalt_ingot", PREFIX_INGOT);
public static Item bysmuidIngot = new BasicItem("bysmuid_ingot", PREFIX_INGOT);
public static Item tiberiumShardInstable = new BasicItem("tiberium_shard_instable"); public static Item niobIngot = new BasicItem("niob_ingot", PREFIX_INGOT);
public static Item niobDust = new BasicItem("niob_dust", PREFIX_DUST);
public static Item niobNugget = new BasicItem("niob_nugget", PREFIX_NUGGET);
public static Item yrdeenIngot = new BasicItem("yrdeen_ingot", PREFIX_INGOT);
public static Item yrdeenDust = new BasicItem("yrdeen_dust", PREFIX_DUST);
public static Item yrdeenNugget = new BasicItem("yrdeen_nugget", PREFIX_NUGGET);
public static Item ioxIngot = new BasicItem("iox_ingot", PREFIX_INGOT);
public static Item ioxDust = new BasicItem("iox_dust", PREFIX_DUST);
public static Item ioxNugget = new BasicItem("iox_nugget", PREFIX_NUGGET);
public static Item meteoriteIngot = new BasicItem("meteorite_ingot", PREFIX_INGOT);
public static Item meteoriteDust = new BasicItem("meteorite_dust", PREFIX_DUST);
public static Item meteoriteNugget = new BasicItem("meteorite_nugget", PREFIX_NUGGET);
public static Item basaltIngot = new BasicItem("basalt_ingot", PREFIX_INGOT);
public static Item basaltDust = new BasicItem("basalt_dust", PREFIX_DUST);
public static Item basaltNugget = new BasicItem("basalt_nugget", PREFIX_NUGGET);
public static Item obsidioriteIngot = new BasicItem("obsidiorite_ingot", PREFIX_INGOT);
public static Item obsidioriteDust = new BasicItem("obsidiorite_dust", PREFIX_DUST);
public static Item obsidioriteNugget = new BasicItem("obsidiorite_nugget", PREFIX_NUGGET);
public static Item dilithiumIngot = new BasicItem("dilithium_ingot", PREFIX_INGOT);
public static Item dilithiumDust = new BasicItem("dilithium_dust", PREFIX_DUST);
public static Item dilithiumCrystal = new BasicItem("dilithium_crystal", PREFIX_CRYSTAL);
public static Item tiberiumCrystal = new BasicItem("tiberium_crystal", PREFIX_CRYSTAL);
public static Item dilithiumNugget = new BasicItem("dilithium_nugget", PREFIX_NUGGET);
/** /**
* Registers all materials' ingots and nuggets <br> * Registers all materials' ingots and nuggets <br>
@@ -109,31 +174,36 @@ public class Items {
* Gets the ingots declared in the class (fields and reflection) and iterates through them: <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 * Checks that the field is static, registers the field (item), and adds an oreDict entry if needed
*/ */
@SubscribeEvent
public static void register() { public static void register() {
Field[] declaredFields = Items.class.getDeclaredFields(); // Gets the fields (ingots) declared above Field[] declaredFields = Items.class.getDeclaredFields(); // Gets the fields (ingots) declared above
for (Field field : declaredFields) { // Iterates through the fields 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 if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { // Checks that the fields are static
Class<?> targetType = field.getType(); Class<?> targetType = field.getType();
try { 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
if (item.equals(iron_nugget) && OreDictionary.doesOreNameExist("nuggetIron")) { // to an Item
if (item.equals(ironNugget) && OreDictionary.doesOreNameExist("nuggetIron")) {
System.out.println("TAIGA: Skipped registration of nuggetIron which already exists."); System.out.println("TAIGA: Skipped registration of nuggetIron which already exists.");
continue; continue;
} }
item.setCreativeTab(CreativeTab.tabTaigaItem); 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 (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 oreDictName;
String[] nameParts = item.getUnlocalizedName().replace("item.", "").split("_"); String[] nameParts = item.getUnlocalizedName().replace("item.", "").split("_");
if (nameParts.length > 2) { 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 { } else {
oreDictName = nameParts[0]; 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) { } 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

@@ -3,25 +3,24 @@ package com.sosnitzka.taiga;
import com.sosnitzka.taiga.traits.*; import com.sosnitzka.taiga.traits.*;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import slimeknights.tconstruct.library.materials.HandleMaterialStats;
import slimeknights.tconstruct.library.materials.HeadMaterialStats;
import slimeknights.tconstruct.library.materials.Material; import slimeknights.tconstruct.library.materials.Material;
import slimeknights.tconstruct.library.materials.MaterialTypes;
import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.traits.AbstractTrait;
import static slimeknights.tconstruct.tools.TinkerMaterials.*; import static com.sosnitzka.taiga.Fluids.obsidioriteFluid;
import static slimeknights.tconstruct.tools.TinkerTraits.alien;
import static slimeknights.tconstruct.tools.TinkerTraits.crumbling;
public class MaterialTraits { public class MaterialTraits {
// new hardness levels // new hardness levels
public static final int TITANITE = 5; public static final int DURANITE = 5;
public static final int METEORITE = 6; public static final int VALYRIUM = 6;
public static final int VIBRANIUM = 7; public static final int VIBRANIUM = 7;
public static final int ADAMANTITE = 8;
// Init of new traits // 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 naturebound = new TraitNatureBound();
public static final AbstractTrait uncertain = new TraitUncertain();
public static final AbstractTrait softy = new TraitSofty(); public static final AbstractTrait softy = new TraitSofty();
public static final AbstractTrait curvature = new TraitCurvature(); public static final AbstractTrait curvature = new TraitCurvature();
public static final AbstractTrait resonance = new TraitResonance(); public static final AbstractTrait resonance = new TraitResonance();
@@ -35,50 +34,72 @@ public class MaterialTraits {
public static final AbstractTrait dark = new TraitDark(); public static final AbstractTrait dark = new TraitDark();
public static final AbstractTrait bright = new TraitBright(); public static final AbstractTrait bright = new TraitBright();
public static final AbstractTrait slaughtering = new TraitSlaughtering(); public static final AbstractTrait slaughtering = new TraitSlaughtering();
public static final AbstractTrait haunted = new TraitHaunted();
public static final AbstractTrait fragile = new TraitFragile(); public static final AbstractTrait fragile = new TraitFragile();
public static final AbstractTrait dissolving = new TraitDissolving(); public static final AbstractTrait dissolving = new TraitDissolving();
public static final AbstractTrait organizing = new TraitOrganizing();
public static final AbstractTrait arcane = new TraitArcane(); public static final AbstractTrait arcane = new TraitArcane();
public static final AbstractTrait heroic = new TraitHeroic(); public static final AbstractTrait heroic = new TraitHeroic();
public static final AbstractTrait hollow = new TraitHollow(); public static final AbstractTrait hollow = new TraitHollow();
public static final AbstractTrait diffuse = new TraitDiffuse(); public static final AbstractTrait diffuse = new TraitDiffuse();
public static final AbstractTrait randomize = new TraitRandomize();
public static final AbstractTrait reviving = new TraitReviving(); public static final AbstractTrait reviving = new TraitReviving();
public static final AbstractTrait melting = new TraitMelting(); 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();
public static final AbstractTrait souleater = new TraitSoulEater();
public static final AbstractTrait cursed = new TraitCursed();
public static final AbstractTrait ported = new TraitPorted();
public static final AbstractTrait decay = new TraitDecay();
public static final AbstractTrait whirl = new TraitWhirl();
public static final AbstractTrait superheavy = new TraitSuperHeavy();
public static final AbstractTrait berserk = new TraitBerserk();
public static final AbstractTrait crushing = new TraitCrushing();
public static final AbstractTrait mutate = new TraitMutate();
public static Material arcanite = new Material("arcanite", TextFormatting.LIGHT_PURPLE).addTrait(arcane, HeadMaterialStats.TYPE).addTrait(blind, HandleMaterialStats.TYPE); /*
* Assign traits to related materials. <br>
* <p>
* <p> Example:
* .addTrait(x, HandleMaterialStats.TYPE).addTrait(y, HeadMaterialStats.TYPE)
* .addTrait(z)
*/
public static Material tiberium = new Material("tiberium", TextFormatting.GREEN).addTrait(instable); public static Material tiberium = new Material("tiberium", TextFormatting.GREEN).addTrait(instable);
public static Material prometheum = new Material("prometheum", TextFormatting.DARK_PURPLE).addTrait(haunted, HeadMaterialStats.TYPE).addTrait(blind); public static Material aurorium = new Material("aurorium", TextFormatting.RED).addTrait(arcane);
public static Material rubium = new Material("rubium", TextFormatting.RED).addTrait(enderference, HeadMaterialStats.TYPE).addTrait(blind); public static Material prometheum = new Material("prometheum", TextFormatting.DARK_PURPLE).addTrait(blind, MaterialTypes.HANDLE).addTrait(catcher);
public static Material violium = new Material("violium", TextFormatting.DARK_GREEN).addTrait(stonebound, HandleMaterialStats.TYPE).addTrait(poisonous, HeadMaterialStats.TYPE); public static Material duranite = new Material("duranite", TextFormatting.YELLOW).addTrait(analysing);
public static Material bismuth = new Material("bismuth", TextFormatting.GREEN).addTrait(splintering, HeadMaterialStats.TYPE).addTrait(splinters, HandleMaterialStats.TYPE); public static Material valyrium = new Material("valyrium", TextFormatting.DARK_GRAY).addTrait(congenial);
public static Material karmesine = new Material("karmesine", TextFormatting.DARK_RED).addTrait(aridiculous, HandleMaterialStats.TYPE).addTrait(superheat, HeadMaterialStats.TYPE); public static Material vibranium = new Material("vibranium", TextFormatting.GRAY).addTrait(resonance, MaterialTypes.HANDLE).addTrait(heroic, MaterialTypes.HEAD);
public static Material mindorite = new Material("mindorite", TextFormatting.AQUA).addTrait(cheap); public static Material terrax = new Material("terrax", TextFormatting.DARK_GRAY).addTrait(slaughtering);
public static Material titanite = new Material("titanite", TextFormatting.GRAY).addTrait(shocking, HandleMaterialStats.TYPE).addTrait(sharp, HeadMaterialStats.TYPE); public static Material palladium = new Material("palladium", TextFormatting.GOLD).addTrait(dark).addTrait(cursed);
public static Material meteorite = new Material("meteorite", TextFormatting.GRAY).addTrait(established, HandleMaterialStats.TYPE).addTrait(momentum, HeadMaterialStats.TYPE); public static Material uru = new Material("uru", TextFormatting.DARK_RED).addTrait(diffuse);
public static Material adamantite = new Material("adamantite", TextFormatting.GRAY).addTrait(coldblooded, HeadMaterialStats.TYPE).addTrait(magnetic, HandleMaterialStats.TYPE); public static Material basalt = new Material("basalt", TextFormatting.WHITE).addTrait(softy);
public static Material vibranium = new Material("vibranium", TextFormatting.GRAY).addTrait(resonance); public static Material eezo = new Material("eezo", TextFormatting.GOLD).addTrait(dissolving).addTrait(superheavy);
public static Material ignitite = new Material("ignitite", TextFormatting.RED).addTrait(melting, HandleMaterialStats.TYPE).addTrait(flammable, HeadMaterialStats.TYPE); public static Material triberium = new Material("triberium", TextFormatting.GREEN).addTrait(fragile);
public static Material palladium = new Material("palladium", TextFormatting.DARK_GRAY).addTrait(dark); public static Material fractum = new Material("fractum", TextFormatting.DARK_RED).addTrait(fracture);
public static Material eternite = new Material("eternite", TextFormatting.AQUA).addTrait(writable2); //.addTrait(traditional) public static Material violium = new Material("violium", TextFormatting.DARK_PURPLE).addTrait(arcane);
public static Material mythril = new Material("mythril", TextFormatting.GRAY).addTrait(holy, HeadMaterialStats.TYPE).addTrait(hellish, HandleMaterialStats.TYPE); public static Material proxii = new Material("proxii", TextFormatting.LIGHT_PURPLE).addTrait(curvature);
public static Material imperomite = new Material("imperomite", TextFormatting.DARK_RED).addTrait(cascade); public static Material tritonite = new Material("tritonite", TextFormatting.GOLD).addTrait(whirl);
public static Material fractoryte = new Material("fractoryte", TextFormatting.DARK_RED).addTrait(fracture); public static Material ignitz = new Material("ignitz", TextFormatting.RED).addTrait(melting).addTrait(garishly, MaterialTypes.HANDLE);
public static Material noctunyx = new Material("noctunyx", TextFormatting.LIGHT_PURPLE).addTrait(hollow, HeadMaterialStats.TYPE).addTrait(reviving, HandleMaterialStats.TYPE); public static Material imperomite = new Material("imperomite", TextFormatting.DARK_RED).addTrait(hollow);
public static Material nitronite = new Material("nitronite", TextFormatting.YELLOW).addTrait(uncertain); public static Material solarium = new Material("solarium", TextFormatting.YELLOW).addTrait(superheavy).addTrait(crushing);
public static Material cryptogen = new Material("cryptogen", TextFormatting.DARK_GREEN).addTrait(randomize); public static Material nihilite = new Material("nihilite", TextFormatting.DARK_GRAY).addTrait(souleater);
public static Material seismodium = new Material("seismodium", TextFormatting.WHITE).addTrait(heroic).addTrait(fragile); public static Material adamant = new Material("adamant", TextFormatting.GOLD).addTrait(berserk);
public static Material aegisalt = new Material("aegisalt", TextFormatting.AQUA).addTrait(analysing); public static Material dyonite = new Material("dyonite", TextFormatting.GREEN).addTrait(tantrum);
public static Material ultranite = new Material("ultranite", TextFormatting.AQUA).addTrait(pulverizing); public static Material nucleum = new Material("nucleum", TextFormatting.YELLOW).addTrait(decay).addTrait(mutate);
public static Material bysmuid = new Material("bysmuid", TextFormatting.AQUA).addTrait(organizing, HandleMaterialStats.TYPE).addTrait(melting, HeadMaterialStats.TYPE); public static Material lumix = new Material("lumix", TextFormatting.YELLOW).addTrait(bright, MaterialTypes.HANDLE).addTrait(glimmer, MaterialTypes.HEAD);
public static Material nucleum = new Material("nucleum", TextFormatting.AQUA).addTrait(diffuse).addTrait(bright, HeadMaterialStats.TYPE); public static Material seismum = new Material("seismum", TextFormatting.GREEN).addTrait(cascade);
public static Material lumixyl = new Material("lumixyl", TextFormatting.YELLOW).addTrait(glimmer); public static Material astrium = new Material("astrium", TextFormatting.DARK_PURPLE).addTrait(ported);
public static Material dyonite = new Material("dyonite", TextFormatting.GRAY).addTrait(slaughtering, HeadMaterialStats.TYPE).addTrait(dissolving, HandleMaterialStats.TYPE); public static Material niob = new Material("niob", TextFormatting.RED).addTrait(reviving);
public static Material terramite = new Material("terramite", TextFormatting.GRAY).addTrait(naturebound).addTrait(fragile); public static Material yrdeen = new Material("yrdeen", TextFormatting.RED).addTrait(naturebound);
public static Material solarium = new Material("solarium", TextFormatting.RED).addTrait(garishly); public static Material meteorite = new Material("meteorite", TextFormatting.DARK_GREEN).addTrait(crumbling, MaterialTypes.HEAD).addTrait(pulverizing);
public static Material astrium = new Material("astrium", TextFormatting.DARK_PURPLE).addTrait(curvature); public static Material obsidiorite = new Material("obsidiorite", obsidioriteFluid.getColor()).addTrait(alien);
public static Material proxideum = new Material("proxideum", TextFormatting.LIGHT_PURPLE).addTrait(softy, HandleMaterialStats.TYPE).addTrait(lightweight);
public static Material osram = new Material("osram", TextFormatting.GOLD);
public static Material abyssum = new Material("abyssum", TextFormatting.GOLD);
public static Material ovium = new Material("ovium", TextFormatting.BLUE);
public static Material jauxum = new Material("jauxum", TextFormatting.YELLOW);
public static Material karmesine = new Material("karmesine", TextFormatting.RED);
public static Material dilithium = new Material("dilithium", TextFormatting.BLUE);
} }

View File

@@ -4,123 +4,89 @@ import com.google.common.collect.Lists;
import com.sosnitzka.taiga.proxy.CommonProxy; import com.sosnitzka.taiga.proxy.CommonProxy;
import com.sosnitzka.taiga.recipes.CraftingRegistry; import com.sosnitzka.taiga.recipes.CraftingRegistry;
import com.sosnitzka.taiga.recipes.SmeltingRegistry; import com.sosnitzka.taiga.recipes.SmeltingRegistry;
import com.sosnitzka.taiga.util.FuelHandler; import com.sosnitzka.taiga.world.WorldGen;
import com.sosnitzka.taiga.world.ZWorldGen;
import net.minecraft.item.Item;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.Logger;
import slimeknights.tconstruct.library.MaterialIntegration; import slimeknights.tconstruct.library.MaterialIntegration;
import slimeknights.tconstruct.library.TinkerRegistry; import slimeknights.tconstruct.library.materials.BowMaterialStats;
import slimeknights.tconstruct.library.materials.ExtraMaterialStats;
import slimeknights.tconstruct.library.materials.HandleMaterialStats;
import slimeknights.tconstruct.library.materials.HeadMaterialStats;
import slimeknights.tconstruct.library.materials.Material;
import slimeknights.tconstruct.tools.TinkerMaterials;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import static com.sosnitzka.taiga.Fluids.*; import static com.sosnitzka.taiga.Fluids.*;
import static com.sosnitzka.taiga.MaterialTraits.*; import static com.sosnitzka.taiga.MaterialTraits.*;
import static com.sosnitzka.taiga.TAIGAConfiguration.*; import static com.sosnitzka.taiga.util.Utils.integrateMaterial;
import static com.sosnitzka.taiga.util.Utils.integrateOre;
import static slimeknights.tconstruct.library.utils.HarvestLevels.*; import static slimeknights.tconstruct.library.utils.HarvestLevels.*;
@Mod(modid = TAIGA.MODID, version = TAIGA.VERSION, guiFactory = TAIGA.GUIFACTORY, dependencies = "required-after:tconstruct@[1.10-2.3.3,);" + "required-after:mantle@[1.10-0.10.3,)") @Mod(modid = TAIGA.MODID, version = TAIGA.VERSION, guiFactory = TAIGA.GUIFACTORY, dependencies =
"required-after:tconstruct@[1.10.2-2.5.0,);" + "required-after:mantle@[1.10.2-1.0.0,)")
public class TAIGA { public class TAIGA {
public static final String MODID = "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 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 CommonProxy proxy;
private List<MaterialIntegration> integrateList = Lists.newArrayList(); // List of materials needed to be integrated public static List<MaterialIntegration> integrateList = Lists.newArrayList(); // List of materials needed to be integrated
@EventHandler @EventHandler
public void preInit(FMLPreInitializationEvent e) { public void preInit(FMLPreInitializationEvent e) {
logger = e.getModLog();
Fluids.register();
Blocks.register(false);
Blocks.registerItems();
Items.register();
proxy.initConfig(); proxy.initConfig();
Items.register(); // Registers items and its oreDict registerTinkerMaterials();
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
} }
@EventHandler @EventHandler
public void init(FMLInitializationEvent e) { public void init(FMLInitializationEvent e) {
proxy.registerModels(); // Registers models on the client side proxy.registerModels(); // Registers models on the client side
GameRegistry.registerWorldGenerator(new ZWorldGen(), 100); // Generates ores proxy.regsiterKeyBindings();
GameRegistry.registerFuelHandler(new FuelHandler()); // Registeres fuels' burn times
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 SmeltingRegistry.register(); // Registers smelting recipes
CraftingRegistry.register(); // Registers crafting recipes CraftingRegistry.register(); // Registers crafting recipes
// Adds new harvest levels' names
harvestLevelNames.put(METEORITE, TinkerMaterials.bone.getTextColor() + "Meteorite");
harvestLevelNames.put(VIBRANIUM, TinkerMaterials.blueslime.getTextColor() + "Vibranium");
harvestLevelNames.put(ADAMANTITE, TinkerMaterials.ardite.getTextColor() + "Adamantite");
harvestLevelNames.put(TITANITE, TinkerMaterials.silver.getTextColor() + "Titanite");
for (MaterialIntegration m : integrateList) { for (MaterialIntegration m : integrateList) {
m.integrateRecipes(); m.integrate();
} }
} }
@EventHandler @EventHandler
public void postInit(FMLPostInitializationEvent e) { public void postInit(FMLPostInitializationEvent e) {
proxy.registerBookPages();
} }
/** @EventHandler
* @param oreSuffix Suffix in the oreDict, also the name. ex) the "Iron" in "ingotIron" public void serverLoad(FMLServerStartingEvent event) {
* @param material TConstruct material proxy.registerServerCommands(event);
* @param fluid material's fluid
* @param headDura Durability (head)
* @param headSpeed Mining speed (head)
* @param headAttack Attack speed (head)
* @param handleMod Durability multiplier (handle)
* @param handleDura Extra durability (handle)
* @param extra Extra durability (binding and more)
* @param headLevel Mining level (head)
* @param craft Can craft parts in part builder
* @param cast Can craft parts by casting with fluid (smeltery)
*/
private void registerTinkerMaterial(String oreSuffix, Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, boolean craft, boolean cast) {
TinkerRegistry.addMaterialStats(material, new HeadMaterialStats(headDura, headSpeed, headAttack, headLevel));
TinkerRegistry.addMaterialStats(material, new HandleMaterialStats(handleMod, handleDura));
TinkerRegistry.addMaterialStats(material, new ExtraMaterialStats(extra));
Item item = null;
Field[] items = Items.class.getDeclaredFields();
for (Field i : items) {
if (i.getName().equals(StringUtils.uncapitalize(oreSuffix) + "Ingot")) {
Item r = null;
try {
r = (Item) i.get(i.getType());
} catch (Exception e) {
e.printStackTrace();
}
item = r;
}
}
material.setFluid(fluid).setCraftable(craft).setCastable(cast).addItem(item, 1, Material.VALUE_Ingot);
material.setRepresentativeItem(item);
proxy.setRenderInfo(material);
MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix);
integration.integrate();
integrateList.add(integration);
} }
@@ -128,50 +94,46 @@ public class TAIGA {
* Registers materials and associated fluids and stats into tconstruct * Registers materials and associated fluids and stats into tconstruct
*/ */
private void registerTinkerMaterials() { private void registerTinkerMaterials() {
BowMaterialStats shitty = new BowMaterialStats(0.2f, 0.4f, -1f);
//
integrateMaterial("Tiberium", tiberium, tiberiumFluid, 80, 3.3f, 4f, 0.7f, -25, 50, DIAMOND, shitty, true, false);
integrateMaterial("Aurorium", aurorium, auroriumFluid, 750, 3.6f, 3.78f, 0.77f, 25, 130, COBALT, 0.45f, 1f, 1);
integrateMaterial("Prometheum", prometheum, prometheumFluid, 844, 4.75f, 6.6f, 1.2f, 25, 50, DURANITE, 0.2f, 0.6f, 3);
integrateMaterial("Duranite", duranite, duraniteFluid, 1550, 3.2f, 3.2f, 1.16f, 100, 100, DURANITE, 0.3f, 1.4f, 2);
integrateMaterial("Valyrium", valyrium, valyriumFluid, 1111, 5.37f, 4.8f, 1.30f, 100, 100, VALYRIUM, 1.1f, 1.2f, 4);
integrateMaterial("Vibranium", vibranium, vibraniumFluid, 1235, 7.62f, 8.1f, 1.3f, 100, 100, VIBRANIUM, 1.1f, 1.8f, 4);
integrateMaterial("Terrax", terrax, terraxFluid, 444, 4.77f, 2.9f, 0.8f, 100, 50, COBALT, shitty, true, true);
integrateMaterial("Palladium", palladium, palladiumFluid, 797, 4.35f, 6.8f, 1.3f, 130, -50, DURANITE, .5f, .2f, 3);
integrateMaterial("Uru", uru, uruFluid, 877, 2f, 7.2f, 1.5f, -50, 175, VALYRIUM, 1.3f, 0.8f, 6);
integrateMaterial("Eezo", eezo, eezoFluid, 50, 23f, 3.5f, .1f, 10, 10, COBALT, shitty, true, false);
integrateMaterial("Basalt", basalt, basaltFluid, 200, 3, 2.5f, 0.5f, -25, 25, STONE, shitty, true, false);
integrateMaterial("Triberium", triberium, triberiumFluid, 223, 6.2f, 8.35f, 0.63f, 50, 50, DIAMOND, shitty, true, true);
integrateMaterial("Fractum", fractum, fractumFluid, 538, 5.71f, 6.93f, 0.88f, 58, 117, DIAMOND, shitty);
integrateMaterial("Violium", violium, violiumFluid, 925, 3.8f, 3.75f, .90f, 175, 50, COBALT, .45f, .95f, 1);
integrateMaterial("Proxii", proxii, proxiiFluid, 625, 6.8f, 4.21f, 1.25f, 80, 25, DURANITE, .35f, .5f, 3);
integrateMaterial("Tritonite", tritonite, tritoniteFluid, 780, 8f, 3.3f, 1.45f, -25, 150, COBALT, shitty);
integrateMaterial("Ignitz", ignitz, ignitzFluid, 350, 2f, 6.66f, .85f, 150, 250, COBALT, .8f, .8f, 3);
integrateMaterial("Imperomite", imperomite, imperomiteFluid, 1350, 4.65f, 5.9f, 1.15f, -100, 150, DURANITE, 1.2f, 1.8f, 2);
integrateMaterial("Solarium", solarium, solariumFluid, 1100, 24f, 7f, 1.25f, 150, 150, VIBRANIUM, .8f, 1.5f, 5);
integrateMaterial("Nihilite", nihilite, nihiliteFluid, 400, 2.8f, 4.50f, .77f, 350, 155, VALYRIUM, 1.5f, .8f, 3);
integrateMaterial("Adamant", adamant, adamantFluid, 1750, 6f, 6f, 2f, 0, 0, VIBRANIUM, .35f, 1.85f, 8);
integrateMaterial("Dyonite", dyonite, dyoniteFluid, 900, 6.45f, 5f, 0.66f, -50, 250, DURANITE, 2, .9f, -1);
integrateMaterial("Nucleum", nucleum, nucleumFluid, 505, 17.5f, 9.5f, 1.05f, 100, 125, VALYRIUM, shitty);
integrateMaterial("Lumix", lumix, lumixFluid, 666, 3.84f, 3.92f, 0.85f, 250, 200, COBALT, .8f, 1.3f, 1);
integrateMaterial("Seismum", seismum, seismumFluid, 780, 3.66f, 6.05f, .95f, 250, 50, COBALT, shitty);
integrateMaterial("Astrium", astrium, astriumFluid, 750, 8.35f, 5.4f, 0.95f, -100, 200, COBALT, .7f, .8f, 2);
integrateMaterial("Niob", niob, niobFluid, 700, 4.5f, 4.5f, 2f, 200, 50, COBALT, shitty);
integrateMaterial("Yrdeen", yrdeen, yrdeenFluid, 999, 9.1f, 3f, 1.35f, 150, 250, COBALT, shitty);
integrateMaterial("Meteorite", meteorite, meteoriteFluid, 1500, 1.5f, 1.5f, .5f, 0, 0, OBSIDIAN, shitty);
integrateMaterial("Obsidiorite", obsidiorite, obsidioriteFluid, 1500, .5f, .5f, 1, -100, 100, COBALT, shitty);
double d = durabilityFactorGeneral; integrateOre("Osram", osramFluid);
System.out.println("DURABILITY FACTOR" + d); integrateOre("Abyssum", abyssumFluid);
float s = (float) speedFactorGeneral; integrateOre("Iox", ioxFluid);
System.out.println("SPEED FACTOR" + s); integrateOre("Karmesine", karmesineFluid);
float a = (float) attackFactorGeneral; integrateOre("Ovium", oviumFluid);
System.out.println("ATTACK FACTOR" + a); integrateOre("Jauxum", jauxumFluid);
// Community Wishlist
// ARCANE ORES integrateOre("Dilithium", dilithiumFluid);
registerTinkerMaterial("Tiberium", tiberium, tiberiumFluid, (int) (223 * d), 6.2f * s, 8.35f * a, 0.63f, 50, 50, OBSIDIAN, false, true);
registerTinkerMaterial("Rubium", rubium, rubiumFluid, (int) (351 * d), 5.15f * s, 7.00f * a, 1.05f, -100, 250, COBALT, false, true);
registerTinkerMaterial("Prometheum", prometheum, prometheumFluid, (int) (539 * d), 3.6f * s, 6.60f, 0.90f, 0, 150, TITANITE, false, true);
registerTinkerMaterial("Arcanite", arcanite, arcaniteFluid, (int) (698 * d), 4.3f * s, 7.88f * a, 0.85f, -50, 150, METEORITE, false, true);
// SOLIDE ORES
registerTinkerMaterial("Titanite", titanite, titaniteFluid, (int) (811 * d), 4.8f * s, 6.40f * a, 1.00f, -50, 150, TITANITE, false, true);
registerTinkerMaterial("Meteorite", meteorite, meteoriteFluid, (int) (823 * d), 6.1f * s, 6.83f * a, 1.20f, -50, 200, METEORITE, false, true);
registerTinkerMaterial("Vibranium", vibranium, vibraniumFluid, (int) (917 * d), 7.45f * s, 7.17f * a, 1.15f, 50, 150, VIBRANIUM, false, true);
registerTinkerMaterial("Adamantite", adamantite, adamantiteFluid, (int) (981 * d), 8.9f * s, 9.11f * a, 1.20f, -200, 300, ADAMANTITE, false, true);
// ETHERE ORES
registerTinkerMaterial("Eternite", eternite, eterniteFluid, (int) (592 * d), 7.35f * s, 1.95f * a, 1.10f, 150, 150, COBALT, false, true);
registerTinkerMaterial("Mythril", mythril, mythrilFluid, (int) (552 * d), 8.75f * s, 2.87f * a, 0.98f, -100, 200, TITANITE, false, true);
registerTinkerMaterial("Palladium", palladium, palladiumFluid, (int) (578 * d), 10.4f * s, 3.13f * a, 1.09f, 0, 100, METEORITE, false, true);
registerTinkerMaterial("Ignitite", ignitite, ignititeFluid, (int) (673 * d), 12.1f * s, 4.10f * a, 1.15f, -50, 150, VIBRANIUM, false, true);
// RATIO ORES
registerTinkerMaterial("Bismuth", bismuth, bismuthFluid, (int) (235 * d), 5.33f * s, 3.80f * a, 1.15f, 17, 117, OBSIDIAN, false, true);
registerTinkerMaterial("Violium", violium, violiumFluid, (int) (427 * d), 4.2f * s, 3.30f * a, 1.00f, 133, 150, COBALT, false, true);
registerTinkerMaterial("Mindorite", mindorite, mindoriteFluid, (int) (458 * d), 6.41f * s, 4.40f * a, 0.90f, 83, 100, TITANITE, false, true);
registerTinkerMaterial("Karmesine", karmesine, karmesineFluid, (int) (627 * d), 6.75f * s, 5.10f * a, 0.99f, 0, 200, METEORITE, false, true);
// Material from alloys
registerTinkerMaterial("Nitronite", nitronite, nitroniteFluid, (int) (745 * d), 6.74f * s, 8.74f * a, 0.85f, 75, 93, TITANITE, false, true);
registerTinkerMaterial("Bysmuid", bysmuid, bysmuidFluid, (int) (305 * d), 5.22f * s, 6.47f * a, 1.09f, -80, 197, COBALT, false, true);
registerTinkerMaterial("Ultranite", ultranite, ultraniteFluid, (int) (1016 * d), 5.72f * s, 6.76f * a, 1.02f, -120, 210, VIBRANIUM, false, true);
registerTinkerMaterial("Astrium", astrium, astriumFluid, (int) (670 * d), 5.28f * s, 9.14f * a, 0.91f, -45, 170, VIBRANIUM, false, true);
registerTinkerMaterial("Imperomite", imperomite, imperomiteFluid, (int) (770 * d), 11.60f * s, 3.57f * a, 1.05f, -38, 125, METEORITE, false, true);
registerTinkerMaterial("Dyonite", dyonite, dyoniteFluid, (int) (733 * d), 6.14f * s, 7.69f * a, 0.97f, -15, 140, TITANITE, false, true);
registerTinkerMaterial("Solarium", solarium, solariumFluid, (int) (1020 * d), 13.78f * s, 4.64f * a, 1.15f, 0, 150, ADAMANTITE, false, true);
registerTinkerMaterial("Fractoryte", fractoryte, fractoryteFluid, (int) (1071 * d), 7.65f * s, 7.75f * a, 1.15f, -250, 283, METEORITE, false, true);
registerTinkerMaterial("Aegisalt", aegisalt, aegisaltFluid, (int) (355 * d), 8.88f * s, 3.18f * a, 1.00f, 175, 125, TITANITE, false, true);
registerTinkerMaterial("Noctunyx", noctunyx, noctunyxFluid, (int) (713 * d), 10.43f * s, 3.25f * a, 0.99f, -125, 183, METEORITE, false, true);
registerTinkerMaterial("Nucleum", nucleum, nucleumFluid, (int) (503 * d), 11.30f * s, 3.22f * a, 1.05f, 100, 125, TITANITE, false, true);
registerTinkerMaterial("Seismodium", seismodium, seismodiumFluid, (int) (879 * d), 13.85f * s, 4.19f * a, 1.17f, -75, 169, VIBRANIUM, false, true);
registerTinkerMaterial("Lumixyl", lumixyl, lumixylFluid, (int) (357 * d), 4.64f * s, 5.92f * a, 1.05f, 15, 130, COBALT, false, true);
registerTinkerMaterial("Terramite", terramite, terramiteFluid, (int) (482 * d), 7.25f * s, 2.85f * a, 1.03f, 208, 150, TITANITE, false, true);
registerTinkerMaterial("Cryptogen", cryptogen, cryptogenFluid, (int) (538 * d), 5.71f * s, 6.93f * a, 0.88f, 58, 117, METEORITE, false, true);
registerTinkerMaterial("Proxideum", proxideum, proxideumFluid, (int) (597 * d), 10.55f * s, 4.21f * a, 0.99f, -60, 200, METEORITE, false, true);
} }
} }

View File

@@ -13,42 +13,48 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class TAIGAConfiguration { public class TAIGAConfiguration {
public static final String CATEGORY_NAME_GENERAL = "category_general"; 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_GEN = "category_ore_gen";
public static final String CATEGORY_NAME_ORE_VAL = "category_ore_val";
public static double oreFactorGeneral;
public static double speedFactorGeneral;
public static double attackFactorGeneral;
public static double durabilityFactorGeneral;
public static double ironFactor;
public static double slagironFactor;
public static double slaggoldFactor;
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 slagIronGen;
public static boolean slagGoldGen;
public static boolean ironGen; 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; private static Configuration config = null;
public static void preInit() { public static void preInit() {
@@ -74,300 +80,231 @@ public class TAIGAConfiguration {
syncConfig(false, true); syncConfig(false, true);
} }
public static void syncFromFields() {
syncConfig(false, false);
}
private static void syncConfig(boolean loadConfigFromFile, boolean readFieldsFromConfig) { private static void syncConfig(boolean loadConfigFromFile, boolean readFieldsFromConfig) {
if (loadConfigFromFile) { if (loadConfigFromFile) {
config.load(); config.load();
} }
/** final int RESFAC_MIN_VALUE = 0;
* Declaration of general ore generation values: <br> final int RESFAC_MAX_VALUE = 100;
* Activation of additional ores (iron/gold) <br>
* Ore generation chance multiplier
*/
final boolean GENERATION_DEFAULT_VALUE = true; final int IRON_DEFAULT = 20;
final double RESFAC_MIN_VALUE = 0; final int TIBERIUM_DEFAULT = 15;
final double RESFAC_MAX_VALUE = 9999; final int PROMETHEUM_DEFAULT = 18;
final double RESFAC_DEFAULT_VALUE = 1.0; 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"); Property ironSwitch = config.get(CATEGORY_NAME_GENERAL, "Additional Iron", false);
slagIronSwitch.setLanguageKey("gui.taiga_configuration.gen_slagiron"); ironSwitch.setComment("Switch additional ore on/off");
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");
ironSwitch.setLanguageKey("gui.taiga_configuration.gen_iron"); ironSwitch.setLanguageKey("gui.taiga_configuration.gen_iron");
Property oreFactorGeneralProp = config.get(CATEGORY_NAME_GENERAL, "Ore factor", RESFAC_DEFAULT_VALUE, Property endSwitch = config.get(CATEGORY_NAME_GENERAL, "Additional Endstone", true);
"General multiplier for all TAIGA ores at once", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); endSwitch.setComment("Switch additional endstone on/off");
oreFactorGeneralProp.setLanguageKey("gui.taiga_configuration.ore_multiplier"); endSwitch.setLanguageKey("gui.taiga_configuration.gen_end");
Property durabilityFactorGeneralProp = config.get(CATEGORY_NAME_GENERAL, "Durability factor", RESFAC_DEFAULT_VALUE,
/*
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); "General multiplier for all TAIGA materials", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
durabilityFactorGeneralProp.setLanguageKey("gui.taiga_configuration.durability_multiplier"); durabilityFactorGeneralProp.setLanguageKey("gui.taiga_configuration.durability_multiplier");
durabilityFactorGeneralProp.setRequiresMcRestart(true); 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>(); List<String> propOrderGeneral = new ArrayList<String>();
propOrderGeneral.add(ironSwitch.getName()); propOrderGeneral.add(ironSwitch.getName());
propOrderGeneral.add(slagIronSwitch.getName()); propOrderGeneral.add(endSwitch.getName());
propOrderGeneral.add(slagGoldSwitch.getName()); // propOrderGeneral.add(durabilityFactorGeneralProp.getName());
propOrderGeneral.add(oreFactorGeneralProp.getName());
propOrderGeneral.add(durabilityFactorGeneralProp.getName());
propOrderGeneral.add(speedFactorGeneralProp.getName());
propOrderGeneral.add(attackFactorGeneralProp.getName());
config.setCategoryPropertyOrder(CATEGORY_NAME_GENERAL, propOrderGeneral); config.setCategoryPropertyOrder(CATEGORY_NAME_GENERAL, propOrderGeneral);
/** /*
* Declaration of specific ore generation values: <br> * Declaration of specific ore generation values: <br>
* Generation chance multiplier * 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 ironValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Iron", IRON_DEFAULT, "generation count per " +
Property slagironFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Slagiorn factor", RESFAC_DEFAULT_VALUE, "chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); ironValueProp.setLanguageKey("gui.taiga_configuration.iron_multiplier");
slagironFactorProp.setLanguageKey("gui.taiga_configuration.titanite_multiplier"); Property basaltValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Basalt", BASALT_DEFAULT, "generation count per " +
Property slaggoldFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Slaggold factor", RESFAC_DEFAULT_VALUE, "chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); basaltValueProp.setLanguageKey("gui.taiga_configuration.basalt_multiplier");
slaggoldFactorProp.setLanguageKey("gui.taiga_configuration.titanite_multiplier"); Property tiberiumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Tiberium", TIBERIUM_DEFAULT, "generation " +
Property titaniteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Titanite factor", RESFAC_DEFAULT_VALUE, "count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); tiberiumValueProp.setLanguageKey("gui.taiga_configuration.tiberium_multiplier");
titaniteFactorProp.setLanguageKey("gui.taiga_configuration.titanite_multiplier"); Property auroriumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Aurorium", AURORIUM_DEFAULT, "generation " +
Property adamantiteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Adamantite factor", RESFAC_DEFAULT_VALUE, "count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); auroriumValueProp.setLanguageKey("gui.taiga_configuration.aurorium_multiplier");
adamantiteFactorProp.setLanguageKey("gui.taiga_configuration.adamantite_multiplier"); Property prometheumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Prometheum", PROMETHEUM_DEFAULT,
Property arcaniteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Arcanite factor", RESFAC_DEFAULT_VALUE, "generation count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); prometheumValueProp.setLanguageKey("gui.taiga_configuration.prometheum_multiplier");
arcaniteFactorProp.setLanguageKey("gui.taiga_configuration.arcanite_multiplier"); Property duraniteValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Duranite", DURANITE_DEFAULT, "generation " +
Property violiumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Violium factor", RESFAC_DEFAULT_VALUE, "count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); duraniteValueProp.setLanguageKey("gui.taiga_configuration.duranite_multiplier");
violiumFactorProp.setLanguageKey("gui.taiga_configuration.violium_multiplier"); Property valyriumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Valyrium", VALYRIUM_DEFAULT, "generation " +
Property bismuthFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Bismuth factor", RESFAC_DEFAULT_VALUE, "count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); valyriumValueProp.setLanguageKey("gui.taiga_configuration.valyrium_multiplier");
bismuthFactorProp.setLanguageKey("gui.taiga_configuration.bismuth_multiplier"); Property vibraniumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Vibranium", VIBRANIUM_DEFAULT, "generation " +
Property eterniteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Eternite factor", RESFAC_DEFAULT_VALUE, "count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); vibraniumValueProp.setLanguageKey("gui.taiga_configuration.vibranium_multiplier");
eterniteFactorProp.setLanguageKey("gui.taiga_configuration.eternite_multiplier"); Property dilithiumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Dilithium", DILITHIUM_DEFAULT, "generation " +
Property ignititeFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Ignitite factor", RESFAC_DEFAULT_VALUE, "count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); dilithiumValueProp.setLanguageKey("gui.taiga_configuration.dilithium_multiplier");
ignititeFactorProp.setLanguageKey("gui.taiga_configuration.ignitite_multiplier"); Property karmesineValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Karmesine", KARMESINE_DEFAULT, "generation " +
Property karmesineFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Karmesine factor", RESFAC_DEFAULT_VALUE, "count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); karmesineValueProp.setLanguageKey("gui.taiga_configuration.karmesine_multiplier");
karmesineFactorProp.setLanguageKey("gui.taiga_configuration.karmesine_multiplier"); Property oviumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Ovium", OVIUM_DEFAULT, "generation count per " +
Property meteoriteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Meteorite factor", RESFAC_DEFAULT_VALUE, "chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); oviumValueProp.setLanguageKey("gui.taiga_configuration.ovium_multiplier");
meteoriteFactorProp.setLanguageKey("gui.taiga_configuration.meteorite_multiplier"); Property jauxumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Jauxum", JAUXUM_DEFAULT, "generation count per " +
Property mindoriteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Mindorite factor", RESFAC_DEFAULT_VALUE, "chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); jauxumValueProp.setLanguageKey("gui.taiga_configuration.jauxum_multiplier");
mindoriteFactorProp.setLanguageKey("gui.taiga_configuration.mindorite_multiplier"); Property palladiumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Palladium", PALLADIUM_DEFAULT, "generation " +
Property mythrilFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Mythril factor", RESFAC_DEFAULT_VALUE, "count per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); palladiumValueProp.setLanguageKey("gui.taiga_configuration.palladium_multiplier");
mythrilFactorProp.setLanguageKey("gui.taiga_configuration.mythril_multiplier"); Property uruValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Uru", URU_DEFAULT, "generation count per chunk",
Property palladiumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Palladium factor", RESFAC_DEFAULT_VALUE, RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); uruValueProp.setLanguageKey("gui.taiga_configuration.uru_multiplier");
palladiumFactorProp.setLanguageKey("gui.taiga_configuration.palladium_multiplier"); Property osramValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Osram", OSRAM_DEFAULT, "generation count per " +
Property prometheumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Prometheum factor", RESFAC_DEFAULT_VALUE, "chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); osramValueProp.setLanguageKey("gui.taiga_configuration.osram_multiplier");
prometheumFactorProp.setLanguageKey("gui.taiga_configuration.prometheum_multiplier"); Property abyssumValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Abyssum", ABYSSUM_DEFAULT, "generation count " +
Property tiberiumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Tiberium factor", RESFAC_DEFAULT_VALUE, "per chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); abyssumValueProp.setLanguageKey("gui.taiga_configuration.abyssum_multiplier");
tiberiumFactorProp.setLanguageKey("gui.taiga_configuration.tiberium_multiplier"); Property eezoValueProp = config.get(CATEGORY_NAME_ORE_GEN, "Eezo", EEZO_DEFAULT, "generation count per " +
Property vibraniumFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Vibranium factor", RESFAC_DEFAULT_VALUE, "chunk", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE);
"specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); eezoValueProp.setLanguageKey("gui.taiga_configuration.eezo_multiplier");
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");
List<String> propOrderOreGen = new ArrayList<String>(); List<String> propOrderOreGen = new ArrayList<String>();
propOrderOreGen.add(ironFactorProp.getName()); propOrderOreGen.add(ironValueProp.getName());
propOrderOreGen.add(slagironFactorProp.getName()); propOrderOreGen.add(basaltValueProp.getName());
propOrderOreGen.add(slaggoldFactorProp.getName()); propOrderOreGen.add(tiberiumValueProp.getName());
propOrderOreGen.add(ligniteFactorProp.getName()); propOrderOreGen.add(auroriumValueProp.getName());
propOrderOreGen.add(basaltFactorProp.getName()); propOrderOreGen.add(prometheumValueProp.getName());
propOrderOreGen.add(rottengroundFactorProp.getName()); propOrderOreGen.add(duraniteValueProp.getName());
propOrderOreGen.add(titaniteFactorProp.getName()); propOrderOreGen.add(valyriumValueProp.getName());
propOrderOreGen.add(adamantiteFactorProp.getName()); propOrderOreGen.add(vibraniumValueProp.getName());
propOrderOreGen.add(arcaniteFactorProp.getName()); propOrderOreGen.add(dilithiumValueProp.getName());
propOrderOreGen.add(violiumFactorProp.getName()); propOrderOreGen.add(karmesineValueProp.getName());
propOrderOreGen.add(bismuthFactorProp.getName()); propOrderOreGen.add(oviumValueProp.getName());
propOrderOreGen.add(eterniteFactorProp.getName()); propOrderOreGen.add(jauxumValueProp.getName());
propOrderOreGen.add(ignititeFactorProp.getName()); propOrderOreGen.add(palladiumValueProp.getName());
propOrderOreGen.add(karmesineFactorProp.getName()); propOrderOreGen.add(uruValueProp.getName());
propOrderOreGen.add(meteoriteFactorProp.getName()); propOrderOreGen.add(osramValueProp.getName());
propOrderOreGen.add(mindoriteFactorProp.getName()); propOrderOreGen.add(abyssumValueProp.getName());
propOrderOreGen.add(mythrilFactorProp.getName()); propOrderOreGen.add(eezoValueProp.getName());
propOrderOreGen.add(palladiumFactorProp.getName());
propOrderOreGen.add(prometheumFactorProp.getName());
propOrderOreGen.add(tiberiumFactorProp.getName());
propOrderOreGen.add(vibraniumFactorProp.getName());
propOrderOreGen.add(rubiumFactorProp.getName());
config.setCategoryPropertyOrder(CATEGORY_NAME_ORE_GEN, propOrderOreGen); config.setCategoryPropertyOrder(CATEGORY_NAME_ORE_GEN, propOrderOreGen);
List<String> propOrderOreVal = new ArrayList<String>();
config.setCategoryPropertyOrder(CATEGORY_NAME_ORE_VAL, propOrderOreVal);
if (readFieldsFromConfig) { if (readFieldsFromConfig) {
oreFactorGeneral = oreFactorGeneralProp.getDouble(RESFAC_DEFAULT_VALUE); ironGen = ironSwitch.getBoolean(false);
if (oreFactorGeneral > RESFAC_MAX_VALUE || oreFactorGeneral < RESFAC_MIN_VALUE) { endGen = endSwitch.getBoolean(true);
oreFactorGeneral = RESFAC_DEFAULT_VALUE; IRON_VAL = ironValueProp.getInt(IRON_DEFAULT);
if (IRON_VAL > RESFAC_MAX_VALUE || IRON_VAL < RESFAC_MIN_VALUE) {
IRON_VAL = IRON_DEFAULT;
} }
durabilityFactorGeneral = durabilityFactorGeneralProp.getDouble(RESFAC_DEFAULT_VALUE); TIBERIUM_VAL = tiberiumValueProp.getInt(TIBERIUM_DEFAULT);
if (durabilityFactorGeneral > RESFAC_MAX_VALUE || durabilityFactorGeneral < RESFAC_MIN_VALUE) { if (TIBERIUM_VAL > RESFAC_MAX_VALUE || TIBERIUM_VAL < RESFAC_MIN_VALUE) {
durabilityFactorGeneral = RESFAC_DEFAULT_VALUE; TIBERIUM_VAL = TIBERIUM_DEFAULT;
} }
speedFactorGeneral = speedFactorGeneralProp.getDouble(RESFAC_DEFAULT_VALUE); PROMETHEUM_VAL = prometheumValueProp.getInt(PROMETHEUM_DEFAULT);
if (speedFactorGeneral > RESFAC_MAX_VALUE || speedFactorGeneral < RESFAC_MIN_VALUE) { if (PROMETHEUM_VAL > RESFAC_MAX_VALUE || PROMETHEUM_VAL < RESFAC_MIN_VALUE) {
speedFactorGeneral = RESFAC_DEFAULT_VALUE; PROMETHEUM_VAL = PROMETHEUM_DEFAULT;
} }
attackFactorGeneral = attackFactorGeneralProp.getDouble(RESFAC_DEFAULT_VALUE); VALYRIUM_VAL = valyriumValueProp.getInt(VALYRIUM_DEFAULT);
if (attackFactorGeneral > RESFAC_MAX_VALUE || attackFactorGeneral < RESFAC_MIN_VALUE) { if (VALYRIUM_VAL > RESFAC_MAX_VALUE || VALYRIUM_VAL < RESFAC_MIN_VALUE) {
attackFactorGeneral = RESFAC_DEFAULT_VALUE; VALYRIUM_VAL = VALYRIUM_DEFAULT;
} }
ironGen = ironSwitch.getBoolean(GENERATION_DEFAULT_VALUE); OSRAM_VAL = osramValueProp.getInt(OSRAM_DEFAULT);
slagIronGen = slagIronSwitch.getBoolean(GENERATION_DEFAULT_VALUE); if (OSRAM_VAL > RESFAC_MAX_VALUE || OSRAM_VAL < RESFAC_MIN_VALUE) {
slagGoldGen = slagGoldSwitch.getBoolean(GENERATION_DEFAULT_VALUE); OSRAM_VAL = OSRAM_DEFAULT;
ironFactor = ironFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (ironFactor > RESFAC_MAX_VALUE || ironFactor < RESFAC_MIN_VALUE) {
ironFactor = RESFAC_DEFAULT_VALUE;
} }
slagironFactor = slagironFactorProp.getDouble(RESFAC_DEFAULT_VALUE); DURANITE_VAL = duraniteValueProp.getInt(DURANITE_DEFAULT);
if (slagironFactor > RESFAC_MAX_VALUE || slagironFactor < RESFAC_MIN_VALUE) { if (DURANITE_VAL > RESFAC_MAX_VALUE || DURANITE_VAL < RESFAC_MIN_VALUE) {
slagironFactor = RESFAC_DEFAULT_VALUE; DURANITE_VAL = DURANITE_DEFAULT;
} }
slaggoldFactor = slaggoldFactorProp.getDouble(RESFAC_DEFAULT_VALUE); BASALT_VAL = basaltValueProp.getInt(BASALT_DEFAULT);
if (slaggoldFactor > RESFAC_MAX_VALUE || slaggoldFactor < RESFAC_MIN_VALUE) { if (BASALT_VAL > RESFAC_MAX_VALUE || BASALT_VAL < RESFAC_MIN_VALUE) {
slaggoldFactor = RESFAC_DEFAULT_VALUE; BASALT_VAL = BASALT_DEFAULT;
} }
titaniteFactor = titaniteFactorProp.getDouble(RESFAC_DEFAULT_VALUE); EEZO_VAL = eezoValueProp.getInt(EEZO_DEFAULT);
if (titaniteFactor > RESFAC_MAX_VALUE || titaniteFactor < RESFAC_MIN_VALUE) { if (EEZO_VAL > RESFAC_MAX_VALUE || EEZO_VAL < RESFAC_MIN_VALUE) {
titaniteFactor = RESFAC_DEFAULT_VALUE; EEZO_VAL = EEZO_DEFAULT;
} }
adamantiteFactor = adamantiteFactorProp.getDouble(RESFAC_DEFAULT_VALUE); KARMESINE_VAL = karmesineValueProp.getInt(KARMESINE_DEFAULT);
if (adamantiteFactor > RESFAC_MAX_VALUE || adamantiteFactor < RESFAC_MIN_VALUE) { if (KARMESINE_VAL > RESFAC_MAX_VALUE || KARMESINE_VAL < RESFAC_MIN_VALUE) {
adamantiteFactor = RESFAC_DEFAULT_VALUE; KARMESINE_VAL = KARMESINE_DEFAULT;
} }
arcaniteFactor = arcaniteFactorProp.getDouble(RESFAC_DEFAULT_VALUE); OVIUM_VAL = oviumValueProp.getInt(OVIUM_DEFAULT);
if (arcaniteFactor > RESFAC_MAX_VALUE || arcaniteFactor < RESFAC_MIN_VALUE) { if (OVIUM_VAL > RESFAC_MAX_VALUE || OVIUM_VAL < RESFAC_MIN_VALUE) {
arcaniteFactor = RESFAC_DEFAULT_VALUE; OVIUM_VAL = KARMESINE_DEFAULT;
} }
violiumFactor = violiumFactorProp.getDouble(RESFAC_DEFAULT_VALUE); JAUXUM_VAL = jauxumValueProp.getInt(OVIUM_DEFAULT);
if (violiumFactor > RESFAC_MAX_VALUE || violiumFactor < RESFAC_MIN_VALUE) { if (JAUXUM_VAL > RESFAC_MAX_VALUE || JAUXUM_VAL < RESFAC_MIN_VALUE) {
violiumFactor = RESFAC_DEFAULT_VALUE; JAUXUM_VAL = JAUXUM_DEFAULT;
} }
bismuthFactor = bismuthFactorProp.getDouble(RESFAC_DEFAULT_VALUE); VIBRANIUM_VAL = vibraniumValueProp.getInt(VIBRANIUM_DEFAULT);
if (bismuthFactor > RESFAC_MAX_VALUE || bismuthFactor < RESFAC_MIN_VALUE) { if (VIBRANIUM_VAL > RESFAC_MAX_VALUE || VIBRANIUM_VAL < RESFAC_MIN_VALUE) {
bismuthFactor = RESFAC_DEFAULT_VALUE; VIBRANIUM_VAL = VIBRANIUM_DEFAULT;
} }
eterniteFactor = eterniteFactorProp.getDouble(RESFAC_DEFAULT_VALUE); DILITHIUM_VAL = dilithiumValueProp.getInt(DILITHIUM_DEFAULT);
if (eterniteFactor > RESFAC_MAX_VALUE || eterniteFactor < RESFAC_MIN_VALUE) { if (DILITHIUM_VAL > RESFAC_MAX_VALUE || DILITHIUM_VAL < RESFAC_MIN_VALUE) {
eterniteFactor = RESFAC_DEFAULT_VALUE; DILITHIUM_VAL = DILITHIUM_DEFAULT;
} }
ignititeFactor = ignititeFactorProp.getDouble(RESFAC_DEFAULT_VALUE); URU_VAL = uruValueProp.getInt(URU_DEFAULT);
if (ignititeFactor > RESFAC_MAX_VALUE || ignititeFactor < RESFAC_MIN_VALUE) { if (URU_VAL > RESFAC_MAX_VALUE || URU_VAL < RESFAC_MIN_VALUE) {
ignititeFactor = RESFAC_DEFAULT_VALUE; URU_VAL = URU_DEFAULT;
} }
karmesineFactor = karmesineFactorProp.getDouble(RESFAC_DEFAULT_VALUE); AURORIUM_VAL = auroriumValueProp.getInt(AURORIUM_DEFAULT);
if (karmesineFactor > RESFAC_MAX_VALUE || karmesineFactor < RESFAC_MIN_VALUE) { if (AURORIUM_VAL > RESFAC_MAX_VALUE || AURORIUM_VAL < RESFAC_MIN_VALUE) {
karmesineFactor = RESFAC_DEFAULT_VALUE; AURORIUM_VAL = AURORIUM_DEFAULT;
} }
meteoriteFactor = meteoriteFactorProp.getDouble(RESFAC_DEFAULT_VALUE); PALLADIUM_VAL = palladiumValueProp.getInt(PALLADIUM_DEFAULT);
if (meteoriteFactor > RESFAC_MAX_VALUE || meteoriteFactor < RESFAC_MIN_VALUE) { if (PALLADIUM_VAL > RESFAC_MAX_VALUE || PALLADIUM_VAL < RESFAC_MIN_VALUE) {
meteoriteFactor = RESFAC_DEFAULT_VALUE; PALLADIUM_VAL = PALLADIUM_DEFAULT;
} }
mindoriteFactor = mindoriteFactorProp.getDouble(RESFAC_DEFAULT_VALUE); ABYSSUM_VAL = abyssumValueProp.getInt(ABYSSUM_DEFAULT);
if (mindoriteFactor > RESFAC_MAX_VALUE || mindoriteFactor < RESFAC_MIN_VALUE) { if (ABYSSUM_VAL > RESFAC_MAX_VALUE || ABYSSUM_VAL < RESFAC_MIN_VALUE) {
mindoriteFactor = RESFAC_DEFAULT_VALUE; ABYSSUM_VAL = ABYSSUM_DEFAULT;
}
mythrilFactor = mythrilFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (mythrilFactor > RESFAC_MAX_VALUE || mythrilFactor < RESFAC_MIN_VALUE) {
mythrilFactor = RESFAC_DEFAULT_VALUE;
}
palladiumFactor = palladiumFactorProp.getDouble(RESFAC_DEFAULT_VALUE);
if (palladiumFactor > RESFAC_MAX_VALUE || palladiumFactor < RESFAC_MIN_VALUE) {
palladiumFactor = RESFAC_DEFAULT_VALUE;
}
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;
} }
} }
ironSwitch.set(ironGen); ironSwitch.set(ironGen);
slagIronSwitch.set(slagIronGen); endSwitch.set(endGen);
slagGoldSwitch.set(slagGoldGen); ironValueProp.set(IRON_VAL);
oreFactorGeneralProp.set(oreFactorGeneral); tiberiumValueProp.set(TIBERIUM_VAL);
durabilityFactorGeneralProp.set(durabilityFactorGeneral); prometheumValueProp.set(PROMETHEUM_VAL);
speedFactorGeneralProp.set(speedFactorGeneral); valyriumValueProp.set(VALYRIUM_VAL);
attackFactorGeneralProp.set(attackFactorGeneral); osramValueProp.set(OSRAM_VAL);
titaniteFactorProp.set(titaniteFactor); duraniteValueProp.set(DURANITE_VAL);
adamantiteFactorProp.set(adamantiteFactor); basaltValueProp.set(BASALT_VAL);
arcaniteFactorProp.set(arcaniteFactor); eezoValueProp.set(EEZO_VAL);
violiumFactorProp.set(violiumFactor); karmesineValueProp.set(KARMESINE_VAL);
bismuthFactorProp.set(bismuthFactor); oviumValueProp.set(OVIUM_VAL);
eterniteFactorProp.set(eterniteFactor); jauxumValueProp.set(JAUXUM_VAL);
ignititeFactorProp.set(ignititeFactor); vibraniumValueProp.set(VIBRANIUM_VAL);
karmesineFactorProp.set(karmesineFactor); dilithiumValueProp.set(DILITHIUM_VAL);
meteoriteFactorProp.set(meteoriteFactor); uruValueProp.set(URU_VAL);
mindoriteFactorProp.set(mindoriteFactor); auroriumValueProp.set(AURORIUM_VAL);
mythrilFactorProp.set(mythrilFactor); palladiumValueProp.set(PALLADIUM_VAL);
palladiumFactorProp.set(palladiumFactor); abyssumValueProp.set(ABYSSUM_VAL);
prometheumFactorProp.set(prometheumFactor);
tiberiumFactorProp.set(tiberiumFactor);
vibraniumFactorProp.set(vibraniumFactor);
rubiumFactorProp.set(rubiumFactor);
basaltFactorProp.set(basaltFactor);
rottengroundFactorProp.set(rottengroundFactor);
ligniteFactorProp.set(ligniteFactor);
if (config.hasChanged()) { if (config.hasChanged()) {
config.save(); config.save();
@@ -378,7 +315,8 @@ public class TAIGAConfiguration {
@SubscribeEvent(priority = EventPriority.NORMAL) @SubscribeEvent(priority = EventPriority.NORMAL)
public void onEvent(ConfigChangedEvent.OnConfigChangedEvent event) { public void onEvent(ConfigChangedEvent.OnConfigChangedEvent event) {
if (TAIGA.MODID.equals(event.getModID()) && !event.isWorldRunning()) { 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(); syncFromGUI();
} }
} }

View File

@@ -21,8 +21,13 @@ public class TAIGAGuiFactory implements IModGuiFactory {
} }
@Override @Override
public Class<? extends GuiScreen> mainConfigGuiClass() { public boolean hasConfigGui() {
return TAIGAConfigGui.class; return true;
}
@Override
public GuiScreen createConfigGui(GuiScreen parentScreen) {
return new TAIGAConfigGui(parentScreen);
} }
@Override @Override
@@ -30,22 +35,19 @@ public class TAIGAGuiFactory implements IModGuiFactory {
return null; return null;
} }
@Override
public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) {
return null;
}
public static class TAIGAConfigGui extends GuiConfig { public static class TAIGAConfigGui extends GuiConfig {
public TAIGAConfigGui(GuiScreen parentScreen) { 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() { private static List<IConfigElement> getConfigElements() {
List<IConfigElement> list = new ArrayList<IConfigElement>(); 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("Basic configuration", "gui.taiga_configuration.ctgy" +
list.add(new DummyConfigElement.DummyCategoryElement("Specific ore generation", "gui.taiga_configuration.ctgy.oregen", CategoryEntryOreGen.class)); ".general", CategoryEntryGeneral.class));
//list.add(new DummyConfigElement.DummyCategoryElement("Specific ore values", "gui.taiga_configuration.ctgy.oreval", CategoryEntryOreVal.class)); list.add(new DummyConfigElement.DummyCategoryElement("Ore specific settings", "gui.taiga_configuration" +
".ctgy.oregen", CategoryEntryOreGen.class));
return list; return list;
} }
@@ -57,11 +59,15 @@ public class TAIGAGuiFactory implements IModGuiFactory {
@Override @Override
protected GuiScreen buildChildScreen() { protected GuiScreen buildChildScreen() {
Configuration configuration = TAIGAConfiguration.getConfig(); 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(); List<IConfigElement> propertiesOnThisScreen = cat_general.getChildElements();
String windowTitle = configuration.toString(); 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 @Override
protected GuiScreen buildChildScreen() { protected GuiScreen buildChildScreen() {
Configuration configuration = TAIGAConfiguration.getConfig(); 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(); List<IConfigElement> propertiesOnThisScreen = cat_general.getChildElements();
String windowTitle = configuration.toString(); 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); 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);
} }
} }
} }

View File

@@ -0,0 +1,35 @@
package com.sosnitzka.taiga.blocks;
import com.sosnitzka.taiga.generic.BasicBlock;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import static slimeknights.tconstruct.TConstruct.random;
public class BlockCobble extends BasicBlock {
public BlockCobble(String name, Material material, float hardness, float resistance, int harvestlevel, float
light, String oreDictPrefix) {
super(name, material, hardness, resistance, harvestlevel, light, oreDictPrefix);
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void breakMoonRock(BlockEvent.BreakEvent e) {
if (e.getWorld().getBlockState(e.getPos()).getBlock().equals(this)) {
if (!e.getWorld().isRemote && random.nextFloat() > .9) {
e.setCanceled(true);
if (random.nextBoolean()) {
e.getWorld().setBlockState(e.getPos(), Blocks.LAVA.getDefaultState());
} else {
e.getWorld().newExplosion(null, e.getPos().getX(), e.getPos().getY() + 1 / 16f, e.getPos().getZ()
, 0.5f + random.nextFloat() * 1.5f, false, true);
}
}
}
}
}

View File

@@ -1,42 +0,0 @@
package com.sosnitzka.taiga.blocks;
import com.sosnitzka.taiga.generic.BasicBlock;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.Item;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import javax.annotation.ParametersAreNonnullByDefault;
import java.util.Random;
import static com.sosnitzka.taiga.Items.lignite;
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;
}
@Override
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
return lignite;
}
}

View File

@@ -0,0 +1,34 @@
package com.sosnitzka.taiga.blocks;
import com.sosnitzka.taiga.generic.BasicBlock;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import static slimeknights.tconstruct.TConstruct.random;
public class BlockMeteoriteRock extends BasicBlock {
private IBlockState cobbblestate;
public BlockMeteoriteRock(String name, Material material, float hardness, float resistance, int harvestlevel,
float light, String oreDictPrefix, IBlockState cobble) {
super(name, material, hardness, resistance, harvestlevel, light, oreDictPrefix);
MinecraftForge.EVENT_BUS.register(this);
this.cobbblestate = cobble;
}
@SubscribeEvent
public void breakMoonRock(BlockEvent.BreakEvent e) {
if (e.getWorld().getBlockState(e.getPos()).getBlock().equals(this)) {
if (!e.getWorld().isRemote && random.nextFloat() > .25) {
e.setCanceled(true);
e.getWorld().setBlockState(e.getPos(), cobbblestate);
}
}
}
}

View File

@@ -4,9 +4,9 @@ import com.sosnitzka.taiga.Items;
import com.sosnitzka.taiga.generic.BasicBlock; import com.sosnitzka.taiga.generic.BasicBlock;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.Explosion; import net.minecraft.world.Explosion;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -16,12 +16,12 @@ import java.util.Random;
import static com.sosnitzka.taiga.util.Utils.PREFIX_ORE; import static com.sosnitzka.taiga.util.Utils.PREFIX_ORE;
import static slimeknights.tconstruct.TConstruct.random; import static slimeknights.tconstruct.TConstruct.random;
import static slimeknights.tconstruct.library.utils.HarvestLevels.OBSIDIAN; import static slimeknights.tconstruct.library.utils.HarvestLevels.STONE;
public class BlockTiberium extends BasicBlock { public class BlockTiberium extends BasicBlock {
public BlockTiberium() { public BlockTiberium() {
super("tiberium_ore", Material.ROCK, 15.0f, 2.0f, OBSIDIAN, 1.0F, PREFIX_ORE); super("tiberium_ore", Material.ROCK, 10.0f, 2.0f, STONE, 1.0F, PREFIX_ORE);
} }
@Override @Override
@@ -39,23 +39,24 @@ public class BlockTiberium extends BasicBlock {
@Override @Override
public Item getItemDropped(IBlockState state, Random rand, int fortune) { public Item getItemDropped(IBlockState state, Random rand, int fortune) {
return Items.tiberiumShardInstable; return Items.tiberiumCrystal;
} }
@Override @Override
public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) { public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) {
if (!worldIn.isRemote) { if (!worldIn.isRemote) {
if (MathHelper.getRandomIntegerInRange(random, 1, 15) > 10) { if (random.nextFloat() < 0.5) {
worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), 1.6f, true, true); worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), random.nextFloat() * 2f + 1.5f, true,
true);
} }
} }
} }
@Override @Override
public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) { public void onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player) {
if (MathHelper.getRandomIntegerInRange(random, 1, 30) < 3) { if (random.nextFloat() < 0.1) {
if (!worldIn.isRemote) { if (!worldIn.isRemote) {
worldIn.newExplosion(null, pos.getX(), pos.getY() + 1 / 16f, pos.getZ(), 1.1f, true, true); worldIn.newExplosion(null, pos.getX(), pos.getY() + 1 / 16f, pos.getZ(), 1.5f, true, true);
} }
} }
} }

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 { public class BasicBlock extends Block {
private String oreDictPrefix; 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); super(material);
setUnlocalizedName(name); setUnlocalizedName(name);
setRegistryName(name); setRegistryName(name);
@@ -25,7 +26,8 @@ public class BasicBlock extends Block {
this(name, material, hardness, resistance, harvest, lightLevel, null); 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); 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; 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() { public boolean isOreDict() {
return this.oreDictPrefix != null; return this.oreDictPrefix != null;
} }

View File

@@ -8,22 +8,15 @@ import slimeknights.tconstruct.library.fluid.FluidMolten;
* A "wrapper" for FluidMolten that makes construction and manipulation easier * A "wrapper" for FluidMolten that makes construction and manipulation easier
*/ */
public class BasicTinkerFluid extends FluidMolten { public class BasicTinkerFluid extends FluidMolten {
public BasicTinkerFluid(String fluidName, int color, int temp, int lumen, int visk) {
private boolean toolForge;
public BasicTinkerFluid(String fluidName, int color, boolean toolForge, int temp, int lumen, int visk) {
// Constructs the FluidMolten with textures and color // 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 //Settings
this.setUnlocalizedName(Util.prefix(fluidName)); this.setUnlocalizedName(Util.prefix(fluidName));
this.setTemperature(temp); this.setTemperature(temp);
this.setLuminosity(lumen); this.setLuminosity(lumen);
this.setViscosity(visk); this.setViscosity(visk);
this.setDensity(2000); this.setDensity(2000);
this.toolForge = toolForge;
}
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.Items;
import com.sosnitzka.taiga.TAIGA; import com.sosnitzka.taiga.TAIGA;
import com.sosnitzka.taiga.TAIGAConfiguration; import com.sosnitzka.taiga.TAIGAConfiguration;
import com.sosnitzka.taiga.book.ContentOre;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft; 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.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.statemap.StateMapperBase; import net.minecraft.client.renderer.block.statemap.StateMapperBase;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.I18n;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fluids.Fluid; 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.MaterialRenderInfo;
import slimeknights.tconstruct.library.client.texture.MetalTextureTexture; import slimeknights.tconstruct.library.client.texture.MetalTextureTexture;
import slimeknights.tconstruct.library.materials.Material; import slimeknights.tconstruct.library.materials.Material;
@@ -23,8 +29,13 @@ import slimeknights.tconstruct.library.materials.Material;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import java.lang.reflect.Field; 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 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 { public class ClientProxy extends CommonProxy {
private static void registerBlockModel(Block block) { private static void registerBlockModel(Block block) {
@@ -35,6 +46,11 @@ public class ClientProxy extends CommonProxy {
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory")); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
} }
@Override
public void regsiterKeyBindings() {
ClientRegistry.registerKeyBinding(altKey);
}
@Override @Override
public void registerModels() { public void registerModels() {
Field[] itemFields = Items.class.getDeclaredFields(); Field[] itemFields = Items.class.getDeclaredFields();
@@ -65,33 +81,37 @@ public class ClientProxy extends CommonProxy {
} }
public void setRenderInfo(final Material material) { public void setRenderInfo(final Material material) {
if (material.equals(adamant)) metalRender(material, adamantFluid.getColor(), 1f, 0.8f, 0f);
if (material.equals(adamantite)) specialRender(material, 0xd55cdf, 0.5f, 0.6f, 0.2f); else if (material.equals(duranite)) metalRender(material, duraniteFluid.getColor(), .4f, .4f, 0);
else if (material.equals(solarium)) specialRender(material, 0xFFDD11, 0.7f, 0.3f, 0.1f); else if (material.equals(tiberium)) metalRender(material, tiberiumFluid.getColor(), 1f, .3f, 0f);
else if (material.equals(proxideum)) specialRender(material, 0x2d8f8b, 0.4f, 0.3f, 0.1f); else if (material.equals(palladium)) metalRender(material, palladiumFluid.getColor(), .7f, .6f, 0f);
else if (material.equals(meteorite)) specialRender(material, 0xaaaaaa, 0.6f, 0.8f, 0.0f); else if (material.equals(osram)) metalRender(material, osramFluid.getColor(), .7f, .6f, 0f);
else if (material.equals(tiberium)) specialRender(material, 0x33ff33, 0.5f, 0.2f, 0.1f); else if (material.equals(tritonite)) metalRender(material, tritoniteFluid.getColor(), .3f, .3f, 0f);
else if (material.equals(bismuth)) specialRender(material, 0xffffff, 0.3f, 0.0f, 0.0f); else if (material.equals(nucleum)) metalRender(material, nucleumFluid.getColor(), .4f, .6f, .2f);
else if (material.equals(bysmuid)) specialRender(material, 0xccccee, 0.6f, 0.2f, 0.0f); else if (material.equals(triberium)) metalRender(material, triberiumFluid.getColor(), 2f, 2f, 0.5f);
else if (material.equals(imperomite)) specialRender(material, 0x8decaf, 0.8f, 0.5f, -0.0f); else if (material.equals(solarium)) metalRender(material, solariumFluid.getColor(), 1.5f, 1.5f, 0.5f);
else if (material.equals(noctunyx)) specialRender(material, 0xce70e8, 0.5f, 0.2f, 0.3f); else if (material.equals(uru)) metalRender(material, uruFluid.getColor(), 1.0f, 1.0f, 0.3f);
else if (material.equals(nucleum)) specialRender(material, 0xd9f446, 1.0f, 0.4f, 0.3f); else if (material.equals(imperomite)) metalRender(material, imperomiteFluid.getColor(), 0.4f, 1.0f, 0.7f);
else if (material.equals(dyonite)) specialRender(material, 0xffe240, 0.6f, 1.0f, 0.2f); else if (material.equals(vibranium)) metalRender(material, vibraniumFluid.getColor(), 0.6f, .8f, 1f);
else if (material.equals(arcanite)) specialRender(material, 0x5e5499, 0.6f, 0.8f, 0.2f); else if (material.equals(valyrium)) metalRender(material, valyriumFluid.getColor(), .8f, 1.5f, -0.1f);
else { else {
material.setRenderInfo(new MaterialRenderInfo.BlockTexture("taiga:blocks/" + material.getIdentifier() + "_block")); material.setRenderInfo(new MaterialRenderInfo.BlockTexture(new ResourceLocation("taiga:blocks/block/" +
material.getIdentifier())));
} }
} }
private void specialRender(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() { material.setRenderInfo(new MaterialRenderInfo.AbstractMaterialRenderInfo() {
@Override @Override
public TextureAtlasSprite getTexture(TextureAtlasSprite baseTexture, String location) { public TextureAtlasSprite getTexture(ResourceLocation baseTexture, String location) {
return new MetalTextureTexture("taiga:blocks/materials/" + material.getIdentifier(), baseTexture, location, f, shine, brightness, hueshift); return new MetalTextureTexture(new ResourceLocation("taiga:materials/" + material.getIdentifier()),
baseTexture, location, f, shine, brightness, hueshift);
} }
}); });
} }
@Override @Override
public void registerFluidModels(Fluid fluid) { public void registerFluidModels(Fluid fluid) {
if (fluid == null) { if (fluid == null) {
@@ -104,10 +124,8 @@ public class ClientProxy extends CommonProxy {
FluidStateMapper mapper = new FluidStateMapper(fluid); FluidStateMapper mapper = new FluidStateMapper(fluid);
// item-model // item-model
if (item != null) { ModelLoader.registerItemVariants(item);
ModelLoader.registerItemVariants(item); ModelLoader.setCustomMeshDefinition(item, mapper);
ModelLoader.setCustomMeshDefinition(item, mapper);
}
// block-model // block-model
ModelLoader.setCustomStateMapper(block, mapper); ModelLoader.setCustomStateMapper(block, mapper);
} }
@@ -119,8 +137,13 @@ public class ClientProxy extends CommonProxy {
TAIGAConfiguration.clientPreInit(); 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 Fluid fluid;
public final ModelResourceLocation location; public final ModelResourceLocation location;
@@ -128,7 +151,8 @@ public class ClientProxy extends CommonProxy {
this.fluid = fluid; this.fluid = fluid;
// have each block hold its fluid per nbt? hm // 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 @Nonnull
@@ -143,4 +167,11 @@ public class ClientProxy extends CommonProxy {
return location; 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

@@ -2,8 +2,12 @@ package com.sosnitzka.taiga.proxy;
import com.sosnitzka.taiga.TAIGAConfiguration; import com.sosnitzka.taiga.TAIGAConfiguration;
import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import slimeknights.tconstruct.library.materials.Material; import slimeknights.tconstruct.library.materials.Material;
import static com.sosnitzka.taiga.MaterialTraits.*;
import static slimeknights.tconstruct.library.utils.HarvestLevels.harvestLevelNames;
public class CommonProxy { public class CommonProxy {
public void registerModels() { public void registerModels() {
@@ -20,4 +24,20 @@ public class CommonProxy {
public void initConfig() { public void initConfig() {
TAIGAConfiguration.preInit(); TAIGAConfiguration.preInit();
} }
public void registerServerCommands(FMLServerStartingEvent e) {
}
public void registerBookPages() {
}
public void regsiterKeyBindings() {
}
public void registerHarvestLevels() {
harvestLevelNames.put(DURANITE, "harvestlevel.duranite");
harvestLevelNames.put(VALYRIUM, "harvestlevel.valyrium");
harvestLevelNames.put(VIBRANIUM, "harvestlevel.vibranium");
}
} }

View File

@@ -1,30 +1,61 @@
package com.sosnitzka.taiga.recipes; package com.sosnitzka.taiga.recipes;
import com.sosnitzka.taiga.Blocks;
import net.minecraft.init.Items; import com.sosnitzka.taiga.Items;
import com.sosnitzka.taiga.TAIGA;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
import static com.sosnitzka.taiga.Items.*;
import static slimeknights.tconstruct.shared.TinkerCommons.matNecroticBone;
public class CraftingRegistry { public class CraftingRegistry {
public static void register() { public static void register() {
GameRegistry.addShapelessRecipe(new ItemStack(fuel_brick), Items.COAL, Items.COAL, Items.COAL, lignite, lignite, lignite); 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);
}
GameRegistry.addShapelessRecipe(new ItemStack(luminar_dust), Items.REDSTONE, Items.GLOWSTONE_DUST); public static void convertion(Item block, Item ingot, Item nugget) {
GameRegistry.addShapelessRecipe(new ItemStack(glimmerstone_dust), luminar_dust, Items.BLAZE_POWDER); GameRegistry.addShapelessRecipe(new ResourceLocation(TAIGA.MODID + ":recipe_ingot_from_block_" + block
GameRegistry.addShapelessRecipe(new ItemStack(glimmerstone_dust), Items.REDSTONE, Items.GLOWSTONE_DUST, Items.BLAZE_POWDER); .getUnlocalizedName()), new ResourceLocation(""), new ItemStack(ingot, 9), Ingredient.fromStacks(new
ItemStack(block)));
GameRegistry.addShapelessRecipe(new ItemStack(glimmercoal), Items.COAL, glimmerstone_dust); GameRegistry.addShapelessRecipe(new ResourceLocation(TAIGA.MODID + ":recipe_ingot_from_nugget_" + block
GameRegistry.addShapelessRecipe(new ItemStack(glimmercoal), lignite, glimmerstone_dust); .getUnlocalizedName()), new ResourceLocation(""), new ItemStack(nugget, 9), Ingredient.fromStacks(new
ItemStack(ingot)));
GameRegistry.addShapelessRecipe(new ItemStack(radiant_pearl), Items.ENDER_PEARL, luminar_dust, new ItemStack(Items.DYE, 1, 4));
GameRegistry.addShapelessRecipe(new ItemStack(glimmer_pearl), Items.ENDER_PEARL, glimmerstone_dust);
GameRegistry.addShapelessRecipe(new ItemStack(energy_pearl), Items.ENDER_PEARL, luminar_dust, Items.GUNPOWDER);
GameRegistry.addShapelessRecipe(new ItemStack(nitro_brick), fuel_brick, Items.GUNPOWDER, Items.BLAZE_POWDER);
GameRegistry.addShapelessRecipe(new ItemStack(anthracite_dust), matNecroticBone, Items.COAL, Items.GUNPOWDER);
GameRegistry.addShapelessRecipe(new ItemStack(spectrum_dust), matNecroticBone, glimmerstone_dust);
} }
} }

View File

@@ -1,20 +1,8 @@
package com.sosnitzka.taiga.recipes; package com.sosnitzka.taiga.recipes;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.registry.GameRegistry;
import static com.sosnitzka.taiga.Blocks.*;
import static com.sosnitzka.taiga.Items.*;
public class SmeltingRegistry { public class SmeltingRegistry {
public static void register() { public static void register() {
GameRegistry.addSmelting(slagironOre, new ItemStack(slagironIngot), 1.0F);
GameRegistry.addSmelting(slagironIngot, new ItemStack(iron_nugget), 0);
GameRegistry.addSmelting(slaggoldIngot, new ItemStack(Items.GOLD_NUGGET), 0);
GameRegistry.addSmelting(slaggoldOre, new ItemStack(slaggoldIngot), 1.0F);
GameRegistry.addSmelting(tiberiumOre, new ItemStack(tiberiumShardInstable, 6), (2F));
GameRegistry.addSmelting(tiberiumShardInstable, new ItemStack(tiberiumIngot), (.1F));
} }
} }

View File

@@ -25,40 +25,42 @@ public class TraitAnalysing extends AbstractTrait {
@SubscribeEvent @SubscribeEvent
public void onXpDrop(LivingExperienceDropEvent event) { public void onXpDrop(LivingExperienceDropEvent event) {
EntityPlayer player = event.getAttackingPlayer(); 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())); event.setDroppedExperience(this.getUpdateXP(event.getDroppedExperience()));
} }
} }
@SubscribeEvent @SubscribeEvent
public void onBlockBreak(BlockEvent.BreakEvent event) { public void onBlockBreak(BlockEvent.BreakEvent event) {
EntityPlayer player = event.getPlayer(); 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())); event.setExpToDrop(this.getUpdateXP(event.getExpToDrop()));
} }
} }
@SubscribeEvent @SubscribeEvent
public void onMobDrops(LivingDropsEvent event) { public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld(); World w = event.getEntity().getEntityWorld();
if (event.getSource().getEntity() instanceof EntityPlayer) { if (random.nextFloat() < .1f && event.getSource().getTrueSource() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe
(player.getHeldItemMainhand()), identifier)) {
event.getDrops().clear(); event.getDrops().clear();
} }
} }
} }
private int getUpdateXP(int xp) { private int getUpdateXP(int xp) {
float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + 18) * 50; float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextInt(xp) * (1 +
random.nextFloat()));
return Math.round(exp); return Math.round(exp);
} }
@Override @Override
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
if (random.nextFloat() < 0.85) { if (random.nextFloat() < 0.1) {
event.getDrops().clear(); event.getDrops().clear();
} }
} }

View File

@@ -1,12 +1,19 @@
package com.sosnitzka.taiga.traits; package com.sosnitzka.taiga.traits;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityCreature;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; 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.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper; import slimeknights.tconstruct.library.utils.ToolHelper;
import static com.sosnitzka.taiga.util.Utils.isNight; import static com.sosnitzka.taiga.util.Utils.isNight;
@@ -15,21 +22,39 @@ public class TraitArcane extends AbstractTrait {
public TraitArcane() { public TraitArcane() {
super("arcane", TextFormatting.DARK_PURPLE); super("arcane", TextFormatting.DARK_PURPLE);
MinecraftForge.EVENT_BUS.register(this);
} }
@Override @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(); int time = (int) world.getWorldTime();
if (random.nextFloat() <= 0.1 && isNight(time)) { if (random.nextFloat() <= 0.05 && isNight(time)) {
ToolHelper.healTool(tool, random.nextInt(15) + 1, null); ToolHelper.healTool(tool, random.nextInt(8) + 1, null);
} }
} }
@Override @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(); int time = (int) player.getEntityWorld().getWorldTime();
if (random.nextFloat() <= 0.1 && isNight(time)) { if (random.nextFloat() <= 0.05 && isNight(time)) {
ToolHelper.healTool(tool, random.nextInt(15) + 1, null); ToolHelper.healTool(tool, random.nextInt(8) + 1, null);
}
}
@SubscribeEvent
public void onEntityKill(LivingDeathEvent e) {
World w = e.getEntity().getEntityWorld();
if (!w.isRemote && e.getSource().getTrueSource() != null) {
if (e.getSource().getTrueSource() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) {
ItemStack tool = ((EntityPlayer) e.getSource().getTrueSource()).getHeldItemMainhand();
if (isNight((int) w.getWorldTime()) && random.nextFloat() < 0.1 && TinkerUtil.hasTrait(TagUtil
.getTagSafe(tool), identifier)) {
ToolHelper.healTool(tool, random.nextInt(16), null);
}
}
} }
} }
} }

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,9 +19,10 @@ public class TraitBlind extends AbstractTrait {
} }
@Override @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(); int time = (int) world.getWorldTime();
if (random.nextFloat() <= 0.05 || (random.nextFloat() <= 0.1 && isNight(time))) { if (random.nextFloat() <= 0.01 || (random.nextFloat() <= 0.03 && isNight(time))) {
if (random.nextBoolean()) if (random.nextBoolean())
player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(200) + 100)); player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(200) + 100));
else else
@@ -30,9 +31,10 @@ public class TraitBlind extends AbstractTrait {
} }
@Override @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(); int time = (int) player.getEntityWorld().getWorldTime();
if (random.nextFloat() <= 0.05 || (random.nextFloat() <= 0.1 && isNight(time))) { if (random.nextFloat() <= 0.01 || (random.nextFloat() <= 0.03 && isNight(time))) {
if (random.nextBoolean()) if (random.nextBoolean())
player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(400) + 200)); player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(400) + 200));
else else

View File

@@ -1,43 +1,41 @@
package com.sosnitzka.taiga.traits; package com.sosnitzka.taiga.traits;
import net.minecraft.entity.Entity; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.MobEffects;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect; import net.minecraft.potion.PotionEffect;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
import static com.sosnitzka.taiga.util.Utils.isNight; import static com.sosnitzka.taiga.util.Utils.isNight;
import static net.minecraft.init.MobEffects.GLOWING;
public class TraitBright extends AbstractTrait { public class TraitBright extends AbstractTrait {
private static final float chance = 0.90f;
public TraitBright() { public TraitBright() {
super("bright", TextFormatting.DARK_GRAY); super("bright", TextFormatting.DARK_GRAY);
} }
@Override @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(); int time = (int) target.getEntityWorld().getWorldTime();
if (!isNight(time)) { if (!isNight(time)) {
newDamage += damage / 2f; newDamage = damage * (1 + random.nextFloat() / 2f);
} } else newDamage = damage / (1 + random.nextFloat() / 3f);
return super.damage(tool, player, target, damage, newDamage, isCritical); return super.damage(tool, player, target, damage, newDamage, isCritical);
} }
@Override @Override
public void onUpdate(ItemStack item, World world, Entity entity, int i, boolean b) { public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
if (entity instanceof EntityPlayer) { player, boolean wasEffective) {
EntityPlayer e = (EntityPlayer) entity; if (random.nextFloat() >= chance) {
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getHeldItemMainhand()), identifier)) { player.addPotionEffect(new PotionEffect(GLOWING, 200));
e.addPotionEffect(new PotionEffect(MobEffects.GLOWING, 100));
}
} }
} }
} }

View File

@@ -16,14 +16,16 @@ public class TraitCascade extends AbstractTrait {
} }
@Override @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 f = random.nextFloat();
if (!world.isRemote && tool.canHarvestBlock(state) && f <= 0.1) { if (!world.isRemote && tool.canHarvestBlock(state) && f <= 0.1) {
double x, y, z, sx, sy, sz; double x, y, z, sx, sy, sz;
sx = x = pos.getX(); sx = x = pos.getX();
sy = y = pos.getY(); sy = y = pos.getY();
sz = z = pos.getZ(); 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--) { for (int a = i; a > 0; a--) {
int r = random.nextInt(3); int r = random.nextInt(3);
int d = random.nextBoolean() ? 1 : -1; int d = random.nextBoolean() ? 1 : -1;
@@ -36,7 +38,7 @@ public class TraitCascade extends AbstractTrait {
sx = x = nextBlock.getX(); sx = x = nextBlock.getX();
sy = y = nextBlock.getY(); sy = y = nextBlock.getY();
sz = z = nextBlock.getZ(); sz = z = nextBlock.getZ();
ToolHelper.damageTool(tool, random.nextInt(2), player); ToolHelper.damageTool(tool, 1, player);
} else { } else {
x = sx; x = sx;
y = sy; y = sy;

View File

@@ -0,0 +1,150 @@
package com.sosnitzka.taiga.traits;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper;
import static com.sosnitzka.taiga.Keybindings.altKey;
public class TraitCatcher extends AbstractTrait {
public static int chance = 3;
public static float costMulti = 0.25f;
public TraitCatcher() {
super(TraitCatcher.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void killEntity(LivingDeathEvent event) {
if (!(event.getSource().getTrueSource() instanceof EntityPlayer))
return;
if (event.getEntityLiving() instanceof EntityPlayer || event.getEntityLiving() instanceof EntityPlayerMP)
return;
World w = event.getSource().getTrueSource().getEntityWorld();
EntityPlayer p = (EntityPlayer) event.getSource().getTrueSource();
if (!TinkerUtil.hasTrait(TagUtil.getTagSafe(p.getHeldItemMainhand()), identifier))
return;
EntityLivingBase target = event.getEntityLiving();
NBTTagCompound tag = TagUtil.getExtraTag(p.getHeldItemMainhand());
Data data = Data.read(tag);
if (!data.mobClass.isEmpty())
return;
if (!w.isRemote && random.nextInt((int) target.getMaxHealth()) <= chance && target instanceof EntityLiving) {
event.setCanceled(true);
target.setDropItemsWhenDead(false);
if (data.mobClass.isEmpty()) {
data.mobClass = target.getClass().getName();
data.mobName = target.getName();
data.write(tag);
TagUtil.setExtraTag(p.getHeldItemMainhand(), tag);
p.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
target.setDropItemsWhenDead(false);
target.setDead();
}
}
}
@Override
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
if (!world.isRemote) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Data data = Data.read(tag);
if (data.mobClass.isEmpty()) {
TagUtil.setEnchantEffect(tool, false);
} else
TagUtil.setEnchantEffect(tool, true);
}
}
@SubscribeEvent
public void onRightClickItem(PlayerInteractEvent.RightClickItem event) {
World w = event.getWorld();
BlockPos pos = event.getEntityPlayer().getPosition();
ItemStack tool = event.getEntityPlayer().getHeldItemMainhand();
if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier) && altKey.isKeyDown()) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Data data = Data.read(tag);
if (!data.mobClass.isEmpty()) {
Entity ent = null;
try {
ent = (Entity) Class.forName(data.mobClass).getConstructor(World.class).newInstance(w);
} catch (Exception e) {
System.out.println(e.toString());
}
if (ent != null) {
ent.setPosition(pos.getX(), pos.getY(), pos.getZ()); // TODO: set to player view target
w.spawnEntity(ent);
event.getEntityPlayer().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
data.mobClass = "";
data.mobName = "";
data.write(tag);
TagUtil.setExtraTag(tool, tag);
ToolHelper.damageTool(tool, random.nextInt((int) (ToolHelper.getCurrentDurability(tool) *
costMulti)), event.getEntityPlayer());
}
}
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent e) {
ItemStack tool = e.getItemStack();
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Data data = Data.read(tag);
if (!data.mobClass.isEmpty())
e.getToolTip().add(TextFormatting.DARK_PURPLE + "Captured: " + TextFormatting.LIGHT_PURPLE + data
.mobName);
}
}
public static class Data {
String mobClass;
String mobName;
public static Data read(NBTTagCompound tag) {
Data data = new Data();
data.mobName = tag.getString("mobName");
data.mobClass = tag.getString("mobClass");
return data;
}
public void write(NBTTagCompound tag) {
tag.setString("mobClass", mobClass);
tag.setString("mobName", mobName);
}
}
}

View File

@@ -0,0 +1,80 @@
package com.sosnitzka.taiga.traits;
import com.sosnitzka.taiga.util.Utils;
import net.minecraft.entity.EntityCreature;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
public class TraitCongenial extends AbstractTrait {
public TraitCongenial() {
super(TraitCongenial.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void onEntityKill(LivingDeathEvent e) {
if (e.getSource().getTrueSource() instanceof EntityPlayer && !e.getSource().getTrueSource().world.isRemote &&
e.getEntity() instanceof EntityCreature) {
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e.getSource().getTrueSource())
.getHeldItemMainhand()), identifier)) {
ItemStack tool = ((EntityPlayer) e.getSource().getTrueSource()).getHeldItemMainhand();
String name = e.getEntity().getName();
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
if (!data.name.isEmpty()) {
return;
}
data.name = name;
data.write(tag);
TagUtil.setExtraTag(tool, tag);
}
}
}
@Override
public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float
newDamage, boolean isCritical) {
World w = player.getEntityWorld();
if (!w.isRemote) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
if (data.name.isEmpty()) {
return damage;
}
if (!data.name.equals(target.getName())) {
return damage / (random.nextInt(5) + 5);
}
float x = (1 + random.nextFloat() * 9);
return damage * x;
}
return damage;
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent e) {
ItemStack tool = e.getItemStack();
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
if (data.name.isEmpty()) e.getToolTip().add(TextFormatting.LIGHT_PURPLE + "Unbound");
else {
e.getToolTip().add(TextFormatting.DARK_PURPLE + "Bound to: " + TextFormatting.LIGHT_PURPLE + data.name);
}
}
}
}

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

@@ -0,0 +1,56 @@
package com.sosnitzka.taiga.traits;
import com.sosnitzka.taiga.util.Utils;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.DamageSource;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
public class TraitCursed extends AbstractTrait {
public TraitCursed() {
super(TraitCursed.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
MinecraftForge.EVENT_BUS.register(this);
}
@Override
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
int chance = 60 * 1000;
if (random.nextInt((chance + data.curse) / (data.curse + 1)) == 1) {
if (isSelected) data.curse += 10;
else data.curse++;
entity.attackEntityFrom(new DamageSource("Curse"), random.nextFloat() * ((EntityPlayer) entity).getHealth
() / 2);
}
data.write(tag);
TagUtil.setExtraTag(tool, tag);
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent e) {
ItemStack tool = e.getItemStack();
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
if (data.curse != 0) {
e.getToolTip().add(TextFormatting.DARK_PURPLE + "Curse: " + TextFormatting.WHITE + data.curse);
}
}
}
}

View File

@@ -1,5 +1,7 @@
package com.sosnitzka.taiga.traits; package com.sosnitzka.taiga.traits;
import com.google.common.collect.Lists;
import com.sosnitzka.taiga.util.Utils;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
@@ -10,69 +12,78 @@ import net.minecraft.init.Items;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.living.LivingDropsEvent; import net.minecraftforge.event.entity.living.LivingDropsEvent;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil; import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil; import slimeknights.tconstruct.library.utils.TinkerUtil;
import java.util.List;
public class TraitCurvature extends AbstractTrait { public class TraitCurvature extends AbstractTrait {
public static int chance = 5;
public static int distance = 10;
public TraitCurvature() { public TraitCurvature() {
super("curvature", TextFormatting.BLACK); super("curvature", TextFormatting.DARK_PURPLE);
MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(this);
} }
@Override @Override
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
if (player.worldObj.isRemote) { if (!event.getWorld().isRemote && random.nextFloat() < 0.05) {
return; List<IBlockState> blockstates = Lists.newArrayList(Blocks.STONE.getDefaultState(), Blocks.NETHERRACK
} .getDefaultState(), Blocks.END_STONE.getDefaultState(), Blocks.AIR.getDefaultState(), Blocks.DIRT
if (random.nextFloat() <= 0.01 && world.provider.getDimension() != -1) { .getDefaultState());
teleport(player, world); IBlockState mainstate = event.getState();
player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); if (blockstates.contains(mainstate)) return;
for (int i = 0; i < chance; i++) {
int x = event.getPos().getX() + Utils.nextInt(random, -distance, distance);
int y = event.getPos().getY() + Utils.nextInt(random, -distance, distance);
int z = event.getPos().getZ() + Utils.nextInt(random, -distance, distance);
BlockPos cPos = new BlockPos(x, y, z);
IBlockState state = event.getWorld().getBlockState(cPos);
if (blockstates.contains(state)) {
event.getDrops().clear();
event.getWorld().setBlockState(cPos, mainstate);
event.getHarvester().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
event.getHarvester().sendStatusMessage(new TextComponentString("Teleported to: " + x + " " + y +
" " + z), false);
return;
}
}
} }
} }
@Override @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
if (random.nextFloat() <= 0.3) { wasCritical, boolean wasHit) {
if (random.nextFloat() <= 0.15) {
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
changePos(player, target); changePos(player, target);
} }
} }
@SubscribeEvent @SubscribeEvent
public void onMobDrops(LivingDropsEvent event) { public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld(); World w = event.getEntity().getEntityWorld();
if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) { if (!w.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player
ItemStack i = new ItemStack(Items.ENDER_PEARL, random.nextInt(3)); .getHeldItemMainhand()), identifier)) {
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i)); ItemStack i = new ItemStack(Items.ENDER_PEARL, random.nextInt(2));
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event
.getEntity().posZ, i));
} }
} }
} }
private void teleport(EntityLivingBase e, World w) {
int x = e.getPosition().getX() + random.nextInt(250) - 125;
int y = e.getPosition().getY();
int z = e.getPosition().getZ() + random.nextInt(250) - 125;
while (w.getBlockState(new BlockPos(x, y, z)).getBlock() != Blocks.AIR) {
y++;
}
while (w.getBlockState(new BlockPos(x, y - 1, z)).getBlock() == Blocks.AIR) {
y--;
}
e.setPosition(x, y, z);
}
private void changePos(EntityLivingBase player, EntityLivingBase target) { private void changePos(EntityLivingBase player, EntityLivingBase target) {
BlockPos pp = new BlockPos(player.getPosition()); BlockPos pp = new BlockPos(player.getPosition());
BlockPos tp = new BlockPos(target.getPosition()); BlockPos tp = new BlockPos(target.getPosition());

View File

@@ -15,12 +15,12 @@ public class TraitDark extends AbstractTrait {
} }
@Override @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(); int time = (int) target.getEntityWorld().getWorldTime();
if (isNight(time)) { if (isNight(time)) {
newDamage += damage / 2f; newDamage = damage * (1 + random.nextFloat() / 2f);
} } else newDamage = damage / (1 + random.nextFloat() / 3f);
return super.damage(tool, player, target, damage, newDamage, isCritical); return super.damage(tool, player, target, damage, newDamage, isCritical);
} }
} }

View File

@@ -0,0 +1,106 @@
package com.sosnitzka.taiga.traits;
import com.google.common.collect.ImmutableList;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
import slimeknights.tconstruct.library.materials.HeadMaterialStats;
import slimeknights.tconstruct.library.tools.ToolNBT;
import slimeknights.tconstruct.library.utils.TagUtil;
import java.util.List;
/**
* Gives the tool bonus stats on crafting.
* The bonus stats are distributed over time and are more or less random.
* The stats that will be rewarded are already designated on the first time the tool is crafted
*/
public class TraitDecay extends TraitProgressiveStats {
protected static int TICK_PER_STAT = 24;
protected static int DURABILITY_STEP = 1;
protected static float SPEED_STEP = 0.05f;
protected static float ATTACK_STEP = 0.05f;
public TraitDecay() {
super("decay", TextFormatting.GREEN);
}
@Override
public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) {
// check if we have stats already distributed, and if not add them
if (!hasPool(rootCompound)) {
// ok, we need new stats. Let the fun begin!
StatNBT data = new StatNBT();
int statPoints = 800; // we distribute a whopping X points worth of stats!
for (; statPoints > 0; statPoints--) {
switch (random.nextInt(3)) {
// durability
case 0:
data.durability += DURABILITY_STEP;
break;
// speed
case 1:
data.speed += SPEED_STEP;
break;
// attack
case 2:
data.attack += ATTACK_STEP;
break;
}
}
setPool(rootCompound, data);
}
super.applyEffect(rootCompound, modifierTag);
}
@Override
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
if (entity instanceof FakePlayer || entity.world.isRemote || entity.ticksExisted % TICK_PER_STAT != 0 || playerIsBreakingBlock(entity)) {
return;
}
NBTTagCompound root = TagUtil.getTagSafe(tool);
StatNBT distributed = getBonus(root);
ToolNBT data = TagUtil.getToolStats(tool);
// attack
if (entity.ticksExisted % (TICK_PER_STAT * 3) == 0) {
float A = ATTACK_STEP * random.nextFloat();
data.attack -= A;
distributed.attack -= A;
}
// speed
else if (entity.ticksExisted % (TICK_PER_STAT * 2) == 0) {
float S = SPEED_STEP * random.nextFloat();
data.speed -= S;
distributed.speed -= S;
}
// durability
else {
int D = random.nextInt(DURABILITY_STEP) + 1;
data.durability -= D;
distributed.durability -= D;
}
// update tool stats
TagUtil.setToolTag(root, data.get());
// update statistics on distributed stats
setBonus(root, distributed);
}
@Override
public List<String> getExtraInfo(ItemStack tool, NBTTagCompound modifierTag) {
StatNBT pool = getBonus(TagUtil.getTagSafe(tool));
return ImmutableList.of(HeadMaterialStats.formatDurability(pool.durability),
HeadMaterialStats.formatMiningSpeed(pool.speed),
HeadMaterialStats.formatAttack(pool.attack));
}
}

View File

@@ -1,19 +1,19 @@
package com.sosnitzka.taiga.traits; package com.sosnitzka.taiga.traits;
import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.EntityCreature;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.living.LivingDropsEvent; import net.minecraftforge.event.entity.living.LivingDropsEvent;
import net.minecraftforge.event.entity.living.LivingExperienceDropEvent;
import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil; import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil; import slimeknights.tconstruct.library.utils.TinkerUtil;
public class TraitDiffuse extends AbstractTrait { public class TraitDiffuse extends AbstractTrait {
public TraitDiffuse() { public TraitDiffuse() {
@@ -21,44 +21,37 @@ public class TraitDiffuse extends AbstractTrait {
MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(this);
} }
@SubscribeEvent
public void onXpDrop(LivingExperienceDropEvent event) {
EntityPlayer player = event.getAttackingPlayer();
if (!event.getEntity().getEntityWorld().isRemote && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
event.setDroppedExperience(0);
}
}
@SubscribeEvent @SubscribeEvent
public void onBlockBreak(BlockEvent.BreakEvent event) { public void onBlockBreak(BlockEvent.BreakEvent event) {
EntityPlayer player = event.getPlayer(); 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()),
event.setExpToDrop(this.getUpdateXP(event.getExpToDrop())); this.identifier)) {
event.setExpToDrop((int) this.getUpdateXP(event.getExpToDrop()));
} }
} }
@SubscribeEvent @SubscribeEvent
public void onMobDrops(LivingDropsEvent event) { public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld(); World w = event.getEntity().getEntityWorld();
if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) { if (!w.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { if (event.getEntity() instanceof EntityCreature && TinkerUtil.hasTrait(TagUtil.getTagSafe(player
.getHeldItemMainhand()), identifier)) {
event.getDrops().clear(); event.getDrops().clear();
} }
} }
} }
private int getUpdateXP(int xp) { private float getUpdateXP(int xp) {
float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextInt(10)); float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (1 + random.nextFloat() * xp);
if (random.nextBoolean()) if (random.nextFloat() <= 0.25)
return Math.round(exp); return exp;
else return 0; else return 0;
} }
@Override @Override
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
if (random.nextFloat() < 0.75) { if (random.nextFloat() < 0.35) {
event.getDrops().clear(); event.getDrops().clear();
} }
} }

View File

@@ -23,11 +23,13 @@ public class TraitDissolving extends AbstractTrait {
if (!event.getEntity().getEntityWorld().isRemote) { if (!event.getEntity().getEntityWorld().isRemote) {
EntityPlayer player = event.getAttackingPlayer(); EntityPlayer player = event.getAttackingPlayer();
float r = random.nextFloat(); float r = random.nextFloat();
if (r <= 0.75 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this
event.setDroppedExperience(0); .identifier)) {
} if (r <= 0.80) {
if (r > 0.95 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { event.setDroppedExperience(0);
event.setDroppedExperience(event.getDroppedExperience() * (random.nextInt(3) + 2)); } else {
event.setDroppedExperience(event.getDroppedExperience() * (random.nextInt(3) + 2));
}
} }
} }
} }

View File

@@ -3,6 +3,7 @@ package com.sosnitzka.taiga.traits;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
@@ -19,42 +20,56 @@ public class TraitFracture extends AbstractTrait {
} }
@Override @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 f = random.nextFloat();
float b = 0.99F * calcBonus(tool); float b = 0.99F * calcBonus(tool);
if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) { if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) {
RayTraceResult mop = ((ToolCore) tool.getItem()).rayTrace(world, (EntityPlayer) player, false); RayTraceResult mop = ((ToolCore) tool.getItem()).rayTrace(world, (EntityPlayer) player, false);
for (int i = random.nextInt(9) + 1; i >= 0; i--) { if (mop != null) {
switch (mop.sideHit) { for (int i = random.nextInt(9) + 1; i >= 0; i--) {
case UP: switch (mop.sideHit) {
BlockPos next1 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ()); case UP:
if (tool.canHarvestBlock(world.getBlockState(next1))) world.destroyBlock(next1, true); BlockPos next1 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ());
break; if (tool.canHarvestBlock(world.getBlockState(next1)) && !world.getBlockState(next1)
case DOWN: .equals(Blocks.BEDROCK.getDefaultState()))
BlockPos next2 = new BlockPos(pos.getX(), pos.getY() + i, pos.getZ()); world.destroyBlock(next1, true);
if (tool.canHarvestBlock(world.getBlockState(next2))) world.destroyBlock(next2, true); break;
break; case DOWN:
case WEST: BlockPos next2 = new BlockPos(pos.getX(), pos.getY() + i, pos.getZ());
BlockPos next3 = new BlockPos(pos.getX() + i, pos.getY(), pos.getZ()); if (tool.canHarvestBlock(world.getBlockState(next2)) && !world.getBlockState(next2)
if (tool.canHarvestBlock(world.getBlockState(next3))) world.destroyBlock(next3, true); .equals(Blocks.BEDROCK.getDefaultState()))
break; world.destroyBlock(next2, true);
case EAST: break;
BlockPos next4 = new BlockPos(pos.getX() - i, pos.getY(), pos.getZ()); case WEST:
if (tool.canHarvestBlock(world.getBlockState(next4))) world.destroyBlock(next4, true); BlockPos next3 = new BlockPos(pos.getX() + i, pos.getY(), pos.getZ());
break; if (tool.canHarvestBlock(world.getBlockState(next3)) && !world.getBlockState(next3)
case SOUTH: .equals(Blocks.BEDROCK.getDefaultState()))
BlockPos next5 = new BlockPos(pos.getX(), pos.getY(), pos.getZ() - i); world.destroyBlock(next3, true);
if (tool.canHarvestBlock(world.getBlockState(next5))) world.destroyBlock(next5, true); break;
break; case EAST:
case NORTH: BlockPos next4 = new BlockPos(pos.getX() - i, pos.getY(), pos.getZ());
BlockPos next6 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ() + i); if (tool.canHarvestBlock(world.getBlockState(next4)) && !world.getBlockState(next4)
if (tool.canHarvestBlock(world.getBlockState(next6))) world.destroyBlock(next6, true); .equals(Blocks.BEDROCK.getDefaultState()))
break; 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);
} }
} }
private float calcBonus(ItemStack tool) { private float calcBonus(ItemStack tool) {

View File

@@ -18,12 +18,14 @@ public class TraitFragile extends AbstractTrait {
} }
@Override @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()) { if (random.nextBoolean()) {
float f = random.nextFloat(); float f = random.nextFloat();
float b = 0.99F * calcBonus(tool); float b = 0.99F * calcBonus(tool);
if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) { if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) {
if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(3), player); if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(3), player);
else ToolHelper.healTool(tool, random.nextInt(3), player);
} }
} else { } else {
float f = random.nextFloat(); float f = random.nextFloat();
@@ -41,20 +43,18 @@ public class TraitFragile extends AbstractTrait {
if (r == 2) z += d; if (r == 2) z += d;
BlockPos nextBlock = new BlockPos(x, y, z); BlockPos nextBlock = new BlockPos(x, y, z);
if (world.getBlockState(nextBlock) == world.getBlockState(pos)) { if (world.getBlockState(nextBlock) == world.getBlockState(pos)) {
Block block = Blocks.STONE; Block block = null;
int ib = random.nextInt(3); int ib = random.nextInt(2);
switch (ib) { switch (ib) {
case 0: case 0:
block = Blocks.COBBLESTONE; block = Blocks.COBBLESTONE;
break; break;
case 1: case 1:
block = Blocks.MOSSY_COBBLESTONE; if (random.nextFloat() <= 0.9) block = Blocks.GRAVEL;
break; else block = Blocks.MOSSY_COBBLESTONE;
case 2:
block = Blocks.GRAVEL;
break;
} }
f = random.nextFloat(); f = random.nextFloat();
assert block != null;
if (f < 0.85) { if (f < 0.85) {
world.setBlockState(nextBlock, block.getDefaultState()); world.setBlockState(nextBlock, block.getDefaultState());
} else if (f > 95) { } else if (f > 95) {

View File

@@ -18,8 +18,6 @@ import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil; import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper; import slimeknights.tconstruct.library.utils.ToolHelper;
import static com.sosnitzka.taiga.Items.*;
public class TraitGarishly extends AbstractTrait { public class TraitGarishly extends AbstractTrait {
public TraitGarishly() { public TraitGarishly() {
@@ -30,11 +28,12 @@ public class TraitGarishly extends AbstractTrait {
@SubscribeEvent @SubscribeEvent
public void onMobDrops(LivingDropsEvent event) { public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld(); World w = event.getEntity().getEntityWorld();
if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) { if (!w.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player
.getHeldItemMainhand()), identifier)) {
int r = random.nextInt(6); int r = random.nextInt(2);
ItemStack i = null; ItemStack i = null;
switch (r) { switch (r) {
case 0: case 0:
@@ -44,20 +43,12 @@ public class TraitGarishly extends AbstractTrait {
i = new ItemStack(Items.BLAZE_ROD, random.nextInt(3)); i = new ItemStack(Items.BLAZE_ROD, random.nextInt(3));
break; break;
case 2: case 2:
i = new ItemStack(glimmerstone_dust, random.nextInt(3));
break;
case 3:
i = new ItemStack(luminar_dust, random.nextInt(3));
break;
case 4:
i = new ItemStack(Items.COAL, random.nextInt(3)); i = new ItemStack(Items.COAL, random.nextInt(3));
break; break;
case 5:
i = new ItemStack(lignite, random.nextInt(3));
break;
} }
assert i != null; 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));
} }
} }
} }
@@ -65,15 +56,14 @@ public class TraitGarishly extends AbstractTrait {
@Override @Override
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
float r = random.nextFloat(); float r = random.nextFloat();
if (r > 0.5f) event.getDrops().clear(); if (random.nextBoolean()) event.getDrops().clear();
else if (r < 0.1 && event.getWorld().getBlockState(event.getPos()).getMaterial() == Material.ROCK) { 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); event.getDrops().add(0, stack);
ToolHelper.damageTool(tool, random.nextInt(6) + 1, event.getHarvester()); 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 class TraitGlimmer extends AbstractTrait {
public TraitGlimmer() { public TraitGlimmer() {
super("glimmer", TextFormatting.DARK_GRAY); super("glimmer", TextFormatting.DARK_GRAY);
} }
@@ -33,15 +32,17 @@ public class TraitGlimmer extends AbstractTrait {
} }
@Override @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
if (random.nextFloat() <= 0.08) { player, boolean wasEffective) {
if (random.nextFloat() <= 0.05) {
player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, random.nextInt(600) + 300)); player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, random.nextInt(600) + 300));
} }
} }
@Override @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
if (random.nextFloat() <= 0.08) { wasCritical, boolean wasHit) {
if (random.nextFloat() <= 0.05) {
player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, random.nextInt(600) + 300)); player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, random.nextInt(600) + 300));
} }
} }

View File

@@ -1,37 +0,0 @@
package com.sosnitzka.taiga.traits;
import com.sosnitzka.taiga.util.EntityAIPermanentPanic;
import net.minecraft.entity.EntityCreature;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.monster.*;
import net.minecraft.entity.passive.*;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.MinecraftForge;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import static com.sosnitzka.taiga.util.Utils.isNight;
public class TraitHaunted extends AbstractTrait {
public TraitHaunted() {
super("haunted", TextFormatting.DARK_GRAY);
MinecraftForge.EVENT_BUS.register(this);
}
// Just several tested Vanilla-Mobs, e.g. no ghasts, bats or skeletons
@Override
public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean isCritical) {
int time = (int) player.getEntityWorld().getWorldTime();
if (random.nextFloat() <= 0.1 || (random.nextFloat() <= 0.3 && isNight(time)))
if (target instanceof EntityCow || target instanceof EntityZombie || target instanceof EntityWolf || target instanceof EntityPig || target instanceof EntitySpider ||
target instanceof EntityVillager || target instanceof EntitySheep || target instanceof EntityEnderman || target instanceof EntityEndermite ||
target instanceof EntityBlaze || target instanceof EntityWitch || target instanceof EntityHorse) {
((EntityLiving) target).tasks.taskEntries.clear();
((EntityLiving) target).targetTasks.taskEntries.clear();
((EntityLiving) target).tasks.addTask(0, new EntityAIPermanentPanic((EntityCreature) target, target.getAIMoveSpeed() + 3.5D));
}
}
}

View File

@@ -16,9 +16,20 @@ public class TraitHeroic extends AbstractTrait {
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 durability = ToolHelper.getCurrentDurability(tool); int durability = ToolHelper.getCurrentDurability(tool);
int durabilitymax = ToolHelper.getMaxDurability(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)) { 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); return super.damage(tool, player, target, damage, calc, isCritical);
} else return super.damage(tool, player, target, damage, newDamage, isCritical); } else return super.damage(tool, player, target, damage, newDamage * 0.9f, isCritical);
} }
} }

View File

@@ -24,14 +24,14 @@ public class TraitHollow extends AbstractTrait {
MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(this);
} }
@Override @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(); int time = (int) player.getEntityWorld().getWorldTime();
if (random.nextFloat() <= 0.2 || (random.nextFloat() <= 0.2 && isNight(time))) { if (random.nextFloat() <= 0.01 || (random.nextFloat() <= 0.03 && isNight(time))) {
((EntityLiving) target).setNoAI(true); ((EntityLiving) target).setNoAI(true);
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
if (target.getMaxHealth() < 200) { if (target.getMaxHealth() < 250) {
target.setHealth(target.getMaxHealth() * (1.8f - random.nextFloat() * 0.4f)); target.setHealth(target.getMaxHealth() * (1.8f - random.nextFloat() * 0.4f));
} }
} }
@@ -40,9 +40,10 @@ public class TraitHollow extends AbstractTrait {
@SubscribeEvent @SubscribeEvent
public void onMobDrops(LivingDropsEvent event) { public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld(); World w = event.getEntity().getEntityWorld();
if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) { if (!w.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
if (random.nextFloat() <= 0.9 && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { if (random.nextFloat() <= 0.9 && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil
.getTagSafe(player.getHeldItemMainhand()), identifier)) {
event.getDrops().clear(); event.getDrops().clear();
} }
} }

View File

@@ -2,24 +2,31 @@ package com.sosnitzka.taiga.traits;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
public class TraitMelting extends AbstractTrait { public class TraitMelting extends AbstractTrait {
public TraitMelting() { public TraitMelting() {
super("melting", TextFormatting.YELLOW); super("melting", TextFormatting.YELLOW);
MinecraftForge.EVENT_BUS.register(this);
} }
@Override @SubscribeEvent
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { public void blockbreak(BlockEvent.BreakEvent e) {
float r = random.nextFloat(); Block b = e.getWorld().getBlockState(e.getPos()).getBlock();
Block b = event.getWorld().getBlockState(event.getPos()).getBlock(); if (TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getPlayer().getHeldItemMainhand()), identifier)) {
if (r <= 0.01 && (b == Blocks.STONE || b == Blocks.COBBLESTONE || b == Blocks.NETHERRACK)) { if (!e.getWorld().isRemote && random.nextFloat() <= 0.025 && (b == Blocks.STONE || b == Blocks
event.getWorld().setBlockState(event.getPos(), Blocks.LAVA.getDefaultState()); .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,19 +1,13 @@
package com.sosnitzka.taiga.traits; package com.sosnitzka.taiga.traits;
import net.minecraft.block.Block; import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.init.Blocks;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper; import slimeknights.tconstruct.library.utils.ToolHelper;
@@ -26,26 +20,19 @@ public class TraitNatureBound extends AbstractTrait {
@Override @Override
public int onToolHeal(ItemStack tool, int amount, int newAmount, EntityLivingBase entity) { public int onToolHeal(ItemStack tool, int amount, int newAmount, EntityLivingBase entity) {
// 5% less durability repaired! // 10% less durability repaired!
return newAmount - amount * 5 / 100; return newAmount - amount * 10 / 100;
} }
@Override @Override
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) { public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
// *20 because 20 ticks in a second // * 20 because 20 ticks in a second
int chance = 20; int chance = 20 * 20;
if (!world.isRemote && entity instanceof EntityLivingBase && random.nextInt(30 * chance) == 0) { Material m = world.getBlockState(entity.getPosition().down()).getMaterial();
ToolHelper.healTool(tool, random.nextInt(9) + 1, (EntityLivingBase) entity); if (!world.isRemote && entity instanceof EntityLivingBase && random.nextInt(chance) == 0) {
} if (m.equals(Material.GRASS) || m.equals(Material.LEAVES)) {
ToolHelper.healTool(tool, random.nextInt(2) + 1, (EntityLivingBase) entity);
} } else ToolHelper.damageTool(tool, 1, (EntityLivingBase) entity);
@SubscribeEvent
public void onBlockBreak(BlockEvent.BreakEvent e) {
Block b = e.getWorld().getBlockState(e.getPos()).getBlock();
if (!e.getWorld().isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getPlayer().getHeldItemMainhand()), identifier) && random.nextFloat() <= .07 && (b == Blocks.DIRT || b == Blocks.GRASS || b == Blocks.LOG || b == Blocks.LOG2 || b == Blocks.STONE)) {
e.setCanceled(true);
e.getPlayer().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
} }
} }
} }

View File

@@ -1,29 +0,0 @@
package com.sosnitzka.taiga.traits;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.ToolHelper;
public class TraitOrganizing extends AbstractTrait {
private static final float chance = 0.02f;
public TraitOrganizing() {
super("organizing", TextFormatting.GREEN);
}
@Override
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
if (!world.isRemote && (state.getMaterial() == Material.ROCK) && random.nextFloat() < chance) {
world.setBlockState(pos, Blocks.LOG.getDefaultState());
ToolHelper.healTool(tool, random.nextInt(5), player);
}
}
}

View File

@@ -0,0 +1,71 @@
package com.sosnitzka.taiga.traits;
import com.sosnitzka.taiga.Keybindings;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.init.Blocks;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper;
public class TraitPorted extends AbstractTrait {
public static int distance = 10;
public TraitPorted() {
super("ported", TextFormatting.DARK_PURPLE);
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void onItemRightClick(PlayerInteractEvent.RightClickItem e) {
ItemStack tool = e.getEntityPlayer().getHeldItemMainhand();
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier) && Keybindings.altKey.isKeyDown())
teleport(e.getEntityPlayer(), e.getWorld());
}
@Override
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase
player, boolean wasEffective) {
if (random.nextFloat() <= 0.005) {
player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
teleport(player, world);
}
}
@Override
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean
wasCritical, boolean wasHit) {
if (random.nextFloat() <= 0.005) {
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
teleport(player, player.getEntityWorld());
}
}
private void teleport(EntityLivingBase e, World w) {
BlockPos tPos = new BlockPos(e.getPosition().up(distance));
if (e.getPosition().getY() >= 128) {
return;
}
while (!w.getBlockState(tPos).equals(Blocks.AIR.getDefaultState()) && tPos.getY() <= 128) {
tPos = tPos.up();
}
if (!w.getBlockState(tPos).equals(Blocks.AIR.getDefaultState())) {
return;
}
e.setPosition(tPos.getX(), tPos.getY(), tPos.getZ());
ToolHelper.damageTool(e.getHeldItemMainhand(), ToolHelper.getCurrentDurability(e.getHeldItemMainhand()) / 2 +
1, e);
}
}

View File

@@ -0,0 +1,108 @@
package com.sosnitzka.taiga.traits;
import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.text.TextFormatting;
import slimeknights.tconstruct.library.modifiers.ModifierNBT;
import slimeknights.tconstruct.library.tools.ToolNBT;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
/**
* Base class for tools that progressively gain/award stats.
* The modifier persists 2 different stat-data on the tool:
* - A 'pool' of stats to award
* - A 'bonus' of already awarded stats
* <p>
* The modifier reapplies the 'bonus' stats on application.
* The pool is not touched inheritly but only provided for the logic of the deriving trait.
*/
public abstract class TraitProgressiveStats extends AbstractTrait {
protected final String pool_key; // Key to the tag that contains the free unassigned
protected final String applied_key; // Key to the tag that contains the already applied bonus stats
public TraitProgressiveStats(String identifier, TextFormatting color) {
super(identifier, color);
pool_key = identifier + "StatPool";
applied_key = identifier + "StatBonus";
}
/* Modifier management */
protected static StatNBT getStats(NBTTagCompound root, String key) {
return ModifierNBT.readTag(TagUtil.getTagSafe(TagUtil.getExtraTag(root), key), StatNBT.class);
}
protected static void setStats(NBTTagCompound root, StatNBT data, String key) {
NBTTagCompound extra = TagUtil.getExtraTag(root);
NBTTagCompound tag = new NBTTagCompound();
data.write(tag);
extra.setTag(key, tag);
TagUtil.setExtraTag(root, extra);
}
@Override
public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) {
super.applyEffect(rootCompound, modifierTag);
// called on tool loading only
// we just apply the saved bonus stats
ToolNBT data = TagUtil.getToolStats(rootCompound);
StatNBT bonus = getBonus(rootCompound);
data.durability += bonus.durability;
data.speed += bonus.speed;
data.attack += bonus.attack;
TagUtil.setToolTag(rootCompound, data.get());
}
protected boolean hasPool(NBTTagCompound root) {
return TagUtil.getExtraTag(root).hasKey(pool_key);
}
protected StatNBT getPool(NBTTagCompound root) {
return getStats(root, pool_key);
}
protected void setPool(NBTTagCompound root, StatNBT data) {
setStats(root, data, pool_key);
}
protected StatNBT getBonus(NBTTagCompound root) {
return getStats(root, applied_key);
}
protected void setBonus(NBTTagCompound root, StatNBT data) {
setStats(root, data, applied_key);
}
protected boolean playerIsBreakingBlock(Entity entity) {
return false;
}
public static class StatNBT extends ModifierNBT {
// statpool
public int durability;
public float attack;
public float speed;
@Override
public void read(NBTTagCompound tag) {
super.read(tag);
durability = tag.getInteger("durability");
attack = tag.getFloat("attack");
speed = tag.getFloat("speed");
}
@Override
public void write(NBTTagCompound tag) {
super.write(tag);
tag.setInteger("durability", durability);
tag.setFloat("attack", attack);
tag.setFloat("speed", speed);
}
}
}

View File

@@ -16,21 +16,20 @@ public class TraitPulverizing extends AbstractTrait {
@Override @Override
public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) {
if (ToolHelper.isToolEffective2(tool, event.getState())) { if (ToolHelper.isToolEffective2(tool, event.getState())) {
event.setNewSpeed((float) (event.getNewSpeed() + calcBonus(tool))); event.setNewSpeed((float) (event.getNewSpeed() * calcBonus(tool)));
} }
} }
private double calcBonus(ItemStack tool) { private double calcBonus(ItemStack tool) {
int durability = ToolHelper.getCurrentDurability(tool); int durability = ToolHelper.getCurrentDurability(tool);
int maxDurability = ToolHelper.getMaxDurability(tool); int maxDurability = ToolHelper.getMaxDurability(tool);
float speed = ToolHelper.getMiningSpeedStat(tool); return (1 + .9f * (maxDurability - durability) / maxDurability);
tool.setItemDamage(tool.getItemDamage() + 1); // Min 1.0; Max 1.9
return speed * (maxDurability - maxDurability / 10) / (durability);
} }
@Override @Override
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
if (random.nextFloat() < 0.9) { if (random.nextFloat() < 0.6) {
event.getDrops().clear(); event.getDrops().clear();
} }
} }

View File

@@ -1,177 +0,0 @@
package com.sosnitzka.taiga.traits;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityTNTPrimed;
import net.minecraft.entity.monster.*;
import net.minecraft.entity.passive.*;
import net.minecraft.init.Blocks;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.event.world.BlockEvent;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.ToolHelper;
import slimeknights.tconstruct.world.entity.EntityBlueSlime;
import static com.sosnitzka.taiga.Blocks.*;
import static slimeknights.tconstruct.shared.TinkerCommons.oreArdite;
import static slimeknights.tconstruct.shared.TinkerCommons.oreCobalt;
public class TraitRandomize extends AbstractTrait {
public TraitRandomize() {
super("randomize", TextFormatting.DARK_RED);
}
@Override
public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) {
if (ToolHelper.isToolEffective2(tool, event.getState())) {
event.setNewSpeed(event.getNewSpeed() + random.nextFloat() * 2);
}
}
@Override
public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean isCritical) {
if (random.nextFloat() <= .15 && target instanceof EntityLiving) {
World w = player.getEntityWorld();
Entity e = new EntityCow(w);
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
if (!w.isRemote) {
int i = random.nextInt(22);
switch (i) {
case 0:
e = new EntityCow(w);
break;
case 1:
e = new EntityPig(w);
break;
case 2:
e = new EntityHorse(w);
break;
case 3:
e = new EntityChicken(w);
break;
case 4:
e = new EntityVillager(w);
break;
case 5:
e = new EntityEnderman(w);
break;
case 6:
e = new EntityPolarBear(w);
break;
case 7:
e = new EntityIronGolem(w);
break;
case 8:
e = new EntitySilverfish(w);
break;
case 9:
e = new EntityCaveSpider(w);
break;
case 10:
e = new EntityWolf(w);
break;
case 11:
e = new EntityWitch(w);
break;
case 12:
e = new EntityTNTPrimed(w);
break;
case 13:
e = new EntityGhast(w);
break;
case 14:
e = new EntitySpider(w);
break;
case 15:
e = new EntitySkeleton(w);
break;
case 16:
e = new EntityMagmaCube(w);
break;
case 17:
e = new EntitySlime(w);
break;
case 18:
e = new EntityBlueSlime(w);
break;
case 19:
e = new EntityBat(w);
break;
case 20:
e = new EntityPigZombie(w);
break;
case 21:
e = new EntityBlaze(w);
break;
}
e.setPosition(target.getPosition().getX(), target.getPosition().getY() + 0.1f, target.getPosition().getZ());
e.setCustomNameTag("Missingno");
if (e instanceof EntityLiving)
((EntityLiving) e).setHealth(((EntityLiving) e).getHealth() * (random.nextInt(5) + 1));
w.spawnEntityInWorld(e);
target.setDead();
}
}
}
@SuppressWarnings("ConstantConditions")
@Override
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
float r = random.nextFloat();
if (r > 0.95f) event.getDrops().clear();
if (event.getDrops() != null) {
if (r < 0.4f && (event.getDrops().get(0).getItem() == Item.getItemFromBlock(Blocks.IRON_ORE) || event.getDrops().get(0).getItem() == Item.getItemFromBlock(Blocks.GOLD_ORE))) {
ItemStack change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE));
int i = random.nextInt(12);
switch (i) {
case 0:
change = new ItemStack(Item.getItemFromBlock(Blocks.GOLD_ORE));
break;
case 1:
change = new ItemStack(Item.getItemFromBlock(Blocks.REDSTONE_ORE));
break;
case 2:
change = new ItemStack(Item.getItemFromBlock(Blocks.LAPIS_ORE));
break;
case 3:
change = new ItemStack(Item.getItemFromBlock(Blocks.DIAMOND_ORE));
break;
case 4:
change = new ItemStack(Item.getItemFromBlock(Blocks.QUARTZ_ORE));
break;
case 5:
change = new ItemStack(oreCobalt.getItem());
break;
case 6:
change = new ItemStack(oreArdite.getItem());
break;
case 7:
change = new ItemStack(titaniteOre);
break;
case 8:
change = new ItemStack(bismuthOre);
break;
case 9:
change = new ItemStack(tiberiumOre);
break;
case 10:
change = new ItemStack(eterniteOre);
break;
case 11:
change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE));
break;
}
event.getDrops().set(0, change);
}
}
}
}

View File

@@ -7,15 +7,18 @@ import slimeknights.tconstruct.library.traits.AbstractTrait;
public class TraitResonance extends AbstractTrait { public class TraitResonance extends AbstractTrait {
public static float chance = 0.33f;
public TraitResonance() { public TraitResonance() {
super("resonance", TextFormatting.AQUA); super("resonance", TextFormatting.AQUA);
} }
@Override @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
if (random.nextFloat() <= .33) { wasCritical, boolean wasHit) {
target.knockBack(target, random.nextFloat() * random.nextFloat() * 12, player.posX - target.posX, player.posZ - target.posZ); if (random.nextFloat() <= chance) {
target.knockBack(target, random.nextFloat() * random.nextFloat() * 10, player.posX - target.posX, player
.posZ - target.posZ);
} }
} }
} }

View File

@@ -1,12 +1,10 @@
package com.sosnitzka.taiga.traits; package com.sosnitzka.taiga.traits;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityCreature;
import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.init.SoundEvents;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -16,13 +14,12 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil; import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil; import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper;
import static com.sosnitzka.taiga.util.Utils.isNight;
public class TraitReviving extends AbstractTrait { public class TraitReviving extends AbstractTrait {
public final float chance = 0.15f;
public TraitReviving() { public TraitReviving() {
super("reviving", TextFormatting.DARK_PURPLE); super("reviving", TextFormatting.DARK_PURPLE);
MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(this);
@@ -32,32 +29,19 @@ public class TraitReviving extends AbstractTrait {
public void onEntityKill(LivingDeathEvent e) { public void onEntityKill(LivingDeathEvent e) {
BlockPos pos = e.getEntity().getPosition(); BlockPos pos = e.getEntity().getPosition();
World w = e.getEntity().getEntityWorld(); World w = e.getEntity().getEntityWorld();
if (!w.isRemote && e.getSource().getEntity() != null) { if (!w.isRemote && e.getSource().getTrueSource() != null) {
if (e.getSource().getEntity() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) { if (e.getSource().getTrueSource() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) {
if (isNight((int) w.getWorldTime()) && random.nextFloat() > 0.85 && TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand()), identifier)) { if (random.nextFloat() <= chance && TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e
String name = EntityList.getEntityString(e.getEntity()); .getSource().getTrueSource()).getHeldItemMainhand()), identifier)) {
Entity ent = EntityList.createEntityByName(name, w); int id = e.getEntity().getEntityId();
assert ent != null; Entity ent = EntityList.createEntityByID(id, w);
ent.setPosition(pos.getX(), pos.getY(), pos.getZ()); if (ent != null) {
w.spawnEntityInWorld(ent); ent.setPosition(pos.getX(), pos.getY(), pos.getZ());
w.spawnEntity(ent);
e.getSource().getTrueSource().playSound(SoundEvents.AMBIENT_CAVE, 1.0F, 1.0F);
}
} }
} }
} }
} }
@Override
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
int time = (int) world.getWorldTime();
if (random.nextFloat() <= 0.1 && isNight(time)) {
ToolHelper.healTool(tool, random.nextInt(15) + 1, null);
}
}
@Override
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
int time = (int) player.getEntityWorld().getWorldTime();
if (random.nextFloat() <= 0.1 && isNight(time)) {
ToolHelper.healTool(tool, random.nextInt(15) + 1, null);
}
}
} }

View File

@@ -3,7 +3,6 @@ package com.sosnitzka.taiga.traits;
import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -21,15 +20,18 @@ public class TraitSlaughtering extends AbstractTrait {
MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(this);
} }
@SubscribeEvent @SubscribeEvent
public void onMobDrops(LivingDropsEvent event) { public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld(); World w = event.getEntity().getEntityWorld();
if (event.getSource().getEntity() instanceof EntityPlayer) { if (event.getSource().getTrueSource() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
if (!w.isRemote && event.getEntity() instanceof EntityLiving && !(event.getEntity() instanceof EntityPlayer) && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { if (!w.isRemote && event.getEntity() instanceof EntityLiving && !(event.getEntity() instanceof
Item i = event.getDrops().get(random.nextInt(event.getDrops().size())).getEntityItem().getItem(); EntityPlayer) && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()),
event.getDrops().add(new EntityItem(event.getEntity().getEntityWorld(), event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, new ItemStack(i, random.nextInt(4) + 1))); 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

@@ -1,28 +1,49 @@
package com.sosnitzka.taiga.traits; package com.sosnitzka.taiga.traits;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper; import slimeknights.tconstruct.library.utils.ToolHelper;
public class TraitSofty extends AbstractTrait { public class TraitSofty extends AbstractTrait {
private static final float chance = 0.2f;
private static final float chance = 0.1f;
private static final float speedmulti = 1.3f;
public TraitSofty() { public TraitSofty() {
super("softy", TextFormatting.AQUA); super("softy", TextFormatting.GRAY);
MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(this);
} }
@SubscribeEvent
public void blockbreak(BlockEvent.BreakEvent e) {
float r = random.nextFloat();
float hardness = e.getWorld().getBlockState(e.getPos()).getBlockHardness(e.getWorld(), e.getPos());
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getPlayer().getHeldItemMainhand()), identifier)) {
if (!e.getWorld().isRemote && r <= chance && hardness >= 1.0f) {
e.setCanceled(true);
ToolHelper.damageTool(e.getPlayer().getHeldItemMainhand(), random.nextInt(3) + 1, e.getPlayer());
}
}
}
@Override @Override
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) {
if (!world.isRemote && state.getMaterial().equals(Material.GROUND) && random.nextFloat() < chance) { World w = event.getEntity().getEntityWorld();
ToolHelper.healTool(tool, random.nextInt(10), player); IBlockState state = w.getBlockState(event.getPos());
float speed = event.getOriginalSpeed();
if (!w.isRemote) {
if (state.getBlockHardness(w, event.getPos()) <= 1.0f) {
event.setNewSpeed(speed * speedmulti);
}
} }
} }
} }

View File

@@ -0,0 +1,72 @@
package com.sosnitzka.taiga.traits;
import com.sosnitzka.taiga.util.Utils;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
public class TraitSoulEater extends AbstractTrait {
public TraitSoulEater() {
super(TraitSoulEater.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED);
MinecraftForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void onTargetKilled(LivingDeathEvent event) {
if (event.getSource().getTrueSource() instanceof EntityPlayer && event.getEntity() instanceof EntityLiving) {
World w = event.getSource().getTrueSource().world;
ItemStack tool = ((EntityPlayer) event.getSource().getTrueSource()).getHeldItemMainhand();
if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
float health = ((EntityLiving) event.getEntity()).getMaxHealth();
data.killcount += 1;
data.health = health;
float divisor = 25000f;
float bonus = Math.round(random.nextFloat() * health * 100) / divisor;
data.bonus += bonus;
data.bonus = (float) Math.round(data.bonus * 100f) / 100f;
data.write(tag);
TagUtil.setExtraTag(tool, tag);
}
}
}
@Override
public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float
newDamage, boolean isCritical) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
float bonus = data.bonus;
return newDamage + bonus;
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent e) {
ItemStack tool = e.getItemStack();
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
if (data.killcount != 0) {
e.getToolTip().add(TextFormatting.WHITE + "Killed: " + TextFormatting.WHITE + data.killcount);
e.getToolTip().add(TextFormatting.WHITE + "Bonus: " + TextFormatting.WHITE + data.bonus);
}
}
}
}

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

@@ -0,0 +1,107 @@
package com.sosnitzka.taiga.traits;
import com.sosnitzka.taiga.Keybindings;
import com.sosnitzka.taiga.util.Utils;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import slimeknights.tconstruct.common.Sounds;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
import static com.sosnitzka.taiga.Blocks.tiberiumOre;
/*
* Collects tiberium, to release it for an explosion
*/
public class TraitTantrum extends AbstractTrait {
public static float max_charges = 12f;
public static float max_power = 5;
public TraitTantrum() {
super("tantrum", TextFormatting.RED);
MinecraftForge.EVENT_BUS.register(this);
}
@Override
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
World w = event.getWorld();
if (!w.isRemote) {
if (event.getState().getBlock().equals(tiberiumOre)) {
event.getDrops().clear();
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Data data = Data.read(tag);
if (data.amount >= max_charges) {
return;
}
data.amount += (0.25f + Utils.round2(random.nextDouble() / 4));
if (data.amount >= max_charges) {
TagUtil.setEnchantEffect(tool, true);
if (event.getHarvester() instanceof EntityPlayerMP) {
Sounds.PlaySoundForPlayer(event.getHarvester(), Sounds.shocking_discharge, 1f, 0.8f + .2f *
random.nextFloat());
}
}
data.write(tag);
TagUtil.setExtraTag(tool, tag);
}
}
}
@SubscribeEvent
public void rightClickItem(PlayerInteractEvent.RightClickItem event) {
World w = event.getWorld();
BlockPos pos = event.getPos();
ItemStack tool = event.getEntityPlayer().getHeldItemMainhand();
if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier) && Keybindings.altKey.isKeyDown()) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Data data = Data.read(tag);
if (data.amount > 1f) {
double d = Math.min(Utils.round2(random.nextDouble() * data.amount), max_power);
w.newExplosion(event.getEntityPlayer(), pos.getX(), pos.getY(), pos.getZ(), (float) Math.pow((double)
1.2f, d), false, true);
data.amount -= d;
data.write(tag);
TagUtil.setExtraTag(tool, tag);
TagUtil.setEnchantEffect(tool, false);
}
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent e) {
ItemStack tool = e.getItemStack();
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Data data = Data.read(tag);
e.getToolTip().add(TextFormatting.RED + "Charge: " + data.amount);
}
}
public static class Data {
float amount;
public static Data read(NBTTagCompound tag) {
Data data = new Data();
data.amount = tag.getFloat("amount");
return data;
}
public void write(NBTTagCompound tag) {
tag.setFloat("amount", amount);
}
}
}

View File

@@ -1,14 +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 TraitTraditional extends AbstractTrait {
public TraitTraditional() {
super("traditional", TextFormatting.GREEN);
MinecraftForge.EVENT_BUS.register(this);
}
}

View File

@@ -1,79 +0,0 @@
package com.sosnitzka.taiga.traits;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.living.LivingDropsEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper;
import static com.sosnitzka.taiga.Items.glimmerstone_dust;
import static com.sosnitzka.taiga.Items.tiberiumShardInstable;
import static com.sosnitzka.taiga.Items.tiberium_nugget;
public class TraitUncertain extends AbstractTrait {
public TraitUncertain() {
super("uncertain", TextFormatting.RED);
MinecraftForge.EVENT_BUS.register(this);
}
@Override
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
if (random.nextFloat() <= 0.05) {
if (!world.isRemote) {
if (random.nextFloat() > 0.1f) {
explode(world, player, pos.getX(), pos.getY(), pos.getZ());
} else explode(world, null, pos.getX(), pos.getY(), pos.getZ());
}
ToolHelper.damageTool(tool, random.nextInt(5) + 1, null);
}
}
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (!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)) {
ItemStack i = new ItemStack(Items.COAL, random.nextInt(4));
if (random.nextBoolean()) {
int r = random.nextInt(4);
switch (r) {
case 0:
i = new ItemStack(Items.GUNPOWDER, random.nextInt(4));
break;
case 1:
i = new ItemStack(tiberiumShardInstable, random.nextInt(4));
break;
case 2:
i = new ItemStack(tiberium_nugget, random.nextInt(12));
break;
case 3:
i = new ItemStack(glimmerstone_dust, random.nextInt(4));
break;
}
}
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i));
}
}
}
private void explode(World w, Entity e, double x, double y, double z) {
w.newExplosion(e, x, y, z, 1.2f + random.nextFloat() * 5, random.nextBoolean(), true);
}
}

View File

@@ -20,11 +20,10 @@ import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper; import slimeknights.tconstruct.library.utils.ToolHelper;
public class TraitInstable extends AbstractTrait { public class TraitUnstable extends AbstractTrait {
public TraitUnstable() {
public TraitInstable() { super("unstable", TextFormatting.DARK_RED);
super("instable", TextFormatting.DARK_RED);
MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(this);
} }
@@ -36,7 +35,7 @@ public class TraitInstable extends AbstractTrait {
explode(world, player, pos.getX(), pos.getY(), pos.getZ()); explode(world, player, pos.getX(), pos.getY(), pos.getZ());
} else explode(world, null, pos.getX(), pos.getY(), pos.getZ()); } else explode(world, null, pos.getX(), pos.getY(), pos.getZ());
} }
ToolHelper.damageTool(tool, 11 + random.nextInt(10), null); ToolHelper.damageTool(tool, random.nextInt(10) + 2, player);
} }
} }
@@ -49,23 +48,24 @@ public class TraitInstable extends AbstractTrait {
explode(player.getEntityWorld(), player, pos.getX(), pos.getY(), pos.getZ()); explode(player.getEntityWorld(), player, pos.getX(), pos.getY(), pos.getZ());
} else explode(player.getEntityWorld(), target, pos.getX(), pos.getY(), pos.getZ()); } else explode(player.getEntityWorld(), target, pos.getX(), pos.getY(), pos.getZ());
} }
ToolHelper.damageTool(tool, 3 + random.nextInt(18), null); ToolHelper.damageTool(tool, 2 + random.nextInt(10), player);
} }
} }
@SubscribeEvent @SubscribeEvent
public void onMobDrops(LivingDropsEvent event) { public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld(); World w = event.getEntity().getEntityWorld();
if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) { if (random.nextFloat() < 0.05 && !w.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
ItemStack i = new ItemStack(Items.GUNPOWDER, random.nextInt(4)); 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));
} }
} }
} }
private void explode(World w, Entity e, double x, double y, double z) { private void explode(World w, Entity e, double x, double y, double z) {
w.newExplosion(e, x, y, z, 1.2f + random.nextFloat() * 35, random.nextBoolean(), true); w.newExplosion(e, x, y, z, 1.2f + random.nextFloat() * 5, random.nextBoolean(), true);
} }
} }

View File

@@ -0,0 +1,98 @@
package com.sosnitzka.taiga.traits;
import com.sosnitzka.taiga.Keybindings;
import com.sosnitzka.taiga.util.Utils;
import net.minecraft.entity.Entity;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper;
public class TraitWhirl extends AbstractTrait {
protected static int TICK_PER_STAT = 36;
public TraitWhirl() {
super(TraitWhirl.class.getSimpleName().toLowerCase().substring(5), TextFormatting.DARK_BLUE);
MinecraftForge.EVENT_BUS.register(this);
}
@Override
public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) {
if (entity instanceof FakePlayer || entity.world.isRemote || entity.ticksExisted % TICK_PER_STAT != 0) {
return;
}
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
data.radius += random.nextFloat() * 0.5f;
if (data.radius >= 1) {
TagUtil.setEnchantEffect(tool, true);
}
data.write(tag);
TagUtil.setExtraTag(tool, tag);
}
@SubscribeEvent
public void onRightClickItem(PlayerInteractEvent.RightClickItem event) {
World w = event.getWorld();
ItemStack tool = event.getEntityPlayer().getHeldItemMainhand();
if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier) && Keybindings.altKey.isKeyDown()) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
if ((int) data.radius >= 1) {
int r = Math.min((int) data.radius, 8);
for (int x = -r; x <= r; x++) {
for (int y = -r; y <= r; y++) {
for (int z = -r; z <= r; z++) {
if (MathHelper.sqrt(x * x + y * y + z * z) > r) {
continue;
}
BlockPos nPos = new BlockPos(event.getPos().getX() + x, event.getPos().getY() + y, event
.getPos().getZ() + z);
if (!(event.getWorld().getBlockState(nPos).equals(Blocks.WATER.getDefaultState()) ||
event.getWorld().getBlockState(nPos).equals(Blocks.FLOWING_WATER.getDefaultState
())))
continue;
event.getWorld().destroyBlock(nPos, false);
}
}
}
data.radius -= r;
data.write(tag);
TagUtil.setExtraTag(tool, tag);
TagUtil.setEnchantEffect(tool, false);
ToolHelper.damageTool(tool, 2 * r, event.getEntityPlayer());
}
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent e) {
ItemStack tool = e.getItemStack();
if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) {
NBTTagCompound tag = TagUtil.getExtraTag(tool);
Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag);
if (data.radius > 0) {
e.getToolTip().add(TextFormatting.BLUE + "Actual Radius: " + TextFormatting.WHITE + Math.round(data
.radius * 100) / 100);
}
}
}
}

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

@@ -1,24 +0,0 @@
package com.sosnitzka.taiga.util;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.IFuelHandler;
import static com.sosnitzka.taiga.Items.*;
import static slimeknights.tconstruct.TConstruct.random;
public class FuelHandler implements IFuelHandler {
@Override
public int getBurnTime(ItemStack fuel) {
if (fuel.getItem().equals(lignite)) {
return 200 * 6;
}
if (fuel.getItem().equals(fuel_brick)) {
return 200 * 50;
}
if (fuel.getItem().equals(glimmercoal)) {
return (random.nextInt(20) + 40) * 200;
}
return 0;
}
}

View File

@@ -1,41 +1,267 @@
package com.sosnitzka.taiga.util; package com.sosnitzka.taiga.util;
import com.sosnitzka.taiga.world.ZWorldGenMinable; import com.google.common.collect.Lists;
import com.sosnitzka.taiga.world.MeteorWorldSaveData;
import com.sosnitzka.taiga.world.WorldGenMinable;
import net.minecraft.block.BlockStone;
import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.biome.Biome;
import net.minecraftforge.oredict.OreDictionary;
import java.util.HashSet;
import java.util.List;
import java.util.Random; import java.util.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 class Generator {
public static void generateOre(IBlockState state, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) { public static void generateOre(IBlockState newState, IBlockState oldState, Random random, int chunkX, int chunkZ,
generateOre(state, Blocks.STONE.getDefaultState(), null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize); World world, int count, int minY, int maxY, int minSize, int maxSize) {
generateOre(newState, oldState, null, null, random, chunkX, chunkZ, world, count, 100, minY, maxY, minSize,
maxSize, null);
} }
public static void generateNetherOre(IBlockState state, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) { public static void generateOre(IBlockState newState, IBlockState oldState, Random random, int chunkX, int chunkZ,
generateOre(state, Blocks.NETHERRACK.getDefaultState(), null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize); World world, int count, int chance, int minY, int maxY, int minSize, int maxSize,
List<Biome> biome) {
generateOre(newState, oldState, null, null, random, chunkX, chunkZ, world, count, chance, minY, maxY,
minSize, maxSize, biome);
} }
public static void generateEndOre(IBlockState state, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) { public static void generateOre(IBlockState newState, IBlockState oldState, IProperty property, Comparable
generateOre(state, Blocks.END_STONE.getDefaultState(), null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize); comparable, Random random, int chunkX, int chunkZ, World world, int count, int chance, int minY, int
} maxY, int minSize, int maxSize, List<Biome> biome) {
public static void generateOre(IBlockState state, IBlockState replace, Random random, int chunkX, int chunkZ, World world, int chance, int minY, int maxY, int minSize, int maxSize) {
generateOre(state, replace, null, null, random, chunkX, chunkZ, world, chance, minY, maxY, minSize, maxSize);
}
public static void generateOre(IBlockState state, IBlockState replace, IProperty property, Comparable comparable, Random random, int chunkX, int chunkZ, World world, int chance, int minY, int maxY, int minSize, int maxSize) {
int size = minSize + random.nextInt(maxSize - minSize); int size = minSize + random.nextInt(maxSize - minSize);
int height = maxY - minY; int height = maxY - minY;
for (int i = 0; i < count; i++) {
for (int i = 0; i < chance; i++) { if (0.01f * chance >= random.nextFloat()) {
int posX = chunkX + random.nextInt(16); int posX = chunkX + random.nextInt(16);
int posY = random.nextInt(height) + minY; int posY = random.nextInt(height) + minY;
int posZ = chunkZ + random.nextInt(16); int posZ = chunkZ + random.nextInt(16);
new ZWorldGenMinable(state, size, StateMatcher.forState(replace, property, comparable)).generate(world, random, new BlockPos(posX, posY, posZ)); BlockPos cPos = new BlockPos(posX, posY, posZ);
if (biome == null || biome.contains(world.getBiome(cPos))) {
new WorldGenMinable(newState, size, StateMatcher.forState(oldState, property, comparable))
.generate(world, random, new BlockPos(posX, posY, posZ));
}
}
} }
} }
public static void generateOre(List<IBlockState> replaceBlockList, IBlockState replacementBlock, Random random,
int chunkX, int chunkZ, World world, int count, int minY, int maxY, int chance) {
if (random.nextFloat() < (float) (0.01 * chance))
generateOreDescending(replaceBlockList, replacementBlock, random, chunkX, chunkZ, world, count, minY, maxY);
}
public static void generateOreDescending(List<IBlockState> replaceBlockList, IBlockState replacementBlock, Random
random, int chunkX, int chunkZ, World world, int count, int minY, int maxY) {
for (int i = 0; i < count; i++) {
int posX = chunkX + random.nextInt(16);
int posZ = chunkZ + random.nextInt(16);
BlockPos cPos = new BlockPos(posX, maxY, posZ);
if (replaceBlockList.contains(world.getBlockState(cPos)) && replaceBlockList.contains(world.getBlockState
(cPos.up()))) {
continue;
}
if (replaceBlockList.contains(world.getBlockState(cPos)) && !replaceBlockList.contains(world
.getBlockState(cPos.up())))
world.setBlockState(cPos, replacementBlock);
while (!replaceBlockList.contains(world.getBlockState(cPos.down())) && cPos.getY() > minY) {
cPos = cPos.down();
}
if (replaceBlockList.contains(world.getBlockState(cPos.down())))
world.setBlockState(cPos.down(), replacementBlock);
}
}
public static void generateOreStoneVariant(IBlockState newState, BlockStone.EnumType type, Random random, int
chunkX, int chunkZ, World world, int count) {
List<BlockStone.EnumType> list = newArrayList(type);
for (int i = 0; i < count; i += 2) {
int posX = chunkX + random.nextInt(16);
int posZ = chunkZ + random.nextInt(16);
BlockPos cPos = new BlockPos(posX, random.nextInt(64) + 32, posZ);
IBlockState state = world.getBlockState(cPos);
if (state.getBlock().equals(Blocks.STONE.getDefaultState().getBlock())) {
if (list.contains(state.getValue(BlockStone.VARIANT))) {
world.setBlockState(cPos, newState);
}
} else {
while (cPos.getY() >= 0) {
cPos = cPos.down();
state = world.getBlockState(cPos);
if (state.getBlock().equals(Blocks.STONE.getDefaultState().getBlock())) {
if (list.contains(state.getValue(BlockStone.VARIANT))) {
world.setBlockState(cPos, newState);
break;
}
}
}
}
cPos = new BlockPos(posX, random.nextInt(32), posZ);
state = world.getBlockState(cPos);
if (state.getBlock().equals(Blocks.STONE.getDefaultState().getBlock())) {
if (list.contains(state.getValue(BlockStone.VARIANT))) {
world.setBlockState(cPos, newState);
}
} else {
while (cPos.getY() <= 96) {
cPos = cPos.up();
state = world.getBlockState(cPos);
if (state.getBlock().equals(Blocks.STONE.getDefaultState().getBlock())) {
if (list.contains(state.getValue(BlockStone.VARIANT))) {
world.setBlockState(cPos, newState);
break;
}
}
}
}
}
}
public static void generateOreBottom(IBlockState oldState, IBlockState newState, Random random, int chunkX, int
chunkZ, World world, int chance, int spread, int maxY) {
for (int i = 0; i < chance; i++) {
int posX = chunkX + random.nextInt(16);
int posY = 0;
int posZ = chunkZ + random.nextInt(16);
BlockPos cPos = new BlockPos(posX, posY, posZ);
if (Blocks.AIR.getDefaultState().equals(world.getBlockState(cPos))) {
while (world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()) && cPos.getY() < maxY) {
cPos = cPos.up();
}
if (world.getBlockState(cPos).equals(oldState)) {
world.setBlockState(cPos.up(random.nextInt(spread)), newState);
}
}
}
}
public static void generateCube(boolean fly, IBlockState centerBlock, IBlockState hullBlock, Random random, int
chunkX, int chunkZ, World world, int count, int chance, int minY, int maxY, int maxS) {
for (int i = 0; i < count; i++) {
if (random.nextFloat() < 0.01 * chance) {
int outer = nextInt(random, 1, maxS);
int inner = random.nextInt(2);
int posX = chunkX + random.nextInt(16);
int posY = nextInt(random, minY, maxY);
int posZ = chunkZ + random.nextInt(16);
BlockPos cPos = new BlockPos(posX, posY, posZ);
if (!fly) {
if (world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()) && world.getBlockState(cPos
.down()).equals(Blocks.AIR.getDefaultState())) {
// we are in mid air, go down
while (world.getBlockState(cPos.down()).equals(Blocks.AIR.getDefaultState())) {
cPos = cPos.down();
}
}
}
cPos.down((random.nextInt(4) + 2) * outer);
for (int x = -inner; x <= inner; x++) {
for (int y = -inner; y <= inner; y++) {
for (int z = -inner; z <= inner; z++) {
if (!world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()))
continue;
world.setBlockState(new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z),
centerBlock);
}
}
}
for (int x = -outer; x <= outer; x++) {
for (int y = -outer; y <= outer; y++) {
for (int z = -outer; z <= outer; z++) {
BlockPos nPos = new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z);
if (world.getBlockState(nPos).equals(centerBlock) || !world.getBlockState(nPos).equals
(Blocks.AIR.getDefaultState()))
continue;
world.setBlockState(nPos, hullBlock);
}
}
}
}
}
}
public static int generateMeteor(IBlockState centerBlock, IBlockState hullBlock, Random random, int chunkX, int
chunkZ, World world, int count, int chance, int minY, int maxY) {
Set<Item> validSurface = new HashSet<Item>();
List<String> oredictentries = Lists.newArrayList("dirt", "grass", "stone", "sand", "gravel", "cobblestone",
"sandstone");
for (String e : oredictentries) {
for (ItemStack stack : OreDictionary.getOres(e)) {
validSurface.add(stack.getItem());
}
}
int mGenerated = 0;
for (int i = 0; i < count; i++) {
if (random.nextFloat() < 0.01 * chance) {
int r = nextInt(random, 1, 5);
int posX = chunkX + random.nextInt(16);
int posY = nextInt(random, minY, maxY);
int posZ = chunkZ + random.nextInt(16);
BlockPos cPos = new BlockPos(posX, posY, posZ);
if (world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()) && world.getBlockState(cPos.down()
).equals(Blocks.AIR.getDefaultState())) {
// we are in mid air, go down
while (world.getBlockState(cPos.down()).equals(Blocks.AIR.getDefaultState())) {
cPos = cPos.down();
if (cPos.getY() < minY)
break;
}
}
if (!validSurface.contains(Item.getItemFromBlock(world.getBlockState(cPos.down()).getBlock())))
continue;
cPos = cPos.down(random.nextInt(r * 2) + r + 1);
MeteorWorldSaveData saveData = MeteorWorldSaveData.getForWorld(world);
saveData.addPos(cPos);
saveData.markDirty();
mGenerated++;
int t = 1;
if (r > 3) t = random.nextInt(r - 1);
for (int x = -t; x <= t; x++) {
for (int y = -t; y <= t; y++) {
for (int z = -t; z <= t; z++) {
if (MathHelper.sqrt(x * x + y * y + z * z) > t) {
continue;
}
world.setBlockState(new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z),
centerBlock);
}
}
}
for (int x = -r; x <= r; x++) {
for (int y = -r; y <= r; y++) {
for (int z = -r; z <= r; z++) {
if (MathHelper.sqrt(x * x + y * y + z * z) > r) {
continue;
}
BlockPos nPos = new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z);
if (world.getBlockState(nPos).equals(centerBlock))
continue;
world.setBlockState(nPos, hullBlock);
}
}
}
}
}
return mGenerated;
}
} }

View File

@@ -26,10 +26,9 @@ public class StateMatcher implements Predicate<IBlockState> {
if (state != null) { if (state != null) {
if (property != null && value != null) { if (property != null && value != null) {
if (state.getBlock() == this.state.getBlock()) 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, 0, world, pos) ||
checkLayerForBlocks(3, 3, 1, world, pos)) checkLayerForBlocks(3, 3, 1, world, pos);
return true;
} else } else
return state.getBlock() == this.state.getBlock(); return state.getBlock() == this.state.getBlock();
@@ -64,8 +63,6 @@ public class StateMatcher implements Predicate<IBlockState> {
IBlockState bState = world.getBlockState(blockPos); IBlockState bState = world.getBlockState(blockPos);
if (bState.getBlock() == this.state.getBlock() && bState.getValue(property) == value) { if (bState.getBlock() == this.state.getBlock() && bState.getValue(property) == value) {
// Check if a replacable block is near origin block - show pos in console
// System.out.println(String.format("Found block with desired state! (%s), Block: %s, try #%s, y=%s", i, Y));
return true; return true;
} }
} }

View File

@@ -1,33 +1,35 @@
package com.sosnitzka.taiga.util; package com.sosnitzka.taiga.util;
import net.minecraft.block.Block; import com.sosnitzka.taiga.Items;
import net.minecraft.item.ItemBlock; import com.sosnitzka.taiga.TAIGA;
import net.minecraft.item.Item;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fml.common.event.FMLInterModComms; 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;
import slimeknights.tconstruct.library.materials.*;
import javax.annotation.Nullable;
import java.lang.reflect.Field;
import java.util.Random;
import static com.sosnitzka.taiga.TAIGA.proxy;
public class Utils { public class Utils {
public static String PREFIX_INGOT = "ingot"; public static String PREFIX_INGOT = "ingot";
public static String PREFIX_NUGGET = "nugget"; public static String PREFIX_NUGGET = "nugget";
public static String PREFIX_ORE = "ore"; public static String PREFIX_ORE = "ore";
public static String PREFIX_BLOCK = "block"; public static String PREFIX_BLOCK = "block";
public static String PREFIX_DUST = "dust";
/** public static String PREFIX_CRYSTAL = "crystal";
* 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()));
}
/** /**
* Registers the fluid and its bucket item * Registers the fluid and its bucket item
*
* @param fluid the fluid * @param fluid the fluid
*/ */
public static void registerFluid(Fluid fluid) { public static void registerFluid(Fluid fluid) {
@@ -35,51 +37,115 @@ public class Utils {
FluidRegistry.addBucketForFluid(fluid); FluidRegistry.addBucketForFluid(fluid);
} }
public static void registerTinkerAlloys(Fluid alloy, int out, Fluid first, int inOne, Fluid second, int inTwo) {
NBTTagList tagList = new NBTTagList();
NBTTagCompound fluid = new NBTTagCompound();
fluid.setString("FluidName", alloy.getName());
fluid.setInteger("Amount", out);
tagList.appendTag(fluid);
fluid = new NBTTagCompound();
fluid.setString("FluidName", first.getName());
fluid.setInteger("Amount", inOne);
tagList.appendTag(fluid);
fluid = new NBTTagCompound();
fluid.setString("FluidName", second.getName());
fluid.setInteger("Amount", inTwo);
tagList.appendTag(fluid);
NBTTagCompound message = new NBTTagCompound(); public static void registerTinkerAlloy(FluidStack output, FluidStack... inputs) {
message.setTag("alloy", tagList); if (inputs.length >= 2 && output != null) {
FMLInterModComms.sendMessage("tconstruct", "alloy", message); TinkerRegistry.registerAlloy(output, inputs);
} }
public static void registerTinkerAlloys(Fluid alloy, int out, Fluid first, int inOne, Fluid second, int inTwo, Fluid third, int inThree) {
NBTTagList tagList = new NBTTagList();
NBTTagCompound fluid = new NBTTagCompound();
fluid.setString("FluidName", alloy.getName());
fluid.setInteger("Amount", out);
tagList.appendTag(fluid);
fluid = new NBTTagCompound();
fluid.setString("FluidName", first.getName());
fluid.setInteger("Amount", inOne);
tagList.appendTag(fluid);
fluid = new NBTTagCompound();
fluid.setString("FluidName", second.getName());
fluid.setInteger("Amount", inTwo);
tagList.appendTag(fluid);
fluid = new NBTTagCompound();
fluid.setString("FluidName", third.getName());
fluid.setInteger("Amount", inThree);
tagList.appendTag(fluid);
NBTTagCompound message = new NBTTagCompound();
message.setTag("alloy", tagList);
FMLInterModComms.sendMessage("tconstruct", "alloy", message);
} }
public static boolean isNight(int time) { public static boolean isNight(int time) {
return time > 12500; return time > 12500;
} }
public static double round2(double d) {
return (Math.round(d * 100.0) / 100.0);
}
public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura,
float headSpeed, float headAttack, float handleMod, int handleDura, int
extra, int headLevel, float draw, float range, int bdamage) {
integrateMaterial(oreSuffix, material, fluid, headDura, headSpeed, headAttack, handleMod, handleDura, extra,
headLevel, new BowMaterialStats(draw, range, bdamage), false, true);
}
public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, BowMaterialStats bowstats) {
integrateMaterial(oreSuffix, material, fluid, headDura, headSpeed, headAttack, handleMod, handleDura, extra, headLevel, bowstats, false, true);
}
public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, BowMaterialStats bowstats, boolean craft, boolean cast) {
if (material != null) {
if (TinkerRegistry.getMaterial(material.identifier) != Material.UNKNOWN)
return;
TinkerRegistry.addMaterialStats(material, new HeadMaterialStats(headDura, headSpeed, headAttack,
headLevel));
TinkerRegistry.addMaterialStats(material, new HandleMaterialStats(handleMod, handleDura));
TinkerRegistry.addMaterialStats(material, new ExtraMaterialStats(extra));
TinkerRegistry.addMaterialStats(material, bowstats);
Item item = null;
Field[] items = Items.class.getDeclaredFields();
for (Field i : items) {
if (i.getName().equals(StringUtils.uncapitalize(oreSuffix) + "Ingot")) {
Item r = null;
try {
r = (Item) i.get(i.getType());
} catch (Exception e) {
e.printStackTrace();
}
item = r;
}
}
material.setFluid(fluid).setCraftable(craft).setCastable(cast).addItem(item, 1, Material.VALUE_Ingot);
material.setRepresentativeItem(item);
proxy.setRenderInfo(material);
}
MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix);
integration.preInit();
TAIGA.integrateList.add(integration);
}
public static void integrateOre(String oreSuffix, Fluid fluid) {
integrateMaterial(oreSuffix, null, fluid, -1, -1, -1, -1, -1, -1, -1, new BowMaterialStats(0.1f, 0.1f, -1f),
true, true);
}
public static int nextInt(Random random, int min, int max) {
return random.nextInt((max - min) + 1) + min;
}
public static class GeneralNBTData {
public int killcount;
public float health;
public int brokenblocks;
public float bonus;
public int curse;
public String name;
public float radius;
public float dfloat;
public int dint;
public boolean active;
public static GeneralNBTData read(NBTTagCompound tag) {
GeneralNBTData data = new GeneralNBTData();
data.killcount = tag.getInteger("killcount");
data.brokenblocks = tag.getInteger("brokenblocks");
data.health = tag.getFloat("health");
data.bonus = tag.getFloat("bonus");
data.curse = tag.getInteger("curse");
data.name = tag.getString("name");
data.radius = tag.getFloat("radius");
data.dfloat = tag.getFloat("dfloat");
data.dint = tag.getInteger("dint");
data.active = tag.getBoolean("active");
return data;
}
public void write(NBTTagCompound tag) {
tag.setInteger("killcount", killcount);
tag.setInteger("brokenblocks", brokenblocks);
tag.setFloat("health", health);
tag.setFloat("bonus", bonus);
tag.setInteger("curse", curse);
tag.setString("name", name);
tag.setFloat("radius", radius);
tag.setInteger("dint", dint);
tag.setFloat("dfloat", dfloat);
tag.setBoolean("active", active);
}
}
} }

View File

@@ -0,0 +1,72 @@
package com.sosnitzka.taiga.world;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.storage.MapStorage;
import net.minecraft.world.storage.WorldSavedData;
import java.util.ArrayList;
import java.util.List;
import static com.sosnitzka.taiga.TAIGA.MODID;
public class MeteorWorldSaveData extends WorldSavedData {
private static final String DATA_NAME = MODID + "_meteors";
private List<BlockPos> posList;
public MeteorWorldSaveData() {
super(DATA_NAME);
}
@SuppressWarnings("unused")
public MeteorWorldSaveData(String name) {
super(name);
}
public static MeteorWorldSaveData getForWorld(World world) {
MapStorage storage = world.getPerWorldStorage();
MeteorWorldSaveData instance = (MeteorWorldSaveData) storage.getOrLoadData(MeteorWorldSaveData.class,
DATA_NAME);
if (instance == null) {
instance = new MeteorWorldSaveData();
storage.setData(DATA_NAME, instance);
}
return instance;
}
public List<BlockPos> getPosList() {
return posList;
}
public void addPos(BlockPos pos) {
if (posList == null)
posList = new ArrayList<BlockPos>();
posList.add(pos);
}
public boolean removePos(BlockPos pos) {
return posList != null && posList.remove(pos);
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
if (nbt.hasKey("posData") && !nbt.getString("posData").isEmpty()) {
posList = new Gson().fromJson(nbt.getString("posData"), new TypeToken<List<BlockPos>>() {
}.getType());
}
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound compound) {
if (posList == null)
return null;
compound.setString("posData", new Gson().toJson(posList));
return compound;
}
}

View File

@@ -0,0 +1,172 @@
package com.sosnitzka.taiga.world;
import com.sosnitzka.taiga.TAIGA;
import com.sosnitzka.taiga.util.Generator;
import net.minecraft.block.BlockStone;
import net.minecraft.init.Biomes;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.IChunkGenerator;
import net.minecraftforge.fml.common.IWorldGenerator;
import java.util.*;
import static com.google.common.collect.Lists.newArrayList;
import static com.sosnitzka.taiga.Blocks.*;
import static com.sosnitzka.taiga.TAIGAConfiguration.*;
@SuppressWarnings("unchecked")
public class WorldGen implements IWorldGenerator {
private static WorldGen INSTANCE;
private final List<Integer> blackList = new ArrayList();
private final Map<Integer, Integer> meteorGenStats = new HashMap();
private final Map<Integer, Integer> meteorChunkStats = new HashMap();
public static WorldGen getInstance() {
if (INSTANCE == null)
INSTANCE = new WorldGen();
return INSTANCE;
}
private void nether(Random random, int x, int z, World world) {
Generator.generateOre(tiberiumOre.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), random, x, z,
world, TIBERIUM_VAL, 32, 128, 10, 35);
Generator.generateOre(prometheumOre.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), random, x, z,
world, PROMETHEUM_VAL, 0, 32, 2, 4);
Generator.generateOre(valyriumOre.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), random, x, z,
world, VALYRIUM_VAL, 0, 128, 2, 4);
Generator.generateOre(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA.getDefaultState()),
osramOre.getDefaultState(), random, x, z, world, OSRAM_VAL, 0, 64, 15);
}
private void other(Random random, int x, int z, World world) {
int dim = world.provider.getDimension();
if (!meteorGenStats.containsKey(dim))
meteorGenStats.put(dim, 0);
if (!meteorChunkStats.containsKey(dim))
meteorChunkStats.put(dim, 0);
meteorChunkStats.put(dim, meteorChunkStats.get(dim) + 1);
meteorGenStats.put(meteorGenStats.get(dim), meteorGenStats.get(dim) + Generator.generateMeteor(duraniteOre
.getDefaultState(), blockMeteorite.getDefaultState(), random, x, z, world, DURANITE_VAL, 6, 16, 112));
Generator.generateOreDescending(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA
.getDefaultState()), basaltBlock.getDefaultState(), random, x, z, world, BASALT_VAL, 0, 64);
Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), eezoOre.getDefaultState(),
random, x, z, world, EEZO_VAL, 0, 10);
Generator.generateOreStoneVariant(karmesineOre.getDefaultState(), BlockStone.EnumType.ANDESITE, random, x, z,
world, KARMESINE_VAL);
Generator.generateOreStoneVariant(oviumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z,
world, OVIUM_VAL);
Generator.generateOreStoneVariant(jauxumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
world, JAUXUM_VAL);
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
VIBRANIUM_VAL, 100, 0, 64, 2, 6, newArrayList(Biomes.DESERT_HILLS, Biomes.EXTREME_HILLS, Biomes
.EXTREME_HILLS_EDGE, Biomes.EXTREME_HILLS_WITH_TREES, Biomes.DESERT));
Generator.generateOre(dilithiumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
DILITHIUM_VAL, 100, 0, 64, 2, 8, newArrayList(Biomes.DESERT, Biomes.DESERT_HILLS, Biomes
.MUTATED_DESERT, Biomes.OCEAN, Biomes.DEEP_OCEAN, Biomes.FROZEN_OCEAN, Biomes.BEACH));
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world, 1,
15, 0, 128, 1, 5, null);
if (ironGen) {
Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z,
world, IRON_VAL, 0, 32, 2, 8);
}
if (meteorChunkStats.get(dim) > 100 && meteorGenStats.get(dim) == 0) {
blackList.add(dim);
TAIGA.logger.info(String.format("Detected void dimension, adding to blacklist: %d", dim));
}
}
private void world(Random random, int x, int z, World world) {
Generator.generateMeteor(duraniteOre.getDefaultState(), blockMeteorite.getDefaultState(), random, x, z,
world, DURANITE_VAL, 6, 16, 112);
Generator.generateOreDescending(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA
.getDefaultState()), basaltBlock.getDefaultState(), random, x, z, world, BASALT_VAL, 0, 64);
Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), eezoOre.getDefaultState(),
random, x, z, world, EEZO_VAL, 0, 10);
Generator.generateOreStoneVariant(karmesineOre.getDefaultState(), BlockStone.EnumType.ANDESITE, random, x, z,
world, KARMESINE_VAL);
Generator.generateOreStoneVariant(oviumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z,
world, OVIUM_VAL);
Generator.generateOreStoneVariant(jauxumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
world, JAUXUM_VAL);
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
VIBRANIUM_VAL, 100, 0, 64, 2, 6, newArrayList(Biomes.DESERT_HILLS, Biomes.EXTREME_HILLS, Biomes
.EXTREME_HILLS_EDGE, Biomes.EXTREME_HILLS_WITH_TREES, Biomes.DESERT));
Generator.generateOre(dilithiumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world,
DILITHIUM_VAL, 100, 0, 64, 2, 8, newArrayList(Biomes.DESERT, Biomes.DESERT_HILLS, Biomes
.MUTATED_DESERT, Biomes.OCEAN, Biomes.DEEP_OCEAN, Biomes.FROZEN_OCEAN, Biomes.BEACH));
Generator.generateOre(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world, 1,
15, 0, 128, 1, 5, null);
if (ironGen) {
Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z,
world, IRON_VAL, 0, 32, 2, 8);
}
}
private void end(Random random, int x, int z, World world) {
Generator.generateCube(true, uruOre.getDefaultState(), blockObsidiorite.getDefaultState(), random, x, z,
world, URU_VAL, 2, 0, 96, 3);
if (endGen)
Generator.generateOre(Blocks.AIR.getDefaultState(), Blocks.END_STONE.getDefaultState(), null, null,
random, x, z, world, 1, 100, 3, 64, 3, 8, null);
Generator.generateOre(auroriumOre.getDefaultState(), Blocks.END_STONE.getDefaultState(), random, x, z, world,
AURORIUM_VAL, 32, 48, 2, 4);
Generator.generateOre(palladiumOre.getDefaultState(), Blocks.END_STONE.getDefaultState(), random, x, z,
world, PALLADIUM_VAL, 48, 64, 2, 4);
Generator.generateOreBottom(Blocks.END_STONE.getDefaultState(), abyssumOre.getDefaultState(), random, x, z,
world, ABYSSUM_VAL, 4, 64);
}
/** Spawns nether/end ores in the Overworld if the server has allow-nether set to 0 WIP: needs alternate textures */
private void worldNetherless(Random random, int x, int z, World world) {
Generator.generateCube(true, uruOre.getDefaultState(), blockObsidiorite.getDefaultState(), random, x, z,
world, URU_VAL, 2, 0, 96, 3);
Generator.generateOre(auroriumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z, world,
AURORIUM_VAL, 8, 48, 2, 4);
Generator.generateOre(palladiumOre.getDefaultState(), BlockStone.EnumType.DIORITE, random, x, z,
world, PALLADIUM_VAL, 12, 64, 2, 4);
Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), abyssumOre.getDefaultState(), random, x, z,
world, ABYSSUM_VAL, 4, 6);
Generator.generateOre(tiberiumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
world, TIBERIUM_VAL, 16, 128, 10, 35);
Generator.generateOre(prometheumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
world, PROMETHEUM_VAL, 0, 32, 2, 4);
Generator.generateOre(valyriumOre.getDefaultState(), BlockStone.EnumType.GRANITE, random, x, z,
world, VALYRIUM_VAL, 0, 128, 2, 4);
Generator.generateOre(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA.getDefaultState()),
osramOre.getDefaultState(), random, x, z, world, OSRAM_VAL, 0, 64, 15);
}
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator,
IChunkProvider chunkProvider) {
int x = chunkX * 16;
int z = chunkZ * 16;
switch (world.provider.getDimension()) {
case -1:
nether(random, x, z, world);
break;
case 0:
world(random, x, z, world);
if(!net.minecraft.server.MinecraftServer.getAllowNether()) {
/** worldNetherless generates nether/end ores in overworld */
worldNetherless(random, x, z, world);
}
break;
case 1:
end(random, x, z, world);
break;
default:
if (!blackList.contains(world.provider.getDimension()))
other(random, x, z, world);
break;
}
}
}

View File

@@ -1,32 +1,24 @@
package com.sosnitzka.taiga.world; package com.sosnitzka.taiga.world;
import com.google.common.base.Predicate;
import com.sosnitzka.taiga.util.StateMatcher; import com.sosnitzka.taiga.util.StateMatcher;
import net.minecraft.block.state.IBlockState; 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.BlockPos;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenMinable;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import java.util.Random; import java.util.Random;
import java.util.function.Predicate;
public class ZWorldGenMinable extends WorldGenMinable { public class WorldGenMinable extends net.minecraft.world.gen.feature.WorldGenMinable {
private final IBlockState oreBlock; 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 int numberOfBlocks;
private final Predicate<IBlockState> predicate; private final Predicate<IBlockState> predicate;
public ZWorldGenMinable(IBlockState state, int blockCount) { public WorldGenMinable(IBlockState state, int blockCount, Predicate<IBlockState> predicate) {
this(state, blockCount, BlockMatcher.forBlock(Blocks.STONE)); super(state, blockCount, predicate::test);
}
public ZWorldGenMinable(IBlockState state, int blockCount, Predicate<IBlockState> predicate) {
super(state, blockCount, predicate);
this.oreBlock = state; this.oreBlock = state;
this.numberOfBlocks = blockCount; this.numberOfBlocks = blockCount;
this.predicate = predicate; this.predicate = predicate;
@@ -51,12 +43,12 @@ public class ZWorldGenMinable extends WorldGenMinable {
double d9 = rand.nextDouble() * (double) this.numberOfBlocks / 16.0D; double d9 = rand.nextDouble() * (double) this.numberOfBlocks / 16.0D;
double d10 = (double) (MathHelper.sin((float) Math.PI * f1) + 1.0F) * d9 + 1.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; double d11 = (double) (MathHelper.sin((float) Math.PI * f1) + 1.0F) * d9 + 1.0D;
int j = MathHelper.floor_double(d6 - d10 / 2.0D); int j = MathHelper.floor(d6 - d10 / 2.0D);
int k = MathHelper.floor_double(d7 - d11 / 2.0D); int k = MathHelper.floor(d7 - d11 / 2.0D);
int l = MathHelper.floor_double(d8 - d10 / 2.0D); int l = MathHelper.floor(d8 - d10 / 2.0D);
int i1 = MathHelper.floor_double(d6 + d10 / 2.0D); int i1 = MathHelper.floor(d6 + d10 / 2.0D);
int j1 = MathHelper.floor_double(d7 + d11 / 2.0D); int j1 = MathHelper.floor(d7 + d11 / 2.0D);
int k1 = MathHelper.floor_double(d8 + d10 / 2.0D); int k1 = MathHelper.floor(d8 + d10 / 2.0D);
for (int l1 = j; l1 <= i1; ++l1) { for (int l1 = j; l1 <= i1; ++l1) {
double d12 = ((double) l1 + 0.5D - d6) / (d10 / 2.0D); double d12 = ((double) l1 + 0.5D - d6) / (d10 / 2.0D);

View File

@@ -1,80 +0,0 @@
package com.sosnitzka.taiga.world;
import com.sosnitzka.taiga.util.Generator;
import net.minecraft.block.BlockStone;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkGenerator;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraftforge.fml.common.IWorldGenerator;
import java.util.Random;
import static com.sosnitzka.taiga.Blocks.*;
import static com.sosnitzka.taiga.TAIGAConfiguration.*;
public class ZWorldGen implements IWorldGenerator {
private void nether(Random random, int x, int z, World world) {
Generator.generateNetherOre(titaniteOre.getDefaultState(), random, x, z, world, (int) (35 * titaniteFactor * oreFactorGeneral), 1, 64, 2, 12);
Generator.generateNetherOre(tiberiumOre.getDefaultState(), random, x, z, world, (int) (30 * tiberiumFactor * oreFactorGeneral), 0, 128, 2, 15);
Generator.generateNetherOre(palladiumOre.getDefaultState(), random, x, z, world, (int) (35 * palladiumFactor * oreFactorGeneral), 32, 64, 2, 6);
Generator.generateNetherOre(prometheumOre.getDefaultState(), random, x, z, world, (int) (35 * prometheumFactor * oreFactorGeneral), 64, 128, 2, 6);
}
private void world(Random random, int x, int z, World world) {
// Optional
if (slagIronGen) {
Generator.generateOre(slagironOre.getDefaultState(), random, x, z, world, (int) (45 * slagironFactor * oreFactorGeneral), 0, 128, 2, 12);
}
if (slagGoldGen) {
Generator.generateOre(slaggoldOre.getDefaultState(), random, x, z, world, (int) (20 * slaggoldFactor * oreFactorGeneral), 0, 32, 2, 12);
}
if (ironGen) {
Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), random, x, z, world, (int) (30 * ironFactor * oreFactorGeneral), 0, 128, 1, 9);
}
// to be integrated mod specific
Generator.generateOre(basalt.getDefaultState(), Blocks.LAVA.getDefaultState(), random, x, z, world, (int) (125 * basaltFactor * oreFactorGeneral), 0, 28, 2, 4);
Generator.generateOre(rottenGround.getDefaultState(), Blocks.DIRT.getDefaultState(), random, x, z, world, (int) (25 * rottengroundFactor * oreFactorGeneral), 50, 70, 2, 15);
Generator.generateOre(ligniteOre.getDefaultState(), random, x, z, world, (int) (30 * ligniteFactor * oreFactorGeneral), 8, 96, 2, 12);
Generator.generateOre(vibraniumOre.getDefaultState(), random, x, z, world, (int) (30 * vibraniumFactor * oreFactorGeneral), 48, 64, 2, 8);
Generator.generateOre(karmesineOre.getDefaultState(), random, x, z, world, (int) (35 * karmesineFactor * oreFactorGeneral), 16, 48, 2, 8);
Generator.generateOre(bismuthOre.getDefaultState(), random, x, z, world, (int) (40 * bismuthFactor * oreFactorGeneral), 50, 130, 2, 4);
Generator.generateOre(mythrilOre.getDefaultState(), random, x, z, world, (int) (34 * mythrilFactor * oreFactorGeneral), 16, 32, 2, 8);
Generator.generateOre(meteoriteOre.getDefaultState(), random, x, z, world, (int) (10 * meteoriteFactor * oreFactorGeneral), 0, 32, 2, 25);
Generator.generateOre(mindoriteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.DIORITE, random, x, z, world, (int) (120 * mindoriteFactor * oreFactorGeneral), 16, 96, 2, 8);
Generator.generateOre(arcaniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.GRANITE, random, x, z, world, (int) (120 * arcaniteFactor * oreFactorGeneral), 16, 96, 2, 8);
Generator.generateOre(eterniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.ANDESITE, random, x, z, world, (int) (120 * eterniteFactor * oreFactorGeneral), 16, 96, 2, 8);
}
private void end(Random random, int x, int z, World world) {
Generator.generateEndOre(adamantiteOre.getDefaultState(), random, x, z, world, (int) (15 * adamantiteFactor * oreFactorGeneral), 10, 35, 2, 8);
Generator.generateEndOre(rubiumOre.getDefaultState(), random, x, z, world, (int) (15 * rubiumFactor * oreFactorGeneral), 10, 65, 2, 8);
Generator.generateEndOre(ignititeOre.getDefaultState(), random, x, z, world, (int) (15 * ignititeFactor * oreFactorGeneral), 10, 45, 2, 8);
Generator.generateEndOre(violiumOre.getDefaultState(), random, x, z, world, (int) (15 * violiumFactor * oreFactorGeneral), 10, 55, 2, 8);
}
@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) {
int x = chunkX * 16;
int z = chunkZ * 16;
switch (world.provider.getDimension()) {
case -1:
nether(random, x, z, world);
break;
case 0:
world(random, x, z, world);
break;
case 1:
end(random, x, z, world);
break;
default:
world(random, x, z, world);
break;
}
}
}

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

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

View File

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

View File

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

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:adamantite_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:adamantite_ore"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:aegisalt_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:arcanite_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:arcanite_ore"
}
}
}

View File

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

View File

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

View File

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

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:basalt"
}
}
}

View File

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

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:bismuth_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:bismuth_ore"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:bysmuid_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:cryptogen_block"
}
}
}

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