Resolved #298 - Added bucket for all fluids

This commit is contained in:
Calclavia 2014-02-26 11:17:13 +08:00
parent f16e2387c3
commit 143e6d00e7
14 changed files with 771 additions and 576 deletions

View file

@ -1,140 +0,0 @@
buildscript {
repositories {
mavenCentral()
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.0-SNAPSHOT'
}
}
apply plugin: 'forge'
apply plugin: 'maven-publish'
ext.buildProps = file "build.properties"
buildProps.withReader {
def prop = new Properties()
prop.load(it)
ext.config = new ConfigSlurper().parse prop
}
group = "resonant-induction"
archivesBaseName = "Resonant-Induction"
minecraft {
version = "${rootProject.config.version.minecraft}-${rootProject.config.version.forge}"
replaceIn "Reference.java"
replace "@MAJOR@", rootProject.config.version.mod.major
replace "@MINOR@", rootProject.config.version.mod.minor
replace "@REVIS@", rootProject.config.version.mod.revis
replace "@BUILD@", "${System.getenv().BUILD_NUMBER}"
}
allprojects {
apply plugin: 'java'
version = "${config.version.mod.major}.${config.version.mod.minor}.${config.version.mod.revis}"
if (System.getenv("BUILD_NUMBER") != null)
version += ".${System.getenv("BUILD_NUMBER")}"
repositories {
maven {
name 'Calclavia Maven'
url 'http://calclavia.com/maven'
}
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
ivy {
name 'CB FS'
artifactPattern "http://files.minecraftforge.net/[module]/[module]-dev-[revision].[ext]"
}
mavenCentral()
}
dependencies {
compile group: 'universalelectricity', name: 'Universal-Electricity', version: "${rootProject.config.version.universalelectricity}", classifier: "dev"
compile group: 'calclaviacore', name: 'calclavia-core', version: "${rootProject.config.version.calclaviacore}", classifier: "dev"
compile name: 'CodeChickenLib', version: "${config.version.minecraft}-${config.version.cclib}", ext: 'jar'
compile name: 'ForgeMultipart', version: "${config.version.minecraft}-${config.version.fmp}", ext: 'jar'
}
jar {
classifier = project.name
dependsOn ":copyBuildXml"
destinationDir = file (rootProject.getRootDir().getPath() + '/output')
}
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
}
}
repositories {
maven {
url "file://var/www/maven"
}
}
}
}
subprojects {
archivesBaseName = "Resonant-Induction"
dependencies {
compile rootProject
}
rootProject.tasks.reobf {
reobf.setUseRetroGuard(true)
reobf(tasks.jar) { spec ->
spec.classpath = sourceSets.main.compileClasspath
}
}
}
processResources {
from 'build.properties'
}
task copyBuildXml(type: Copy) {
from 'build.properties'
into 'output'
}
task apiZip(type: Zip) {
classifier = 'api'
from sourceSets*.allSource
include 'resonantinduction/api/**'
destinationDir = file 'output'
}
artifacts {
archives apiZip
}
import net.minecraftforge.gradle.tasks.dev.ChangelogTask
import net.minecraftforge.gradle.common.Constants
import net.minecraftforge.gradle.delayed.*
task createChangelog(type: ChangelogTask) {
def jobName = "${System.getenv().JOB_NAME}"
def buildNumber = "${System.getenv().BUILD_NUMBER}"
jobName.replaceAll(' ','%20')
setServerRoot(new DelayedString(project, 'http://ci.calclavia.com/'))
setJobName(new DelayedString(project, jobName.toString()));
setAuthName(new DelayedString(project, 'console_script'));
setAuthPassword(new DelayedString(project, '625d2ac53190be3422faa0c474fb299b'));
setTargetBuild({buildNumber.toString()});
setOutput(new DelayedFile(project, 'output/' + jobName + "-${project.version}" + '-changelog' + '.txt'));
}
build.dependsOn "apiZip", "copyBuildXml", "createChangelog"

137
build-old.gradle Normal file
View file

@ -0,0 +1,137 @@
buildscript {
repositories {
mavenCentral()
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.0-SNAPSHOT'
}
}
apply plugin: 'forge'
apply plugin: 'maven-publish'
sourceSets {
main {
java {
srcDirs 'src/main/java', 'archaic/src/main/java', 'electrical/src/main/java', 'mechanical/src/main/java'
//exclude 'resonantinduction/core/nei/**'
}
}
}
ext.buildProps = file "build.properties"
buildProps.withReader {
def prop = new Properties()
prop.load(it)
ext.config = new ConfigSlurper().parse prop
}
version = "${config.version.mod.major}.${config.version.mod.minor}.${config.version.mod.revis}"
group = "resonantinduction"
archivesBaseName = "Resonant-Induction"
minecraft {
version = "${config.version.minecraft}-${config.version.forge}"
replaceIn "Reference.java"
replace "@MAJOR@", config.version.mod.major
replace "@MINOR@", config.version.mod.minor
replace "@REVIS@", config.version.mod.revis
replace "@BUILD@", System.getenv("BUILD_NUMBER")
}
if (System.getenv("BUILD_NUMBER") != null)
version += ".${System.getenv("BUILD_NUMBER")}"
processResources {
from 'build.properties'
}
task copyBuildXml(type: Copy) {
from 'build.properties'
into 'output'
}
task apiZip(type: Zip) {
classifier = 'api'
from sourceSets*.allSource
include 'resonantinduction/api/**'
destinationDir = file 'output'
}
artifacts {
archives apiZip
}
jar {
dependsOn copyBuildXml
classifier = ''
destinationDir = file 'output'
}
repositories {
maven {
name 'Calclavia Maven'
url 'http://calclavia.com/maven'
}
ivy {
name 'FMP'
artifactPattern "http://files.minecraftforge.net/[module]/[module]-dev-[revision].[ext]"
}
ivy {
artifactPattern "http://www.chickenbones.craftsaddle.org/Files/New_Versions/1.6.4/[module]-dev%20[revision].[ext]"
}
}
dependencies {
compile group: 'universalelectricity', name: 'Universal-Electricity', version: "${config.version.universalelectricity}", classifier: "dev"
compile group: 'calclaviacore', name: 'calclavia-core', version: "${config.version.calclaviacore}", classifier: "dev"
compile name: 'CodeChickenLib', version: "${config.version.minecraft}-${config.version.cclib}", ext: 'jar'
compile name: 'ForgeMultipart', version: "${config.version.minecraft}-${config.version.fmp}", ext: 'jar'
//compile name: 'NotEnoughItems', version: "1.6.1.8", ext: 'jar'
compile name: 'NotEnoughItems', version: "${config.version.nei}", ext: 'jar'
}
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
/*artifact apiZip*/
artifact {
file 'output/build.properties'
}
}
}
repositories {
maven {
url "file://var/www/maven"
}
}
}
import net.minecraftforge.gradle.tasks.dev.ChangelogTask
import net.minecraftforge.gradle.common.Constants
import net.minecraftforge.gradle.delayed.*
task createChangelog(type: ChangelogTask) {
def jobName = "${System.getenv().JOB_NAME}"
def buildNumber = "${System.getenv().BUILD_NUMBER}"
jobName.replaceAll(' ','%20')
setServerRoot(new DelayedString(project, 'http://ci.calclavia.com/'))
setJobName(new DelayedString(project, jobName.toString()));
setAuthName(new DelayedString(project, 'console_script'));
setAuthPassword(new DelayedString(project, '625d2ac53190be3422faa0c474fb299b'));
setTargetBuild({buildNumber.toString()});
setOutput(new DelayedFile(project, 'output/' + jobName + "-${project.version}" + '-changelog' + '.txt'));
}
build.dependsOn "createChangelog"

