From e8ee8b10f771aee7394448a2a9a3f85011e71026 Mon Sep 17 00:00:00 2001 From: MuXiu1997 Date: Tue, 5 Apr 2022 13:09:04 +0800 Subject: [PATCH] Implement IFluidContainerItem for LavaTankItemBlock (#46) * Update build.gradle * Implement IFluidContainerItem for LavaTankItemBlock * Drop the tag compound from ItemStack when no any other tag --- build.gradle | 190 ++++++++++-------- .../smeltery/blocks/LavaTankBlock.java | 44 ++-- .../itemblocks/LavaTankItemBlock.java | 105 +++++++++- .../smeltery/logic/LavaTankLogic.java | 7 +- 4 files changed, 237 insertions(+), 109 deletions(-) diff --git a/build.gradle b/build.gradle index 610879cb..67d13e8e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,34 +1,36 @@ -//version: 1643844119 +//version: 1646409286 /* DO NOT CHANGE THIS FILE! Also, you may replace this file at any time if there is an update available. Please check https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/build.gradle for updates. - */ +*/ import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import org.gradle.internal.logging.text.StyledTextOutput.Style +import org.gradle.internal.logging.text.StyledTextOutputFactory import java.util.concurrent.TimeUnit buildscript { repositories { maven { - name = "forge" - url = "https://maven.minecraftforge.net" + name 'forge' + url 'https://maven.minecraftforge.net' } maven { - name = "sonatype" - url = "https://oss.sonatype.org/content/repositories/snapshots/" + name 'sonatype' + url 'https://oss.sonatype.org/content/repositories/snapshots/' } maven { - name = "Scala CI dependencies" - url = "https://repo1.maven.org/maven2/" + name 'Scala CI dependencies' + url 'https://repo1.maven.org/maven2/' } maven { - name = "jitpack" - url = "https://jitpack.io" + name 'jitpack' + url 'https://jitpack.io' } } dependencies { @@ -37,21 +39,26 @@ buildscript { } plugins { + id 'java-library' id 'idea' id 'eclipse' id 'scala' - id('org.jetbrains.kotlin.jvm') version ('1.6.10') apply false - id('org.ajoberstar.grgit') version('4.1.1') - id('com.github.johnrengelman.shadow') version('4.0.4') - id('com.palantir.git-version') version('0.13.0') apply false - id('de.undercouch.download') version('5.0.1') - id('maven-publish') + id 'maven-publish' + id 'org.jetbrains.kotlin.jvm' version '1.5.30' apply false + id 'org.jetbrains.kotlin.kapt' version '1.5.30' apply false + id 'org.ajoberstar.grgit' version '4.1.1' + id 'com.github.johnrengelman.shadow' version '4.0.4' + id 'com.palantir.git-version' version '0.13.0' apply false + id 'de.undercouch.download' version '5.0.1' + id 'com.github.gmazzo.buildconfig' version '3.0.3' apply false } if (project.file('.git/HEAD').isFile()) { apply plugin: 'com.palantir.git-version' } +def out = services.get(StyledTextOutputFactory).create('an-output') + apply plugin: 'forge' def projectJavaVersion = JavaLanguageVersion.of(8) @@ -96,6 +103,7 @@ checkPropertyExists("usesShadowedDependencies") checkPropertyExists("developmentEnvironmentUserName") boolean noPublishedSources = project.findProperty("noPublishedSources") ? project.noPublishedSources.toBoolean() : false +boolean usesMixinDebug = project.findProperty('usesMixinDebug') ?: project.usesMixins.toBoolean() String javaSourceDir = "src/main/java/" String scalaSourceDir = "src/main/scala/" @@ -167,8 +175,8 @@ configurations.all { try { 'git config core.fileMode false'.execute() } -catch (Exception e) { - logger.error("\u001B[31mgit isn't installed at all\u001B[0m") +catch (Exception ignored) { + out.style(Style.Failure).println("git isn't installed at all") } // Pulls version first from the VERSION env and then git tag @@ -177,19 +185,22 @@ String versionOverride = System.getenv("VERSION") ?: null try { identifiedVersion = versionOverride == null ? gitVersion() : versionOverride } -catch (Exception e) { - logger.error("\n\u001B[1;31mThis mod must be version controlled by Git AND the repository must provide at least one tag,\n" + - "or the VERSION override must be set! \u001B[32m(Don't download from GitHub using the ZIP option, instead\n" + - "clone the repository, see\u001B[33m https://gtnh.miraheze.org/wiki/Development \u001B[32mfor details.)\u001B[0m\n"); +catch (Exception ignored) { + out.style(Style.Failure).text( + 'This mod must be version controlled by Git AND the repository must provide at least one tag,\n' + + 'or the VERSION override must be set! ').style(Style.SuccessHeader).text('(Do NOT download from GitHub using the ZIP option, instead\n' + + 'clone the repository, see ').style(Style.Info).text('https://gtnh.miraheze.org/wiki/Development').style(Style.SuccessHeader).println(' for details.)' + ) versionOverride = 'NO-GIT-TAG-SET' identifiedVersion = versionOverride } version = minecraftVersion + '-' + identifiedVersion -String modVersion = version +ext { + modVersion = identifiedVersion +} -if( identifiedVersion.equals(versionOverride) ) { - logger.error('\u001B[31m\u001B[7mWe hope you know what you\'re doing using\u001B[0m\u001B[1;34m ' + modVersion + '\u001B[0m\n'); - logger.error('\7\u001B[31mGoing to blindly try to use\u001B[1;34m ' + modVersion + '\u001B[0m\u001B[31m, this probably won\'t work the way you expect!!\u001B[0m\n'); +if(identifiedVersion == versionOverride) { + out.style(Style.Failure).text('Override version to ').style(Style.Identifier).text(modVersion).style(Style.Failure).println('!\7') } group = modGroup @@ -200,22 +211,25 @@ else { archivesBaseName = modId } - def arguments = [] def jvmArguments = [] -if(usesMixins.toBoolean()) { +if (usesMixins.toBoolean()) { arguments += [ "--tweakClass org.spongepowered.asm.launch.MixinTweaker" ] - jvmArguments += [ - "-Dmixin.debug.countInjections=true", "-Dmixin.debug.verbose=true", "-Dmixin.debug.export=true" - ] + if (usesMixinDebug.toBoolean()) { + jvmArguments += [ + "-Dmixin.debug.countInjections=true", + "-Dmixin.debug.verbose=true", + "-Dmixin.debug.export=true" + ] + } } minecraft { - version = minecraftVersion + "-" + forgeVersion + "-" + minecraftVersion - runDir = "run" + version = minecraftVersion + '-' + forgeVersion + '-' + minecraftVersion + runDir = 'run' if (replaceGradleTokenInFile) { replaceIn replaceGradleTokenInFile @@ -248,8 +262,8 @@ minecraft { } } -if(file("addon.gradle").exists()) { - apply from: "addon.gradle" +if(file('addon.gradle').exists()) { + apply from: 'addon.gradle' } apply from: 'repositories.gradle' @@ -262,58 +276,63 @@ configurations { repositories { maven { - name = "Overmind forge repo mirror" - url = "https://gregtech.overminddl1.com/" + name 'Overmind forge repo mirror' + url 'https://gregtech.overminddl1.com/' } if(usesMixins.toBoolean()) { maven { - name = "sponge" - url = "https://repo.spongepowered.org/repository/maven-public" + name 'sponge' + url 'https://repo.spongepowered.org/repository/maven-public' } maven { - url = "https://jitpack.io" + url 'https://jitpack.io' } } } dependencies { if(usesMixins.toBoolean()) { - annotationProcessor("org.ow2.asm:asm-debug-all:5.0.3") - annotationProcessor("com.google.guava:guava:24.1.1-jre") - annotationProcessor("com.google.code.gson:gson:2.8.6") - annotationProcessor("org.spongepowered:mixin:0.8-SNAPSHOT") + annotationProcessor('org.ow2.asm:asm-debug-all:5.0.3') + annotationProcessor('com.google.guava:guava:24.1.1-jre') + annotationProcessor('com.google.code.gson:gson:2.8.6') + annotationProcessor('org.spongepowered:mixin:0.8-SNAPSHOT') // using 0.8 to workaround a issue in 0.7 which fails mixin application - compile("com.github.GTNewHorizons:SpongePoweredMixin:0.7.12-GTNH") { + compile('com.github.GTNewHorizons:SpongePoweredMixin:0.7.12-GTNH') { // Mixin includes a lot of dependencies that are too up-to-date - exclude module: "launchwrapper" - exclude module: "guava" - exclude module: "gson" - exclude module: "commons-io" - exclude module: "log4j-core" + exclude module: 'launchwrapper' + exclude module: 'guava' + exclude module: 'gson' + exclude module: 'commons-io' + exclude module: 'log4j-core' } - compile("com.github.GTNewHorizons:SpongeMixins:1.5.0") + compile('com.github.GTNewHorizons:SpongeMixins:1.5.0') } } apply from: 'dependencies.gradle' -def mixingConfigRefMap = "mixins." + modId + ".refmap.json" +def mixingConfigRefMap = 'mixins.' + modId + '.refmap.json' def refMap = "${tasks.compileJava.temporaryDir}" + File.separator + mixingConfigRefMap def mixinSrg = "${tasks.reobf.temporaryDir}" + File.separator + "mixins.srg" task generateAssets { - if(usesMixins.toBoolean()) { - getFile("/src/main/resources/mixins." + modId + ".json").text = """{ + if (usesMixins.toBoolean()) { + def mixinConfigFile = getFile("/src/main/resources/mixins." + modId + ".json"); + if (!mixinConfigFile.exists()) { + mixinConfigFile.text = """{ "required": true, "minVersion": "0.7.11", "package": "${modGroup}.${mixinsPackage}", "plugin": "${modGroup}.${mixinPlugin}", "refmap": "${mixingConfigRefMap}", "target": "@env(DEFAULT)", - "compatibilityLevel": "JAVA_8" + "compatibilityLevel": "JAVA_8", + "mixins": [], + "client": [], + "server": [] } - """ + } } } @@ -401,28 +420,27 @@ tasks.withType(JavaExec).configureEach { ) } -processResources -{ +processResources { // this will ensure that this task is redone when the versions change. inputs.property "version", project.version inputs.property "mcversion", project.minecraft.version - + // replace stuff in mcmod.info, nothing else from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' - // replace version and mcversion + // replace modVersion and minecraftVersion expand "minecraftVersion": project.minecraft.version, - "modVersion": modVersion, - "modId": modId, - "modName": modName + "modVersion": modVersion, + "modId": modId, + "modName": modName } if(usesMixins.toBoolean()) { from refMap } - // copy everything else, thats not the mcmod.info + // copy everything else that's not the mcmod.info from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } @@ -430,7 +448,7 @@ processResources def getManifestAttributes() { def manifestAttributes = [:] - if(containsMixinsAndOrCoreModOnly.toBoolean() == false && (usesMixins.toBoolean() || coreModClass)) { + if(!containsMixinsAndOrCoreModOnly.toBoolean() && (usesMixins.toBoolean() || coreModClass)) { manifestAttributes += ["FMLCorePluginContainsFMLMod": true] } @@ -446,14 +464,14 @@ def getManifestAttributes() { manifestAttributes += [ "TweakClass" : "org.spongepowered.asm.launch.MixinTweaker", "MixinConfigs" : "mixins." + modId + ".json", - "ForceLoadAsMod" : containsMixinsAndOrCoreModOnly.toBoolean() == false + "ForceLoadAsMod" : !containsMixinsAndOrCoreModOnly.toBoolean() ] } return manifestAttributes } task sourcesJar(type: Jar) { - from (sourceSets.main.allJava) + from (sourceSets.main.allSource) from (file("$projectDir/LICENSE")) getArchiveClassifier().set('sources') } @@ -508,7 +526,7 @@ task devJar(type: Jar) { } task apiJar(type: Jar) { - from (sourceSets.main.allJava) { + from (sourceSets.main.allSource) { include modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/") + '/**' } @@ -533,14 +551,15 @@ artifacts { } } -// The gradle metadata includes all of the additional deps that we disabled from POM generation (including forgeBin with no groupID), +// The gradle metadata includes all of the additional deps that we disabled from POM generation (including forgeBin with no groupID), // and isn't strictly needed with the POM so just disable it. tasks.withType(GenerateModuleMetadata) { enabled = false } +// workaround variable hiding in pom processing +def projectConfigs = project.configurations -// publishing publishing { publications { maven(MavenPublication) { @@ -560,14 +579,21 @@ publishing { artifactId = System.getenv("ARTIFACT_ID") ?: project.name // Using the identified version, not project.version as it has the prepended 1.7.10 version = System.getenv("RELEASE_VERSION") ?: identifiedVersion - - // Remove all non GTNH deps here. - // Original intention was to remove an invalid forgeBin being generated without a groupId (mandatory), but - // it also removes all of the MC deps + + // remove extra garbage from minecraft and minecraftDeps configuration pom.withXml { + def badArtifacts = [:].withDefault {[] as Set} + for (configuration in [projectConfigs.minecraft, projectConfigs.minecraftDeps]) { + for (dependency in configuration.allDependencies) { + badArtifacts[dependency.group == null ? "" : dependency.group] += dependency.name + } + } + // example for specifying extra stuff to ignore + // badArtifacts["org.example.group"] += "artifactName" + Node pomNode = asNode() pomNode.dependencies.'*'.findAll() { - it.groupId.text() != 'com.github.GTNewHorizons' + badArtifacts[it.groupId.text()].contains(it.artifactId.text()) }.each() { it.parent().remove(it) } @@ -599,7 +625,7 @@ if (isNewBuildScriptVersionAvailable(projectDir.toString())) { if (autoUpdateBuildScript.toBoolean()) { performBuildScriptUpdate(projectDir.toString()) } else { - println("Build script update available! Run 'gradle updateBuildScript'") + out.style(Style.SuccessHeader).println("Build script update available! Run 'gradle updateBuildScript'") } } @@ -611,7 +637,7 @@ boolean performBuildScriptUpdate(String projectDir) { if (isNewBuildScriptVersionAvailable(projectDir)) { def buildscriptFile = getFile("build.gradle") availableBuildScriptUrl().withInputStream { i -> buildscriptFile.withOutputStream { it << i } } - print("Build script updated. Please REIMPORT the project or RESTART your IDE!") + out.style(Style.Success).print("Build script updated. Please REIMPORT the project or RESTART your IDE!") return true } return false @@ -673,26 +699,26 @@ def deobf(String sourceURL) { } } -// The method above is to be prefered. Use this method if the filename is not at the end of the URL. +// The method above is to be preferred. Use this method if the filename is not at the end of the URL. def deobf(String sourceURL, String fileName) { String cacheDir = System.getProperty("user.home") + "/.gradle/caches/" String bon2Dir = cacheDir + "forge_gradle/deobf" String bon2File = bon2Dir + "/BON2-2.5.0.jar" String obfFile = cacheDir + "modules-2/files-2.1/" + fileName + ".jar" String deobfFile = cacheDir + "modules-2/files-2.1/" + fileName + "-deobf.jar" - + if(file(deobfFile).exists()) { return files(deobfFile) } - download { + download.run { src 'https://github.com/GTNewHorizons/BON2/releases/download/2.5.0/BON2-2.5.0.CUSTOM-all.jar' dest bon2File quiet true overwrite false } - download { + download.run { src sourceURL dest obfFile quiet true @@ -711,7 +737,7 @@ def deobf(String sourceURL, String fileName) { // Helper methods def checkPropertyExists(String propertyName) { - if (project.hasProperty(propertyName) == false) { + if (!project.hasProperty(propertyName)) { throw new GradleException("This project requires a property \"" + propertyName + "\"! Please add it your \"gradle.properties\". You can find all properties and their description here: https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/gradle.properties") } } diff --git a/src/main/java/tconstruct/smeltery/blocks/LavaTankBlock.java b/src/main/java/tconstruct/smeltery/blocks/LavaTankBlock.java index 756e8c91..68b3376f 100644 --- a/src/main/java/tconstruct/smeltery/blocks/LavaTankBlock.java +++ b/src/main/java/tconstruct/smeltery/blocks/LavaTankBlock.java @@ -1,26 +1,33 @@ package tconstruct.smeltery.blocks; -import cpw.mods.fml.relauncher.*; -import java.util.List; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import mantle.blocks.iface.IServantLogic; -import net.minecraft.block.*; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.*; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; -import net.minecraft.world.*; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.*; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTankInfo; import tconstruct.library.TConstructRegistry; +import tconstruct.smeltery.itemblocks.LavaTankItemBlock; import tconstruct.smeltery.logic.LavaTankLogic; import tconstruct.smeltery.model.TankRender; +import java.util.List; + public class LavaTankBlock extends BlockContainer { public IIcon[] icons; @@ -274,11 +281,8 @@ public class LavaTankBlock extends BlockContainer FluidStack liquid = logic.tank.getFluid(); if (liquid != null) { - NBTTagCompound tag = new NBTTagCompound(); - NBTTagCompound liquidTag = new NBTTagCompound(); - liquid.writeToNBT(liquidTag); - tag.setTag("Fluid", liquidTag); - stack.setTagCompound(tag); + LavaTankItemBlock lavaTankItemBlock = (LavaTankItemBlock) stack.getItem(); + lavaTankItemBlock.setFluid(stack, liquid); } if (!player.capabilities.isCreativeMode || player.isSneaking()) dropTankBlock(world, x, y, z, stack); @@ -309,15 +313,11 @@ public class LavaTankBlock extends BlockContainer @Override public void onBlockPlacedBy (World world, int x, int y, int z, EntityLivingBase living, ItemStack stack) { - if (stack.hasTagCompound()) - { - NBTTagCompound liquidTag = stack.getTagCompound().getCompoundTag("Fluid"); - if (liquidTag != null) - { - FluidStack liquid = FluidStack.loadFluidStackFromNBT(liquidTag); - LavaTankLogic logic = (LavaTankLogic) world.getTileEntity(x, y, z); - logic.tank.setFluid(liquid); - } + LavaTankItemBlock lavaTankItemBlock = (LavaTankItemBlock) stack.getItem(); + FluidStack liquid = lavaTankItemBlock.getFluid(stack); + if (liquid != null) { + LavaTankLogic logic = (LavaTankLogic) world.getTileEntity(x, y, z); + logic.tank.setFluid(liquid); } } @@ -339,4 +339,4 @@ public class LavaTankBlock extends BlockContainer { return (LavaTankLogic) blockAccess.getTileEntity(par1, par2, par3); } -} \ No newline at end of file +} diff --git a/src/main/java/tconstruct/smeltery/itemblocks/LavaTankItemBlock.java b/src/main/java/tconstruct/smeltery/itemblocks/LavaTankItemBlock.java index f3efad02..d9aa8c7f 100644 --- a/src/main/java/tconstruct/smeltery/itemblocks/LavaTankItemBlock.java +++ b/src/main/java/tconstruct/smeltery/itemblocks/LavaTankItemBlock.java @@ -1,14 +1,18 @@ package tconstruct.smeltery.itemblocks; -import java.util.List; import mantle.blocks.abstracts.MultiItemBlock; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidContainerItem; +import tconstruct.smeltery.logic.LavaTankLogic; -public class LavaTankItemBlock extends MultiItemBlock +import java.util.List; + +public class LavaTankItemBlock extends MultiItemBlock implements IFluidContainerItem { public static final String blockTypes[] = { "Tank", "Gague", "Window" }; @@ -37,4 +41,101 @@ public class LavaTankItemBlock extends MultiItemBlock list.add(StatCollector.translateToLocal("searedtank2.tooltip")); } } + + /** + * @param container + * ItemStack which is the fluid container. + * @return FluidStack representing the fluid in the container, null if the container is empty. + */ + @Override + public FluidStack getFluid(ItemStack container) { + if (container.hasTagCompound()) { + NBTTagCompound nbt = container.getTagCompound(); + if (nbt.hasKey("Fluid")) { + return FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("Fluid")); + } + } + return null; + } + + /** + * @param container + * ItemStack which is the fluid container. + * @param resource + * FluidStack attempting to set to the container. + */ + public void setFluid(ItemStack container, FluidStack resource) { + if (container == null) return; + if (resource != null && 0 < resource.amount) { + NBTTagCompound nbt = container.getTagCompound() != null ? container.getTagCompound() : new NBTTagCompound(); + nbt.setTag("Fluid", resource.writeToNBT(new NBTTagCompound())); + container.setTagCompound(nbt); + return; + } + NBTTagCompound nbt = container.getTagCompound(); + if (nbt == null) return; + nbt.removeTag("Fluid"); + if (nbt.hasNoTags()) nbt = null; + container.setTagCompound(nbt); + } + + + /** + * @param container + * ItemStack which is the fluid container. + * @return Capacity of this fluid container. + */ + @Override + public int getCapacity(ItemStack container) { + return LavaTankLogic.tankCapacity; + } + + /** + * @param container + * ItemStack which is the fluid container. + * @param resource + * FluidStack attempting to fill the container. + * @param doFill + * If false, the fill will only be simulated. + * @return Amount of fluid that was (or would have been, if simulated) filled into the + * container. + */ + @Override + public int fill(ItemStack container, FluidStack resource, boolean doFill) { + if (container.stackSize != 1) return 0; + if (resource == null || resource.amount <= 0) return 0; + FluidStack fluidStack = this.getFluid(container); + if (fluidStack == null) fluidStack = new FluidStack(resource, 0); + if (!fluidStack.isFluidEqual(resource)) return 0; + int amount = Math.min(this.getCapacity(container) - fluidStack.amount, resource.amount); + if (doFill && amount > 0) { + fluidStack.amount += amount; + this.setFluid(container, fluidStack); + } + return amount; + } + + /** + * @param container + * ItemStack which is the fluid container. + * @param maxDrain + * Maximum amount of fluid to be removed from the container. + * @param doDrain + * If false, the drain will only be simulated. + * @return Amount of fluid that was (or would have been, if simulated) drained from the + * container. + */ + @Override + public FluidStack drain(ItemStack container, int maxDrain, boolean doDrain) { + if (container.stackSize != 1) return null; + FluidStack fluidStack = this.getFluid(container); + if (fluidStack == null || fluidStack.amount <= 0) return null; + int drain = Math.min(fluidStack.amount, maxDrain); + if (drain <= 0) return null; + if (doDrain) { + fluidStack.amount -= drain; + this.setFluid(container, fluidStack); + } + return new FluidStack(fluidStack, drain); + } } diff --git a/src/main/java/tconstruct/smeltery/logic/LavaTankLogic.java b/src/main/java/tconstruct/smeltery/logic/LavaTankLogic.java index 4d471224..f1fa6d7b 100644 --- a/src/main/java/tconstruct/smeltery/logic/LavaTankLogic.java +++ b/src/main/java/tconstruct/smeltery/logic/LavaTankLogic.java @@ -11,10 +11,11 @@ public class LavaTankLogic extends MultiServantLogic implements IFluidHandler { public FluidTank tank; public int renderOffset; + public final static int tankCapacity = FluidContainerRegistry.BUCKET_VOLUME * 4; public LavaTankLogic() { - tank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME * 4); + tank = new FluidTank(tankCapacity); } @Override @@ -80,7 +81,7 @@ public class LavaTankLogic extends MultiServantLogic implements IFluidHandler /* * @Override public IFluidTank[] getTanks (ForgeDirection direction) { * return new IFluidTank[] { tank }; } - * + * * @Override public IFluidTank getTank (ForgeDirection direction, FluidStack * type) { return tank; } */ @@ -193,4 +194,4 @@ public class LavaTankLogic extends MultiServantLogic implements IFluidHandler { return 15 * tank.getFluidAmount() / tank.getCapacity(); } -} \ No newline at end of file +}