Compare commits

..
3 Commits
Author SHA1 Message Date
Martin Robertz cce16d497d Merge branch 'master' into dev 2024-06-05 22:49:43 +02:00
Martin Robertz 9d68880fd5 Merge remote-tracking branch 'TheUnderTaker11/git-please' into dev 2024-06-02 23:09:55 +02:00
CreditScore 77f3e6974f Travel Staff Blink Keybind fixes.
Fixes 2 separate bugs with the SoT keybind.
1. Staff of Teleportation in GTNH pack specifically didn't work due to reporting as having 0 power through the RF API. Fixed this by having it always report that it's full of power since it has infinite.
2. BlackSteelSword and EndSteelSword (The Ender and MKII) both were quite funky with keybind, causing no teleports to happen when they really should have.
Fixed this through tweaks to how this is handled in a number of places to allow for proper handling while not changing the default held/shift held behavior.

Tested in SP, Anchor behavior while holding staffs and Swords with travel thing on them work as expected. Keybind now works and is able to use swords with travel thing on them.
One quirk is that if you are holding a sword with travel upgrade, but NOT shifting, the sword itself stops counting as a valid travel item. So if ONLY using sword no separate SoT the keybind will not work unless you hold shift. If you have another SoT in your inventory it will identify and use that and still blink you upon hitting keybind.
This quirk doesn't really matter in most cases, just something worth noting I guess.
2024-05-19 15:13:50 -05:00
1260 changed files with 6517 additions and 4627 deletions

No files matched your search