View file

@ -10,114 +10,116 @@ buildscript {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.0-SNAPSHOT' classpath 'net.minecraftforge.gradle:ForgeGradle:1.0-SNAPSHOT'
} }
} }
apply plugin: 'forge' apply plugin: 'forge'
apply plugin: 'maven-publish' apply plugin: 'maven-publish'
sourceSets {
main {
java {
srcDirs 'src/main/java', 'archaic/src/main/java', 'electrical/src/main/java', 'mechanical/src/main/java'
//exclude 'resonantinduction/core/nei/**'
}
}
}
ext.buildProps = file "build.properties" ext.buildProps = file "build.properties"
buildProps.withReader { buildProps.withReader {
def prop = new Properties() def prop = new Properties()
prop.load(it) prop.load(it)
ext.config = new ConfigSlurper().parse prop ext.config = new ConfigSlurper().parse prop
} }
version = "${config.version.mod.major}.${config.version.mod.minor}.${config.version.mod.revis}" group = "resonant-induction"
group = "resonantinduction"
archivesBaseName = "Resonant-Induction" archivesBaseName = "Resonant-Induction"
minecraft { minecraft {
version = "${config.version.minecraft}-${config.version.forge}" version = "${rootProject.config.version.minecraft}-${rootProject.config.version.forge}"
replaceIn "Reference.java" replaceIn "Reference.java"
replace "@MAJOR@", config.version.mod.major replace "@MAJOR@", rootProject.config.version.mod.major
replace "@MINOR@", config.version.mod.minor replace "@MINOR@", rootProject.config.version.mod.minor
replace "@REVIS@", config.version.mod.revis replace "@REVIS@", rootProject.config.version.mod.revis
replace "@BUILD@", System.getenv("BUILD_NUMBER") replace "@BUILD@", "${System.getenv().BUILD_NUMBER}"
} }
if (System.getenv("BUILD_NUMBER") != null) subprojects*.apply plugin: 'java'
version += ".${System.getenv("BUILD_NUMBER")}"
allprojects {
version = "${config.version.mod.major}.${config.version.mod.minor}.${config.version.mod.revis}"
if (System.getenv("BUILD_NUMBER") != null)
version += ".${System.getenv("BUILD_NUMBER")}"
repositories {
maven {
name 'Calclavia Maven'
url 'http://calclavia.com/maven'
}
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
ivy {
name 'CB FS'
artifactPattern "http://files.minecraftforge.net/[module]/[module]-dev-[revision].[ext]"
}
mavenCentral()
}
dependencies {
compile group: 'universalelectricity', name: 'Universal-Electricity', version: "${rootProject.config.version.universalelectricity}", classifier: "dev"
compile group: 'calclaviacore', name: 'calclavia-core', version: "${rootProject.config.version.calclaviacore}", classifier: "dev"
compile name: 'CodeChickenLib', version: "${config.version.minecraft}-${config.version.cclib}", ext: 'jar'
compile name: 'ForgeMultipart', version: "${config.version.minecraft}-${config.version.fmp}", ext: 'jar'
}
jar {
classifier = project.name
dependsOn ":copyBuildXml"
destinationDir = file (rootProject.getRootDir().getPath() + '/output')
}
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
}
}
repositories {
maven {
url "file://var/www/maven"
}
}
}
}
subprojects {
archivesBaseName = "Resonant-Induction"
dependencies {
compile rootProject
}
rootProject.tasks.reobf {
reobf(tasks.jar) { spec ->
spec.classpath = sourceSets.main.compileClasspath
}
}
}
processResources { processResources {
from 'build.properties' from 'build.properties'
} }
task copyBuildXml(type: Copy) { task copyBuildXml(type: Copy) {
from 'build.properties' from 'build.properties'
into 'output' into 'output'
} }
task apiZip(type: Zip) { task apiZip(type: Zip) {
classifier = 'api' classifier = 'api'
from sourceSets*.allSource from sourceSets*.allSource
include 'resonantinduction/api/**' include 'resonantinduction/api/**'
destinationDir = file 'output' destinationDir = file 'output'
} }
artifacts { artifacts {
archives apiZip archives apiZip
} }
jar {
dependsOn copyBuildXml
classifier = ''
destinationDir = file 'output'
}
repositories {
maven {
name 'Calclavia Maven'
url 'http://calclavia.com/maven'
}
ivy {
name 'FMP'
artifactPattern "http://files.minecraftforge.net/[module]/[module]-dev-[revision].[ext]"
}
ivy {
artifactPattern "http://www.chickenbones.craftsaddle.org/Files/New_Versions/1.6.4/[module]-dev%20[revision].[ext]"
}
}
dependencies {
compile group: 'universalelectricity', name: 'Universal-Electricity', version: "${config.version.universalelectricity}", classifier: "dev"
compile group: 'calclaviacore', name: 'calclavia-core', version: "${config.version.calclaviacore}", classifier: "dev"
compile name: 'CodeChickenLib', version: "${config.version.minecraft}-${config.version.cclib}", ext: 'jar'
compile name: 'ForgeMultipart', version: "${config.version.minecraft}-${config.version.fmp}", ext: 'jar'
//compile name: 'NotEnoughItems', version: "1.6.1.8", ext: 'jar'
compile name: 'NotEnoughItems', version: "${config.version.nei}", ext: 'jar'
}
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
/*artifact apiZip*/
artifact {
file 'output/build.properties'
}
}
}
repositories {
maven {
url "file://var/www/maven"
}
}
}
import net.minecraftforge.gradle.tasks.dev.ChangelogTask import net.minecraftforge.gradle.tasks.dev.ChangelogTask
import net.minecraftforge.gradle.common.Constants import net.minecraftforge.gradle.common.Constants
import net.minecraftforge.gradle.delayed.* import net.minecraftforge.gradle.delayed.*
@ -134,4 +136,4 @@ task createChangelog(type: ChangelogTask) {
setOutput(new DelayedFile(project, 'output/' + jobName + "-${project.version}" + '-changelog' + '.txt')); setOutput(new DelayedFile(project, 'output/' + jobName + "-${project.version}" + '-changelog' + '.txt'));
} }
build.dependsOn "createChangelog" build.dependsOn "apiZip", "copyBuildXml", "createChangelog"

