mirror of
https://github.com/GTNewHorizons/EnderIO.git
synced 2026-11-14 17:14:50 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26ff69921f | ||
|
|
aa1ac50bd4 |
No files matched your search
@@ -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:
|
||||
|
||||
@@ -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
|
||||
@@ -27,5 +27,3 @@ whitelist.json
|
||||
*.iws
|
||||
src/main/resources/mixins.*.json
|
||||
*.bat
|
||||
layout.json
|
||||
.DS_Store
|
||||
+15
-22
@@ -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.20:dev')
|
||||
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.6.53-GTNH:dev')
|
||||
api("com.github.GTNewHorizons:GTNHLib:0.5.23: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.2:api') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-483-GTNH:api') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:Baubles:1.0.4:dev') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.50.112:dev') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:Railcraft:9.15.16:api') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:StorageDrawers:2.0.5-GTNH:api') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:Chisel:2.15.4-GTNH:dev') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:OpenComputers:1.10.28-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-beta28:api') {transitive = false}
|
||||
}
|
||||
+8
-43
@@ -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,7 +80,7 @@ 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
|
||||
@@ -120,9 +96,7 @@ 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!
|
||||
@@ -177,7 +151,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 +172,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 +201,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
|
||||
@@ -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
|
||||
Vendored
BIN
Binary file not shown.
+1
-1
@@ -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.11.1-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
@@ -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.
|
||||
@@ -57,7 +57,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/platforms/jvm/plugins-application/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 +86,8 @@ 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 -P "${APP_HOME:-./}" > /dev/null && printf '%s
|
||||
' "$PWD" ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD=maximum
|
||||
@@ -114,6 +115,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 +173,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 +206,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
-1
@@ -70,10 +70,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
@@ -17,7 +17,7 @@ pluginManagement {
|
||||
}
|
||||
|
||||
plugins {
|
||||
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.29'
|
||||
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.30'
|
||||
}
|
||||
|
||||
|
||||
@@ -103,8 +103,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 +241,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 +259,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 +275,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 +288,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 +304,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 +321,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 +370,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());
|
||||
@@ -414,7 +419,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
|
||||
|
||||
@@ -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;required-after:gtnhlib@[0.2.10,)",
|
||||
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) {
|
||||
|
||||
@@ -51,7 +51,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;
|
||||
@@ -413,7 +412,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 +423,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -543,7 +542,6 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
|
||||
return result;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void addConnectors(List<CollidableComponent> result) {
|
||||
|
||||
if (conduits.isEmpty()) {
|
||||
@@ -564,7 +562,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 +570,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 +590,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 +622,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 +965,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++) {
|
||||
|
||||
+4
-12
@@ -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;
|
||||
|
||||
|
||||
@@ -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++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,5 +14,7 @@ public interface IMEConduit extends IConduit {
|
||||
|
||||
boolean isDense();
|
||||
|
||||
boolean isDenseUltra();
|
||||
|
||||
int getChannelsInUse();
|
||||
}
|
||||
@@ -13,7 +13,7 @@ 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") };
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
+1
-2
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
+2
-3
@@ -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);
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ public class PowerConduitNetwork extends AbstractConduitNetwork<IPowerConduit, I
|
||||
|
||||
public NetworkPowerManager powerManager;
|
||||
|
||||
private final Map<ReceptorKey, ReceptorEntry> powerReceptors = new HashMap<>();
|
||||
private final Map<ReceptorKey, ReceptorEntry> powerReceptors = new HashMap<ReceptorKey, ReceptorEntry>();
|
||||
|
||||
public PowerConduitNetwork() {
|
||||
super(IPowerConduit.class, IPowerConduit.class);
|
||||
@@ -92,7 +92,7 @@ public class PowerConduitNetwork extends AbstractConduitNetwork<IPowerConduit, I
|
||||
|
||||
public void powerReceptorRemoved(int x, int y, int z) {
|
||||
BlockCoord bc = new BlockCoord(x, y, z);
|
||||
List<ReceptorKey> remove = new ArrayList<>();
|
||||
List<ReceptorKey> remove = new ArrayList<ReceptorKey>();
|
||||
for (ReceptorKey key : powerReceptors.keySet()) {
|
||||
if (key != null && key.coord.equals(bc)) {
|
||||
remove.add(key);
|
||||
|
||||
Loaded 100 of 1256 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user