+2 -2
View File
@@ -3,9 +3,9 @@ name: Build and test
on:
pull_request:
branches: [ master, main, release/** ]
branches: [ master, main ]
push:
branches: [ master, main, release/** ]
branches: [ master, main ]
jobs:
build-and-test:
-17
View File
@@ -1,17 +0,0 @@
name: Optimize images
on:
pull_request:
branches: [ master, main, release/** ]
paths:
- "**/*.png"
push:
branches: [ master, main, release/** ]
paths:
- "**/*.png"
jobs:
optimize-images:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/optimize-images.yml@master
secrets: inherit
-2
View File
@@ -27,5 +27,3 @@ whitelist.json
*.iws
src/main/resources/mixins.*.json
*.bat
layout.json
.DS_Store
+15 -22
View File
@@ -1,35 +1,28 @@
// Add your dependencies here
dependencies {
api('com.github.GTNewHorizons:EnderCore:0.5.15:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:ForestryMC:4.11.37:dev')
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.8.130-GTNH:dev')
api("com.github.GTNewHorizons:GTNHLib:0.11.45:dev")
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.63:dev')
api('com.github.GTNewHorizons:EnderCore:0.4.6:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:ForestryMC:4.9.3:dev')
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.6.1-GTNH:dev')
compileOnly("com.github.GTNewHorizons:GTNHLib:0.2.11:dev")
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.39:dev')
api('curse.maven:cofh-lib-220333:2388748') // https://www.curseforge.com/minecraft/mc-mods/cofh-lib/files/2388748
shadowImplementation('cglib:cglib-nodep:3.3.0')
api("com.github.GTNewHorizons:TinkersConstruct:1.14.107-GTNH:dev")
devOnlyNonPublishable('com.github.GTNewHorizons:waila:1.19.34:dev') {transitive = false}
compileOnly('ganymedes01.etfuturum:Et-Futurum-Requiem:2.6.48-GTNH:dev') {transitive = false}
runtimeOnlyNonPublishable('com.github.GTNewHorizons:WAILAPlugins:0.7.2:dev') {transitive = false}
compileOnly("com.github.GTNewHorizons:Backhand:1.8.14:dev") { transitive = false }
compileOnly('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-999-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Baubles-Expanded:2.2.22-GTNH:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.54.129:dev') {transitive = false}
compileOnly("com.github.GTNewHorizons:ModularUI2:2.3.88-1.7.10:dev") {transitive = false}
compileOnly('com.github.GTNewHorizons:Railcraft:9.17.31:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:StorageDrawers:2.2.29-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Chisel:2.17.32-GTNH:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.12.61-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:waila:1.8.0:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-404-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Baubles:1.0.4:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.48.20:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:Railcraft:9.15.8:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:StorageDrawers:1.13.5-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Chisel:2.15.0-GTNH:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.10.11-GTNH:api') {transitive = false}
compileOnly('curse.maven:minefactory-reloaded-66672:2366150') // https://www.curseforge.com/minecraft/mc-mods/minefactory-reloaded/files/2366150
compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev')
compileOnly('curse.maven:ee3-65509:2305023') // https://www.curseforge.com/minecraft/mc-mods/ee3/files/2305023
compileOnly(rfg.deobf('curse.maven:computercraft-67504:2269339')) // https://www.curseforge.com/minecraft/mc-mods/computercraft/files/2269339
compileOnly(rfg.deobf('curse.maven:mekanism-268560:2475797')) // https://www.curseforge.com/minecraft/mc-mods/mekanism/files/2475797
compileOnly(rfg.deobf('maven.modrinth:immibis-microblocks:59.1.2')) // https://modrinth.com/mod/immibis-microblocks/version/59.1.2
compileOnly('com.github.GTNewHorizons:BetterBuildersWands:0.13.12-GTNH:dev@jar')
compileOnlyApi('com.github.GTNewHorizons:Angelica:2.2.10:api') {transitive = false}
compileOnly("com.github.GTNewHorizons:Hodgepodge:2.7.196:dev")
compileOnly('curse.maven:automagy-222153:2285272')
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-alpha52:api') {transitive = false}
}
+9 -55
View File
@@ -14,7 +14,7 @@ modId = EnderIO
modGroup = crazypants.enderio
# Whether to use modGroup as the maven publishing group.
# When false, com.github.GTNewHorizons is used.
# Due to a history of using JitPack, the default is com.github.GTNewHorizons for all mods.
useModGroupForPublishing = false
# Updates your build.gradle and settings.gradle automatically whenever an update is available.
@@ -39,37 +39,13 @@ remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/co
# `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE.
developmentEnvironmentUserName = Developer
# Enables modern Java syntax support. Valid values:
# - false: No modern syntax, Java 8 only
# - jabel: Jabel syntax-only support, compiles to J8 bytecode
# - jvmDowngrader: Full modern Java via JVM Downgrader (syntax + stdlib APIs)
# - modern: Native modern Java bytecode, no downgrading
enableModernJavaSyntax = jabel
# If set, ignores the above setting and compiles with the given toolchain. This may cause unexpected issues,
# and should *not* be used in most situations. -1 disables this.
# forceToolchainVersion = -1
# Target JVM version for JVM Downgrader bytecode downgrading.
# Only used when enableModernJavaSyntax = jvmDowngrader
# downgradeTargetVersion = 8
# Comma-separated list of Java versions for multi-release jar support (JVM Downgrader only).
# Classes will be available in META-INF/versions/N/ for each version N in this list.
# Default: "21,25" (J25+ gets native classes, J21-24 gets partial downgrade, J8-20 gets full downgrade).
# jvmDowngraderMultiReleaseVersions = 21,25
# Specifies how JVM Downgrader API stubs are provided. Options:
# - shade: Shade minimized stubs into the jar
# - gtnhlib: GTNHLib provides stubs at runtime (adds version constraint)
# - external: Another dependency provides stubs (no constraint, no warning)
# - (empty): Warning reminding you to configure stubs
# Note: 'shade' option requires you to verify license compliance, see: https://github.com/unimined/JvmDowngrader/blob/main/LICENSE.md
# jvmDowngraderStubsProvider =
# Enables using modern Java syntax (up to version 17) via Jabel, while still targeting JVM 8.
# See https://github.com/bsideup/jabel for details on how this works.
enableModernJavaSyntax = false
# Enables injecting missing generics into the decompiled source code for a better coding experience.
# Turns most publicly visible List, Map, etc. into proper List<E>, Map<K, V> types.
enableGenericInjection = true
enableGenericInjection = false
# Generate a class with a String field for the mod version named as defined below.
# If generateGradleTokenClass is empty or not missing, no such class will be generated.
@@ -104,25 +80,18 @@ apiPackage = api
# Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/
# There can be multiple files in a space-separated list.
# Example value: mymodid_at.cfg nei_at.cfg
accessTransformersFile = enderio_at.cfg
accessTransformersFile =
# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
usesMixins = false
# Set to a non-empty string to configure mixins in a separate source set under src/VALUE, instead of src/main.
# This can speed up compile times thanks to not running the mixin annotation processor on all input sources.
# Mixin classes will have access to "main" classes, but not the other way around.
separateMixinSourceSet =
# Adds some debug arguments like verbose output and class export.
usesMixinDebug = false
# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise.
mixinPlugin =
# Specify the package that contains all of your Mixins. The package must exist or
# the build will fail. If you have a package property defined in your mixins.<modid>.json,
# it must match with this or the build will fail.
# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail!
mixinsPackage =
# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin!
@@ -148,15 +117,9 @@ minimizeShadowedDependencies = true
# If disabled, won't rename the shadowed classes.
relocateShadowedDependencies = true
# Adds CurseMaven, Modrinth, and some more well-known 1.7.10 repositories.
# Adds the GTNH maven, CurseMaven, Modrinth, and some more well-known 1.7.10 repositories.
includeWellKnownRepositories = true
# A list of repositories to exclude from the includeWellKnownRepositories setting. Should be a space separated
# list of strings, with the acceptable keys being(case does not matter):
# cursemaven
# modrinth
excludeWellKnownRepositories =
# Change these to your Maven coordinates if you want to publish to a custom Maven repository instead of the default GTNH Maven.
# Authenticate with the MAVEN_USER and MAVEN_PASSWORD environment variables.
# If you need a more complex setup disable maven publishing here and add a publishing repository to addon.gradle.
@@ -177,7 +140,7 @@ modrinthProjectId =
# type can be one of [project, version],
# and the name is the Modrinth project or version slug/id of the other mod.
# Example: required-project:fplib;optional-project:gasstation;incompatible-project:gregtech
# Note: UniMixins is automatically set as a required dependency if usesMixins = true.
# Note: GTNH Mixins is automatically set as a required dependency if usesMixins = true
modrinthRelations =
# Publishing to CurseForge requires you to set the CURSEFORGE_TOKEN environment variable to one of your CurseForge API tokens.
@@ -198,12 +161,6 @@ curseForgeRelations =
# projects. New projects should not use this parameter.
# customArchiveBaseName =
# Optional parameter to customize the default working directory used by the runClient* tasks. Relative to the project directory.
# runClientWorkingDirectory = run/client
# Optional parameter to customize the default working directory used by the runServer* tasks. Relative to the project directory.
# runServerWorkingDirectory = run/server
# Optional parameter to have the build automatically fail if an illegal version is used.
# This can be useful if you e.g. only want to allow versions in the form of '1.1.xxx'.
# The check is ONLY performed if the version is a git tag.
@@ -233,6 +190,3 @@ curseForgeRelations =
# This is meant to be set in $HOME/.gradle/gradle.properties.
# ideaCheckSpotlessOnBuild = true
# Non-GTNH properties
org.gradle.configuration-cache = true
org.gradle.parallel = true
-12
View File
@@ -1,12 +0,0 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/539ea72837c6244075f8ee037babc29e/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/876dbbf00bf4ef6190f7da074cee903a/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/539ea72837c6244075f8ee037babc29e/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/876dbbf00bf4ef6190f7da074cee903a/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/9064f22734b42ac03e85df04b632e167/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/4d0277c49991306ac78048580fe34bcf/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/539ea72837c6244075f8ee037babc29e/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/876dbbf00bf4ef6190f7da074cee903a/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a9fa3b809e484a1e1ac4308a5dda661a/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/aa99913fa6d767d899ffc96082da01ca/redirect
toolchainVersion=25
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Vendored
+8 -7
View File
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Copyright © 2015 the original authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -15,8 +15,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
@@ -57,7 +55,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -86,7 +84,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -114,6 +112,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
@@ -171,6 +170,7 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -203,14 +203,15 @@ fi
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
Vendored
+2 -3
View File
@@ -13,8 +13,6 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@@ -70,10 +68,11 @@ goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.29'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.22'
}
@@ -27,6 +27,7 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.conduit.BlockConduitBundle;
import crazypants.enderio.conduit.IConduit;
import crazypants.enderio.conduit.TileConduitBundle;
import crazypants.enderio.conduit.facade.FacadeRenderer;
import crazypants.enderio.conduit.gas.GasConduit;
import crazypants.enderio.conduit.gas.GasUtil;
@@ -103,8 +104,11 @@ import crazypants.enderio.machine.painter.BlockPaintedFenceGateRenderer;
import crazypants.enderio.machine.painter.BlockPaintedGlowstone;
import crazypants.enderio.machine.painter.PaintedBlockRenderer;
import crazypants.enderio.machine.painter.PaintedItemRenderer;
import crazypants.enderio.machine.power.BlockCapacitorBank;
import crazypants.enderio.machine.power.CapBankRenderer2;
import crazypants.enderio.machine.power.CapacitorBankRenderer;
import crazypants.enderio.machine.ranged.RangeEntity;
import crazypants.enderio.machine.ranged.RangeRenderer;
import crazypants.enderio.machine.ranged.RangeRenerer;
import crazypants.enderio.machine.reservoir.ReservoirRenderer;
import crazypants.enderio.machine.reservoir.TileReservoir;
import crazypants.enderio.machine.solar.BlockSolarPanel;
@@ -238,8 +242,6 @@ public class ClientProxy extends CommonProxy {
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockPainter), machRen);
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockCrafter), machRen);
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockBuffer), machRen);
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockPoweredSpawner), machRen);
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockSliceAndSplice), machRen);
MinecraftForgeClient.registerItemRenderer(EnderIO.itemBrokenSpawner, new BrokenSpawnerRenderer());
@@ -258,15 +260,13 @@ public class ClientProxy extends CommonProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileFarmStation.class, new FarmingStationSpecialRenderer());
BlockSoulBinder.renderId = RenderingRegistry.getNextAvailableRenderId();
SoulBinderRenderer soulBinderRenderer = new SoulBinderRenderer();
RenderingRegistry.registerBlockHandler(soulBinderRenderer);
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockSoulFuser), soulBinderRenderer);
RenderingRegistry.registerBlockHandler(new SoulBinderRenderer());
ObeliskRenderer defaultObeliskRenderer = new ObeliskRenderer();
BlockObeliskAbstract.defaultObeliskRenderId = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerBlockHandler(defaultObeliskRenderer);
ObeliskSpecialRenderer<TileAttractor> attRen = new ObeliskSpecialRenderer<>(
ObeliskSpecialRenderer<TileAttractor> attRen = new ObeliskSpecialRenderer<TileAttractor>(
new ItemStack(EnderIO.itemMaterial, 1, Material.ATTRACTOR_CRYSTAL.ordinal()),
defaultObeliskRenderer);
ClientRegistry.bindTileEntitySpecialRenderer(TileAttractor.class, attRen);
@@ -276,7 +276,7 @@ public class ClientProxy extends CommonProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileAversionObelisk.class, sgr);
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockSpawnGuard), sgr);
ObeliskSpecialRenderer<TileExperienceObelisk> eor = new ObeliskSpecialRenderer<>(
ObeliskSpecialRenderer<TileExperienceObelisk> eor = new ObeliskSpecialRenderer<TileExperienceObelisk>(
new ItemStack(EnderIO.itemXpTransfer),
defaultObeliskRenderer);
ClientRegistry.bindTileEntitySpecialRenderer(TileExperienceObelisk.class, eor);
@@ -289,7 +289,7 @@ public class ClientProxy extends CommonProxy {
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockWeatherObelisk), twr);
BlockCombustionGenerator.renderId = RenderingRegistry.getNextAvailableRenderId();
TechneMachineRenderer<TileCombustionGenerator> cr = new TechneMachineRenderer<>(
TechneMachineRenderer<TileCombustionGenerator> cr = new TechneMachineRenderer<TileCombustionGenerator>(
EnderIO.blockCombustionGenerator,
"models/combustionGen");
RenderingRegistry.registerBlockHandler(cr);
@@ -305,7 +305,7 @@ public class ClientProxy extends CommonProxy {
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockKillerJoe), kjr);
BlockVat.renderId = RenderingRegistry.getNextAvailableRenderId();
TechneMachineRenderer<TileVat> vr = new TechneMachineRenderer<>(EnderIO.blockVat, "models/vat");
TechneMachineRenderer<TileVat> vr = new TechneMachineRenderer<TileVat>(EnderIO.blockVat, "models/vat");
RenderingRegistry.registerBlockHandler(vr);
FusedQuartzFrameRenderer fqfr = new FusedQuartzFrameRenderer();
@@ -322,6 +322,13 @@ public class ClientProxy extends CommonProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileCapBank.class, newCbr);
}
CapacitorBankRenderer capr = new CapacitorBankRenderer();
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockCapacitorBank), capr);
BlockCapacitorBank.renderId = RenderingRegistry.getNextAvailableRenderId();
CapBankRenderer2 cbr2 = new CapBankRenderer2();
RenderingRegistry.registerBlockHandler(cbr2);
BlockVacuumChest.renderId = RenderingRegistry.getNextAvailableRenderId();
VacuumChestRenderer vcr = new VacuumChestRenderer();
RenderingRegistry.registerBlockHandler(vcr);
@@ -364,7 +371,6 @@ public class ClientProxy extends CommonProxy {
TelePadRenderer telePadRenderer = new TelePadRenderer();
RenderingRegistry.registerBlockHandler(telePadRenderer);
ClientRegistry.bindTileEntitySpecialRenderer(TileTelePad.class, new TelePadSpecialRenderer(telePadRenderer));
MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(EnderIO.blockTelePad), telePadRenderer);
MinecraftForgeClient.registerItemRenderer(EnderIO.itemMachinePart, new MachinePartRenderer());
MinecraftForgeClient.registerItemRenderer(EnderIO.itemConduitFacade, new FacadeRenderer());
@@ -372,6 +378,7 @@ public class ClientProxy extends CommonProxy {
cbr = new ConduitBundleRenderer((float) Config.conduitScale);
BlockConduitBundle.rendererId = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerBlockHandler(cbr);
ClientRegistry.bindTileEntitySpecialRenderer(TileConduitBundle.class, cbr);
ClientRegistry.bindTileEntitySpecialRenderer(TileTravelAnchor.class, new TravelEntitySpecialRenderer());
@@ -414,7 +421,7 @@ public class ClientProxy extends CommonProxy {
FMLCommonHandler.instance().bus().register(KeyTracker.instance);
RenderingRegistry.registerEntityRenderingHandler(SoundEntity.class, new SoundRenderer());
RenderingRegistry.registerEntityRenderingHandler(RangeEntity.class, new RangeRenderer());
RenderingRegistry.registerEntityRenderingHandler(RangeEntity.class, new RangeRenerer());
MinecraftForge.EVENT_BUS.register(SoundDetector.instance);
FMLCommonHandler.instance().bus().register(SoundDetector.instance);
@@ -1,5 +1,7 @@
package crazypants.enderio;
import java.text.DecimalFormat;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
@@ -7,27 +9,20 @@ import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.event.FMLServerAboutToStartEvent;
import cpw.mods.fml.common.event.FMLServerStartedEvent;
import cpw.mods.fml.common.event.FMLServerStoppedEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent;
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
import cpw.mods.fml.common.gameevent.TickEvent.ServerTickEvent;
import crazypants.enderio.conduit.ConduitNetworkTickHandler;
import crazypants.enderio.conduit.IConduit;
import crazypants.enderio.conduit.render.ConduitRenderer;
import crazypants.enderio.machine.hypercube.HyperCubeRegister;
import crazypants.enderio.machine.transceiver.ServerChannelRegister;
import crazypants.enderio.machine.wireless.WirelessChargerController;
public class CommonProxy {
private static final DecimalFormat FORMAT = new DecimalFormat("########0.000");
protected long serverTickCount = 0;
protected long clientTickCount = 0;
protected final TickTimer tickTimer = new TickTimer();
public ConduitNetworkTickHandler conduitNetworkTickHandler = null;
public WirelessChargerController wirelessChargerController = null;
public CommonProxy() {}
@@ -49,7 +44,7 @@ public class CommonProxy {
}
public void loadIcons() {
;
}
public void load() {
@@ -81,26 +76,6 @@ public class CommonProxy {
return new ResourceLocation(EnderIO.DOMAIN + TEXTURE_PATH + name + TEXTURE_EXT);
}
public void onServerAboutToStart(FMLServerAboutToStartEvent event) {
conduitNetworkTickHandler = new ConduitNetworkTickHandler();
FMLCommonHandler.instance().bus().register(conduitNetworkTickHandler);
wirelessChargerController = new WirelessChargerController();
FMLCommonHandler.instance().bus().register(wirelessChargerController);
}
public void onServerStarted(FMLServerStartedEvent event) {
HyperCubeRegister.load();
ServerChannelRegister.load();
}
public void onServerStopped(FMLServerStoppedEvent event) {
HyperCubeRegister.unload();
FMLCommonHandler.instance().bus().unregister(conduitNetworkTickHandler);
conduitNetworkTickHandler = null;
FMLCommonHandler.instance().bus().unregister(wirelessChargerController);
wirelessChargerController = null;
}
public final class TickTimer {
@SubscribeEvent
+27 -46
View File
@@ -38,7 +38,6 @@ import cpw.mods.fml.common.event.FMLLoadCompleteEvent;
import cpw.mods.fml.common.event.FMLMissingMappingsEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerAboutToStartEvent;
import cpw.mods.fml.common.event.FMLServerStartedEvent;
import cpw.mods.fml.common.event.FMLServerStoppedEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
@@ -47,7 +46,6 @@ import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import crazypants.enderio.api.IMC;
import crazypants.enderio.betterbuilderswands.PaintedCustomMapping;
import crazypants.enderio.block.BlockDarkSteelAnvil;
import crazypants.enderio.block.BlockDarkSteelLadder;
import crazypants.enderio.block.BlockDarkSteelPressurePlate;
@@ -113,6 +111,7 @@ import crazypants.enderio.machine.generator.zombie.BlockZombieGenerator.BlockEnd
import crazypants.enderio.machine.generator.zombie.BlockZombieGenerator.BlockFrankenZombieGenerator;
import crazypants.enderio.machine.generator.zombie.PacketNutrientTank;
import crazypants.enderio.machine.hypercube.BlockHyperCube;
import crazypants.enderio.machine.hypercube.HyperCubeRegister;
import crazypants.enderio.machine.invpanel.BlockInventoryPanel;
import crazypants.enderio.machine.killera.BlockKillerJoe;
import crazypants.enderio.machine.light.BlockElectricLight;
@@ -133,6 +132,7 @@ import crazypants.enderio.machine.painter.BlockPaintedStair;
import crazypants.enderio.machine.painter.BlockPaintedWall;
import crazypants.enderio.machine.painter.BlockPainter;
import crazypants.enderio.machine.painter.PaintSourceValidator;
import crazypants.enderio.machine.power.BlockCapacitorBank;
import crazypants.enderio.machine.ranged.RangeEntity;
import crazypants.enderio.machine.reservoir.BlockReservoir;
import crazypants.enderio.machine.slicensplice.BlockSliceAndSplice;
@@ -182,18 +182,12 @@ import crazypants.enderio.thaumcraft.ThaumcraftCompat;
import crazypants.enderio.tool.EnderIOCrashCallable;
import crazypants.util.EE3Util;
@Mod(modid = MODID, name = MOD_NAME, version = VERSION, dependencies = """
required-after:CoFHLib@[1.7.10R1.0.3B3,);\
required-after:endercore;\
required-after:gtnhlib@[0.9.47,);\
after:MineFactoryReloaded;\
after:Forestry;\
after:Waila@[1.5.8,);\
after:Thaumcraft;\
after:appliedenergistics2@[rv2-beta-8,);\
after:Railcraft@[9.16.7,);\
after:betterbuilderswands@[0.13.12,)\
""", guiFactory = "crazypants.enderio.config.ConfigFactoryEIO")
@Mod(
modid = MODID,
name = MOD_NAME,
version = VERSION,
dependencies = "required-after:CoFHLib@(1.0.3B3,);after:endercore;after:MineFactoryReloaded;after:Forestry;after:Waila@[1.5.8,);after:Thaumcraft;after:appliedenergistics2@[rv2-beta-8,);after:chisel",
guiFactory = "crazypants.enderio.config.ConfigFactoryEIO")
public class EnderIO {
public static final String MODID = "EnderIO";
@@ -214,11 +208,7 @@ public class EnderIO {
public static final Lang lang = new Lang("enderio");
public static final boolean hasLwjgl3 = Loader.isModLoaded("lwjgl3ify");
public static final boolean hasGT5 = Loader.isModLoaded("gregtech") && !Loader.isModLoaded("gregapi");
public static final boolean hasHP = Loader.isModLoaded("hodgepodge");
public static final boolean hasEtFuturum = Loader.isModLoaded("etfuturum");
public static final boolean hasWailaPlugins = Loader.isModLoaded("wailaplugins");
public static final boolean hasAutomagy = Loader.isModLoaded("Automagy");
public static final boolean hasGT5 = Loader.isModLoaded("gregtech") && !Loader.isModLoaded("gregapi_post");
// Materials
public static ItemCapacitor itemBasicCapacitor;
@@ -290,6 +280,7 @@ public class EnderIO {
public static BlockSolarPanel blockSolarPanel;
public static BlockReservoir blockReservoir;
public static BlockAlloySmelter blockAlloySmelter;
public static BlockCapacitorBank blockCapacitorBank;
public static BlockCapBank blockCapBank;
public static BlockWirelessCharger blockWirelessCharger;
public static BlockCrusher blockCrusher;
@@ -399,6 +390,7 @@ public class EnderIO {
blockCrusher = BlockCrusher.create();
blockAlloySmelter = BlockAlloySmelter.create();
blockCapacitorBank = BlockCapacitorBank.create();
blockCapBank = BlockCapBank.create();
blockPainter = BlockPainter.create();
@@ -492,9 +484,7 @@ public class EnderIO {
itemGrindingBall = ItemGrindingBall.create();
itemAlloyEndergy = ItemAlloyEndergy.create();
itemGrindingBallEndergy = ItemGrindingBallEndergy.create();
if (!hasGT5) {
itemPowderIngot = ItemPowderIngot.create();
}
itemPowderIngot = ItemPowderIngot.create();
registerFluids();
@@ -734,9 +724,7 @@ public class EnderIO {
SkeletonHandler.registerSkeleton(this);
}
if (!hasGT5) {
MaterialRecipes.registerDependantOresInDictionary();
}
MaterialRecipes.registerDependantOresInDictionary();
EnderfaceRecipes.addRecipes();
MaterialRecipes.addRecipes();
@@ -822,6 +810,7 @@ public class EnderIO {
return Config.xpJuiceName;
}
@SuppressWarnings("unchecked")
private void addModIntegration() {
if (Loader.isModLoaded("TConstruct")) {
@@ -832,7 +821,6 @@ public class EnderIO {
Class<?> modFluxClass = Class.forName("tconstruct.modifiers.tools.ModFlux");
Field batteriesField = modFluxClass.getField("batteries");
@SuppressWarnings("unchecked")
List<ItemStack> batteries = (List<ItemStack>) batteriesField.get(modFluxInst);
batteries.add(new ItemStack(blockCapBank));
Log.info("Registered Capacitor Banks as Tinkers Construct Flux Upgrades");
@@ -841,9 +829,6 @@ public class EnderIO {
Log.info("Failed to registered Capacitor Banks as Tinkers Construct Flux Upgrades");
}
}
if (Loader.isModLoaded("betterbuilderswands")) {
PaintedCustomMapping.registerMappings();
}
ThaumcraftCompat.load();
}
@@ -902,18 +887,22 @@ public class EnderIO {
}
@EventHandler
public void onServerAboutToStart(FMLServerAboutToStartEvent event) {
proxy.onServerAboutToStart(event);
public void serverStarted(FMLServerStartedEvent event) {
HyperCubeRegister.load();
ServerChannelRegister.load();
}
@SubscribeEvent
public void worldSaved(WorldEvent.Save event) {
// Only save together with the overworld, because this gets called for every dimension separately
if (event.world.provider != null && event.world.provider.dimensionId == 0) {
ServerChannelRegister.store();
}
}
@EventHandler
public void onServerStarted(FMLServerStartedEvent event) {
proxy.onServerStarted(event);
}
@EventHandler
public void onServerStopped(FMLServerStoppedEvent event) {
proxy.onServerStopped(event);
public void serverStopped(FMLServerStoppedEvent event) {
HyperCubeRegister.unload();
}
@EventHandler
@@ -925,12 +914,4 @@ public class EnderIO {
}
}
}
@SubscribeEvent
public void worldSaved(WorldEvent.Save event) {
// Only save together with the overworld, because this gets called for every dimension separately
if (event.world.provider != null && event.world.provider.dimensionId == 0) {
ServerChannelRegister.store();
}
}
}
@@ -60,7 +60,7 @@ public class GuiHandler implements IGuiHandler {
public static final int GUI_ID_CAP_BANK = 142; // leave room for more machines
protected final Map<Integer, IGuiHandler> guiHandlers = new HashMap<>();
protected final Map<Integer, IGuiHandler> guiHandlers = new HashMap<Integer, IGuiHandler>();
public void registerGuiHandler(int id, IGuiHandler handler) {
guiHandlers.put(id, handler);
@@ -55,6 +55,7 @@ public enum ModObject {
blockReservoir,
blockAlloySmelter,
blockSolarPanel,
blockCapacitorBank,
blockCapBank,
blockSagMill,
blockHyperCube,
@@ -1,101 +0,0 @@
package crazypants.enderio.betterbuilderswands;
import java.util.function.BiFunction;
import java.util.function.IntFunction;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import com.github.bsideup.jabel.Desugar;
import crazypants.enderio.EnderIO;
import crazypants.enderio.machine.painter.BlockPaintedCarpet;
import crazypants.enderio.machine.painter.BlockPaintedFence;
import crazypants.enderio.machine.painter.BlockPaintedFenceGate;
import crazypants.enderio.machine.painter.BlockPaintedGlowstone;
import crazypants.enderio.machine.painter.BlockPaintedSlab;
import crazypants.enderio.machine.painter.BlockPaintedStair;
import crazypants.enderio.machine.painter.BlockPaintedWall;
import crazypants.enderio.machine.painter.TileEntityPaintedBlock;
import portablejim.bbw.BetterBuildersWandsMod;
import portablejim.bbw.basics.Point3d;
import portablejim.bbw.core.conversion.ICustomMapping;
import portablejim.bbw.shims.IPlayerShim;
import portablejim.bbw.shims.IWorldShim;
@Desugar
public record PaintedCustomMapping(Block lookBlock, BiFunction<Block, Integer, ItemStack> itemStackGetter, int meta)
implements ICustomMapping {
@Override
public Block getLookBlock() {
return lookBlock;
}
@Override
public int getMeta() {
return meta;
}
@Override
public ItemStack getItems(IWorldShim world, IPlayerShim player, Point3d point) {
if (world.getTile(point) instanceof TileEntityPaintedBlock painted) {
return itemStackGetter.apply(painted.getSourceBlock(), painted.getSourceBlockMetadata());
}
return null;
}
@Override
public boolean shouldCopyTileNBT() {
return true;
}
public static void registerMappings() {
register(
i -> new PaintedCustomMapping(
EnderIO.blockPaintedGlowstone,
BlockPaintedGlowstone::createItemStackForSourceBlock,
i));
register(
i -> new PaintedCustomMapping(
EnderIO.blockPaintedStair,
BlockPaintedStair::createItemStackForSourceBlock,
i));
register(
i -> new PaintedCustomMapping(
EnderIO.blockPaintedFence,
BlockPaintedFence::createItemStackForSourceBlock,
i));
register(
i -> new PaintedCustomMapping(
EnderIO.blockPaintedFenceGate,
BlockPaintedFenceGate::createItemStackForSourceBlock,
i));
register(
i -> new PaintedCustomMapping(
EnderIO.blockPaintedCarpet,
BlockPaintedCarpet::createItemStackForSourceBlock,
i));
register(
i -> new PaintedCustomMapping(
EnderIO.blockPaintedSlab,
BlockPaintedSlab::createItemStackForSourceBlock,
i));
register(
i -> new PaintedCustomMapping(
EnderIO.blockPaintedWall,
BlockPaintedWall::createItemStackForSourceBlock,
i));
register(
i -> new PaintedCustomMapping(
EnderIO.blockPaintedDoubleSlab,
BlockPaintedSlab::createItemStackForSourceBlock,
i));
}
private static void register(IntFunction<ICustomMapping> mapping) {
for (int i = 0; i < 16; i++) {
BetterBuildersWandsMod.instance.mappingManager.setMapping(mapping.apply(i));
}
}
}
@@ -148,9 +148,10 @@ public class BlockDarkSteelPressurePlate extends BlockPressurePlate
return super.colorMultiplier(world, x, y, z);
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item arg0, CreativeTabs arg1, List<ItemStack> items) {
public void getSubBlocks(Item arg0, CreativeTabs arg1, List items) {
items.add(new ItemStack(this, 1, 0));
items.add(new ItemStack(this, 1, 1));
}
@@ -16,10 +16,14 @@ import crazypants.enderio.config.Config;
public class ContainerDarkSteelAnvil extends ContainerRepair {
private final int x;
private final int y;
private final int z;
private int x, y, z;
private final Field _outputSlot = ReflectionHelper.findField(ContainerRepair.class, "outputSlot", "field_82852_f");
private final Field _inputSlots = ReflectionHelper.findField(ContainerRepair.class, "inputSlots", "field_82853_g");
private final Field _materialCost = ReflectionHelper
.findField(ContainerRepair.class, "materialCost", "stackSizeToBeUsedInRepair", "field_82856_l");
@SuppressWarnings("unchecked")
public ContainerDarkSteelAnvil(InventoryPlayer playerInv, final World world, final int x, final int y, final int z,
EntityPlayer player) {
super(playerInv, world, x, y, z, player);
@@ -28,12 +32,8 @@ public class ContainerDarkSteelAnvil extends ContainerRepair {
final int materialCost;
try {
Field _outputSlot = ReflectionHelper.findField(ContainerRepair.class, "outputSlot", "field_82852_f");
outputSlot = (IInventory) _outputSlot.get(this);
Field _inputSlots = ReflectionHelper.findField(ContainerRepair.class, "inputSlots", "field_82853_g");
inputSlots = (IInventory) _inputSlots.get(this);
Field _materialCost = ReflectionHelper
.findField(ContainerRepair.class, "materialCost", "stackSizeToBeUsedInRepair", "field_82856_l");
materialCost = _materialCost.getInt(this);
} catch (Exception e) {
throw new RuntimeException(e);
@@ -47,7 +47,6 @@ import crazypants.enderio.conduit.power.IPowerConduit;
import crazypants.enderio.conduit.power.PowerConduitNetwork;
import crazypants.enderio.conduit.redstone.IRedstoneConduit;
import crazypants.enderio.conduit.redstone.RedstoneConduitNetwork;
import crazypants.util.ForgeDirections;
import mods.immibis.microblocks.api.EnumPartClass;
import mods.immibis.microblocks.api.EnumPosition;
import mods.immibis.microblocks.api.IMicroblockCoverSystem;
@@ -73,7 +72,8 @@ public abstract class AbstractConduit implements IConduit {
protected List<CollidableComponent> collidables;
protected final EnumMap<ForgeDirection, ConnectionMode> conectionModes = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, ConnectionMode> conectionModes = new EnumMap<ForgeDirection, ConnectionMode>(
ForgeDirection.class);
protected boolean collidablesDirty = true;
@@ -118,7 +118,7 @@ public abstract class AbstractConduit implements IConduit {
return false;
}
if (dataRoot.hasKey("connectionMode")) {
ConnectionMode mode = ConnectionMode.VALUES[dataRoot.getShort("connectionMode")];
ConnectionMode mode = ConnectionMode.values()[dataRoot.getShort("connectionMode")];
setConnectionMode(dir, mode);
}
readTypeSettings(dir, dataRoot);
@@ -382,13 +382,13 @@ public abstract class AbstractConduit implements IConduit {
conduitConnections.clear();
int[] dirs = nbtRoot.getIntArray("connections");
for (int i = 0; i < dirs.length; i++) {
conduitConnections.add(ForgeDirections.DIRECTIONS[dirs[i]]);
conduitConnections.add(ForgeDirection.values()[dirs[i]]);
}
externalConnections.clear();
dirs = nbtRoot.getIntArray("externalConnections");
for (int i = 0; i < dirs.length; i++) {
externalConnections.add(ForgeDirections.DIRECTIONS[dirs[i]]);
externalConnections.add(ForgeDirection.values()[dirs[i]]);
}
active = nbtRoot.getBoolean("signalActive");
@@ -397,7 +397,7 @@ public abstract class AbstractConduit implements IConduit {
if (modes != null && modes.length == 6) {
int i = 0;
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
conectionModes.put(dir, ConnectionMode.VALUES[modes[i]]);
conectionModes.put(dir, ConnectionMode.values()[modes[i]]);
i++;
}
}
@@ -453,7 +453,7 @@ public abstract class AbstractConduit implements IConduit {
needUpdateConnections = false;
boolean externalConnectionsChanged = false;
List<ForgeDirection> copy = new ArrayList<>(externalConnections);
List<ForgeDirection> copy = new ArrayList<ForgeDirection>(externalConnections);
// remove any no longer valid connections
for (ForgeDirection dir : copy) {
if (!canConnectToExternal(dir, false)) {
@@ -633,7 +633,7 @@ public abstract class AbstractConduit implements IConduit {
return collidables;
}
List<CollidableComponent> result = new ArrayList<>();
List<CollidableComponent> result = new ArrayList<CollidableComponent>();
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
Collection<CollidableComponent> col = getCollidables(dir);
if (col != null) {
@@ -7,12 +7,10 @@ import java.util.List;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import crazypants.enderio.EnderIO;
// I=base type, I is the base class of the implementations accepted by the network
public abstract class AbstractConduitNetwork<T extends IConduit, I extends T> {
protected final List<I> conduits = new ArrayList<>();
protected final List<I> conduits = new ArrayList<I>();
protected final Class<I> implClass;
protected final Class<T> baseConduitClass;
@@ -66,7 +64,7 @@ public abstract class AbstractConduitNetwork<T extends IConduit, I extends T> {
public void addConduit(I con) {
if (!conduits.contains(con)) {
if (conduits.isEmpty()) {
EnderIO.proxy.conduitNetworkTickHandler.registerNetwork(this);
ConduitNetworkTickHandler.instance.registerNetwork(this);
}
conduits.add(con);
}
@@ -77,7 +75,7 @@ public abstract class AbstractConduitNetwork<T extends IConduit, I extends T> {
con.setNetwork(null);
}
conduits.clear();
EnderIO.proxy.conduitNetworkTickHandler.unregisterNetwork(this);
ConduitNetworkTickHandler.instance.unregisterNetwork(this);
}
public List<I> getConduits() {
@@ -24,7 +24,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.EnderIOTab;
import crazypants.enderio.ModObject;
import crazypants.util.ForgeDirections;
import mods.immibis.microblocks.api.IMicroblockCoverSystem;
import mods.immibis.microblocks.api.IMicroblockSupporterTile;
import mods.immibis.microblocks.api.MicroblockAPIUtils;
@@ -85,7 +84,7 @@ public abstract class AbstractItemConduit extends Item implements IConduitItem {
}
return true;
} else {
ForgeDirection dir = ForgeDirections.DIRECTIONS[side];
ForgeDirection dir = ForgeDirection.values()[side];
int placeX = x + dir.offsetX;
int placeY = y + dir.offsetY;
int placeZ = z + dir.offsetZ;
@@ -191,8 +190,9 @@ public abstract class AbstractItemConduit extends Item implements IConduitItem {
}
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
@SideOnly(Side.CLIENT)
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List<ItemStack> par3List) {
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List) {
for (int j = 0; j < subtypes.length; ++j) {
par3List.add(new ItemStack(this, 1, j));
}
@@ -32,6 +32,7 @@ import com.enderio.core.client.render.BoundingBox;
import com.enderio.core.common.util.BlockCoord;
import com.enderio.core.common.util.Util;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Optional;
import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
@@ -71,7 +72,6 @@ import crazypants.enderio.item.ItemConduitProbe;
import crazypants.enderio.machine.painter.PainterUtil;
import crazypants.enderio.network.PacketHandler;
import crazypants.enderio.tool.ToolUtil;
import crazypants.util.ForgeDirections;
import crazypants.util.IFacade;
import mods.immibis.core.api.multipart.IMultipartRenderingBlockMarker;
import mods.immibis.core.api.multipart.IMultipartSystem;
@@ -93,6 +93,9 @@ public class BlockConduitBundle extends BlockEio
public static BlockConduitBundle create() {
MinecraftForge.EVENT_BUS.register(ConduitNetworkTickHandler.instance);
FMLCommonHandler.instance().bus().register(ConduitNetworkTickHandler.instance);
PacketHandler.INSTANCE
.registerMessage(PacketFluidLevel.class, PacketFluidLevel.class, PacketHandler.nextID(), Side.CLIENT);
PacketHandler.INSTANCE
@@ -157,6 +160,7 @@ public class BlockConduitBundle extends BlockEio
BlockConduitBundle result = new BlockConduitBundle();
result.init();
MinecraftForge.EVENT_BUS.register(result);
return result;
}
@@ -288,6 +292,41 @@ public class BlockConduitBundle extends BlockEio
effectRenderer.addEffect(digFX);
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onPlaySound(PlaySoundSourceEvent event) {
String path = event.sound.getPositionedSoundLocation().getResourcePath();
if ("silence.step".equals(path)) {
ISound snd = event.sound;
World world = EnderIO.proxy.getClientWorld();
BlockCoord bc = new BlockCoord(snd.getXPosF(), snd.getYPosF(), snd.getZPosF());
TileEntity te = bc.getTileEntity(world);
if (te instanceof TileConduitBundle && ((TileConduitBundle) te).hasFacade()) {
Block facade = getFacade(world, bc.x, bc.y, bc.z, -1);
ConduitUtil.playHitSound(facade.stepSound, world, bc.x, bc.y, bc.z);
} else {
ConduitUtil.playHitSound(Block.soundTypeMetal, world, bc.x, bc.y, bc.z);
}
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onPlaySoundAtEntity(PlaySoundAtEntityEvent event) {
String path = event.name;
World world = event.entity.worldObj;
if ("EnderIO:silence.step".equals(path) && world.isRemote) {
BlockCoord bc = new BlockCoord(event.entity.posX, event.entity.posY - 2, event.entity.posZ);
TileEntity te = bc.getTileEntity(world);
if (te instanceof TileConduitBundle && ((TileConduitBundle) te).hasFacade()) {
Block facade = getFacade(world, bc.x, bc.y, bc.z, -1);
ConduitUtil.playStepSound(facade.stepSound, world, bc.x, bc.y, bc.z);
} else {
ConduitUtil.playStepSound(Block.soundTypeMetal, world, bc.x, bc.y, bc.z);
}
}
}
@Override
protected void init() {
super.init();
@@ -295,7 +334,6 @@ public class BlockConduitBundle extends BlockEio
EnderIO.guiHandler.registerGuiHandler(GuiHandler.GUI_ID_EXTERNAL_CONNECTION_BASE + dir.ordinal(), this);
}
EnderIO.guiHandler.registerGuiHandler(GuiHandler.GUI_ID_EXTERNAL_CONNECTION_SELECTOR, this);
MinecraftForge.EVENT_BUS.register(new EventHandler());
}
@Override
@@ -435,6 +473,24 @@ public class BlockConduitBundle extends BlockEio
: resist;
}
@SubscribeEvent
public void onBreakSpeed(BreakSpeed event) {
if (event.block == this) {
ItemStack held = event.entityPlayer.getCurrentEquippedItem();
if (held == null || held.getItem().getHarvestLevel(held, "pickaxe") == -1) {
event.newSpeed += 2;
}
IConduitBundle te = (IConduitBundle) event.entity.worldObj.getTileEntity(event.x, event.y, event.z);
if (te != null && te.getFacadeType() == FacadeType.HARDENED) {
if (!ConduitUtil.isSolidFacadeRendered(te, event.entityPlayer)) {
event.newSpeed *= 6;
} else {
event.newSpeed *= 2;
}
}
}
}
@Override
@SideOnly(Side.CLIENT)
public int getRenderBlockPass() {
@@ -480,7 +536,7 @@ public class BlockConduitBundle extends BlockEio
IConduitBundle te = (IConduitBundle) rte;
boolean breakBlock = true;
List<ItemStack> drop = new ArrayList<>();
List<ItemStack> drop = new ArrayList<ItemStack>();
if (ConduitUtil.isSolidFacadeRendered(te, player)) {
breakBlock = false;
ItemStack fac = new ItemStack(EnderIO.itemConduitFacade, 1, te.getFacadeType().ordinal());
@@ -538,7 +594,7 @@ public class BlockConduitBundle extends BlockEio
if (type == null) {
// broke a conector so drop any conduits with no connections as there
// is no other way to remove these
List<IConduit> cons = new ArrayList<>(te.getConduits());
List<IConduit> cons = new ArrayList<IConduit>(te.getConduits());
boolean droppedUnconected = false;
for (IConduit con : cons) {
if (con.getConduitConnections().isEmpty() && con.getExternalConnections().isEmpty()
@@ -771,7 +827,7 @@ public class BlockConduitBundle extends BlockEio
bundle.setFacadeId(facadeID);
bundle.setFacadeMetadata(facadeMeta);
bundle.setFacadeType(FacadeType.VALUES[facadeType]);
bundle.setFacadeType(FacadeType.values()[facadeType]);
if (!world.isRemote) {
ConduitUtil.playPlaceSound(facadeID.stepSound, world, x, y, z);
}
@@ -820,7 +876,7 @@ public class BlockConduitBundle extends BlockEio
return new ExternalConnectionContainer(
player.inventory,
(IConduitBundle) te,
ForgeDirections.DIRECTIONS[id - GuiHandler.GUI_ID_EXTERNAL_CONNECTION_BASE]);
ForgeDirection.values()[id - GuiHandler.GUI_ID_EXTERNAL_CONNECTION_BASE]);
}
return null;
}
@@ -835,7 +891,7 @@ public class BlockConduitBundle extends BlockEio
return new GuiExternalConnection(
player.inventory,
(IConduitBundle) te,
ForgeDirections.DIRECTIONS[id - GuiHandler.GUI_ID_EXTERNAL_CONNECTION_BASE]);
ForgeDirection.values()[id - GuiHandler.GUI_ID_EXTERNAL_CONNECTION_BASE]);
}
return null;
}
@@ -867,7 +923,7 @@ public class BlockConduitBundle extends BlockEio
@Override
public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB axisalignedbb,
List<AxisAlignedBB> arraylist, Entity par7Entity) {
@SuppressWarnings("rawtypes") List arraylist, Entity par7Entity) {
if (MicroblocksUtil.supportMicroblocks()) {
IM__addCollisionBoxesToList(world, x, y, z, axisalignedbb, arraylist, par7Entity);
@@ -1035,7 +1091,7 @@ public class BlockConduitBundle extends BlockEio
return null;
}
IConduitBundle bundle = (IConduitBundle) te;
List<RaytraceResult> hits = new ArrayList<>();
List<RaytraceResult> hits = new ArrayList<RaytraceResult>();
if (player == null) {
player = EnderIO.proxy.getClientPlayer();
@@ -1052,7 +1108,8 @@ public class BlockConduitBundle extends BlockEio
}
} else {
ConduitDisplayMode mode = ConduitUtil.getDisplayMode(player);
Collection<CollidableComponent> components = new ArrayList<>(bundle.getCollidableComponents());
Collection<CollidableComponent> components = new ArrayList<CollidableComponent>(
bundle.getCollidableComponents());
for (CollidableComponent component : components) {
if ((component.conduitType != null || mode == ConduitDisplayMode.ALL)
&& ConduitUtil.renderConduit(player, component.conduitType)) {
@@ -1204,8 +1261,9 @@ public class BlockConduitBundle extends BlockEio
return IMultipartSystem.instance.hook_collisionRayTrace(cur, world, x, y, z, src, dst);
}
private void IM__addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB mask,
List<AxisAlignedBB> list, Entity entity) {
@SuppressWarnings({ "rawtypes", "unchecked" })
private void IM__addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB mask, List list,
Entity entity) {
IMultipartSystem.instance.hook_addCollisionBoxesToList(world, x, y, z, mask, list, entity);
}
@@ -1217,61 +1275,4 @@ public class BlockConduitBundle extends BlockEio
private boolean hasMicroblocks(IConduitBundle bundle) {
return !bundle.getCoverSystem().getAllParts().isEmpty();
}
public class EventHandler {
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onPlaySound(PlaySoundSourceEvent event) {
String path = event.sound.getPositionedSoundLocation().getResourcePath();
if ("silence.step".equals(path)) {
ISound snd = event.sound;
World world = EnderIO.proxy.getClientWorld();
if (world == null) return;
BlockCoord bc = new BlockCoord(snd.getXPosF(), snd.getYPosF(), snd.getZPosF());
TileEntity te = bc.getTileEntity(world);
if (te instanceof TileConduitBundle && ((TileConduitBundle) te).hasFacade()) {
Block facade = getFacade(world, bc.x, bc.y, bc.z, -1);
ConduitUtil.playHitSound(facade.stepSound, world, bc.x, bc.y, bc.z);
} else {
ConduitUtil.playHitSound(Block.soundTypeMetal, world, bc.x, bc.y, bc.z);
}
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onPlaySoundAtEntity(PlaySoundAtEntityEvent event) {
String path = event.name;
World world = event.entity.worldObj;
if ("EnderIO:silence.step".equals(path) && world.isRemote) {
BlockCoord bc = new BlockCoord(event.entity.posX, event.entity.posY - 2, event.entity.posZ);
TileEntity te = bc.getTileEntity(world);
if (te instanceof TileConduitBundle && ((TileConduitBundle) te).hasFacade()) {
Block facade = getFacade(world, bc.x, bc.y, bc.z, -1);
ConduitUtil.playStepSound(facade.stepSound, world, bc.x, bc.y, bc.z);
} else {
ConduitUtil.playStepSound(Block.soundTypeMetal, world, bc.x, bc.y, bc.z);
}
}
}
@SubscribeEvent
public void onBreakSpeed(BreakSpeed event) {
if (event.block == BlockConduitBundle.this) {
ItemStack held = event.entityPlayer.getCurrentEquippedItem();
if (held == null || held.getItem().getHarvestLevel(held, "pickaxe") == -1) {
event.newSpeed += 2;
}
IConduitBundle te = (IConduitBundle) event.entity.worldObj.getTileEntity(event.x, event.y, event.z);
if (te != null && te.getFacadeType() == FacadeType.HARDENED) {
if (!ConduitUtil.isSolidFacadeRendered(te, event.entityPlayer)) {
event.newSpeed *= 6;
} else {
event.newSpeed *= 2;
}
}
}
}
}
}
@@ -196,7 +196,7 @@ public class ConduitDisplayMode {
}
public static Iterable<ConduitDisplayMode> getRenderableModes() {
return FluentIterable.from(registrar).filter(new Predicate<>() {
return FluentIterable.from(registrar).filter(new Predicate<ConduitDisplayMode>() {
@Override
public boolean apply(ConduitDisplayMode input) {
@@ -10,15 +10,18 @@ import cpw.mods.fml.common.gameevent.TickEvent.Phase;
public class ConduitNetworkTickHandler {
public interface TickListener {
public static final ConduitNetworkTickHandler instance = new ConduitNetworkTickHandler();
void tickStart(TickEvent.ServerTickEvent evt);
public static interface TickListener {
void tickEnd(TickEvent.ServerTickEvent evt);
public void tickStart(TickEvent.ServerTickEvent evt);
public void tickEnd(TickEvent.ServerTickEvent evt);
}
private final List<TickListener> listeners = new ArrayList<>();
private final IdentityHashMap<AbstractConduitNetwork<?, ?>, Boolean> networks = new IdentityHashMap<>();
private final List<TickListener> listeners = new ArrayList<TickListener>();
private final IdentityHashMap<AbstractConduitNetwork<?, ?>, Boolean> networks = new IdentityHashMap<AbstractConduitNetwork<?, ?>, Boolean>();
public void addListener(TickListener listener) {
listeners.add(listener);
@@ -688,7 +688,7 @@ public class ConduitRecipes {
String fluix = "crystalFluix";
String pureFluix = "crystalPureFluix";
ItemStack quartzFiber = AEApi.instance().definitions().parts().quartzFiber().maybeStack(1).get().copy();
ItemStack quartzFiber = AEApi.instance().parts().partQuartzFiber.stack(1).copy();
ItemStack conduitBinder = new ItemStack(EnderIO.itemMaterial, 1, Material.CONDUIT_BINDER.ordinal());
ItemStack res = new ItemStack(EnderIO.itemMEConduit, Config.numConduitsPerRecipe / 2);
@@ -697,6 +697,10 @@ public class ConduitRecipes {
res.stackSize = 1;
ItemStack resDense = new ItemStack(EnderIO.itemMEConduit, 1, 1);
ItemStack resUltra = new ItemStack(EnderIO.itemMEConduit, 1, 2);
addShaped(resDense, "bCb", "CbC", "bCb", 'b', conduitBinder, 'C', res);
if (Config.enableMEUltraDenseConduits) {
addShaped(resUltra, "bCb", "CbC", "bCb", 'b', conduitBinder, 'C', resDense);
}
}
}
@@ -43,7 +43,7 @@ public class ConduitUtil {
public static final Random RANDOM = new Random();
@SuppressWarnings("unchecked")
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void ensureValidNetwork(IConduit conduit) {
TileEntity te = conduit.getBundle().getEntity();
World world = te.getWorldObj();
@@ -54,15 +54,13 @@ public class ConduitUtil {
return;
}
@SuppressWarnings("rawtypes")
AbstractConduitNetwork res = conduit.createNetworkForType();
res.init(conduit.getBundle(), connections, world);
return;
}
@SuppressWarnings("unchecked")
@SuppressWarnings({ "unchecked", "rawtypes" })
private static boolean reuseNetwork(IConduit con, Collection<? extends IConduit> connections, World world) {
@SuppressWarnings("rawtypes")
AbstractConduitNetwork network = null;
for (IConduit conduit : connections) {
if (network == null) {
@@ -254,7 +252,7 @@ public class ConduitUtil {
if (!(te instanceof IConduitBundle)) {
return Collections.emptyList();
}
List<T> result = new ArrayList<>();
List<T> result = new ArrayList<T>();
IConduitBundle root = (IConduitBundle) te;
T con = root.getConduit(type);
if (con != null) {
@@ -320,7 +318,7 @@ public class ConduitUtil {
}
int signalStrength = getInternalSignalForColor(bundle, col);
if (signalStrength < 15 && bundle != null && bundle.getEntity() != null) {
if (signalStrength < 15 && DyeColor.RED == col && bundle != null && bundle.getEntity() != null) {
TileEntity te = bundle.getEntity();
signalStrength = Math
.max(signalStrength, te.getWorldObj().getStrongestIndirectPower(te.xCoord, te.yCoord, te.zCoord));
@@ -363,7 +361,7 @@ public class ConduitUtil {
return;
}
IConduitBundle cb = (IConduitBundle) te;
Set<ForgeDirection> cons = new HashSet<>();
Set<ForgeDirection> cons = new HashSet<ForgeDirection>();
boolean hasInsulated = false;
for (IConduit con : cb.getConduits()) {
cons.addAll(con.getExternalConnections());
@@ -10,10 +10,6 @@ public enum ConnectionMode {
DISABLED("gui.conduit.ioMode.disabled"),
NOT_SET("gui.conduit.ioMode.notSet");
/**
* Cached values() array for frequent read-only operations, the array should NOT be mutated.
*/
public static final ConnectionMode[] VALUES = values();
private final String unlocalisedName;
ConnectionMode(String unlocalisedName) {
@@ -26,19 +22,19 @@ public enum ConnectionMode {
public static ConnectionMode getNext(ConnectionMode mode) {
int ord = mode.ordinal() + 1;
if (ord >= ConnectionMode.VALUES.length) {
if (ord >= ConnectionMode.values().length) {
ord = 0;
}
return ConnectionMode.VALUES[ord];
return ConnectionMode.values()[ord];
}
public static ConnectionMode getPrevious(ConnectionMode mode) {
int ord = mode.ordinal() - 1;
if (ord < 0) {
ord = ConnectionMode.VALUES.length - 1;
ord = ConnectionMode.values().length - 1;
}
return ConnectionMode.VALUES[ord];
return ConnectionMode.values()[ord];
}
public boolean acceptsInput() {
@@ -33,7 +33,7 @@ public class RaytraceResult {
if (origin == null || toSort == null) {
return;
}
Collections.sort(toSort, new Comparator<>() {
Collections.sort(toSort, new Comparator<RaytraceResult>() {
@Override
public int compare(RaytraceResult o1, RaytraceResult o2) {
@@ -25,7 +25,6 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import com.enderio.core.client.render.BoundingBox;
import com.gtnewhorizon.gtnhlib.concurrent.cas.CasList;
import appeng.api.networking.IGridNode;
import appeng.api.util.AECableType;
@@ -51,7 +50,6 @@ import crazypants.enderio.conduit.power.IPowerConduit;
import crazypants.enderio.conduit.redstone.IRedstoneConduit;
import crazypants.enderio.conduit.redstone.InsulatedRedstoneConduit;
import crazypants.enderio.config.Config;
import crazypants.util.ForgeDirections;
import li.cil.oc.api.network.Message;
import li.cil.oc.api.network.Node;
import mekanism.api.gas.Gas;
@@ -68,7 +66,7 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
public static final short NBT_VERSION = 1;
private final List<IConduit> conduits = new CasList<>();
private final List<IConduit> conduits = new ArrayList<IConduit>();
private Block facadeId = null;
private int facadeMeta = 0;
@@ -76,9 +74,9 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
private boolean facadeChanged;
private final List<CollidableComponent> cachedCollidables = new ArrayList<>();
private final List<CollidableComponent> cachedCollidables = new ArrayList<CollidableComponent>();
private final List<CollidableComponent> cachedConnectors = new ArrayList<>();
private final List<CollidableComponent> cachedConnectors = new ArrayList<CollidableComponent>();
private boolean conduitsDirty = true;
private boolean collidablesDirty = true;
@@ -413,7 +411,7 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
}
// If you're wondering why I am not using conduit.writeToNBT, it is because there is some data that should not
// persist, some of which causes crashes with energy conduits.
NBTTagCompound[] originalData = new NBTTagCompound[ForgeDirections.DIRECTIONS.length];
NBTTagCompound[] originalData = new NBTTagCompound[ForgeDirection.values().length];
for (ForgeDirection conduitConnection : original.getExternalConnections()) {
NBTTagCompound tag = new NBTTagCompound();
original.writeConnectionSettingsToNBT(conduitConnection, tag);
@@ -424,7 +422,7 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
for (int i = 0; i < originalData.length; i++) {
NBTTagCompound nbt = originalData[i];
if (nbt != null) {
replacement.readConduitSettingsFromNBT(ForgeDirections.DIRECTIONS[i], nbt);
replacement.readConduitSettingsFromNBT(ForgeDirection.values()[i], nbt);
}
}
}
@@ -538,12 +536,11 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
@Override
public List<CollidableComponent> getConnectors() {
List<CollidableComponent> result = new ArrayList<>();
List<CollidableComponent> result = new ArrayList<CollidableComponent>();
addConnectors(result);
return result;
}
@SuppressWarnings("unchecked")
private void addConnectors(List<CollidableComponent> result) {
if (conduits.isEmpty()) {
@@ -564,7 +561,7 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
cachedConnectors.clear();
// TODO: What an unholly mess! (and it doesn't even work correctly...)
List<CollidableComponent> coreBounds = new ArrayList<>();
List<CollidableComponent> coreBounds = new ArrayList<CollidableComponent>();
for (IConduit con : conduits) {
addConduitCores(coreBounds, con);
}
@@ -572,13 +569,13 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
result.addAll(coreBounds);
// 1st algorithm
List<CollidableComponent> conduitsBounds = new ArrayList<>();
List<CollidableComponent> conduitsBounds = new ArrayList<CollidableComponent>();
for (IConduit con : conduits) {
conduitsBounds.addAll(con.getCollidableComponents());
addConduitCores(conduitsBounds, con);
}
Set<Class<IConduit>> collidingTypes = new HashSet<>();
Set<Class<IConduit>> collidingTypes = new HashSet<Class<IConduit>>();
for (CollidableComponent conCC : conduitsBounds) {
for (CollidableComponent innerCC : conduitsBounds) {
if (!InsulatedRedstoneConduit.COLOR_CONTROLLER_ID.equals(innerCC.data)
@@ -592,7 +589,7 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
// TODO: Remove the core geometries covered up by this as no point in rendering these
if (!collidingTypes.isEmpty()) {
List<CollidableComponent> colCores = new ArrayList<>();
List<CollidableComponent> colCores = new ArrayList<CollidableComponent>();
for (Class<IConduit> c : collidingTypes) {
IConduit con = getConduit(c);
if (con != null) {
@@ -624,7 +621,7 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
for (IConduit con : conduits) {
if (con.hasConnections()) {
List<CollidableComponent> cores = new ArrayList<>();
List<CollidableComponent> cores = new ArrayList<CollidableComponent>();
addConduitCores(cores, con);
if (cores.size() > 1) {
BoundingBox bb = cores.get(0).bound;
@@ -967,6 +964,7 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
return (IGridNode) node;
}
@SuppressWarnings("cast")
@Override
@Method(modid = "appliedenergistics2")
public void setGridNode(Object node) {
@@ -109,6 +109,7 @@ public class BlockConduitFacade extends BlockEio implements IPaintedBlock, Clone
}
Block block = cb.getFacadeId();
int meta = cb.getFacadeMetadata();
if (block == null || block == this) {
return;
}
@@ -140,7 +141,7 @@ public class BlockConduitFacade extends BlockEio implements IPaintedBlock, Clone
return new Mimic(id, meta);
}
static class Mimic {
class Mimic {
int meta;
Block block;
@@ -32,17 +32,14 @@ import crazypants.enderio.machine.painter.BasicPainterTemplate;
import crazypants.enderio.machine.painter.IPaintedBlock;
import crazypants.enderio.machine.painter.PaintSourceValidator;
import crazypants.enderio.machine.painter.PainterUtil;
import crazypants.util.ForgeDirections;
public class ItemConduitFacade extends Item implements IAdvancedTooltipProvider, IResourceTooltipProvider {
public enum FacadeType {
public static enum FacadeType {
BASIC,
HARDENED;
public static final FacadeType[] VALUES = values();
public String getUnlocName(Item me) {
return this == BASIC ? me.getUnlocalizedName() : me.getUnlocalizedName() + ".hardened";
}
@@ -68,17 +65,18 @@ public class ItemConduitFacade extends Item implements IAdvancedTooltipProvider,
GameRegistry.registerItem(this, ModObject.itemConduitFacade.unlocalisedName);
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs p_150895_2_, List<ItemStack> list) {
for (FacadeType t : FacadeType.VALUES) {
public void getSubItems(Item item, CreativeTabs p_150895_2_, List list) {
for (FacadeType t : FacadeType.values()) {
list.add(new ItemStack(item, 1, t.ordinal()));
}
}
@Override
public String getUnlocalizedName(ItemStack stack) {
return FacadeType.VALUES[stack.getItemDamage()].getUnlocName(this);
return FacadeType.values()[stack.getItemDamage()].getUnlocName(this);
}
@Override
@@ -89,7 +87,7 @@ public class ItemConduitFacade extends Item implements IAdvancedTooltipProvider,
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister IIconRegister) {
icons = new IIcon[FacadeType.VALUES.length];
icons = new IIcon[FacadeType.values().length];
icons[0] = itemIcon = IIconRegister.registerIcon("enderio:conduitFacade");
icons[1] = IIconRegister.registerIcon("enderio:conduitFacadeHardened");
overlayIcon = IIconRegister.registerIcon("enderio:conduitFacadeOverlay");
@@ -118,7 +116,7 @@ public class ItemConduitFacade extends Item implements IAdvancedTooltipProvider,
return true;
}
ForgeDirection dir = ForgeDirections.DIRECTIONS[side];
ForgeDirection dir = ForgeDirection.values()[side];
int placeX = x + dir.offsetX;
int placeY = y + dir.offsetY;
int placeZ = z + dir.offsetZ;
@@ -133,7 +131,7 @@ public class ItemConduitFacade extends Item implements IAdvancedTooltipProvider,
facadeMeta = PainterUtil.adjustFacadeMetadata(facadeID, facadeMeta, side);
bundle.setFacadeId(facadeID);
bundle.setFacadeMetadata(facadeMeta);
bundle.setFacadeType(FacadeType.VALUES[itemStack.getItemDamage()]);
bundle.setFacadeType(FacadeType.values()[itemStack.getItemDamage()]);
ConduitUtil.playPlaceSound(facadeID.stepSound, world, x, y, z);
if (!player.capabilities.isCreativeMode) {
itemStack.stackSize--;
@@ -173,9 +171,10 @@ public class ItemConduitFacade extends Item implements IAdvancedTooltipProvider,
return result;
}
@SuppressWarnings("rawtypes")
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack item, EntityPlayer par2EntityPlayer, List<String> list, boolean par4) {
public void addInformation(ItemStack item, EntityPlayer par2EntityPlayer, List list, boolean par4) {
super.addInformation(item, par2EntityPlayer, list, par4);
}
@@ -184,13 +183,15 @@ public class ItemConduitFacade extends Item implements IAdvancedTooltipProvider,
return getUnlocalizedName();
}
@SuppressWarnings("rawtypes")
@Override
@SideOnly(Side.CLIENT)
public void addCommonEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {}
public void addCommonEntries(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag) {}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
@SideOnly(Side.CLIENT)
public void addBasicEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {
public void addBasicEntries(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag) {
if (PainterUtil.getSourceBlock(itemstack) == null) {
list.add(EnderIO.lang.localize("item.itemConduitFacade.tooltip.notpainted"));
} else {
@@ -198,9 +199,10 @@ public class ItemConduitFacade extends Item implements IAdvancedTooltipProvider,
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
@SideOnly(Side.CLIENT)
public void addDetailedEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {
public void addDetailedEntries(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag) {
SpecialTooltipHandler.addDetailedTooltipFromResources(list, itemstack);
if (itemstack.getItemDamage() == FacadeType.HARDENED.ordinal()) {
list.add("");
@@ -25,10 +25,12 @@ import mekanism.api.gas.IGasHandler;
public abstract class AbstractGasConduit extends AbstractConduit implements IGasConduit {
protected final EnumMap<ForgeDirection, RedstoneControlMode> extractionModes = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> extractionColors = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, RedstoneControlMode> extractionModes = new EnumMap<ForgeDirection, RedstoneControlMode>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> extractionColors = new EnumMap<ForgeDirection, DyeColor>(
ForgeDirection.class);
protected final Map<ForgeDirection, Integer> externalRedstoneSignals = new HashMap<>();
protected final Map<ForgeDirection, Integer> externalRedstoneSignals = new HashMap<ForgeDirection, Integer>();
protected boolean redstoneStateDirty = true;
@Method(modid = GasUtil.API_NAME)
@@ -184,15 +186,15 @@ public abstract class AbstractGasConduit extends AbstractConduit implements IGas
String key = "extRM." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < RedstoneControlMode.VALUES.length) {
extractionModes.put(dir, RedstoneControlMode.VALUES[ord]);
if (ord >= 0 && ord < RedstoneControlMode.values().length) {
extractionModes.put(dir, RedstoneControlMode.values()[ord]);
}
}
key = "extSC." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < DyeColor.VALUES.length) {
extractionColors.put(dir, DyeColor.VALUES[ord]);
if (ord >= 0 && ord < DyeColor.values().length) {
extractionColors.put(dir, DyeColor.values()[ord]);
}
}
}
@@ -10,6 +10,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import com.enderio.core.client.render.IconUtil;
import com.enderio.core.common.util.BlockCoord;
import cpw.mods.fml.common.Optional.Method;
import cpw.mods.fml.relauncher.Side;
@@ -87,6 +88,7 @@ public class GasConduit extends AbstractGasTankConduit {
}
private void doExtract() {
BlockCoord loc = getLocation();
if (!hasConnectionMode(ConnectionMode.INPUT)) {
return;
}
@@ -101,6 +103,7 @@ public class GasConduit extends AbstractGasTankConduit {
return;
}
Gas f = tank.getGas() == null ? null : tank.getGas().getGas();
for (ForgeDirection dir : externalConnections) {
if (autoExtractForDir(dir)) {
if (network.extractFrom(this, dir, MAX_EXTRACT_PER_TICK)) {
@@ -18,7 +18,7 @@ public class GasConduitNetwork extends AbstractGasTankConduitNetwork<GasConduit>
private final ConduitGasTank tank = new ConduitGasTank(0);
private final Set<GasOutput> outputs = new HashSet<>();
private final Set<GasOutput> outputs = new HashSet<GasOutput>();
private Iterator<GasOutput> outputIterator;
@@ -21,7 +21,7 @@ import crazypants.enderio.gui.IconEIO;
public class ItemGasConduit extends AbstractItemConduit implements IAdvancedTooltipProvider {
private static final ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
private static ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
new ItemConduitSubtype(ModObject.itemGasConduit.name(), "enderio:itemGasConduit"), };
public static ItemGasConduit create() {
@@ -56,15 +56,15 @@ public class ItemGasConduit extends AbstractItemConduit implements IAdvancedTool
@Override
@SideOnly(Side.CLIENT)
public void addCommonEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {}
public void addCommonEntries(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag) {}
@Override
@SideOnly(Side.CLIENT)
public void addBasicEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {}
public void addBasicEntries(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag) {}
@Override
@SideOnly(Side.CLIENT)
public void addDetailedEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {
public void addDetailedEntries(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag) {
String gpt = " " + EnderIO.lang.localize("gas.gasTick");
int extractRate = Config.gasConduitExtractRate;
int maxIo = Config.gasConduitMaxIoRate;
@@ -12,7 +12,7 @@ public class CollidableCache {
public static final CollidableCache instance = new CollidableCache();
private final Map<CacheKey, Collection<CollidableComponent>> cache = new HashMap<>();
private final Map<CacheKey, Collection<CollidableComponent>> cache = new HashMap<CollidableCache.CacheKey, Collection<CollidableComponent>>();
public CacheKey createKey(Class<? extends IConduit> baseType, Offset offset, ForgeDirection dir, boolean isStub) {
return new CacheKey(baseType, offset, dir, isStub);
@@ -33,7 +33,7 @@ public class ConduitGeometryUtil {
public static final float CONNECTOR_DEPTH = 0.05f;
private static final Map<ForgeDirection, BoundingBox[]> EXTERNAL_CONNECTOR_BOUNDS = new HashMap<>();
private static Map<ForgeDirection, BoundingBox[]> EXTERNAL_CONNECTOR_BOUNDS = new HashMap<ForgeDirection, BoundingBox[]>();
static {
setupBounds(0.5f);
@@ -106,9 +106,9 @@ public class ConduitGeometryUtil {
return val < 0 ? 1 + val : val;
}
private final Map<GeometryKey, BoundingBox> boundsCache = new HashMap<>();
private Map<GeometryKey, BoundingBox> boundsCache = new HashMap<GeometryKey, BoundingBox>();
private final EnumMap<ConduitConnectorType, BoundingBox> connectorBounds = new EnumMap<>(
private EnumMap<ConduitConnectorType, BoundingBox> connectorBounds = new EnumMap<ConduitConnectorType, BoundingBox>(
ConduitConnectorType.class);
private ConduitGeometryUtil() {}
@@ -21,7 +21,8 @@ import com.enderio.core.common.vecmath.Vertex;
public class ConnectionModeGeometry {
private static final EnumMap<ForgeDirection, List<Vertex>> VERTS = new EnumMap<>(ForgeDirection.class);
private static final EnumMap<ForgeDirection, List<Vertex>> VERTS = new EnumMap<ForgeDirection, List<Vertex>>(
ForgeDirection.class);
static {
float scale = 0.9f;
@@ -83,7 +84,7 @@ public class ConnectionModeGeometry {
}
private static List<Vertex> createVerticesForDir(BoundingBox refBB, VertexTransform xform) {
List<Vertex> result = new ArrayList<>(24);
List<Vertex> result = new ArrayList<Vertex>(24);
for (ForgeDirection face : ForgeDirection.VALID_DIRECTIONS) {
result.addAll(refBB.getCornersWithUvForFace(face));
}
@@ -16,7 +16,7 @@ import crazypants.enderio.conduit.redstone.IRedstoneConduit;
public class Offsets {
private static final Map<OffsetKey, Offset> OFFSETS = new HashMap<>();
private static Map<OffsetKey, Offset> OFFSETS = new HashMap<OffsetKey, Offset>();
static {
OFFSETS.put(key(IRedstoneConduit.class, Axis.NONE), Offset.UP);
@@ -31,7 +31,7 @@ public class BaseSettingsPanel implements ITabPanel {
static final int ID_EXTRACT_ENABLED = 328;
protected static final int ID_INSERT_FILTER_OPTIONS = 329;
protected static final int ID_EXTRACT_FILTER_OPTIONS = 330;
protected static final int ID_ENABLED = 331;
protected final int ID_ENABLED = 331;
protected final @Nonnull IWidgetIcon icon;
protected final @Nonnull GuiExternalConnection gui;
@@ -41,8 +41,8 @@ public class BaseSettingsPanel implements ITabPanel {
protected ConnectionMode oldConnectionMode;
private final @Nonnull String inputHeading;
private final @Nonnull String outputHeading;
private @Nonnull String inputHeading;
private @Nonnull String outputHeading;
private boolean insertEnabled = false;
private boolean extractEnabled = false;
@@ -142,7 +142,7 @@ public class BaseSettingsPanel implements ITabPanel {
}
};
ArrayList<String> funcUpgradeTips = new ArrayList<>();
ArrayList<String> funcUpgradeTips = new ArrayList<String>();
SpecialTooltipHandler.addTooltipFromResources(funcUpgradeTips, "enderio.gui.conduit.item.functionupgrade.line");
for (FunctionUpgrade upgrade : FunctionUpgrade.values()) {
funcUpgradeTips.add(EnderIO.lang.localizeExact(upgrade.unlocName.concat(".name")));
@@ -28,13 +28,13 @@ public class GasSettings extends BaseSettingsPanel {
private static final int ID_COLOR_BUTTON = GuiExternalConnection.nextButtonId();
private final RedstoneModeButton rsB;
private RedstoneModeButton rsB;
private final ColorButton colorB;
private ColorButton colorB;
private final String autoExtractStr = EnderIO.lang.localize("gui.conduit.gas.autoExtract");
private String autoExtractStr = EnderIO.lang.localize("gui.conduit.gas.autoExtract");
private final IGasConduit conduit;
private IGasConduit conduit;
protected GasSettings(final GuiExternalConnection gui, IConduit con) {
super(IconEIO.WRENCH_OVERLAY_GAS, EnderIO.lang.localize("itemGasConduit.name"), gui, con);
@@ -72,7 +72,7 @@ public class GasSettings extends BaseSettingsPanel {
public void actionPerformed(GuiButton guiButton) {
super.actionPerformed(guiButton);
if (guiButton.id == ID_COLOR_BUTTON) {
conduit.setExtractionSignalColor(gui.getDir(), DyeColor.VALUES[colorB.getColorIndex()]);
conduit.setExtractionSignalColor(gui.getDir(), DyeColor.values()[colorB.getColorIndex()]);
PacketHandler.INSTANCE.sendToServer(new PacketExtractMode(conduit, gui.getDir()));
}
}
@@ -103,6 +103,8 @@ public class GasSettings extends BaseSettingsPanel {
protected void renderCustomOptions(int top, float par1, int par2, int par3) {
boolean isInput = isInput();
if (isInput) {
int x = gui.getGuiLeft() + gap + gui.getFontRenderer().getStringWidth(autoExtractStr) + gap + 2;
int y = customTop;
gui.getFontRenderer().drawString(autoExtractStr, left, top, ColorUtil.getRGB(Color.DARK_GRAY));
}
}
@@ -50,7 +50,7 @@ public class GuiExternalConnection extends GuiContainerBaseEIO {
return id;
}
private static final Map<Class<? extends IConduit>, Integer> TAB_ORDER = new HashMap<>();
private static final Map<Class<? extends IConduit>, Integer> TAB_ORDER = new HashMap<Class<? extends IConduit>, Integer>();
static {
TAB_ORDER.put(IItemConduit.class, 0);
@@ -66,11 +66,11 @@ public class GuiExternalConnection extends GuiContainerBaseEIO {
final IConduitBundle bundle;
private final ForgeDirection dir;
private final List<IConduit> conduits = new ArrayList<>();
private final List<ITabPanel> tabs = new ArrayList<>();
private final List<IConduit> conduits = new ArrayList<IConduit>();
private final List<ITabPanel> tabs = new ArrayList<ITabPanel>();
private int activeTab = 0;
private static final int tabYOffset = 4;
private int tabYOffset = 4;
private final ExternalConnectionContainer container;
@@ -86,8 +86,8 @@ public class GuiExternalConnection extends GuiContainerBaseEIO {
container.setInoutSlotsVisible(false, false);
List<IConduit> cons = new ArrayList<>(bundle.getConduits());
Collections.sort(cons, new Comparator<>() {
List<IConduit> cons = new ArrayList<IConduit>(bundle.getConduits());
Collections.sort(cons, new Comparator<IConduit>() {
@Override
public int compare(IConduit o1, IConduit o2) {
@@ -23,7 +23,6 @@ import crazypants.enderio.conduit.IConduit;
import crazypants.enderio.conduit.IConduitBundle;
import crazypants.enderio.conduit.redstone.IInsulatedRedstoneConduit;
import crazypants.enderio.network.PacketHandler;
import crazypants.util.ForgeDirections;
public class GuiExternalConnectionSelector extends GuiScreen {
@@ -34,7 +33,7 @@ public class GuiExternalConnectionSelector extends GuiScreen {
public GuiExternalConnectionSelector(IConduitBundle cb) {
this.cb = cb;
cons = new HashSet<>();
cons = new HashSet<ForgeDirection>();
for (IConduit con : cb.getConduits()) {
if (con instanceof IInsulatedRedstoneConduit) {
Set<ForgeDirection> conCons = con.getConduitConnections();
@@ -52,7 +51,7 @@ public class GuiExternalConnectionSelector extends GuiScreen {
@Override
protected void actionPerformed(GuiButton b) {
ForgeDirection dir = ForgeDirections.DIRECTIONS[b.id];
ForgeDirection dir = ForgeDirection.values()[b.id];
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
BlockCoord loc = cb.getLocation();
PacketHandler.INSTANCE.sendToServer(new PacketOpenConduitUI(cb.getEntity(), dir));
@@ -62,7 +62,7 @@ public class LiquidSettings extends BaseSettingsPanel {
private final ILiquidConduit conduit;
private AbstractEnderLiquidConduit eConduit;
private final boolean isEnder;
private boolean isEnder;
private static final int filterIX = 4;
private static final int filterEX = 104;
private static final int filterY = 63;
@@ -70,7 +70,7 @@ public class LiquidSettings extends BaseSettingsPanel {
private static final Rectangle extractFilterBounds = new Rectangle(filterEX, filterY, 90, 18);
private GuiToolTip[] filterToolTips;
private static final boolean inOutShowIn = true;
private boolean inOutShowIn = true;
private IconButton insertWhiteListB;
private IconButton extractWhiteListB;
@@ -172,7 +172,7 @@ public class LiquidSettings extends BaseSettingsPanel {
public void actionPerformed(GuiButton guiButton) {
super.actionPerformed(guiButton);
if (guiButton.id == ID_COLOR_BUTTON) {
conduit.setExtractionSignalColor(gui.getDir(), DyeColor.VALUES[colorB.getColorIndex()]);
conduit.setExtractionSignalColor(gui.getDir(), DyeColor.values()[colorB.getColorIndex()]);
PacketHandler.INSTANCE.sendToServer(new PacketExtractMode(conduit, gui.getDir()));
} else if (guiButton.id == ID_INSERT_WHITELIST || guiButton.id == ID_EXTRACT_WHITELIST) {
toggleBlacklist(guiButton.id == ID_EXTRACT_WHITELIST);
@@ -180,7 +180,7 @@ public class LiquidSettings extends BaseSettingsPanel {
ColorButton btn = (ColorButton) guiButton;
if (isEnder) {
DyeColor col = DyeColor.VALUES[btn.getColorIndex()];
DyeColor col = DyeColor.values()[btn.getColorIndex()];
boolean isInput = guiButton.id == ID_EXTRACT_CHANNEL;
if (isInput) {
@@ -284,8 +284,6 @@ public class LiquidSettings extends BaseSettingsPanel {
rsB.onGuiInit();
colorB.onGuiInit();
gui.getContainer().setInventorySlotsVisible(true);
if (!isEnder) {
return;
}
@@ -297,6 +295,7 @@ public class LiquidSettings extends BaseSettingsPanel {
roundRobinB.onGuiInit();
roundRobinB.setSelected(eConduit.isRoundRobin(gui.getDir()));
gui.getContainer().setInventorySlotsVisible(true);
if (isFilterVisible()) {
addFilterTooltips();
@@ -18,9 +18,9 @@ import crazypants.enderio.network.PacketHandler;
public class OCSettings extends BaseSettingsPanel {
private static final int ID_COLOR_BUTTON = GuiExternalConnection.nextButtonId();
private final ColorButton cb;
private ColorButton cb;
private final String signalColorStr = EnderIO.lang.localize("gui.conduit.redstone.color");
private String signalColorStr = EnderIO.lang.localize("gui.conduit.redstone.color");
private final IOCConduit occon;
public OCSettings(GuiExternalConnection gui, IConduit con) {
@@ -42,7 +42,7 @@ public class OCSettings extends BaseSettingsPanel {
public void actionPerformed(GuiButton guiButton) {
super.actionPerformed(guiButton);
if (guiButton.id == ID_COLOR_BUTTON && cb != null) {
occon.setSignalColor(gui.getDir(), DyeColor.VALUES[cb.getColorIndex()]);
occon.setSignalColor(gui.getDir(), DyeColor.values()[cb.getColorIndex()]);
PacketHandler.INSTANCE.sendToServer(new PacketOCConduitSignalColor(occon, gui.getDir()));
}
}
@@ -11,7 +11,6 @@ import crazypants.enderio.conduit.liquid.AbstractEnderLiquidConduit;
import crazypants.enderio.conduit.liquid.ILiquidConduit;
import crazypants.enderio.conduit.packet.AbstractConduitPacket;
import crazypants.enderio.conduit.packet.ConTypeEnum;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketFluidChannel extends AbstractConduitPacket<ILiquidConduit>
@@ -43,9 +42,9 @@ public class PacketFluidChannel extends AbstractConduitPacket<ILiquidConduit>
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
isInput = buf.readBoolean();
channel = DyeColor.VALUES[buf.readShort()];
channel = DyeColor.values()[buf.readShort()];
}
@Override
@@ -12,7 +12,6 @@ import crazypants.enderio.conduit.liquid.FluidFilter;
import crazypants.enderio.conduit.liquid.ILiquidConduit;
import crazypants.enderio.conduit.packet.AbstractConduitPacket;
import crazypants.enderio.conduit.packet.ConTypeEnum;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketFluidFilter extends AbstractConduitPacket<ILiquidConduit>
@@ -45,7 +44,7 @@ public class PacketFluidFilter extends AbstractConduitPacket<ILiquidConduit>
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
isInput = buf.readBoolean();
NBTTagCompound tag = ByteBufUtils.readTag(buf);
filter = new FluidFilter();
@@ -11,7 +11,6 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.EnderIO;
import crazypants.enderio.GuiHandler;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketOpenConduitUI extends MessageTileEntity<TileEntity>
@@ -35,7 +34,7 @@ public class PacketOpenConduitUI extends MessageTileEntity<TileEntity>
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
}
public IMessage onMessage(PacketOpenConduitUI message, MessageContext ctx) {
@@ -21,9 +21,9 @@ public class PowerSettings extends BaseSettingsPanel {
private static final int ID_COLOR_BUTTON = GuiExternalConnection.nextButtonId();
private final IPowerConduit conduit;
private final RedstoneModeButton rsB;
private final ColorButton colorB;
private IPowerConduit conduit;
private RedstoneModeButton rsB;
private ColorButton colorB;
protected PowerSettings(final GuiExternalConnection gui, IConduit con) {
super(IconEIO.WRENCH_OVERLAY_POWER, EnderIO.lang.localize("itemPowerConduit.name"), gui, con);
@@ -59,7 +59,7 @@ public class PowerSettings extends BaseSettingsPanel {
public void actionPerformed(GuiButton guiButton) {
super.actionPerformed(guiButton);
if (guiButton.id == ID_COLOR_BUTTON) {
conduit.setExtractionSignalColor(gui.getDir(), DyeColor.VALUES[colorB.getColorIndex()]);
conduit.setExtractionSignalColor(gui.getDir(), DyeColor.values()[colorB.getColorIndex()]);
PacketHandler.INSTANCE.sendToServer(new PacketExtractMode(conduit, gui.getDir()));
}
}
@@ -25,8 +25,8 @@ public class RedstoneSettings extends BaseSettingsPanel {
private CheckBox strongCB;
private final String signalColorStr = EnderIO.lang.localize("gui.conduit.redstone.color");
private final String signalStringthStr = EnderIO.lang.localize("gui.conduit.redstone.signalStrengh");
private String signalColorStr = EnderIO.lang.localize("gui.conduit.redstone.color");
private String signalStringthStr = EnderIO.lang.localize("gui.conduit.redstone.signalStrengh");
private IInsulatedRedstoneConduit insCon;
private int stongLabelX;
@@ -61,7 +61,7 @@ public class RedstoneSettings extends BaseSettingsPanel {
public void actionPerformed(GuiButton guiButton) {
super.actionPerformed(guiButton);
if (guiButton.id == ID_COLOR_BUTTON && cb != null) {
insCon.setSignalColor(gui.getDir(), DyeColor.VALUES[cb.getColorIndex()]);
insCon.setSignalColor(gui.getDir(), DyeColor.values()[cb.getColorIndex()]);
PacketHandler.INSTANCE.sendToServer(new PacketRedstoneConduitSignalColor(insCon, gui.getDir()));
} else if (guiButton.id == ID_STRONG_BUTTON && strongCB != null) {
insCon.setOutputStrength(gui.getDir(), strongCB.isSelected());
@@ -39,11 +39,11 @@ public class BasicItemFilterGui implements IItemFilterGui {
private final IItemFilterContainer filterContainer;
private final ItemFilter filter;
private final int buttonIdOffset;
private final int xOffset;
private final int yOffset;
private int buttonIdOffset;
private int xOffset;
private int yOffset;
private final boolean isInput;
private boolean isInput;
public BasicItemFilterGui(GuiContainerBaseEIO gui, IItemFilterContainer filterContainer,
boolean isStickyModeAvailable, boolean isInput) {
@@ -107,7 +107,7 @@ public class BasicItemFilterGui implements IItemFilterGui {
useNbtB.setPaintSelectedBorder(false);
x += 16;
fuzzyB = new CycleButton<>(gui, ID_FUZZY + buttonIdOffset, x, y, FuzzyMode.class);
fuzzyB = new CycleButton(gui, ID_FUZZY + buttonIdOffset, x, y, FuzzyMode.class);
}
public void createFilterSlots() {
@@ -39,7 +39,7 @@ public class BigItemFilterGui implements IItemFilterGui {
private final IItemFilterContainer filterContainer;
private final ItemFilter filter;
private final int buttonIdOffset;
private int buttonIdOffset;
private int xOffset;
private int yOffset;
@@ -92,7 +92,7 @@ public class BigItemFilterGui implements IItemFilterGui {
useNbtB.setPaintSelectedBorder(false);
x += 16;
fuzzyB = new CycleButton<>(gui, ID_FUZZY + buttonIdOffset, x, y, FuzzyMode.class);
fuzzyB = new CycleButton(gui, ID_FUZZY + buttonIdOffset, x, y, FuzzyMode.class);
x += 16;
stickyB = new ToggleButton(
@@ -38,26 +38,26 @@ public class ExistingItemFilterGui implements IItemFilterGui {
private static final int ID_SHOW = GuiExternalConnection.nextButtonId();
private static final int ID_MERGE = GuiExternalConnection.nextButtonId();
private final IItemConduit itemConduit;
private final GuiExternalConnection gui;
private IItemConduit itemConduit;
private GuiExternalConnection gui;
private final ToggleButton useMetaB;
private final ToggleButton useNbtB;
private final ToggleButton useOreDictB;
private final ToggleButton stickyB;
private ToggleButton useMetaB;
private ToggleButton useNbtB;
private ToggleButton useOreDictB;
private ToggleButton stickyB;
private final IconButton whiteListB;
private final GuiButton snapshotB;
private final GuiButton clearB;
private final GuiButton showB;
private final GuiButton mergeB;
private final SnapshotOverlay snapshotOverlay;
private GuiButton snapshotB;
private GuiButton clearB;
private GuiButton showB;
private GuiButton mergeB;
private SnapshotOverlay snapshotOverlay;
boolean isInput;
private int buttonIdOffset = 0;
private final ExistingItemFilter filter;
private ExistingItemFilter filter;
public ExistingItemFilterGui(GuiExternalConnection gui, IItemConduit itemConduit, boolean isInput) {
this.gui = gui;
@@ -9,9 +9,9 @@ import crazypants.enderio.network.PacketHandler;
public class ItemConduitFilterContainer implements IItemFilterContainer {
private final IItemConduit itemConduit;
private final ForgeDirection dir;
private final boolean isInput;
private IItemConduit itemConduit;
private ForgeDirection dir;
private boolean isInput;
public ItemConduitFilterContainer(IItemConduit itemConduit, ForgeDirection dir, boolean isInput) {
this.itemConduit = itemConduit;
@@ -31,7 +31,6 @@ import crazypants.enderio.gui.RedstoneModeButton;
import crazypants.enderio.machine.IRedstoneModeControlable;
import crazypants.enderio.machine.RedstoneControlMode;
import crazypants.enderio.network.PacketHandler;
import crazypants.util.ColorUtils;
public class ItemSettings extends BaseSettingsPanel {
@@ -44,7 +43,7 @@ public class ItemSettings extends BaseSettingsPanel {
private static final int ID_INSERT_CHANNEL = 23;
private static final int ID_EXTRACT_CHANNEL = 27;
private final @Nonnull IItemConduit itemConduit;
private @Nonnull IItemConduit itemConduit;
private final ToggleButton loopB;
private final ToggleButton roundRobinB;
@@ -55,11 +54,11 @@ public class ItemSettings extends BaseSettingsPanel {
private final RedstoneModeButton rsB;
private final @Nonnull ColorButton colorB;
private final ColorButton insertChannelB;
private final ColorButton extractChannelB;
private ColorButton insertChannelB;
private ColorButton extractChannelB;
private static final int priLeft = 46;
private static final int priWidth = 32;
private int priLeft = 46;
private int priWidth = 32;
private IItemFilterGui insertFilterGui;
private IItemFilterGui extractFilterGui;
@@ -175,7 +174,6 @@ public class ItemSettings extends BaseSettingsPanel {
private void updateButtons() {
rsB.onGuiInit();
rsB.setMode(itemConduit.getExtractionRedstoneMode(gui.getDir()));
colorB.onGuiInit();
loopB.onGuiInit();
loopB.setSelected(itemConduit.isSelfFeedEnabled(gui.getDir()));
@@ -241,7 +239,7 @@ public class ItemSettings extends BaseSettingsPanel {
String priority = EnderIO.lang.localize("gui.conduit.item.priority");
fr.drawString(priority, left + 12, top1 + 25, ColorUtil.getRGB(Color.black));
fr.drawString(str, left + priLeft + priWidth - sw - gap, top1 + 25, ColorUtils.priorityString.getColor());
fr.drawString(str, left + priLeft + priWidth - sw - gap, top1 + 25, ColorUtil.getRGB(Color.black));
if (insertFilterGui != null) insertFilterGui.renderCustomOptions(top1, par1, par2, par3);
if (extractFilterGui != null) extractFilterGui.renderCustomOptions(top1, par1, par2, par3);
@@ -35,11 +35,11 @@ public class LimitedItemFilterGui implements IItemFilterGui {
private final IItemFilterContainer filterContainer;
private final ItemFilter filter;
private final int buttonIdOffset;
private final int xOffset;
private final int yOffset;
private int buttonIdOffset;
private int xOffset;
private int yOffset;
final boolean isStickyModeAvailable;
private final boolean isInput;
private boolean isInput;
public LimitedItemFilterGui(GuiContainerBaseEIO gui, IItemFilterContainer filterContainer,
boolean isStickyModeAvailable, boolean isInput) {
@@ -101,7 +101,7 @@ public class LimitedItemFilterGui implements IItemFilterGui {
useNbtB.setPaintSelectedBorder(false);
x += 16;
fuzzyB = new CycleButton<>(gui, ID_FUZZY + buttonIdOffset, x, y, FuzzyMode.class);
fuzzyB = new CycleButton(gui, ID_FUZZY + buttonIdOffset, x, y, FuzzyMode.class);
}
public void createFilterSlots() {
@@ -37,6 +37,7 @@ public class ModItemFilterGui implements IItemFilterGui {
private final IconButton whiteListB;
private final int inputOffsetX;
private final int tfWidth;
private final int tfTextureX;
private final int tfTextureY;
@@ -55,12 +56,13 @@ public class ModItemFilterGui implements IItemFilterGui {
} else {
filter = (ModItemFilter) itemConduit.getOutputFilter(gui.getDir());
}
inputOffsetX = x;
tfWidth = 52;
tfTextureX = 120;
tfTextureY = 214;
inputBounds = new Rectangle[] { new Rectangle(x, y, 16, 16), new Rectangle(x, y + 18, 16, 16),
new Rectangle(x, y + 36, 16, 16) };
inputBounds = new Rectangle[] { new Rectangle(inputOffsetX, y, 16, 16),
new Rectangle(inputOffsetX, y + 18, 16, 16), new Rectangle(inputOffsetX, y + 36, 16, 16) };
deleteButs = new IconButton[inputBounds.length];
for (int i = 0; i < deleteButs.length; i++) {
@@ -14,25 +14,17 @@ import crazypants.enderio.conduit.item.NetworkedInventory;
import crazypants.enderio.conduit.item.filter.ExistingItemFilter;
import crazypants.enderio.conduit.packet.AbstractConduitPacket;
import crazypants.enderio.conduit.packet.ConTypeEnum;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketExistingItemFilterSnapshot extends AbstractConduitPacket<IItemConduit>
implements IMessageHandler<PacketExistingItemFilterSnapshot, IMessage> {
public enum Opcode {
public static enum Opcode {
CLEAR,
SET,
MERGE,
SET_BLACK,
UNSET_BLACK;
private static final Opcode[] VALUES = values();
public static Opcode fromOrdinal(int ordinal) {
return VALUES[ordinal];
}
UNSET_BLACK
}
private ForgeDirection dir;
@@ -51,9 +43,9 @@ public class PacketExistingItemFilterSnapshot extends AbstractConduitPacket<IIte
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
isInput = buf.readBoolean();
opcode = Opcode.fromOrdinal(buf.readByte() & 255);
opcode = Opcode.values()[buf.readByte() & 255];
}
@Override
@@ -10,7 +10,6 @@ import crazypants.enderio.conduit.item.IItemConduit;
import crazypants.enderio.conduit.item.filter.ModItemFilter;
import crazypants.enderio.conduit.packet.AbstractConduitPacket;
import crazypants.enderio.conduit.packet.ConTypeEnum;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketModItemFilter extends AbstractConduitPacket<IItemConduit>
@@ -34,7 +33,7 @@ public class PacketModItemFilter extends AbstractConduitPacket<IItemConduit>
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
isInput = buf.readBoolean();
index = buf.readInt();
boolean isNull = buf.readBoolean();
@@ -60,7 +60,7 @@ public class ItemConduit extends AbstractConduit implements IItemConduit {
public static final String ICON_KEY_ENDER = "enderio:ender_still";
static final Map<String, IIcon> ICONS = new HashMap<>();
static final Map<String, IIcon> ICONS = new HashMap<String, IIcon>();
public static void initIcons() {
IconUtil.addIconProvider(new IconUtil.IIconProvider() {
@@ -87,24 +87,37 @@ public class ItemConduit extends AbstractConduit implements IItemConduit {
ItemConduitNetwork network;
protected final EnumMap<ForgeDirection, RedstoneControlMode> extractionModes = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> extractionColors = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, RedstoneControlMode> extractionModes = new EnumMap<ForgeDirection, RedstoneControlMode>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> extractionColors = new EnumMap<ForgeDirection, DyeColor>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, IItemFilter> outputFilters = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, IItemFilter> inputFilters = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, ItemStack> outputFilterUpgrades = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, ItemStack> inputFilterUpgrades = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, ItemStack> speedUpgrades = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, ItemStack> functionUpgrades = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, IItemFilter> outputFilters = new EnumMap<ForgeDirection, IItemFilter>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, IItemFilter> inputFilters = new EnumMap<ForgeDirection, IItemFilter>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, ItemStack> outputFilterUpgrades = new EnumMap<ForgeDirection, ItemStack>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, ItemStack> inputFilterUpgrades = new EnumMap<ForgeDirection, ItemStack>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, ItemStack> speedUpgrades = new EnumMap<ForgeDirection, ItemStack>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, ItemStack> functionUpgrades = new EnumMap<ForgeDirection, ItemStack>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, Boolean> selfFeed = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, Boolean> selfFeed = new EnumMap<ForgeDirection, Boolean>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, Boolean> roundRobin = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, Boolean> roundRobin = new EnumMap<ForgeDirection, Boolean>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, Integer> priority = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, Integer> priority = new EnumMap<ForgeDirection, Integer>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> outputColors = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> inputColors = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> outputColors = new EnumMap<ForgeDirection, DyeColor>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> inputColors = new EnumMap<ForgeDirection, DyeColor>(
ForgeDirection.class);
private int metaData;
@@ -133,7 +146,7 @@ public class ItemConduit extends AbstractConduit implements IItemConduit {
metaData = 0;
}
Map<ForgeDirection, ItemStack> converted = new HashMap<>();
Map<ForgeDirection, ItemStack> converted = new HashMap<ForgeDirection, ItemStack>();
convertToItemUpgrades(filterMeta, converted, inputFilters);
for (Entry<ForgeDirection, ItemStack> entry : converted.entrySet()) {
@@ -151,10 +164,10 @@ public class ItemConduit extends AbstractConduit implements IItemConduit {
@Override
protected void readTypeSettings(ForgeDirection dir, NBTTagCompound dataRoot) {
setExtractionSignalColor(dir, DyeColor.VALUES[dataRoot.getShort("extractionSignalColor")]);
setExtractionRedstoneMode(RedstoneControlMode.VALUES[dataRoot.getShort("extractionRedstoneMode")], dir);
setInputColor(dir, DyeColor.VALUES[dataRoot.getShort("inputColor")]);
setOutputColor(dir, DyeColor.VALUES[dataRoot.getShort("outputColor")]);
setExtractionSignalColor(dir, DyeColor.values()[dataRoot.getShort("extractionSignalColor")]);
setExtractionRedstoneMode(RedstoneControlMode.values()[dataRoot.getShort("extractionRedstoneMode")], dir);
setInputColor(dir, DyeColor.values()[dataRoot.getShort("inputColor")]);
setOutputColor(dir, DyeColor.values()[dataRoot.getShort("outputColor")]);
setSelfFeedEnabled(dir, dataRoot.getBoolean("selfFeed"));
setRoundRobinEnabled(dir, dataRoot.getBoolean("roundRobin"));
setOutputPriority(dir, dataRoot.getInteger("outputPriority"));
@@ -185,7 +198,7 @@ public class ItemConduit extends AbstractConduit implements IItemConduit {
@Override
public List<ItemStack> getDrops() {
List<ItemStack> res = new ArrayList<>();
List<ItemStack> res = new ArrayList<ItemStack>();
res.add(createItem());
for (ItemStack stack : speedUpgrades.values()) {
res.add(stack);
@@ -837,15 +850,15 @@ public class ItemConduit extends AbstractConduit implements IItemConduit {
key = "extRM." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < RedstoneControlMode.VALUES.length) {
extractionModes.put(dir, RedstoneControlMode.VALUES[ord]);
if (ord >= 0 && ord < RedstoneControlMode.values().length) {
extractionModes.put(dir, RedstoneControlMode.values()[ord]);
}
}
key = "extSC." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < DyeColor.VALUES.length) {
extractionColors.put(dir, DyeColor.VALUES[ord]);
if (ord >= 0 && ord < DyeColor.values().length) {
extractionColors.put(dir, DyeColor.values()[ord]);
}
}
key = "selfFeed." + dir.name();
@@ -869,16 +882,16 @@ public class ItemConduit extends AbstractConduit implements IItemConduit {
key = "inSC." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < DyeColor.VALUES.length) {
inputColors.put(dir, DyeColor.VALUES[ord]);
if (ord >= 0 && ord < DyeColor.values().length) {
inputColors.put(dir, DyeColor.values()[ord]);
}
}
key = "outSC." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < DyeColor.VALUES.length) {
outputColors.put(dir, DyeColor.VALUES[ord]);
if (ord >= 0 && ord < DyeColor.values().length) {
outputColors.put(dir, DyeColor.values()[ord]);
}
}
}
@@ -8,13 +8,10 @@ import java.util.Map;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.IChatComponent;
import net.minecraftforge.common.util.ForgeDirection;
import com.enderio.core.common.util.BlockCoord;
import crazypants.enderio.EnderIO;
import crazypants.enderio.conduit.AbstractConduitNetwork;
import crazypants.enderio.conduit.item.NetworkedInventory.Target;
import crazypants.enderio.conduit.item.filter.IItemFilter;
@@ -22,10 +19,10 @@ import crazypants.enderio.machine.invpanel.server.InventoryDatabaseServer;
public class ItemConduitNetwork extends AbstractConduitNetwork<IItemConduit, IItemConduit> {
final List<NetworkedInventory> inventories = new ArrayList<>();
private final Map<BlockCoord, List<NetworkedInventory>> invMap = new HashMap<>();
final List<NetworkedInventory> inventories = new ArrayList<NetworkedInventory>();
private final Map<BlockCoord, List<NetworkedInventory>> invMap = new HashMap<BlockCoord, List<NetworkedInventory>>();
final Map<BlockCoord, IItemConduit> conMap = new HashMap<>();
final Map<BlockCoord, IItemConduit> conMap = new HashMap<BlockCoord, IItemConduit>();
private boolean requiresSort = true;
@@ -80,7 +77,7 @@ public class ItemConduitNetwork extends AbstractConduitNetwork<IItemConduit, IIt
}
public List<NetworkedInventory> getInventoryPanelSources() {
ArrayList<NetworkedInventory> res = new ArrayList<>();
ArrayList<NetworkedInventory> res = new ArrayList<NetworkedInventory>();
for (NetworkedInventory inv : inventories) {
if (inv.con.hasInventoryPanelUpgrade(inv.conDir)) {
res.add(inv);
@@ -92,7 +89,7 @@ public class ItemConduitNetwork extends AbstractConduitNetwork<IItemConduit, IIt
private List<NetworkedInventory> getOrCreate(BlockCoord bc) {
List<NetworkedInventory> res = invMap.get(bc);
if (res == null) {
res = new ArrayList<>();
res = new ArrayList<NetworkedInventory>();
invMap.put(bc, res);
}
return res;
@@ -179,8 +176,8 @@ public class ItemConduitNetwork extends AbstractConduitNetwork<IItemConduit, IIt
}
}
public List<IChatComponent> getTargetsForExtraction(BlockCoord extractFrom, IItemConduit con, ItemStack input) {
List<IChatComponent> result = new ArrayList<>();
public List<String> getTargetsForExtraction(BlockCoord extractFrom, IItemConduit con, ItemStack input) {
List<String> result = new ArrayList<String>();
List<NetworkedInventory> invs = getOrCreate(extractFrom);
for (NetworkedInventory source : invs) {
@@ -190,12 +187,12 @@ public class ItemConduitNetwork extends AbstractConduitNetwork<IItemConduit, IIt
for (Target t : source.sendPriority) {
IItemFilter f = t.inv.con.getOutputFilter(t.inv.conDir);
if (input == null || f == null || f.doesItemPassFilter(t.inv, input)) {
result.add(
t.inv.getInventoryNameComponent()
.appendText(" " + t.inv.location.chatString() + " ").appendSibling(
new ChatComponentTranslation(
EnderIO.lang.addPrefix("gui.mjReader.distance"),
t.distance)));
String s = t.inv.getLocalizedInventoryName() + " "
+ t.inv.location.chatString()
+ " Distance ["
+ t.distance
+ "] ";
result.add(s);
}
}
}
@@ -205,13 +202,13 @@ public class ItemConduitNetwork extends AbstractConduitNetwork<IItemConduit, IIt
return result;
}
public List<IChatComponent> getInputSourcesFor(IItemConduit con, ForgeDirection dir, ItemStack input) {
List<IChatComponent> result = new ArrayList<>();
public List<String> getInputSourcesFor(IItemConduit con, ForgeDirection dir, ItemStack input) {
List<String> result = new ArrayList<String>();
for (NetworkedInventory inv : inventories) {
if (inv.hasTarget(con, dir)) {
IItemFilter f = inv.con.getInputFilter(inv.conDir);
if (input == null || f == null || f.doesItemPassFilter(inv, input)) {
result.add(inv.getInventoryNameComponent().appendText(" " + inv.location.chatString()));
result.add(inv.getLocalizedInventoryName() + " " + inv.location.chatString());
}
}
}
@@ -64,8 +64,9 @@ public class ItemExtractSpeedUpgrade extends Item implements IResourceTooltipPro
}
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
@SideOnly(Side.CLIENT)
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List<ItemStack> par3List) {
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List) {
for (int j = 0; j < UPGRADES.length; ++j) {
par3List.add(new ItemStack(par1, 1, j));
}
@@ -64,8 +64,9 @@ public class ItemFunctionUpgrade extends Item implements IResourceTooltipProvide
}
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
@SideOnly(Side.CLIENT)
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List<ItemStack> par3List) {
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List) {
for (int j = 0; j < UPGRADES.length; ++j) {
par3List.add(new ItemStack(par1, 1, j));
}
@@ -14,7 +14,7 @@ public class ItemItemConduit extends AbstractItemConduit {
// new ItemConduitSubtype(ModObject.itemItemConduit.name(), "enderio:itemItemConduit"),
// new ItemConduitSubtype(ModObject.itemItemConduit.name() + "Empowered", "enderio:itemItemConduitAdvanced")
// };
private static final ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
private static ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
new ItemConduitSubtype(ModObject.itemItemConduit.name(), "enderio:itemItemConduit") };
public static ItemItemConduit create() {
@@ -6,15 +6,11 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.IChatComponent;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@@ -29,7 +25,6 @@ import crazypants.enderio.conduit.item.filter.IItemFilter;
import crazypants.enderio.conduit.item.filter.ItemFilterLimited;
import crazypants.enderio.config.Config;
import crazypants.enderio.machine.invpanel.TileInventoryPanel;
import crazypants.util.ForgeDirections;
public class NetworkedInventory {
@@ -39,15 +34,15 @@ public class NetworkedInventory {
BlockCoord location;
int inventorySide;
List<Target> sendPriority = new ArrayList<>();
RoundRobinIterator<Target> rrIter = new RoundRobinIterator<>(sendPriority);
List<Target> sendPriority = new ArrayList<Target>();
RoundRobinIterator<Target> rrIter = new RoundRobinIterator<Target>(sendPriority);
private int extractFromSlot = -1;
int tickDeficit;
private TileEntity connectedTileEntity;
// work around for a vanilla chest changing into a double chest without doing unneeded checks all the time
boolean recheckInv = false;
// Hack for TiC crafting station not working correctly when setting output slot to null
boolean ticHack = false;
@@ -66,13 +61,19 @@ public class NetworkedInventory {
this.location = location;
world = con.getBundle().getWorld();
TileEntity te = world.getTileEntity(location.x, location.y, location.z);
if (te.getClass().getName().equals("tconstruct.tools.logic.CraftingStationLogic")) {
ticHack = true;
} else if (te.getClass().getName().contains("cpw.mods.ironchest")) {
recheckInv = true;
} else if (te instanceof TileEntityChest) {
recheckInv = true;
} else if (te instanceof TileInventoryPanel) {
inventoryPanel = true;
}
updateInventory();
}
public boolean isInvalid() {
return connectedTileEntity == null || connectedTileEntity.isInvalid();
}
public boolean hasTarget(IItemConduit conduit, ForgeDirection dir) {
for (Target t : sendPriority) {
if (t.inv.con == conduit && t.inv.conDir == dir) {
@@ -109,13 +110,6 @@ public class NetworkedInventory {
}
public void onTick() {
if (isInvalid()) {
updateInventory();
if (isInvalid()) {
return;
}
}
if (tickDeficit > 0 || !canExtract() || !con.isExtractionRedstoneConditionMet(conDir)) {
// do nothing
} else {
@@ -150,6 +144,11 @@ public class NetworkedInventory {
}
private boolean transferItems() {
if (recheckInv) {
updateInventory();
}
int[] slotIndices = getInventory().getAccessibleSlotsFromSide(inventorySide);
if (slotIndices == null) {
return false;
@@ -258,6 +257,9 @@ public class NetworkedInventory {
matchedStickyInput = of != null && of.isValid() && of.doesItemPassFilter(this, toExtract);
}
if (target.stickyInput || !matchedStickyInput) {
if (target.inv.recheckInv) {
target.inv.updateInventory();
}
int inserted = target.inv.insertItem(toExtract);
if (inserted > 0) {
toExtract.stackSize -= inserted;
@@ -279,38 +281,15 @@ public class NetworkedInventory {
}
public final void updateInventory() {
TileEntity newTe = world.getTileEntity(location.x, location.y, location.z);
if (newTe != connectedTileEntity) {
connectedTileEntity = newTe;
ticHack = false;
inventoryPanel = false;
if (connectedTileEntity != null) {
if (connectedTileEntity.getClass().getName().equals("tconstruct.tools.logic.CraftingStationLogic")) {
ticHack = true;
} else if (connectedTileEntity instanceof TileInventoryPanel) {
inventoryPanel = true;
}
}
network.routesChanged();
}
if (connectedTileEntity instanceof ISidedInventory) {
inv = (ISidedInventory) connectedTileEntity;
} else if (connectedTileEntity instanceof IInventory) {
inv = new InventoryWrapper((IInventory) connectedTileEntity);
} else {
inv = null;
TileEntity te = world.getTileEntity(location.x, location.y, location.z);
if (te instanceof ISidedInventory) {
inv = (ISidedInventory) te;
} else if (te instanceof IInventory) {
inv = new InventoryWrapper((IInventory) te);
}
}
private int insertItem(ItemStack item) {
if (isInvalid()) {
updateInventory();
if (isInvalid()) {
return 0;
}
}
if (!canInsert() || item == null) {
return 0;
}
@@ -333,7 +312,7 @@ public class NetworkedInventory {
return 0;
}
}
return ItemUtil.doInsertItem(getInventory(), item, ForgeDirections.DIRECTIONS[inventorySide]);
return ItemUtil.doInsertItem(getInventory(), item, ForgeDirection.values()[inventorySide]);
}
void updateInsertOrder() {
@@ -341,7 +320,7 @@ public class NetworkedInventory {
if (!canExtract()) {
return;
}
List<Target> result = new ArrayList<>();
List<Target> result = new ArrayList<NetworkedInventory.Target>();
for (NetworkedInventory other : network.inventories) {
if ((con.isSelfFeedEnabled(conDir) || (other != this)) && other.canInsert()
@@ -359,8 +338,8 @@ public class NetworkedInventory {
Collections.sort(sendPriority);
} else {
if (!result.isEmpty()) {
Map<BlockCoord, Integer> visited = new HashMap<>();
List<BlockCoord> steps = new ArrayList<>();
Map<BlockCoord, Integer> visited = new HashMap<BlockCoord, Integer>();
List<BlockCoord> steps = new ArrayList<BlockCoord>();
steps.add(con.getLocation());
calculateDistances(result, visited, steps, 0);
@@ -377,7 +356,7 @@ public class NetworkedInventory {
return;
}
ArrayList<BlockCoord> nextSteps = new ArrayList<>();
ArrayList<BlockCoord> nextSteps = new ArrayList<BlockCoord>();
for (BlockCoord bc : steps) {
IItemConduit con = network.conMap.get(bc);
if (con != null) {
@@ -430,8 +409,8 @@ public class NetworkedInventory {
return inv;
}
public @Nullable ISidedInventory getInventoryRecheck() {
if (isInvalid()) {
public ISidedInventory getInventoryRecheck() {
if (recheckInv) {
updateInventory();
}
return inv;
@@ -445,10 +424,6 @@ public class NetworkedInventory {
this.inventorySide = inventorySide;
}
/**
* @deprecated Translates on the server. Use {@link #getInventoryNameComponent()} for chat.
*/
@Deprecated
public String getLocalizedInventoryName() {
String inventoryName = getInventory().getInventoryName();
if (inventoryName == null) {
@@ -460,22 +435,6 @@ public class NetworkedInventory {
}
}
public IChatComponent getInventoryNameComponent() {
String inventoryName = getInventory().getInventoryName();
if (inventoryName == null) {
return new ChatComponentText("null");
}
// Ask the tile entity: InventoryWrapper always reports no custom name.
// The client parses the translation as a format string and falls back to en_US if it fails, so a '%' in the
// en_US text (or in the key when untranslated) could crash it. A dedicated server translates to en_US.
boolean customName = connectedTileEntity instanceof IInventory
&& ((IInventory) connectedTileEntity).hasCustomInventoryName();
if (customName || StatCollector.translateToLocal(inventoryName).contains("%")) {
return new ChatComponentText(inventoryName);
}
return new ChatComponentTranslation(inventoryName);
}
static class Target implements Comparable<Target> {
NetworkedInventory inv;
@@ -47,8 +47,8 @@ public class ExistingItemFilter implements IItemFilter {
private boolean isStackInInventory(NetworkedInventory ni, ItemStack item) {
int[] slots = ni.getInventory().getAccessibleSlotsFromSide(ni.getInventorySide());
for (int slot : slots) {
ItemStack stack = ni.getInventory().getStackInSlot(slot);
for (int i = 0; i < slots.length; i++) {
ItemStack stack = ni.getInventory().getStackInSlot(i);
if (stackEqual(item, stack)) {
return true;
}
@@ -107,17 +107,17 @@ public class ExistingItemFilter implements IItemFilter {
}
public void setSnapshot(NetworkedInventory ni) {
snapshot = new ArrayList<>();
snapshot = new ArrayList<ItemStack>();
mergeSnapshot(ni);
}
public void mergeSnapshot(NetworkedInventory ni) {
if (snapshot == null) {
snapshot = new ArrayList<>();
snapshot = new ArrayList<ItemStack>();
}
int[] slots = ni.getInventory().getAccessibleSlotsFromSide(ni.getInventorySide());
for (int slot : slots) {
ItemStack stack = ni.getInventory().getStackInSlot(slot);
for (int i = 0; i < slots.length; i++) {
ItemStack stack = ni.getInventory().getStackInSlot(i);
if (stack != null && !isStackInSnapshot(stack)) {
snapshot.add(stack);
}
@@ -126,7 +126,7 @@ public class ExistingItemFilter implements IItemFilter {
public boolean mergeSnapshot(IInventory inventory) {
if (snapshot == null) {
snapshot = new ArrayList<>();
snapshot = new ArrayList<ItemStack>();
}
int size = inventory.getSizeInventory();
boolean added = false;
@@ -200,7 +200,7 @@ public class ExistingItemFilter implements IItemFilter {
readSettingsFromNBT(nbtRoot);
if (nbtRoot.hasKey("snapshot")) {
snapshot = new ArrayList<>();
snapshot = new ArrayList<ItemStack>();
NBTTagList itemList = (NBTTagList) nbtRoot.getTag("snapshot");
for (int i = 0; i < itemList.tagCount(); i++) {
NBTTagCompound itemTag = itemList.getCompoundTagAt(i);
@@ -274,7 +274,7 @@ public class ExistingItemFilter implements IItemFilter {
snapshot = null;
return;
}
snapshot = new ArrayList<>(numItems);
snapshot = new ArrayList<ItemStack>(numItems);
for (int i = 0; i < numItems; i++) {
NBTTagCompound itemTag = NetworkUtil.readNBTTagCompound(buf);
ItemStack item = ItemStack.loadItemStackFromNBT(itemTag);
@@ -82,8 +82,9 @@ public class ItemBasicItemFilter extends Item implements IItemFilterUpgrade {
}
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
@SideOnly(Side.CLIENT)
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List<ItemStack> par3List) {
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List) {
for (int j = 0; j < 2; ++j) {
par3List.add(new ItemStack(this, 1, j));
}
@@ -91,8 +92,7 @@ public class ItemBasicItemFilter extends Item implements IItemFilterUpgrade {
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List<String> par3List,
boolean par4) {
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
if (FilterRegister.isFilterSet(par1ItemStack)) {
if (!SpecialTooltipHandler.showAdvancedTooltips()) {
par3List.add(EnderIO.lang.localize("itemConduitFilterUpgrade"));
@@ -8,7 +8,6 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
@@ -68,7 +67,7 @@ public class ItemExistingItemFilter extends Item implements IItemFilterUpgrade,
ExistingItemFilter filter = (ExistingItemFilter) createFilterFromStack(item);
String unloc = "item.itemExistingItemFilter."
+ (filter.mergeSnapshot(inv) ? "filterUpdated" : "filterNotUpdated");
ChatUtil.sendNoSpam(player, new ChatComponentTranslation(EnderIO.lang.addPrefix(unloc)));
ChatUtil.sendNoSpamUnloc(player, EnderIO.lang, unloc);
FilterRegister.writeFilterToStack(filter, item);
return true;
}
@@ -90,8 +89,7 @@ public class ItemExistingItemFilter extends Item implements IItemFilterUpgrade,
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List<String> par3List,
boolean par4) {
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
if (FilterRegister.isFilterSet(par1ItemStack)) {
if (SpecialTooltipHandler.showAdvancedTooltips()) {
par3List.add(EnumChatFormatting.ITALIC + EnderIO.lang.localize("itemConduitFilterUpgrade.configured"));
@@ -75,7 +75,7 @@ public class ItemFilter implements IInventory, IItemFilter {
this.isAdvanced = isAdvanced;
this.numItems = numItems;
items = new ItemStack[numItems];
oreIds = new ArrayList<>(numItems);
oreIds = new ArrayList<int[]>(numItems);
for (int i = 0; i < numItems; i++) {
oreIds.add(null);
}
@@ -91,10 +91,11 @@ public class ItemFilter implements IInventory, IItemFilter {
return doesItemPassFilter(item);
}
@SuppressWarnings("SimplifiableConditionalExpression")
public boolean doesItemPassFilter(ItemStack item) {
boolean allow = isValid() && itemMatched(item);
return isBlacklist ^ allow;
return isBlacklist ? !allow : allow;
}
protected boolean itemMatched(ItemStack item) {
@@ -60,8 +60,7 @@ public class ItemLimitedItemFilter extends Item implements IItemFilterUpgrade, I
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List<String> par3List,
boolean par4) {
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
if (FilterRegister.isFilterSet(par1ItemStack)) {
if (SpecialTooltipHandler.showAdvancedTooltips()) {
par3List.add(EnumChatFormatting.ITALIC + EnderIO.lang.localize("itemConduitFilterUpgrade.configured"));
@@ -60,8 +60,7 @@ public class ItemModItemFilter extends Item implements IItemFilterUpgrade, IReso
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List<String> par3List,
boolean par4) {
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
if (FilterRegister.isFilterSet(par1ItemStack)) {
if (SpecialTooltipHandler.showAdvancedTooltips()) {
par3List.add(EnumChatFormatting.ITALIC + EnderIO.lang.localize("itemConduitFilterUpgrade.configured"));
@@ -7,7 +7,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.function.IntSupplier;
import java.util.function.Supplier;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
@@ -89,31 +89,35 @@ public abstract class AbstractEnderLiquidConduit extends AbstractLiquidConduit {
STELLAR(() -> Config.stellarEnderFluidConduitExtractRate, () -> Config.stellarEnderFluidConduitMaxIoRate);
private final IntSupplier getMaxExtractPerTick;
private final IntSupplier getMaxIoPerTick;
private final Supplier<Integer> getMaxExtractPerTick;
private final Supplier<Integer> getMaxIoPerTick;
Type(IntSupplier getMaxExtractPerTick, IntSupplier getMaxIoPerTick) {
Type(Supplier<Integer> getMaxExtractPerTick, Supplier<Integer> getMaxIoPerTick) {
this.getMaxExtractPerTick = getMaxExtractPerTick;
this.getMaxIoPerTick = getMaxIoPerTick;
}
public int getMaxExtractPerTick() {
return getMaxExtractPerTick.getAsInt();
return getMaxExtractPerTick.get();
}
public int getMaxIoPerTick() {
return getMaxIoPerTick.getAsInt();
return getMaxIoPerTick.get();
}
}
private EnderLiquidConduitNetwork network;
private int ticksSinceFailedExtract;
private final EnumMap<ForgeDirection, FluidFilter> outputFilters = new EnumMap<>(ForgeDirection.class);
private final EnumMap<ForgeDirection, FluidFilter> inputFilters = new EnumMap<>(ForgeDirection.class);
private final EnumMap<ForgeDirection, FluidFilter> outputFilters = new EnumMap<ForgeDirection, FluidFilter>(
ForgeDirection.class);
private final EnumMap<ForgeDirection, FluidFilter> inputFilters = new EnumMap<ForgeDirection, FluidFilter>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> outputColors = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> inputColors = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> outputColors = new EnumMap<ForgeDirection, DyeColor>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> inputColors = new EnumMap<ForgeDirection, DyeColor>(
ForgeDirection.class);
private int roundRobin = 0;
@@ -304,6 +308,7 @@ public abstract class AbstractEnderLiquidConduit extends AbstractLiquidConduit {
}
private void doExtract() {
BlockCoord loc = getLocation();
if (!hasExtractableMode()) {
return;
}
@@ -420,10 +425,10 @@ public abstract class AbstractEnderLiquidConduit extends AbstractLiquidConduit {
super.readTypeSettings(dir, dataRoot);
if (dataRoot.hasKey("inputColor")) {
setInputColor(dir, DyeColor.VALUES[dataRoot.getShort("inputColor")]);
setInputColor(dir, DyeColor.values()[dataRoot.getShort("inputColor")]);
}
if (dataRoot.hasKey("outputColor")) {
setOutputColor(dir, DyeColor.VALUES[dataRoot.getShort("outputColor")]);
setOutputColor(dir, DyeColor.values()[dataRoot.getShort("outputColor")]);
}
if (dataRoot.hasKey("roundRobin")) {
@@ -538,16 +543,16 @@ public abstract class AbstractEnderLiquidConduit extends AbstractLiquidConduit {
key = "inSC." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < DyeColor.VALUES.length) {
inputColors.put(dir, DyeColor.VALUES[ord]);
if (ord >= 0 && ord < DyeColor.values().length) {
inputColors.put(dir, DyeColor.values()[ord]);
}
}
key = "outSC." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < DyeColor.VALUES.length) {
outputColors.put(dir, DyeColor.VALUES[ord]);
if (ord >= 0 && ord < DyeColor.values().length) {
outputColors.put(dir, DyeColor.values()[ord]);
}
}
}
@@ -29,10 +29,12 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
public abstract class AbstractLiquidConduit extends AbstractConduit implements ILiquidConduit {
protected final EnumMap<ForgeDirection, RedstoneControlMode> extractionModes = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> extractionColors = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, RedstoneControlMode> extractionModes = new EnumMap<ForgeDirection, RedstoneControlMode>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> extractionColors = new EnumMap<ForgeDirection, DyeColor>(
ForgeDirection.class);
protected final Map<ForgeDirection, Integer> externalRedstoneSignals = new HashMap<>();
protected final Map<ForgeDirection, Integer> externalRedstoneSignals = new HashMap<ForgeDirection, Integer>();
protected boolean redstoneStateDirty = true;
public static IFluidHandler getExternalFluidHandler(IBlockAccess world, BlockCoord bc) {
@@ -202,8 +204,8 @@ public abstract class AbstractLiquidConduit extends AbstractConduit implements I
@Override
protected void readTypeSettings(ForgeDirection dir, NBTTagCompound dataRoot) {
setExtractionSignalColor(dir, DyeColor.VALUES[dataRoot.getShort("extractionSignalColor")]);
setExtractionRedstoneMode(RedstoneControlMode.VALUES[dataRoot.getShort("extractionRedstoneMode")], dir);
setExtractionSignalColor(dir, DyeColor.values()[dataRoot.getShort("extractionSignalColor")]);
setExtractionRedstoneMode(RedstoneControlMode.values()[dataRoot.getShort("extractionRedstoneMode")], dir);
}
@Override
@@ -239,15 +241,15 @@ public abstract class AbstractLiquidConduit extends AbstractConduit implements I
String key = "extRM." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < RedstoneControlMode.VALUES.length) {
extractionModes.put(dir, RedstoneControlMode.VALUES[ord]);
if (ord >= 0 && ord < RedstoneControlMode.values().length) {
extractionModes.put(dir, RedstoneControlMode.values()[ord]);
}
}
key = "extSC." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < DyeColor.VALUES.length) {
extractionColors.put(dir, DyeColor.VALUES[ord]);
if (ord >= 0 && ord < DyeColor.values().length) {
extractionColors.put(dir, DyeColor.values()[ord]);
}
}
}
@@ -7,16 +7,15 @@ import java.util.Set;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.world.EnumSkyBlock;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import com.enderio.core.common.util.BlockCoord;
import com.enderio.core.common.util.ChatUtil;
import com.gtnewhorizon.gtnhlib.chat.customcomponents.ChatComponentFluidName;
import crazypants.enderio.EnderIO;
import crazypants.enderio.conduit.AbstractConduitNetwork;
@@ -111,9 +110,7 @@ public abstract class AbstractTankConduit extends AbstractLiquidConduit {
if (network.fluidTypeLocked) {
network.setFluidTypeLocked(false);
numEmptyEvents = 0;
ChatUtil.sendNoSpam(
player,
new ChatComponentTranslation(EnderIO.lang.addPrefix("itemLiquidConduit.unlockedType")));
ChatUtil.sendNoSpamUnloc(player, EnderIO.lang, "itemLiquidConduit.unlockedType");
}
} else if (network != null) {
network.setFluidType(null);
@@ -131,10 +128,11 @@ public abstract class AbstractTankConduit extends AbstractLiquidConduit {
|| LiquidConduitNetwork.areFluidsCompatable(getFluidType(), fluid))) {
network.setFluidType(fluid);
network.setFluidTypeLocked(true);
ChatUtil.sendNoSpam(
ChatUtil.sendNoSpamUnloc(
player,
new ChatComponentTranslation(EnderIO.lang.addPrefix("itemLiquidConduit.lockedType"))
.appendText(" ").appendSibling(new ChatComponentFluidName(fluid)));
EnderIO.lang,
"itemLiquidConduit.lockedType",
" " + FluidRegistry.getFluidName(fluid));
}
}
return true;
@@ -14,6 +14,7 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import com.enderio.core.client.render.IconUtil;
import com.enderio.core.common.util.BlockCoord;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -91,6 +92,7 @@ public class AdvancedLiquidConduit extends AbstractTankConduit {
}
private void doExtract() {
BlockCoord loc = getLocation();
// Extraction can happen on extract mode or in/out mode
if (!hasExtractableMode()) {
return;
@@ -106,6 +108,7 @@ public class AdvancedLiquidConduit extends AbstractTankConduit {
return;
}
Fluid f = tank.getFluid() == null ? null : tank.getFluid().getFluid();
for (ForgeDirection dir : externalConnections) {
if (autoExtractForDir(dir)) {
if (network.extractFrom(this, dir, MAX_EXTRACT_PER_TICK)) {
@@ -19,7 +19,7 @@ public class AdvancedLiquidConduitNetwork extends AbstractTankConduitNetwork<Adv
private final ConduitTank tank = new ConduitTank(0);
private final Set<LiquidOutput> outputs = new HashSet<>();
private final Set<LiquidOutput> outputs = new HashSet<LiquidOutput>();
private Iterator<LiquidOutput> outputIterator;
@@ -134,7 +134,7 @@ public class ConduitTank implements IFluidTank {
addAmount(-used);
}
FluidStack drained = new FluidStack(fluid.getFluid(), used);
FluidStack drained = new FluidStack(fluid.getFluidID(), used);
if (fluid.amount < 0) {
fluid.amount = 0;
@@ -58,8 +58,8 @@ public class EnderLiquidConduitNetwork extends AbstractConduitNetwork<ILiquidCon
private final AbstractEnderLiquidConduit.Type type;
List<NetworkTank> tanks = new ArrayList<>();
Map<NetworkTankKey, NetworkTank> tankMap = new HashMap<>();
List<NetworkTank> tanks = new ArrayList<NetworkTank>();
Map<NetworkTankKey, NetworkTank> tankMap = new HashMap<NetworkTankKey, NetworkTank>();
Map<NetworkTank, TankIterator> iterators;
@@ -85,13 +85,11 @@ public class EnderLiquidConduitNetwork extends AbstractConduitNetwork<ILiquidCon
return false;
}
FluidTankInfo[] tankInfos = tank.externalTank.getTankInfo(conDir.getOpposite());
if (tankInfos != null) {
for (FluidTankInfo tankInfo : tankInfos) {
if (tank.externalTank.getTankInfo(conDir.getOpposite()) != null) {
for (FluidTankInfo tankInfo : tank.externalTank.getTankInfo(conDir.getOpposite())) {
if (tankInfo == null || tankInfo.fluid == null) {
continue;
}
FluidStack tryDrain = tankInfo.fluid.copy();
tryDrain.amount = type.getMaxExtractPerTick();
FluidStack drained = tank.externalTank.drain(conDir.getOpposite(), tryDrain, false);
@@ -100,12 +98,10 @@ public class EnderLiquidConduitNetwork extends AbstractConduitNetwork<ILiquidCon
|| !tryDrain.isFluidEqual(drained)) {
continue;
}
int amountAccepted = fillFrom(tank, drained, true);
int amountAccepted = fillFrom(tank, drained.copy(), true);
if (amountAccepted <= 0) {
continue;
}
tryDrain.amount = amountAccepted;
drained = tank.externalTank.drain(conDir.getOpposite(), tryDrain, true);
if (drained == null || drained.amount <= 0) {
@@ -119,7 +115,7 @@ public class EnderLiquidConduitNetwork extends AbstractConduitNetwork<ILiquidCon
if (drained == null || drained.amount <= 0 || !matchedFilter(drained, con, conDir, true)) {
return false;
}
int amountAccepted = fillFrom(tank, drained, true);
int amountAccepted = fillFrom(tank, drained.copy(), true);
if (amountAccepted <= 0) {
return false;
}
@@ -151,6 +147,7 @@ public class EnderLiquidConduitNetwork extends AbstractConduitNetwork<ILiquidCon
resource = resource.copy();
resource.amount = Math.min(resource.amount, type.getMaxIoPerTick());
int filled = 0;
int remaining = resource.amount;
// TODO: Only change starting pos of iterator is doFill is true so a false then true returns the same
TankIterator iterator;
@@ -161,13 +158,13 @@ public class EnderLiquidConduitNetwork extends AbstractConduitNetwork<ILiquidCon
&& target.acceptsOuput
&& target.isValid()
&& matchedFilter(resource, target.con, target.conDir, false)) {
// Use reused FluidStack instead of copying each iteration
int vol = target.externalTank.fill(target.tankDir, resource, doFill);
resource.amount -= vol;
int vol = target.externalTank.fill(target.tankDir, resource.copy(), doFill);
remaining -= vol;
filled += vol;
if (resource.amount <= 0) {
if (remaining <= 0) {
break;
}
resource.amount = remaining;
}
}
if (!tank.con.isRoundRobin(tank.conDir)) iterator.rewind();
@@ -203,7 +200,7 @@ public class EnderLiquidConduitNetwork extends AbstractConduitNetwork<ILiquidCon
}
public FluidTankInfo[] getTankInfo(AbstractEnderLiquidConduit con, ForgeDirection conDir) {
List<FluidTankInfo> res = new ArrayList<>(tanks.size());
List<FluidTankInfo> res = new ArrayList<FluidTankInfo>(tanks.size());
NetworkTank tank = getTank(con, conDir);
for (NetworkTank target : tanks) {
if (!target.equals(tank) && target.isValid()) {
@@ -19,7 +19,7 @@ import crazypants.enderio.config.Config;
public class ItemLiquidConduit extends AbstractItemConduit implements IAdvancedTooltipProvider {
private static final ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
private static ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
new ItemConduitSubtype(ModObject.itemLiquidConduit.name(), "enderio:itemLiquidConduit"),
new ItemConduitSubtype(
ModObject.itemLiquidConduit.name() + "Advanced",
@@ -77,15 +77,15 @@ public class ItemLiquidConduit extends AbstractItemConduit implements IAdvancedT
@Override
@SideOnly(Side.CLIENT)
public void addCommonEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {}
public void addCommonEntries(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag) {}
@Override
@SideOnly(Side.CLIENT)
public void addBasicEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {}
public void addBasicEntries(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag) {}
@Override
@SideOnly(Side.CLIENT)
public void addDetailedEntries(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) {
public void addDetailedEntries(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag) {
int extractRate;
int maxIo;
@@ -143,7 +143,7 @@ public class LiquidConduit extends AbstractTankConduit {
}
}
if (!foundFluid) {
continue;
return;
}
FluidStack couldDrain = extTank.drain(dir.getOpposite(), MAX_EXTRACT_PER_TICK, false);
@@ -360,7 +360,7 @@ public class LiquidConduit extends AbstractTankConduit {
return false;
}
AbstractTankConduitNetwork<?> n = (AbstractTankConduitNetwork<?>) network;
AbstractTankConduitNetwork n = (AbstractTankConduitNetwork) network;
if (tank.getFluid() == null) {
tank.setLiquid(n.getFluidType() == null ? null : n.getFluidType().copy());
} else if (n.getFluidType() == null) {
@@ -21,10 +21,10 @@ public class LiquidConduitNetwork extends AbstractTankConduitNetwork<LiquidCondu
private int ticksEmpty = 0;
private static final int maxFlowsPerTick = 10;
private int maxFlowsPerTick = 10;
private int lastFlowIndex = 0;
private static final boolean printFlowTiming = false;
private boolean printFlowTiming = false;
private int lastPushToken = 0;
@@ -100,7 +100,7 @@ public class LiquidConduitNetwork extends AbstractTankConduitNetwork<LiquidCondu
private boolean doFlow() {
int pushToken = getNextPushToken();
List<FlowAction> actions = new ArrayList<>();
List<FlowAction> actions = new ArrayList<FlowAction>();
for (int i = 0; i < Math.min(maxFlowsPerTick, conduits.size()); i++) {
if (lastFlowIndex >= conduits.size()) {
@@ -116,7 +116,7 @@ public class LiquidConduitNetwork extends AbstractTankConduitNetwork<LiquidCondu
boolean result = !actions.isEmpty();
// Flush any tanks with a tiny bit left
List<LiquidConduit> toEmpty = new ArrayList<>();
List<LiquidConduit> toEmpty = new ArrayList<LiquidConduit>();
for (LiquidConduit con : conduits) {
if (con != null && con.getTank().getFluidAmount() < 10) {
toEmpty.add(con);
@@ -129,7 +129,7 @@ public class LiquidConduitNetwork extends AbstractTankConduitNetwork<LiquidCondu
return result;
}
List<LocatedFluidHandler> externals = new ArrayList<>();
List<LocatedFluidHandler> externals = new ArrayList<LocatedFluidHandler>();
for (AbstractTankConduit con : conduits) {
Set<ForgeDirection> extCons = con.getExternalConnections();
@@ -279,11 +279,13 @@ public class LiquidConduitNetwork extends AbstractTankConduitNetwork<LiquidCondu
loc.y,
loc.z,
ILiquidConduit.class);
int numTargets = 0;
for (ILiquidConduit n : connections) {
LiquidConduit neighbour = (LiquidConduit) n;
if (canFlowTo(con, neighbour)) { // can only flow within same network
totalAmount += neighbour.getTank().getFluidAmount();
totalCapacity += neighbour.getTank().getCapacity();
numTargets++;
}
}
@@ -1,6 +1,7 @@
package crazypants.enderio.conduit.liquid;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -56,17 +57,10 @@ public class LiquidConduitRenderer extends DefaultConduitRenderer implements IRe
super.renderEntity(conduitBundleRenderer, te, conduit, x, y, z, partialTick, worldLight, rb);
}
public void renderDynamicEntity(ConduitBundleRenderer conduitBundleRenderer, IConduitBundle te, IConduit conduit,
double x, double y, double z, float partialTick, float worldLight) {
}
@Override
protected void renderConduit(IIcon tex, IConduit conduit, CollidableComponent component, float brightness) {
Tessellator tessellator = Tessellator.instance;
if (isNSEWUD(component.dir)) {
LiquidConduit lc = (LiquidConduit) conduit;
IIcon fluidTex = conduit.getTransmitionTextureForState(component);
FluidStack fluid = lc.getFluidType();
if (fluid != null) {
renderFluidOutline(component, fluid);
@@ -74,40 +68,33 @@ public class LiquidConduitRenderer extends DefaultConduitRenderer implements IRe
BoundingBox[] cubes = toCubes(component.bound);
for (BoundingBox cube : cubes) {
drawSection(cube, tex.getMinU(), tex.getMaxU(), tex.getMinV(), tex.getMaxV(), component.dir, false);
// This check is kinda broken, but whatever, it was like that when this was done in a TESR too
if (lc.getTank().getFilledRatio() <= 0) {
continue;
}
tessellator.setColorOpaque_F(0.7f, 0.7f, 0.7f);
drawSection(
cube,
fluidTex.getMinU(),
fluidTex.getMaxU(),
fluidTex.getMinV(),
fluidTex.getMaxV(),
component.dir,
true);
}
if (conduit.getConnectionMode(component.dir) == ConnectionMode.DISABLED) {
final CubeRenderer cr = CubeRenderer.get();
int i;
tex = EnderIO.blockConduitBundle.getConnectorIcon(component.data);
List<Vertex> corners = component.bound.getCornersWithUvForFace(
component.dir,
tex.getMinU(),
tex.getMaxU(),
tex.getMinV(),
tex.getMaxV());
for (i = corners.size() - 1; i >= 0; i--) {
Vertex c = corners.get(i);
cr.addVecWithUV(c.xyz, c.uv.x, c.uv.y);
}
// back face
for (i = corners.size() - 1; i >= 0; i--) {
Vertex c = corners.get(i);
cr.addVecWithUV(c.xyz, c.uv.x, c.uv.y);
}
} else {
drawSection(
component.bound,
tex.getMinU(),
tex.getMaxU(),
tex.getMinV(),
tex.getMaxV(),
component.dir,
true);
}
if (conduit.getConnectionMode(component.dir) == ConnectionMode.DISABLED) {
final CubeRenderer cr = CubeRenderer.get();
int i;
tex = EnderIO.blockConduitBundle.getConnectorIcon(component.data);
List<Vertex> corners = component.bound
.getCornersWithUvForFace(component.dir, tex.getMinU(), tex.getMaxU(), tex.getMinV(), tex.getMaxV());
for (i = corners.size() - 1; i >= 0; i--) {
Vertex c = corners.get(i);
cr.addVecWithUV(c.xyz, c.uv.x, c.uv.y);
}
// back face
for (i = corners.size() - 1; i >= 0; i--) {
Vertex c = corners.get(i);
cr.addVecWithUV(c.xyz, c.uv.x, c.uv.y);
}
}
}
@@ -256,6 +243,49 @@ public class LiquidConduitRenderer extends DefaultConduitRenderer implements IRe
// done in the dynamic section
}
@Override
public boolean isDynamic() {
return true;
}
@Override
public void renderDynamicEntity(ConduitBundleRenderer conduitBundleRenderer, IConduitBundle te, IConduit conduit,
double x, double y, double z, float partialTick, float worldLight) {
if (((LiquidConduit) conduit).getTank().getFilledRatio() <= 0) {
return;
}
Collection<CollidableComponent> components = conduit.getCollidableComponents();
Tessellator tessellator = Tessellator.instance;
calculateRatios((LiquidConduit) conduit);
transmissionScaleFactor = conduit.getTransmitionGeometryScale();
IIcon tex;
for (CollidableComponent component : components) {
if (renderComponent(component)) {
if (isNSEWUD(component.dir) && conduit.getTransmitionTextureForState(component) != null) {
tessellator.setColorOpaque_F(1, 1, 1);
tex = conduit.getTransmitionTextureForState(component);
BoundingBox[] cubes = toCubes(component.bound);
for (BoundingBox cube : cubes) {
drawSection(
cube,
tex.getMinU(),
tex.getMaxU(),
tex.getMinV(),
tex.getMaxV(),
component.dir,
true);
}
}
}
}
}
@Override
protected void setVerticesForTransmission(BoundingBox bound, ForgeDirection id) {
@@ -14,5 +14,7 @@ public interface IMEConduit extends IConduit {
boolean isDense();
boolean isDenseUltra();
int getChannelsInUse();
}
@@ -13,9 +13,10 @@ import crazypants.enderio.gui.IconEIO;
public class ItemMEConduit extends AbstractItemConduit {
private static final ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
private static ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
new ItemConduitSubtype(ModObject.itemMEConduit.name(), "enderio:itemMeConduit"),
new ItemConduitSubtype(ModObject.itemMEConduit.name() + "Dense", "enderio:itemMeConduitDense") };
new ItemConduitSubtype(ModObject.itemMEConduit.name() + "Dense", "enderio:itemMeConduitDense"),
new ItemConduitSubtype(ModObject.itemMEConduit.name() + "DenseUltra", "enderio:itemMeConduitDenseUltra") };
public static ItemMEConduit create() {
ItemMEConduit result = new ItemMEConduit();
@@ -16,6 +16,7 @@ import com.enderio.core.client.render.IconUtil;
import com.enderio.core.common.util.BlockCoord;
import appeng.api.AEApi;
import appeng.api.networking.GridFlags;
import appeng.api.networking.IGridConnection;
import appeng.api.networking.IGridHost;
import appeng.api.networking.IGridNode;
@@ -50,6 +51,7 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
public static IIcon[] longTextures;
private boolean isDense;
private boolean isDenseUltra;
private int playerID = -1;
public MEConduit() {
@@ -57,6 +59,7 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
}
public MEConduit(int itemDamage) {
isDenseUltra = itemDamage == 2;
isDense = itemDamage == 1;
}
@@ -65,14 +68,16 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
@Override
public void registerIcons(IIconRegister register) {
coreTextures = new IIcon[2];
longTextures = new IIcon[2];
coreTextures = new IIcon[3];
longTextures = new IIcon[3];
coreTextures[0] = register.registerIcon(EnderIO.DOMAIN + ":meConduitCore");
coreTextures[1] = register.registerIcon(EnderIO.DOMAIN + ":meConduitCoreDense");
coreTextures[2] = register.registerIcon(EnderIO.DOMAIN + ":meConduitCoreDenseUltra");
longTextures[0] = register.registerIcon(EnderIO.DOMAIN + ":meConduit");
longTextures[1] = register.registerIcon(EnderIO.DOMAIN + ":meConduitDense");
longTextures[2] = register.registerIcon(EnderIO.DOMAIN + ":meConduitDenseUltra");
}
@Override
@@ -82,7 +87,10 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
});
}
public static int getDamageForState(boolean isDense) {
public static int getDamageForState(boolean isDense, boolean isDenseUltra) {
if (isDenseUltra) {
return 2;
}
if (isDense) {
return 1;
}
@@ -96,7 +104,7 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
@Override
public ItemStack createItem() {
return new ItemStack(EnderIO.itemMEConduit, 1, getDamageForState(isDense));
return new ItemStack(EnderIO.itemMEConduit, 1, getDamageForState(isDense, isDenseUltra));
}
@Override
@@ -114,6 +122,7 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
public void writeToNBT(NBTTagCompound nbtRoot) {
super.writeToNBT(nbtRoot);
nbtRoot.setBoolean("isDense", isDense);
nbtRoot.setBoolean("isDenseUltra", isDenseUltra);
nbtRoot.setInteger("playerID", playerID);
}
@@ -126,6 +135,9 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
} else {
playerID = -1;
}
if (nbtRoot.hasKey("isDenseUltra")) {
isDenseUltra = nbtRoot.getBoolean("isDenseUltra");
}
}
public void setPlayerID(int playerID) {
@@ -196,12 +208,22 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
@Method(modid = "appliedenergistics2")
private Boolean canConnectToGridNode(IGridNode node, ForgeDirection dir) {
return node.getGridBlock().getConnectableSides().contains(dir.getOpposite());
if (node.getGridBlock().getConnectableSides().contains(dir.getOpposite())) {
if (isDenseUltra()) {
return node.hasFlag(GridFlags.ULTRA_DENSE_CAPACITY)
|| ((node.hasFlag(GridFlags.DENSE_CAPACITY)) && !node.hasFlag(GridFlags.CANNOT_CARRY));
} else if (isDense()) {
return true;
} else {
return !node.hasFlag(GridFlags.ULTRA_DENSE_CAPACITY);
}
}
return false;
}
@Override
public IIcon getTextureForState(CollidableComponent component) {
int state = getDamageForState(isDense);
int state = getDamageForState(isDense, isDenseUltra);
if (component.dir == ForgeDirection.UNKNOWN) {
return coreTextures[state];
} else {
@@ -378,4 +400,9 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
public boolean isDense() {
return isDense;
}
@Override
public boolean isDenseUltra() {
return isDenseUltra;
}
}
@@ -43,6 +43,9 @@ public class MEConduitGrid implements IGridBlock {
@Override
public EnumSet<GridFlags> getFlags() {
if (conduit.isDenseUltra()) {
return EnumSet.of(GridFlags.ULTRA_DENSE_CAPACITY);
}
if (conduit.isDense()) {
return EnumSet.of(GridFlags.DENSE_CAPACITY);
}
@@ -12,7 +12,7 @@ import crazypants.enderio.gui.IconEIO;
public class ItemOCConduit extends AbstractItemConduit {
private static final ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
private static ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
new ItemConduitSubtype(ModObject.itemOCConduit.name(), "enderio:itemOCConduit") };
public static ItemOCConduit create() {
@@ -15,9 +15,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@@ -51,7 +49,7 @@ public class OCConduit extends AbstractConduit implements IOCConduit {
protected OCConduitNetwork network;
private final Map<ForgeDirection, DyeColor> signalColors = new HashMap<>();
private Map<ForgeDirection, DyeColor> signalColors = new HashMap<ForgeDirection, DyeColor>();
public static IIcon[] coreTextures;
public static IIcon[] longTextures;
@@ -88,7 +86,7 @@ public class OCConduit extends AbstractConduit implements IOCConduit {
@Override
protected void readTypeSettings(ForgeDirection dir, NBTTagCompound dataRoot) {
setSignalColor(dir, DyeColor.VALUES[dataRoot.getShort("signalColor")]);
setSignalColor(dir, DyeColor.values()[dataRoot.getShort("signalColor")]);
}
@Override
@@ -115,7 +113,7 @@ public class OCConduit extends AbstractConduit implements IOCConduit {
BoundingBox bb = ConduitGeometryUtil.instance.createBoundsForConnectionController(key.dir, key.offset);
CollidableComponent cc = new CollidableComponent(IOCConduit.class, bb, key.dir, COLOR_CONTROLLER_ID);
List<CollidableComponent> result = new ArrayList<>();
List<CollidableComponent> result = new ArrayList<CollidableComponent>();
result.addAll(baseCollidables);
result.add(cc);
@@ -150,7 +148,7 @@ public class OCConduit extends AbstractConduit implements IOCConduit {
int i = 0;
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
if (cols[i] >= 0) {
signalColors.put(dir, DyeColor.VALUES[cols[i]]);
signalColors.put(dir, DyeColor.values()[cols[i]]);
}
i++;
}
@@ -215,20 +213,14 @@ public class OCConduit extends AbstractConduit implements IOCConduit {
return null;
}
private static IChatComponent prettyNode(Node o) {
private static String prettyNode(Node o) {
String at = "";
Environment host = o.host();
String name = host.getClass().getName().replaceFirst("^.*\\.", "");
if (host instanceof TileEntity) {
return new ChatComponentTranslation(
EnderIO.lang.addPrefix("itemOCConduit.chat.nodeAt"),
name,
coords(new BlockCoord((TileEntity) host)));
BlockCoord bc = new BlockCoord((TileEntity) host);
at = " at " + bc.x + "/" + bc.y + "/" + bc.z;
}
return new ChatComponentText(name);
}
private static String coords(BlockCoord bc) {
return bc.x + "/" + bc.y + "/" + bc.z;
return host.getClass().getName().replaceFirst("^.*\\.", "") + at;
}
private static EnumChatFormatting dye2chat(DyeColor dyeColor) {
@@ -282,37 +274,26 @@ public class OCConduit extends AbstractConduit implements IOCConduit {
BlockCoord bc = getLocation();
if (network != null) {
boolean noconnections = true;
for (DyeColor color : DyeColor.VALUES) {
for (DyeColor color : DyeColor.values()) {
if (node(color).neighbors().iterator().hasNext()) {
noconnections = false;
ChatComponentTranslation coltxt = new ChatComponentTranslation(
DyeColor.DYE_ORE_UNLOCAL_NAMES[color.ordinal()]);
ChatComponentText coltxt = new ChatComponentText(color.getLocalisedName());
coltxt.getChatStyle().setColor(dye2chat(color));
player.addChatMessage(
new ChatComponentTranslation(
EnderIO.lang.addPrefix("itemOCConduit.chat.channel"),
coltxt,
coords(bc)));
ChatComponentText chantxt = new ChatComponentText("Channel ");
chantxt.appendSibling(coltxt);
chantxt.appendText(" at " + bc.x + "/" + bc.y + "/" + bc.z);
player.addChatMessage(chantxt);
for (Node other : node(color).neighbors()) {
player.addChatMessage(
new ChatComponentText(" ").appendSibling(
new ChatComponentTranslation(
EnderIO.lang.addPrefix("itemOCConduit.chat.connectedTo"),
prettyNode(other))));
player.addChatMessage(new ChatComponentText(" Connected to: " + prettyNode(other)));
}
}
}
if (noconnections) {
player.addChatMessage(
new ChatComponentTranslation(
EnderIO.lang.addPrefix("itemOCConduit.chat.noConnections"),
coords(bc)));
new ChatComponentText("No connections at " + bc.x + "/" + bc.y + "/" + bc.z));
}
} else {
player.addChatMessage(
new ChatComponentTranslation(
EnderIO.lang.addPrefix("itemOCConduit.chat.noNetwork"),
coords(bc)));
player.addChatMessage(new ChatComponentText("No network at " + bc.x + "/" + bc.y + "/" + bc.z));
}
}
return true;
@@ -369,8 +350,8 @@ public class OCConduit extends AbstractConduit implements IOCConduit {
if (loc != null && network != null) {
World world = getBundle().getWorld();
EnumSet<ForgeDirection> conns = getConnections();
for (DyeColor color : DyeColor.VALUES) {
Set<Node> should = new HashSet<>();
for (DyeColor color : DyeColor.values()) {
Set<Node> should = new HashSet<Node>();
for (ForgeDirection direction : conns) {
if (getSignalColor(direction) == color) {
TileEntity te = getLocation().getLocation(direction).getTileEntity(world);
@@ -436,7 +417,7 @@ public class OCConduit extends AbstractConduit implements IOCConduit {
// we need to check if that node has another way of connecting to our
// network. First find out which of our neighbor(s) it belongs to. May
// be just one, may be many.
List<TileEntity> toCheck = new ArrayList<>();
List<TileEntity> toCheck = new ArrayList<TileEntity>();
if (otherHost instanceof TileEntity) {
TileEntity otherTe = (TileEntity) otherHost;
toCheck.add(otherTe);
@@ -16,11 +16,11 @@ import li.cil.oc.api.network.Visibility;
@Interface(iface = "li.cil.oc.api.network.ManagedEnvironment", modid = "OpenComputersAPI|Network")
public class OCConduitNetwork extends AbstractConduitNetwork<IOCConduit, IOCConduit> implements ManagedEnvironment {
private final Node[] node = new Node[DyeColor.VALUES.length];
private Node[] node = new Node[DyeColor.values().length];
public OCConduitNetwork() {
super(IOCConduit.class, IOCConduit.class);
for (DyeColor dyeColor : DyeColor.VALUES) {
for (DyeColor dyeColor : DyeColor.values()) {
node[dyeColor.ordinal()] = Network.newNode(this, Visibility.Network).create();
Network.joinNewNetwork(node[dyeColor.ordinal()]);
}
@@ -68,7 +68,7 @@ public class OCConduitNetwork extends AbstractConduitNetwork<IOCConduit, IOCCond
@Override
public void destroyNetwork() {
for (DyeColor dyeColor : DyeColor.VALUES) {
for (DyeColor dyeColor : DyeColor.values()) {
node[dyeColor.ordinal()].remove();
}
super.destroyNetwork();
@@ -8,7 +8,6 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.conduit.ConnectionMode;
import crazypants.enderio.conduit.IConduit;
import crazypants.enderio.conduit.redstone.IInsulatedRedstoneConduit;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketConnectionMode extends AbstractConduitPacket<IConduit>
@@ -35,8 +34,8 @@ public class PacketConnectionMode extends AbstractConduitPacket<IConduit>
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
mode = ConnectionMode.VALUES[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
mode = ConnectionMode.values()[buf.readShort()];
}
@Override
@@ -9,7 +9,6 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.conduit.IExtractor;
import crazypants.enderio.machine.RedstoneControlMode;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketExtractMode extends AbstractConduitPacket<IExtractor>
@@ -39,9 +38,9 @@ public class PacketExtractMode extends AbstractConduitPacket<IExtractor>
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
mode = RedstoneControlMode.VALUES[buf.readShort()];
color = DyeColor.VALUES[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
mode = RedstoneControlMode.values()[buf.readShort()];
color = DyeColor.values()[buf.readShort()];
}
@Override
@@ -10,7 +10,6 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.conduit.item.FilterRegister;
import crazypants.enderio.conduit.item.IItemConduit;
import crazypants.enderio.conduit.item.filter.IItemFilter;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketItemConduitFilter extends AbstractConduitPacket<IItemConduit>
@@ -57,12 +56,12 @@ public class PacketItemConduitFilter extends AbstractConduitPacket<IItemConduit>
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
loopMode = buf.readBoolean();
roundRobin = buf.readBoolean();
priority = buf.readInt();
colIn = DyeColor.VALUES[buf.readShort()];
colOut = DyeColor.VALUES[buf.readShort()];
colIn = DyeColor.values()[buf.readShort()];
colOut = DyeColor.values()[buf.readShort()];
inputFilter = FilterRegister.readFilter(buf);
outputFilter = FilterRegister.readFilter(buf);
}
@@ -8,7 +8,6 @@ import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.conduit.oc.IOCConduit;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketOCConduitSignalColor extends AbstractConduitPacket<IOCConduit>
@@ -35,8 +34,8 @@ public class PacketOCConduitSignalColor extends AbstractConduitPacket<IOCConduit
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
col = DyeColor.VALUES[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
col = DyeColor.values()[buf.readShort()];
}
@Override
@@ -6,7 +6,6 @@ import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.conduit.redstone.IInsulatedRedstoneConduit;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketRedstoneConduitOutputStrength extends AbstractConduitPacket<IInsulatedRedstoneConduit>
@@ -33,7 +32,7 @@ public class PacketRedstoneConduitOutputStrength extends AbstractConduitPacket<I
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
isStrong = buf.readBoolean();
}
@@ -8,7 +8,6 @@ import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.conduit.redstone.IInsulatedRedstoneConduit;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketRedstoneConduitSignalColor extends AbstractConduitPacket<IInsulatedRedstoneConduit>
@@ -35,8 +34,8 @@ public class PacketRedstoneConduitSignalColor extends AbstractConduitPacket<IIns
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
col = DyeColor.VALUES[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
col = DyeColor.values()[buf.readShort()];
}
@Override
@@ -7,7 +7,6 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.conduit.liquid.AbstractEnderLiquidConduit;
import crazypants.enderio.conduit.liquid.ILiquidConduit;
import crazypants.util.ForgeDirections;
import io.netty.buffer.ByteBuf;
public class PacketRoundRobinMode extends AbstractConduitPacket<ILiquidConduit>
@@ -34,7 +33,7 @@ public class PacketRoundRobinMode extends AbstractConduitPacket<ILiquidConduit>
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
dir = ForgeDirections.DIRECTIONS[buf.readShort()];
dir = ForgeDirection.values()[buf.readShort()];
roundRobin = buf.readBoolean();
}
@@ -12,8 +12,8 @@ import crazypants.enderio.ModObject;
import crazypants.enderio.conduit.AbstractItemConduit;
import crazypants.enderio.conduit.IConduit;
import crazypants.enderio.conduit.ItemConduitSubtype;
import crazypants.enderio.machine.power.PowerDisplayUtil;
import crazypants.enderio.power.ICapacitor;
import crazypants.enderio.power.PowerDisplayUtil;
public class ItemPowerConduit extends AbstractItemConduit {
@@ -51,7 +51,7 @@ public class ItemPowerConduit extends AbstractItemConduit {
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack itemStack, EntityPlayer par2EntityPlayer, List<String> list, boolean par4) {
public void addInformation(ItemStack itemStack, EntityPlayer par2EntityPlayer, List list, boolean par4) {
if (PREFIX == null) {
POSTFIX = " " + PowerDisplayUtil.abrevation() + PowerDisplayUtil.perTickStr();
PREFIX = EnderIO.lang.localize("power.maxOutput") + " ";
@@ -26,17 +26,17 @@ public class NetworkPowerManager {
int maxEnergyStored;
int energyStored;
private static final int updateRenderTicks = 10;
private static final int inactiveTicks = 100;
private int updateRenderTicks = 10;
private int inactiveTicks = 100;
private final List<ReceptorEntry> receptors = new ArrayList<>();
private final List<ReceptorEntry> receptors = new ArrayList<PowerConduitNetwork.ReceptorEntry>();
private ListIterator<ReceptorEntry> receptorIterator = receptors.listIterator();
private final List<ReceptorEntry> storageReceptors = new ArrayList<>();
private final List<ReceptorEntry> storageReceptors = new ArrayList<ReceptorEntry>();
private boolean receptorsDirty = true;
private final Map<IPowerConduit, PowerTracker> powerTrackers = new HashMap<>();
private final Map<IPowerConduit, PowerTracker> powerTrackers = new HashMap<IPowerConduit, PowerTracker>();
private final PowerTracker networkPowerTracker = new PowerTracker();
@@ -79,7 +79,7 @@ public class NetworkPowerManager {
public long getPowerInReceptors() {
long result = 0;
Set<Object> done = new HashSet<>();
Set<Object> done = new HashSet<Object>();
for (ReceptorEntry re : receptors) {
if (!re.emmiter.getConnectionsDirty()) {
IPowerInterface powerReceptor = re.powerInterface;
@@ -94,7 +94,7 @@ public class NetworkPowerManager {
public long getMaxPowerInReceptors() {
long result = 0;
Set<Object> done = new HashSet<>();
Set<Object> done = new HashSet<Object>();
for (ReceptorEntry re : receptors) {
if (!re.emmiter.getConnectionsDirty()) {
IPowerInterface powerReceptor = re.powerInterface;
@@ -266,6 +266,7 @@ public class NetworkPowerManager {
float filledRatio = (float) energyStored / maxEnergyStored;
int energyLeft = energyStored;
int given = 0;
for (IPowerConduit con : network.getConduits()) {
if (energyLeft > 0) {
// NB: use ceil to ensure we dont through away any energy due to
@@ -275,6 +276,7 @@ public class NetworkPowerManager {
give = Math.min(give, con.getMaxEnergyStored());
give = Math.min(give, energyLeft);
con.setEnergyStored(give);
given += give;
energyLeft -= give;
} else {
con.setEnergyStored(0);
@@ -346,13 +348,13 @@ public class NetworkPowerManager {
int canExtract;
int canFill;
Set<IPowerStorage> capBanks = new HashSet<>();
Set<IPowerStorage> capBanks = new HashSet<IPowerStorage>();
double filledRatio;
long stored = 0;
long maxCap = 0;
List<CapBankSupplyEntry> enteries = new ArrayList<>();
List<CapBankSupplyEntry> enteries = new ArrayList<NetworkPowerManager.CapBankSupplyEntry>();
CapBankSupply() {}
@@ -46,7 +46,7 @@ import crazypants.enderio.tool.ToolUtil;
public class PowerConduit extends AbstractConduit implements IPowerConduit {
static final Map<String, IIcon> ICONS = new HashMap<>();
static final Map<String, IIcon> ICONS = new HashMap<String, IIcon>();
private static ICapacitor[] capacitors;
@@ -106,12 +106,14 @@ public class PowerConduit extends AbstractConduit implements IPowerConduit {
private int subtype;
protected final EnumMap<ForgeDirection, RedstoneControlMode> rsModes = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> rsColors = new EnumMap<>(ForgeDirection.class);
protected final EnumMap<ForgeDirection, RedstoneControlMode> rsModes = new EnumMap<ForgeDirection, RedstoneControlMode>(
ForgeDirection.class);
protected final EnumMap<ForgeDirection, DyeColor> rsColors = new EnumMap<ForgeDirection, DyeColor>(
ForgeDirection.class);
protected EnumMap<ForgeDirection, Long> recievedTicks;
private final Map<ForgeDirection, Integer> externalRedstoneSignals = new HashMap<>();
private final Map<ForgeDirection, Integer> externalRedstoneSignals = new HashMap<ForgeDirection, Integer>();
private boolean redstoneStateDirty = true;
@@ -135,7 +137,7 @@ public class PowerConduit extends AbstractConduit implements IPowerConduit {
DyeColor col = DyeColor.getColorFromDye(player.getCurrentEquippedItem());
if (ConduitUtil.isProbeEquipped(player)) {
if (!player.worldObj.isRemote) {
PacketConduitProbe.sendInfoMessage(player, this);
new PacketConduitProbe().sendInfoMessage(player, this);
}
return true;
} else if (col != null && res.component != null && isColorBandRendered(res.component.dir)) {
@@ -208,8 +210,8 @@ public class PowerConduit extends AbstractConduit implements IPowerConduit {
@Override
protected void readTypeSettings(ForgeDirection dir, NBTTagCompound dataRoot) {
setExtractionSignalColor(dir, DyeColor.VALUES[dataRoot.getShort("extractionSignalColor")]);
setExtractionRedstoneMode(RedstoneControlMode.VALUES[dataRoot.getShort("extractionRedstoneMode")], dir);
setExtractionSignalColor(dir, DyeColor.values()[dataRoot.getShort("extractionSignalColor")]);
setExtractionRedstoneMode(RedstoneControlMode.values()[dataRoot.getShort("extractionRedstoneMode")], dir);
}
@Override
@@ -253,15 +255,15 @@ public class PowerConduit extends AbstractConduit implements IPowerConduit {
String key = "pRsMode." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < RedstoneControlMode.VALUES.length) {
rsModes.put(dir, RedstoneControlMode.VALUES[ord]);
if (ord >= 0 && ord < RedstoneControlMode.values().length) {
rsModes.put(dir, RedstoneControlMode.values()[ord]);
}
}
key = "pRsCol." + dir.name();
if (nbtRoot.hasKey(key)) {
short ord = nbtRoot.getShort(key);
if (ord >= 0 && ord < DyeColor.VALUES.length) {
rsColors.put(dir, DyeColor.VALUES[ord]);
if (ord >= 0 && ord < DyeColor.values().length) {
rsColors.put(dir, DyeColor.values()[ord]);
}
}
}
@@ -281,6 +283,7 @@ public class PowerConduit extends AbstractConduit implements IPowerConduit {
}
private boolean isRedstoneEnabled(ForgeDirection dir) {
boolean result;
RedstoneControlMode mode = getExtractionRedstoneMode(dir);
if (mode == RedstoneControlMode.NEVER) {
return false;
@@ -295,12 +298,10 @@ public class PowerConduit extends AbstractConduit implements IPowerConduit {
boolean res;
if (mode == RedstoneControlMode.OFF) {
// if checking for no signal, must be no signal from both
res = RedstoneControlMode.isConditionMet(mode, signal)
&& (col != DyeColor.RED || RedstoneControlMode.isConditionMet(mode, exSig));
res = mode.isConditionMet(mode, signal) && (col != DyeColor.RED || mode.isConditionMet(mode, exSig));
} else {
// if checking for a signal, either is fine
res = RedstoneControlMode.isConditionMet(mode, signal)
|| (col == DyeColor.RED && RedstoneControlMode.isConditionMet(mode, exSig));
res = mode.isConditionMet(mode, signal) || (col == DyeColor.RED && mode.isConditionMet(mode, exSig));
}
return res;
}
@@ -386,7 +387,7 @@ public class PowerConduit extends AbstractConduit implements IPowerConduit {
if (getBundle() != null) {
if (recievedTicks == null) {
recievedTicks = new EnumMap<>(ForgeDirection.class);
recievedTicks = new EnumMap<ForgeDirection, Long>(ForgeDirection.class);
}
recievedTicks.put(from, getBundle().getWorld().getTotalWorldTime());
}
@@ -542,7 +543,7 @@ public class PowerConduit extends AbstractConduit implements IPowerConduit {
BoundingBox bb = ConduitGeometryUtil.instance.createBoundsForConnectionController(key.dir, key.offset);
CollidableComponent cc = new CollidableComponent(IPowerConduit.class, bb, key.dir, COLOR_CONTROLLER_ID);
List<CollidableComponent> result = new ArrayList<>();
List<CollidableComponent> result = new ArrayList<CollidableComponent>();
result.addAll(baseCollidables);
result.add(cc);
Loaded 100 of 1260 files, more files were not shown because too many files have changed in this diff. Show more