View file

@ -84,7 +84,7 @@ public class RenderCharger implements ISimpleItemRenderer
@Override @Override
public void renderInventoryItem(ItemStack itemStack) public void renderInventoryItem(ItemStack itemStack)
{ {
GL11.glTranslatef(0.5f, 0.7f, 0.5f); GL11.glTranslatef(0f, 0.5f, 0f);
RenderUtility.bind(TEXTURE); RenderUtility.bind(TEXTURE);
MODEL.renderAll(); MODEL.renderAll();
} }

View file

@ -66,7 +66,7 @@ public class RenderLevitator implements ISimpleItemRenderer
public void renderInventoryItem(ItemStack itemStack) public void renderInventoryItem(ItemStack itemStack)
{ {
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslatef(0.5f, 0.5f, 0.5f); GL11.glTranslatef(0f, 0.5f, 0f);
FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE_OFF); FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE_OFF);
MODEL.renderAll(); MODEL.renderAll();
GL11.glPopMatrix(); GL11.glPopMatrix();

View file

@ -16,18 +16,17 @@ import resonantinduction.core.handler.TextureHookHandler;
import resonantinduction.core.prefab.part.PacketMultiPart; import resonantinduction.core.prefab.part.PacketMultiPart;
import resonantinduction.core.resource.BlockDust; import resonantinduction.core.resource.BlockDust;
import resonantinduction.core.resource.BlockMachineMaterial; import resonantinduction.core.resource.BlockMachineMaterial;
import resonantinduction.core.resource.ItemOreResource;
import resonantinduction.core.resource.ResourceGenerator; import resonantinduction.core.resource.ResourceGenerator;
import resonantinduction.core.resource.TileMaterial; import resonantinduction.core.resource.TileMaterial;
import resonantinduction.core.resource.fluid.ItemOreResourceBucket;
import resonantinduction.core.resource.fluid.TileFluidMixture; import resonantinduction.core.resource.fluid.TileFluidMixture;
import resonantinduction.core.resource.item.ItemOreResource;
import calclavia.components.tool.ToolMode;
import calclavia.lib.content.ContentRegistry; import calclavia.lib.content.ContentRegistry;
import calclavia.lib.network.PacketAnnotation; import calclavia.lib.network.PacketAnnotation;
import calclavia.lib.network.PacketHandler; import calclavia.lib.network.PacketHandler;
import calclavia.lib.network.PacketTile; import calclavia.lib.network.PacketTile;
import calclavia.lib.prefab.item.ItemBlockMetadata; import calclavia.lib.prefab.item.ItemBlockMetadata;
import calclavia.lib.utility.LanguageUtility; import calclavia.lib.utility.LanguageUtility;
import calclavia.lib.utility.LinkUtility;
import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.EventHandler;
@ -73,9 +72,8 @@ public class ResonantInduction
/** Blocks and Items */ /** Blocks and Items */
public static Block blockOre; public static Block blockOre;
public static ItemOreResource itemRubble; public static ItemOreResource itemRubble, itemDust, itemRefinedDust;
public static ItemOreResource itemDust; public static ItemOreResourceBucket itemBucketMixture, itemBucketMolten;
public static ItemOreResource itemRefinedDust;
public static Block blockDust; public static Block blockDust;
public static final List<Block> blockMixtureFluids = new ArrayList<Block>(); public static final List<Block> blockMixtureFluids = new ArrayList<Block>();
public static final List<Block> blockMoltenFluid = new ArrayList<Block>(); public static final List<Block> blockMoltenFluid = new ArrayList<Block>();
@ -110,10 +108,14 @@ public class ResonantInduction
itemRubble = new ItemOreResource(Settings.getNextItemID("oreRubble"), "oreRubble"); itemRubble = new ItemOreResource(Settings.getNextItemID("oreRubble"), "oreRubble");
itemDust = new ItemOreResource(Settings.getNextItemID("oreDust"), "oreDust"); itemDust = new ItemOreResource(Settings.getNextItemID("oreDust"), "oreDust");
itemRefinedDust = new ItemOreResource(Settings.getNextItemID("oreRefinedDust"), "oreRefinedDust"); itemRefinedDust = new ItemOreResource(Settings.getNextItemID("oreRefinedDust"), "oreRefinedDust");
itemBucketMixture = new ItemOreResourceBucket(Settings.getNextItemID("bucketMixture"), "bucketMixture");
itemBucketMolten = new ItemOreResourceBucket(Settings.getNextItemID("bucketMolten"), "bucketMolten");
GameRegistry.registerItem(itemRubble, itemRubble.getUnlocalizedName()); GameRegistry.registerItem(itemRubble, itemRubble.getUnlocalizedName());
GameRegistry.registerItem(itemDust, itemDust.getUnlocalizedName()); GameRegistry.registerItem(itemDust, itemDust.getUnlocalizedName());
GameRegistry.registerItem(itemRefinedDust, itemRefinedDust.getUnlocalizedName()); GameRegistry.registerItem(itemRefinedDust, itemRefinedDust.getUnlocalizedName());
GameRegistry.registerItem(itemBucketMixture, itemBucketMixture.getUnlocalizedName());
GameRegistry.registerItem(itemBucketMolten, itemBucketMolten.getUnlocalizedName());
// Already registered with ContentRegistry // Already registered with ContentRegistry
// GameRegistry.registerTileEntity(TileMaterial.class, "ri_material"); // GameRegistry.registerTileEntity(TileMaterial.class, "ri_material");

View file

@ -12,7 +12,6 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.resource.item.ItemOreResource;
import calclavia.lib.prefab.block.BlockTile; import calclavia.lib.prefab.block.BlockTile;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;

View file

@ -1,4 +1,4 @@
package resonantinduction.core.resource.item; package resonantinduction.core.resource;
import java.util.List; import java.util.List;
@ -16,8 +16,6 @@ import resonantinduction.api.recipe.RecipeResource;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.TabRI; import resonantinduction.core.TabRI;
import resonantinduction.core.resource.ResourceGenerator;
import resonantinduction.core.resource.TileMaterial;
import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.Vector3;
import calclavia.lib.utility.LanguageUtility; import calclavia.lib.utility.LanguageUtility;
import calclavia.lib.utility.inventory.InventoryUtility; import calclavia.lib.utility.inventory.InventoryUtility;
@ -206,21 +204,19 @@ public class ItemOreResource extends Item
public ItemStack getStackFromMaterial(String name) public ItemStack getStackFromMaterial(String name)
{ {
ItemStack itemStack = new ItemStack(this); ItemStack itemStack = new ItemStack(this);
itemStack.setItemDamage(ResourceGenerator.materialNames.indexOf(name)); itemStack.setItemDamage(ResourceGenerator.getID(name));
return itemStack; return itemStack;
} }
public static String getMaterialFromStack(ItemStack itemStack) public static String getMaterialFromStack(ItemStack itemStack)
{ {
if (ResourceGenerator.materialNames.size() > itemStack.getItemDamage()) return ResourceGenerator.getName(itemStack.getItemDamage());
return ResourceGenerator.materialNames.get(itemStack.getItemDamage());
return null;
} }
@Override @Override
public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List)
{ {
for (String materialName : ResourceGenerator.materialNames) for (String materialName : ResourceGenerator.getMaterials())
{ {
par3List.add(getStackFromMaterial(materialName)); par3List.add(getStackFromMaterial(materialName));
} }
@ -235,9 +231,9 @@ public class ItemOreResource extends Item
*/ */
String name = ItemOreResource.getMaterialFromStack(itemStack); String name = ItemOreResource.getMaterialFromStack(itemStack);
if (ResourceGenerator.materialColors.containsKey(name)) if (ResourceGenerator.materialColorCache.containsKey(name))
{ {
return ResourceGenerator.materialColors.get(name); return ResourceGenerator.materialColorCache.get(name);
} }
return 16777215; return 16777215;

View file

@ -3,9 +3,7 @@ package resonantinduction.core.resource;
import java.awt.Color; import java.awt.Color;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -35,6 +33,9 @@ import resonantinduction.core.Settings;
import resonantinduction.core.resource.fluid.BlockFluidMaterial; import resonantinduction.core.resource.fluid.BlockFluidMaterial;
import resonantinduction.core.resource.fluid.BlockFluidMixture; import resonantinduction.core.resource.fluid.BlockFluidMixture;
import calclavia.lib.utility.LanguageUtility; import calclavia.lib.utility.LanguageUtility;
import com.google.common.collect.HashBiMap;
import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -42,276 +43,288 @@ import cpw.mods.fml.relauncher.SideOnly;
/** @author Calclavia */ /** @author Calclavia */
public class ResourceGenerator public class ResourceGenerator
{ {
public static final ResourceGenerator INSTANCE = new ResourceGenerator(); public static final ResourceGenerator INSTANCE = new ResourceGenerator();
public static final Set<String> oreDictBlackList = new HashSet<String>();
/** A list of material names. They are all camelCase reference of ore dictionary names without /**
* the "ore" or "ingot" prefix. */ * A list of material names. They are all camelCase reference of ore dictionary names without
public static final List<String> materialNames = new ArrayList<String>(); * the "ore" or "ingot" prefix.
public static final HashMap<String, Integer> materialColors = new HashMap<String, Integer>(); *
private static final HashMap<Icon, Integer> iconColorMap = new HashMap<Icon, Integer>(); * Name, ID
*/
static int maxID = 0;
static final HashBiMap<String, Integer> materials = HashBiMap.create();
static static final HashMap<String, Integer> materialColorCache = new HashMap<String, Integer>();
{ static final HashMap<Icon, Integer> iconColorCache = new HashMap<Icon, Integer>();
oreDictBlackList.add("ingotRefinedIron");
}
@ForgeSubscribe static
public void oreRegisterEvent(OreRegisterEvent evt) {
{ OreDetectionBlackList.addIngot("refinedIron");
if (evt.Name.startsWith("ingot") && !oreDictBlackList.contains(evt.Name)) }
{
String oreDictName = evt.Name.replace("ingot", "");
String materialName = LanguageUtility.decapitalizeFirst(oreDictName);
if (!materialNames.contains(materialName)) @ForgeSubscribe
{ public void oreRegisterEvent(OreRegisterEvent evt)
Settings.CONFIGURATION.load(); {
boolean allowMaterial = Settings.CONFIGURATION.get("Resource_Generator", "Enable " + oreDictName, true).getBoolean(true); if (evt.Name.startsWith("ingot"))
Settings.CONFIGURATION.save(); {
String oreDictName = evt.Name.replace("ingot", "");
String materialName = LanguageUtility.decapitalizeFirst(oreDictName);
if (!allowMaterial || OreDetectionBlackList.isIngotBlackListed("ingot" + oreDictName) || OreDetectionBlackList.isOreBlackListed("ore" + oreDictName)) if (!materials.containsKey(materialName))
return; {
Settings.CONFIGURATION.load();
boolean allowMaterial = Settings.CONFIGURATION.get("Resource_Generator", "Enable " + oreDictName, true).getBoolean(true);
Settings.CONFIGURATION.save();
materialNames.add(materialName); if (!allowMaterial || OreDetectionBlackList.isIngotBlackListed("ingot" + oreDictName) || OreDetectionBlackList.isOreBlackListed("ore" + oreDictName))
} return;
}
}
public static void generateOreResources() materials.put(materialName, maxID++);
{ }
OreDictionary.registerOre("ingotGold", Item.ingotGold); }
OreDictionary.registerOre("ingotIron", Item.ingotIron); }
OreDictionary.registerOre("oreGold", Block.oreGold); public static void generateOreResources()
OreDictionary.registerOre("oreIron", Block.oreIron); {
OreDictionary.registerOre("oreLapis", Block.oreLapis); OreDictionary.registerOre("ingotGold", Item.ingotGold);
OreDictionary.registerOre("ingotIron", Item.ingotIron);
//Vanilla fluid recipes OreDictionary.registerOre("oreGold", Block.oreGold);
MachineRecipes.INSTANCE.addRecipe(RecipeType.SMELTER, new FluidStack(FluidRegistry.LAVA, FluidContainerRegistry.BUCKET_VOLUME), new ItemStack(Block.stone)); OreDictionary.registerOre("oreIron", Block.oreIron);
OreDictionary.registerOre("oreLapis", Block.oreLapis);
//Vanilla crusher recipes
MachineRecipes.INSTANCE.addRecipe(RecipeType.CRUSHER, Block.cobblestone, Block.gravel);
MachineRecipes.INSTANCE.addRecipe(RecipeType.CRUSHER, Block.stone, Block.cobblestone);
MachineRecipes.INSTANCE.addRecipe(RecipeType.CRUSHER, Block.chest, new ItemStack(Block.planks, 7, 0));
//Vanilla grinder recipes
MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, Block.cobblestone, Block.sand);
MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, Block.gravel, Block.sand);
MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, Block.glass, Block.sand);
for (String materialName : materialNames) // Vanilla fluid recipes
{ MachineRecipes.INSTANCE.addRecipe(RecipeType.SMELTER, new FluidStack(FluidRegistry.LAVA, FluidContainerRegistry.BUCKET_VOLUME), new ItemStack(Block.stone));
// Caps version of the name
String nameCaps = LanguageUtility.capitalizeFirst(materialName);
/** Generate molten fluids */ // Vanilla crusher recipes
Fluid fluidMolten = new Fluid(materialNameToMolten(materialName)); MachineRecipes.INSTANCE.addRecipe(RecipeType.CRUSHER, Block.cobblestone, Block.gravel);
fluidMolten.setDensity(7); MachineRecipes.INSTANCE.addRecipe(RecipeType.CRUSHER, Block.stone, Block.cobblestone);
fluidMolten.setViscosity(5000); MachineRecipes.INSTANCE.addRecipe(RecipeType.CRUSHER, Block.chest, new ItemStack(Block.planks, 7, 0));
fluidMolten.setTemperature(273 + 1538);
FluidRegistry.registerFluid(fluidMolten);
Block blockFluidMaterial = new BlockFluidMaterial(fluidMolten);
GameRegistry.registerBlock(blockFluidMaterial, "molten" + nameCaps);
ResonantInduction.blockMoltenFluid.add(blockFluidMaterial);
/** Generate dust mixture fluids */ // Vanilla grinder recipes
Fluid fluidMixture = new Fluid(materialNameToMixture(materialName)); MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, Block.cobblestone, Block.sand);
FluidRegistry.registerFluid(fluidMixture); MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, Block.gravel, Block.sand);
Block blockFluidMixture = new BlockFluidMixture(fluidMixture); MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, Block.glass, Block.sand);
GameRegistry.registerBlock(blockFluidMixture, "mixture" + nameCaps);
ResonantInduction.blockMixtureFluids.add(blockFluidMixture);
if (OreDictionary.getOres("ore" + nameCaps).size() > 0) for (String materialName : materials.keySet())
{ {
OreDictionary.registerOre("dust" + nameCaps, ResonantInduction.itemDust.getStackFromMaterial(materialName)); // Caps version of the name
OreDictionary.registerOre("rubble" + nameCaps, ResonantInduction.itemRubble.getStackFromMaterial(materialName)); String nameCaps = LanguageUtility.capitalizeFirst(materialName);
OreDictionary.registerOre("dustRefined" + nameCaps, ResonantInduction.itemRefinedDust.getStackFromMaterial(materialName));
MachineRecipes.INSTANCE.addRecipe(RecipeType.CRUSHER, "ore" + nameCaps, "rubble" + nameCaps); /** Generate molten fluids */
MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, "rubble" + nameCaps, "dust" + nameCaps, "dust" + nameCaps); Fluid fluidMolten = new Fluid(materialNameToMolten(materialName));
MachineRecipes.INSTANCE.addRecipe(RecipeType.MIXER, "dust" + nameCaps, "dustRefined" + nameCaps); fluidMolten.setDensity(7);
MachineRecipes.INSTANCE.addRecipe(RecipeType.SMELTER, new FluidStack(fluidMolten, FluidContainerRegistry.BUCKET_VOLUME), "ingot" + nameCaps); fluidMolten.setViscosity(5000);
fluidMolten.setTemperature(273 + 1538);
FluidRegistry.registerFluid(fluidMolten);
Block blockFluidMaterial = new BlockFluidMaterial(fluidMolten);
GameRegistry.registerBlock(blockFluidMaterial, "molten" + nameCaps);
ResonantInduction.blockMoltenFluid.add(blockFluidMaterial);
ItemStack dust = ResonantInduction.itemDust.getStackFromMaterial(materialName); /** Generate dust mixture fluids */
FurnaceRecipes.smelting().addSmelting(dust.itemID, dust.getItemDamage(), OreDictionary.getOres("ingot" + nameCaps).get(0).copy(), 0.7f); Fluid fluidMixture = new Fluid(materialNameToMixture(materialName));
ItemStack refinedDust = ResonantInduction.itemRefinedDust.getStackFromMaterial(materialName); FluidRegistry.registerFluid(fluidMixture);
ItemStack smeltResult = OreDictionary.getOres("ingot" + nameCaps).get(0).copy(); Block blockFluidMixture = new BlockFluidMixture(fluidMixture);
smeltResult.stackSize = 2; GameRegistry.registerBlock(blockFluidMixture, "mixture" + nameCaps);
FurnaceRecipes.smelting().addSmelting(refinedDust.itemID, refinedDust.getItemDamage(), smeltResult, 0.7f); ResonantInduction.blockMixtureFluids.add(blockFluidMixture);
}
}
}
@ForgeSubscribe if (OreDictionary.getOres("ore" + nameCaps).size() > 0)
@SideOnly(Side.CLIENT) {
public void reloadTextures(TextureStitchEvent.Post e) OreDictionary.registerOre("dust" + nameCaps, ResonantInduction.itemDust.getStackFromMaterial(materialName));
{ OreDictionary.registerOre("rubble" + nameCaps, ResonantInduction.itemRubble.getStackFromMaterial(materialName));
computeColors(); OreDictionary.registerOre("dustRefined" + nameCaps, ResonantInduction.itemRefinedDust.getStackFromMaterial(materialName));
}
@SideOnly(Side.CLIENT) MachineRecipes.INSTANCE.addRecipe(RecipeType.CRUSHER, "ore" + nameCaps, "rubble" + nameCaps);
public static void computeColors() MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, "rubble" + nameCaps, "dust" + nameCaps, "dust" + nameCaps);
{ MachineRecipes.INSTANCE.addRecipe(RecipeType.MIXER, "dust" + nameCaps, "dustRefined" + nameCaps);
for (String material : materialNames) MachineRecipes.INSTANCE.addRecipe(RecipeType.SMELTER, new FluidStack(fluidMolten, FluidContainerRegistry.BUCKET_VOLUME), "ingot" + nameCaps);
{
// Compute color
int totalR = 0;
int totalG = 0;
int totalB = 0;
int colorCount = 0; ItemStack dust = ResonantInduction.itemDust.getStackFromMaterial(materialName);
FurnaceRecipes.smelting().addSmelting(dust.itemID, dust.getItemDamage(), OreDictionary.getOres("ingot" + nameCaps).get(0).copy(), 0.7f);
ItemStack refinedDust = ResonantInduction.itemRefinedDust.getStackFromMaterial(materialName);
ItemStack smeltResult = OreDictionary.getOres("ingot" + nameCaps).get(0).copy();
smeltResult.stackSize = 2;
FurnaceRecipes.smelting().addSmelting(refinedDust.itemID, refinedDust.getItemDamage(), smeltResult, 0.7f);
}
}
}
for (ItemStack ingotStack : OreDictionary.getOres("ingot" + material.substring(0, 1).toUpperCase() + material.substring(1))) @ForgeSubscribe
{ @SideOnly(Side.CLIENT)
Item theIngot = ingotStack.getItem(); public void reloadTextures(TextureStitchEvent.Post e)
materialColors.put(material, getAverageColor(ingotStack)); {
} computeColors();
}
if (!materialColors.containsKey(material)) @SideOnly(Side.CLIENT)
{ public static void computeColors()
materialColors.put(material, 0xFFFFFF); {
} for (String material : materials.keySet())
} {
} // Compute color
int totalR = 0;
int totalG = 0;
int totalB = 0;
/** Gets the average color of this item. int colorCount = 0;
*
* @param itemStack
* @return The RGB hexadecimal color code. */
@SideOnly(Side.CLIENT)
public static int getAverageColor(ItemStack itemStack)
{
int totalR = 0;
int totalG = 0;
int totalB = 0;
int colorCount = 0; for (ItemStack ingotStack : OreDictionary.getOres("ingot" + material.substring(0, 1).toUpperCase() + material.substring(1)))
Item item = itemStack.getItem(); {
Item theIngot = ingotStack.getItem();
materialColorCache.put(material, getAverageColor(ingotStack));
}
try if (!materialColorCache.containsKey(material))
{ {
Icon icon = item.getIconIndex(itemStack); materialColorCache.put(material, 0xFFFFFF);
}
}
}
if (iconColorMap.containsKey(icon)) /**
{ * Gets the average color of this item.
return iconColorMap.get(icon); *
} * @param itemStack
* @return The RGB hexadecimal color code.
*/
@SideOnly(Side.CLIENT)
public static int getAverageColor(ItemStack itemStack)
{
int totalR = 0;
int totalG = 0;
int totalB = 0;
String iconString = icon.getIconName(); int colorCount = 0;
Item item = itemStack.getItem();
if (iconString != null && !iconString.contains("MISSING_ICON_ITEM")) try
{ {
iconString = (iconString.contains(":") ? iconString.replace(":", ":" + Reference.ITEM_TEXTURE_DIRECTORY) : Reference.ITEM_TEXTURE_DIRECTORY + iconString) + ".png"; Icon icon = item.getIconIndex(itemStack);
ResourceLocation textureLocation = new ResourceLocation(iconString);
InputStream inputstream = Minecraft.getMinecraft().getResourceManager().getResource(textureLocation).getInputStream(); if (iconColorCache.containsKey(icon))
BufferedImage bufferedimage = ImageIO.read(inputstream); {
return iconColorCache.get(icon);
}
int width = bufferedimage.getWidth(); String iconString = icon.getIconName();
int height = bufferedimage.getWidth();
for (int x = 0; x < width; x++) if (iconString != null && !iconString.contains("MISSING_ICON_ITEM"))
{ {
for (int y = 0; y < height; y++) iconString = (iconString.contains(":") ? iconString.replace(":", ":" + Reference.ITEM_TEXTURE_DIRECTORY) : Reference.ITEM_TEXTURE_DIRECTORY + iconString) + ".png";
{ ResourceLocation textureLocation = new ResourceLocation(iconString);
Color rgb = new Color(bufferedimage.getRGB(x, y));
/** Ignore things that are too dark. Standard luma calculation. */ InputStream inputstream = Minecraft.getMinecraft().getResourceManager().getResource(textureLocation).getInputStream();
double luma = 0.2126 * rgb.getRed() + 0.7152 * rgb.getGreen() + 0.0722 * rgb.getBlue(); BufferedImage bufferedimage = ImageIO.read(inputstream);
if (luma > 40) int width = bufferedimage.getWidth();
{ int height = bufferedimage.getWidth();
totalR += rgb.getRed();
totalG += rgb.getGreen();
totalB += rgb.getBlue();
colorCount++;
}
}
}
}
if (colorCount > 0) for (int x = 0; x < width; x++)
{ {
totalR /= colorCount; for (int y = 0; y < height; y++)
totalG /= colorCount; {
totalB /= colorCount; Color rgb = new Color(bufferedimage.getRGB(x, y));
int averageColor = new Color(totalR, totalG, totalB).brighter().getRGB();
iconColorMap.put(icon, averageColor);
return averageColor;
}
}
catch (Exception e)
{
ResonantInduction.LOGGER.fine("Failed to compute colors for: " + item);
}
return 0xFFFFFF; /** Ignore things that are too dark. Standard luma calculation. */
} double luma = 0.2126 * rgb.getRed() + 0.7152 * rgb.getGreen() + 0.0722 * rgb.getBlue();
public static String moltenNameToMaterial(String fluidName) if (luma > 40)
{ {
return fluidNameToMaterial(fluidName, "molten"); totalR += rgb.getRed();
} totalG += rgb.getGreen();
totalB += rgb.getBlue();
colorCount++;
}
}
}
}
public static String materialNameToMolten(String fluidName) if (colorCount > 0)
{ {
return materialNameToFluid(fluidName, "molten"); totalR /= colorCount;
} totalG /= colorCount;
totalB /= colorCount;
int averageColor = new Color(totalR, totalG, totalB).brighter().getRGB();
iconColorCache.put(icon, averageColor);
return averageColor;
}
}
catch (Exception e)
{
ResonantInduction.LOGGER.fine("Failed to compute colors for: " + item);
}
public static String mixtureToMaterial(String fluidName) return 0xFFFFFF;
{ }
return fluidNameToMaterial(fluidName, "mixture");
}
public static String materialNameToMixture(String fluidName) public static String moltenNameToMaterial(String fluidName)
{ {
return materialNameToFluid(fluidName, "mixture"); return fluidNameToMaterial(fluidName, "molten");
} }
public static String fluidNameToMaterial(String fluidName, String type) public static String materialNameToMolten(String fluidName)
{ {
return LanguageUtility.underscoreToCamel(fluidName).replace(type, ""); return materialNameToFluid(fluidName, "molten");
} }
public static String materialNameToFluid(String materialName, String type) public static String mixtureToMaterial(String fluidName)
{ {
return type + "_" + LanguageUtility.camelToLowerUnderscore(materialName); return fluidNameToMaterial(fluidName, "mixture");
} }
public static Block getMixture(String name) public static String materialNameToMixture(String fluidName)
{ {
return ResonantInduction.blockMixtureFluids.get((getID(name))); return materialNameToFluid(fluidName, "mixture");
} }
public static Block getMolten(String name) public static String fluidNameToMaterial(String fluidName, String type)
{ {
return ResonantInduction.blockMoltenFluid.get((getID(name))); return LanguageUtility.underscoreToCamel(fluidName).replace(type, "");
} }
public static int getID(String name) public static String materialNameToFluid(String materialName, String type)
{ {
if (!materialNames.contains(name)) return type + "_" + LanguageUtility.camelToLowerUnderscore(materialName);
{ }
ResonantInduction.LOGGER.severe("Trying to get invalid material name " + name);
return 0;
}
return materialNames.indexOf(name); public static Block getMixture(String name)
} {
return ResonantInduction.blockMixtureFluids.get(getID(name));
}
public static String getName(int id) public static Block getMolten(String name)
{ {
return materialNames.size() > id ? materialNames.get(id) : null; return ResonantInduction.blockMoltenFluid.get(getID(name));
} }
public static int getColor(String name) public static int getID(String name)
{ {
if (name != null && materialColors.containsKey(name)) if (!materials.containsKey(name))
{ {
return materialColors.get(name); ResonantInduction.LOGGER.severe("Trying to get invalid material name " + name);
} return 0;
return 0xFFFFFF; }
} return materials.get(name);
}
public static String getName(int id)
{
return materials.inverse().get(id);
}
public static int getColor(String name)
{
if (name != null && materialColorCache.containsKey(name))
{
return materialColorCache.get(name);
}
return 0xFFFFFF;
}
public static Set<String> getMaterials()
{
return materials.keySet();
}
} }

View file

@ -0,0 +1,294 @@
package resonantinduction.core.resource.fluid;
import java.util.List;
import calclavia.lib.utility.LanguageUtility;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import resonantinduction.core.Reference;
import resonantinduction.core.TabRI;
import resonantinduction.core.resource.ItemOreResource;
import resonantinduction.core.resource.ResourceGenerator;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBucket;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumMovingObjectType;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.Event;
import net.minecraftforge.event.entity.player.FillBucketEvent;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.oredict.OreDictionary;
/**
* Modified version of the MC bucket to meet the needs of a dynamic fluid registry system
*
* @author Darkguardsman
*/
public class ItemOreResourceBucket extends Item
{
public ItemOreResourceBucket(int id, String name)
{
super(id);
setMaxStackSize(1);
setUnlocalizedName(Reference.PREFIX + name);
setTextureName(Reference.PREFIX + name);
setCreativeTab(TabRI.CORE);
setHasSubtypes(true);
setMaxDamage(0);
}
@Override
public String getItemDisplayName(ItemStack is)
{
if (getMaterialFromStack(is) != null)
{
String dustName = getMaterialFromStack(is);
if (dustName != null)
{
List<ItemStack> list = OreDictionary.getOres("ingot" + dustName.substring(0, 1).toUpperCase() + dustName.substring(1));
if (list.size() > 0)
{
ItemStack type = list.get(0);
String name = type.getDisplayName().replace(LanguageUtility.getLocal("misc.resonantinduction.ingot"), "").replaceAll("^ ", "").replaceAll(" $", "");
return (LanguageUtility.getLocal(this.getUnlocalizedName() + ".name")).replace("%v", name).replace(" ", " ");
}
}
return (FluidRegistry.getFluid(ResourceGenerator.materialNameToMixture(getMaterialFromStack(is))).getLocalizedName() + " Bucket");
}
return null;
}
/**
* Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack,
* world, entityPlayer
*/
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer entityPlayer)
{
int fluidID = ResourceGenerator.getMixture(ResourceGenerator.getName(itemStack.getItemDamage())).blockID;
MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, entityPlayer, false);
if (movingobjectposition == null)
{
return itemStack;
}
else
{
FillBucketEvent event = new FillBucketEvent(entityPlayer, itemStack, world, movingobjectposition);
if (MinecraftForge.EVENT_BUS.post(event))
{
return itemStack;
}
if (event.getResult() == Event.Result.ALLOW)
{
if (entityPlayer.capabilities.isCreativeMode)
{
return itemStack;
}
if (--itemStack.stackSize <= 0)
{
return event.result;
}
if (!entityPlayer.inventory.addItemStackToInventory(event.result))
{
entityPlayer.dropPlayerItem(event.result);
}
return itemStack;
}
if (movingobjectposition.typeOfHit == EnumMovingObjectType.TILE)
{
int i = movingobjectposition.blockX;
int j = movingobjectposition.blockY;
int k = movingobjectposition.blockZ;
if (!world.canMineBlock(entityPlayer, i, j, k))
{
return itemStack;
}
if (fluidID == 0)
{
if (!entityPlayer.canPlayerEdit(i, j, k, movingobjectposition.sideHit, itemStack))
{
return itemStack;
}
if (world.getBlockMaterial(i, j, k) == Material.water && world.getBlockMetadata(i, j, k) == 0)
{
world.setBlockToAir(i, j, k);
if (entityPlayer.capabilities.isCreativeMode)
{
return itemStack;
}
if (--itemStack.stackSize <= 0)
{
return new ItemStack(Item.bucketWater);
}
if (!entityPlayer.inventory.addItemStackToInventory(new ItemStack(Item.bucketWater)))
{
entityPlayer.dropPlayerItem(new ItemStack(Item.bucketWater.itemID, 1, 0));
}
return itemStack;
}
if (world.getBlockMaterial(i, j, k) == Material.lava && world.getBlockMetadata(i, j, k) == 0)
{
world.setBlockToAir(i, j, k);
if (entityPlayer.capabilities.isCreativeMode)
{
return itemStack;
}
if (--itemStack.stackSize <= 0)
{
return new ItemStack(Item.bucketLava);
}
if (!entityPlayer.inventory.addItemStackToInventory(new ItemStack(Item.bucketLava)))
{
entityPlayer.dropPlayerItem(new ItemStack(Item.bucketLava.itemID, 1, 0));
}
return itemStack;
}
}
else
{
if (fluidID < 0)
{
return new ItemStack(Item.bucketEmpty);
}
if (movingobjectposition.sideHit == 0)
{
--j;
}
if (movingobjectposition.sideHit == 1)
{
++j;
}
if (movingobjectposition.sideHit == 2)
{
--k;
}
if (movingobjectposition.sideHit == 3)
{
++k;
}
if (movingobjectposition.sideHit == 4)
{
--i;
}
if (movingobjectposition.sideHit == 5)
{
++i;
}
if (!entityPlayer.canPlayerEdit(i, j, k, movingobjectposition.sideHit, itemStack))
{
return itemStack;
}
if (this.tryPlaceContainedLiquid(world, i, j, k, fluidID) && !entityPlayer.capabilities.isCreativeMode)
{
return new ItemStack(Item.bucketEmpty);
}
}
}
return itemStack;
}
}
/**
* Attempts to place the liquid contained inside the bucket.
*/
public boolean tryPlaceContainedLiquid(World world, int x, int y, int z, int fluidID)
{
if (fluidID <= 0)
{
return false;
}
else
{
Material material = world.getBlockMaterial(x, y, z);
boolean flag = !material.isSolid();
if (!world.isAirBlock(x, y, z) && !flag)
{
return false;
}
else
{
if (!world.isRemote && flag && !material.isLiquid())
{
world.destroyBlock(x, y, z, true);
}
world.setBlock(x, y, z, fluidID, 0, 3);
return true;
}
}
}
public ItemStack getStackFromMaterial(String name)
{
ItemStack itemStack = new ItemStack(this);
itemStack.setItemDamage(ResourceGenerator.getID(name));
return itemStack;
}
public static String getMaterialFromStack(ItemStack itemStack)
{
return ResourceGenerator.getName(itemStack.getItemDamage());
}
@Override
public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List)
{
for (String materialName : ResourceGenerator.getMaterials())
{
par3List.add(getStackFromMaterial(materialName));
}
}
@Override
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(ItemStack itemStack, int par2)
{
/**
* Auto-color based on the texture of the ingot.
*/
String name = ItemOreResource.getMaterialFromStack(itemStack);
return ResourceGenerator.getColor(name);
}
}

View file

@ -1,110 +0,0 @@
package resonantinduction.core.resource.item;
import java.util.List;
import calclavia.lib.utility.LanguageUtility;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import resonantinduction.core.Reference;
import resonantinduction.core.TabRI;
import resonantinduction.core.resource.ResourceGenerator;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBucket;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.oredict.OreDictionary;
/** Modified version of the MC bucket to meet the needs of a dynamic fluid registry system
*
* @author Darkguardsman */
public class ItemFluidBucket extends ItemBucket
{
public ItemFluidBucket(int id)
{
super(id, 0);
setContainerItem(Item.bucketEmpty);
setUnlocalizedName(Reference.PREFIX + "Bucket_Molten");
setTextureName(Reference.PREFIX + "Bucket_Molten");
setCreativeTab(CreativeTabs.tabMisc);
setHasSubtypes(true);
setMaxDamage(0);
}
@Override
public String getItemDisplayName(ItemStack is)
{
String dustName = getMaterialFromStack(is);
if (dustName != null)
{
List<ItemStack> list = OreDictionary.getOres("ingot" + dustName.substring(0, 1).toUpperCase() + dustName.substring(1));
if (list.size() > 0)
{
ItemStack type = list.get(0);
String name = type.getDisplayName().replace(LanguageUtility.getLocal("misc.resonantinduction.ingot"), "").replaceAll("^ ", "").replaceAll(" $", "");
return (LanguageUtility.getLocal(this.getUnlocalizedName() + ".name")).replace("%v", name).replace(" ", " ");
}
}
return "";
}
@Override
public ItemStack onItemRightClick(ItemStack bucket, World world, EntityPlayer player)
{
//TODO pull fluid instance from metadata
return super.onItemRightClick(bucket, world, player);
}
@Override
public boolean tryPlaceContainedLiquid(World par1World, int par2, int par3, int par4)
{
return super.tryPlaceContainedLiquid(par1World, par2, par3, par4);
}
public static String getMaterialFromStack(ItemStack itemStack)
{
if (ResourceGenerator.materialNames.size() > itemStack.getItemDamage())
return ResourceGenerator.materialNames.get(itemStack.getItemDamage());
return null;
}
public ItemStack getStackFromMaterial(String name)
{
ItemStack itemStack = new ItemStack(this);
itemStack.setItemDamage(ResourceGenerator.materialNames.indexOf(name));
return itemStack;
}
@Override
public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List)
{
for (String materialName : ResourceGenerator.materialNames)
{
par3List.add(getStackFromMaterial(materialName));
}
}
@Override
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(ItemStack itemStack, int par2)
{
/**
* Auto-color based on the texture of the ingot.
*/
String name = ItemOreResource.getMaterialFromStack(itemStack);
if (ResourceGenerator.materialColors.containsKey(name))
{
return ResourceGenerator.materialColors.get(name);
}
return 16777215;
}
}

View file

@ -17,7 +17,8 @@ item.resonantinduction\:oreDust.name=%v Dust
item.resonantinduction\:oreDust.tooltip=Shift-right click on a cauldron to refine. item.resonantinduction\:oreDust.tooltip=Shift-right click on a cauldron to refine.
item.resonantinduction\:oreRefinedDust.name=%v Refined Dust item.resonantinduction\:oreRefinedDust.name=%v Refined Dust
item.resonantinduction\:oreRubble.name=%v Rubble item.resonantinduction\:oreRubble.name=%v Rubble
item.resonantinduction\:handCrank.name=Hand Crank item.resonantinduction\:bucketMixture.name=%v Mixture Bucket
item.resonantinduction\:bucketMolten.name=Molten %v Bucket
### Archaic Module ### Archaic Module
## machineMaterials ## machineMaterials
@ -38,6 +39,7 @@ tile.resonantinduction\:machineMaterial.10.name=Steel
## Items ## Items
item.resonantinduction\:imprint.name=Imprint item.resonantinduction\:imprint.name=Imprint
item.resonantinduction\:hammer.name=Hammer item.resonantinduction\:hammer.name=Hammer
item.resonantinduction\:handCrank.name=Hand Crank
## Machines ## Machines
tile.resonantinduction\:castingMold.name=Metal Caster tile.resonantinduction\:castingMold.name=Metal Caster

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB