Compare commits

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

Tested in SP, Anchor behavior while holding staffs and Swords with travel thing on them work as expected. Keybind now works and is able to use swords with travel thing on them.
One quirk is that if you are holding a sword with travel upgrade, but NOT shifting, the sword itself stops counting as a valid travel item. So if ONLY using sword no separate SoT the keybind will not work unless you hold shift. If you have another SoT in your inventory it will identify and use that and still blink you upon hitting keybind.
This quirk doesn't really matter in most cases, just something worth noting I guess.
2024-05-19 15:13:50 -05:00
Martin Robertz 42573b3fa4 update 2024-05-09 10:04:12 +02:00
Martin Robertz c4cbe05dfe Merge branch 'master' into dev
# Conflicts:
#	dependencies.gradle
2024-05-09 10:03:47 +02:00
Martin Robertz a591baf426 update 2024-05-06 09:55:08 +02:00
Martin Robertz 4131a1e7b7 Merge remote-tracking branch 'origin/tweak-teleport-staff' into dev 2024-05-06 09:54:22 +02:00
github-actions[bot]andGitHub GTNH Actions 32c251d805 spotlessApply (#161)
Co-authored-by: GitHub GTNH Actions <>
2024-04-23 19:03:07 -06:00
D-Cysteine b237c6cb4d 2-in-1 TP: find destination client-side 2024-04-23 18:59:06 -06:00
D-Cysteine 58e8bf712c Limit backwards teleport check 2024-04-14 13:01:17 -06:00
D-Cysteine f1978a6a15 Handle server-side travelToLocation 2024-04-13 16:14:42 -06:00
D-Cysteine 5bd58bd981 Check anchor accessibility and require player != null 2024-04-13 16:14:25 -06:00
D-Cysteine b0f7c8600a Check for obstructed anchor on long-distance teleport 2024-04-13 15:35:40 -06:00
D-Cysteine 1b2c38cf0a Clear stored anchors on world load 2024-04-13 15:35:26 -06:00
D-Cysteine e6c216ab31 Add server-side handling for two-in-one teleport action 2024-04-13 15:35:08 -06:00
D-Cysteine 745b6ed528 Various TP fixes
* Allow TP to unloaded anchor
* Improve TP through wall by checking every 0.5 instead of 2 distance
* Fix blink placing player one block too high
* Fix anchor being incorrectly selected sometimes by constraining to visual angle
2024-04-13 14:46:20 -06:00
D-Cysteine 9422337282 Add configs for teleport staff actions 2024-04-13 14:44:43 -06:00
github-actions[bot]andGitHub GTNH Actions 3b0025500e spotlessApply (#159)
Co-authored-by: GitHub GTNH Actions <>
2024-04-13 17:36:56 +02:00
D-Cysteine dd739ba58e Fix logic 2024-04-13 09:11:50 -06:00
D-Cysteine edbd5621c3 Fix comment 2024-04-13 09:10:10 -06:00
D-Cysteine d90c7dae1b Tweak teleport staff controls 2024-04-13 09:06:16 -06:00
55 changed files with 455 additions and 725 deletions

No files matched your search

-1
View File
@@ -27,4 +27,3 @@ whitelist.json
*.iws
src/main/resources/mixins.*.json
*.bat
layout.json
+12 -12
View File
@@ -2,21 +2,21 @@
dependencies {
api('com.github.GTNewHorizons:EnderCore:0.4.6:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:ForestryMC:4.10.2:dev')
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.7.29-GTNH:dev')
api("com.github.GTNewHorizons:GTNHLib:0.6.10:dev")
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.42:dev')
compileOnly('com.github.GTNewHorizons:ForestryMC:4.9.0:dev')
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.6.0-GTNH:dev')
compileOnly("com.github.GTNewHorizons:GTNHLib:0.2.11:dev")
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.39:dev')
api('curse.maven:cofh-lib-220333:2388748') // https://www.curseforge.com/minecraft/mc-mods/cofh-lib/files/2388748
shadowImplementation('cglib:cglib-nodep:3.3.0')
compileOnly('com.github.GTNewHorizons:waila:1.8.2:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-544-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:waila:1.7.3:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-400-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Baubles:1.0.4:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.134:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:Railcraft:9.16.3:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:StorageDrawers:2.1.0-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Chisel:2.16.2-GTNH:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.11.8-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.46.18:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:Railcraft:9.15.8:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:StorageDrawers:1.13.5-GTNH:api') {transitive = false}
compileOnly('com.github.GTNewHorizons:Chisel:2.15.0-GTNH:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.10.11-GTNH:api') {transitive = false}
compileOnly('curse.maven:minefactory-reloaded-66672:2366150') // https://www.curseforge.com/minecraft/mc-mods/minefactory-reloaded/files/2366150
compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev')
compileOnly('curse.maven:ee3-65509:2305023') // https://www.curseforge.com/minecraft/mc-mods/ee3/files/2305023
@@ -24,5 +24,5 @@ dependencies {
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
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta33:api') {transitive = false}
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-alpha50:api') {transitive = false}
}
+1 -12
View File
@@ -85,11 +85,6 @@ accessTransformersFile =
# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
usesMixins = false
# Set to a non-empty string to configure mixins in a separate source set under src/VALUE, instead of src/main.
# This can speed up compile times thanks to not running the mixin annotation processor on all input sources.
# Mixin classes will have access to "main" classes, but not the other way around.
separateMixinSourceSet =
# Adds some debug arguments like verbose output and class export.
usesMixinDebug = false
@@ -122,15 +117,9 @@ minimizeShadowedDependencies = true
# If disabled, won't rename the shadowed classes.
relocateShadowedDependencies = true
# Adds CurseMaven, Modrinth, and some more well-known 1.7.10 repositories.
# Adds the GTNH maven, CurseMaven, Modrinth, and some more well-known 1.7.10 repositories.
includeWellKnownRepositories = true
# A list of repositories to exclude from the includeWellKnownRepositories setting. Should be a space separated
# list of strings, with the acceptable keys being(case does not matter):
# cursemaven
# modrinth
excludeWellKnownRepositories =
# Change these to your Maven coordinates if you want to publish to a custom Maven repository instead of the default GTNH Maven.
# Authenticate with the MAVEN_USER and MAVEN_PASSWORD environment variables.
# If you need a more complex setup disable maven publishing here and add a publishing repository to addon.gradle.
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Vendored
+2 -5
View File
@@ -15,8 +15,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
@@ -57,7 +55,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -86,8 +84,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
Vendored
-2
View File
@@ -13,8 +13,6 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.32'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.22'
}
@@ -27,6 +27,7 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.conduit.BlockConduitBundle;
import crazypants.enderio.conduit.IConduit;
import crazypants.enderio.conduit.TileConduitBundle;
import crazypants.enderio.conduit.facade.FacadeRenderer;
import crazypants.enderio.conduit.gas.GasConduit;
import crazypants.enderio.conduit.gas.GasUtil;
@@ -107,7 +108,7 @@ 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;
@@ -377,6 +378,7 @@ public class ClientProxy extends CommonProxy {
cbr = new ConduitBundleRenderer((float) Config.conduitScale);
BlockConduitBundle.rendererId = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerBlockHandler(cbr);
ClientRegistry.bindTileEntitySpecialRenderer(TileConduitBundle.class, cbr);
ClientRegistry.bindTileEntitySpecialRenderer(TileTravelAnchor.class, new TravelEntitySpecialRenderer());
@@ -419,7 +421,7 @@ public class ClientProxy extends CommonProxy {
FMLCommonHandler.instance().bus().register(KeyTracker.instance);
RenderingRegistry.registerEntityRenderingHandler(SoundEntity.class, new SoundRenderer());
RenderingRegistry.registerEntityRenderingHandler(RangeEntity.class, new RangeRenderer());
RenderingRegistry.registerEntityRenderingHandler(RangeEntity.class, new RangeRenerer());
MinecraftForge.EVENT_BUS.register(SoundDetector.instance);
FMLCommonHandler.instance().bus().register(SoundDetector.instance);
@@ -186,7 +186,7 @@ import crazypants.util.EE3Util;
modid = MODID,
name = MOD_NAME,
version = VERSION,
dependencies = "required-after:CoFHLib@(1.0.3B3,);required-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,)",
dependencies = "required-after:CoFHLib@(1.0.3B3,);after:endercore;after:MineFactoryReloaded;after:Forestry;after:Waila@[1.5.8,);after:Thaumcraft;after:appliedenergistics2@[rv2-beta-8,);after:chisel",
guiFactory = "crazypants.enderio.config.ConfigFactoryEIO")
public class EnderIO {
@@ -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);
}
}
}
@@ -25,7 +25,6 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import com.enderio.core.client.render.BoundingBox;
import com.gtnewhorizon.gtnhlib.concurrent.cas.CasList;
import appeng.api.networking.IGridNode;
import appeng.api.util.AECableType;
@@ -67,7 +66,7 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
public static final short NBT_VERSION = 1;
private final List<IConduit> conduits = new CasList<>();
private final List<IConduit> conduits = new ArrayList<IConduit>();
private Block facadeId = null;
private int facadeMeta = 0;
@@ -75,9 +74,9 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
private boolean facadeChanged;
private final List<CollidableComponent> cachedCollidables = new ArrayList<>();
private final List<CollidableComponent> cachedCollidables = new ArrayList<CollidableComponent>();
private final List<CollidableComponent> cachedConnectors = new ArrayList<>();
private final List<CollidableComponent> cachedConnectors = new ArrayList<CollidableComponent>();
private boolean conduitsDirty = true;
private boolean collidablesDirty = true;
@@ -537,7 +536,7 @@ public class TileConduitBundle extends TileEntityEio implements IConduitBundle {
@Override
public List<CollidableComponent> getConnectors() {
List<CollidableComponent> result = new ArrayList<>();
List<CollidableComponent> result = new ArrayList<CollidableComponent>();
addConnectors(result);
return result;
}
@@ -143,7 +143,7 @@ public class LiquidConduit extends AbstractTankConduit {
}
}
if (!foundFluid) {
continue;
return;
}
FluidStack couldDrain = extTank.drain(dir.getOpposite(), MAX_EXTRACT_PER_TICK, false);
@@ -1,11 +1,11 @@
package crazypants.enderio.conduit.liquid;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
@@ -56,17 +56,10 @@ public class LiquidConduitRenderer extends DefaultConduitRenderer implements IRe
super.renderEntity(conduitBundleRenderer, te, conduit, x, y, z, partialTick, worldLight, rb);
}
public void renderDynamicEntity(ConduitBundleRenderer conduitBundleRenderer, IConduitBundle te, IConduit conduit,
double x, double y, double z, float partialTick, float worldLight) {
}
@Override
protected void renderConduit(IIcon tex, IConduit conduit, CollidableComponent component, float brightness) {
Tessellator tessellator = Tessellator.instance;
if (isNSEWUD(component.dir)) {
LiquidConduit lc = (LiquidConduit) conduit;
IIcon fluidTex = conduit.getTransmitionTextureForState(component);
FluidStack fluid = lc.getFluidType();
if (fluid != null) {
renderFluidOutline(component, fluid);
@@ -74,40 +67,33 @@ public class LiquidConduitRenderer extends DefaultConduitRenderer implements IRe
BoundingBox[] cubes = toCubes(component.bound);
for (BoundingBox cube : cubes) {
drawSection(cube, tex.getMinU(), tex.getMaxU(), tex.getMinV(), tex.getMaxV(), component.dir, false);
// This check is kinda broken, but whatever, it was like that when this was done in a TESR too
if (lc.getTank().getFilledRatio() <= 0) {
continue;
}
tessellator.setColorOpaque_F(0.7f, 0.7f, 0.7f);
drawSection(
cube,
fluidTex.getMinU(),
fluidTex.getMaxU(),
fluidTex.getMinV(),
fluidTex.getMaxV(),
component.dir,
true);
}
if (conduit.getConnectionMode(component.dir) == ConnectionMode.DISABLED) {
final CubeRenderer cr = CubeRenderer.get();
int i;
tex = EnderIO.blockConduitBundle.getConnectorIcon(component.data);
List<Vertex> corners = component.bound.getCornersWithUvForFace(
component.dir,
tex.getMinU(),
tex.getMaxU(),
tex.getMinV(),
tex.getMaxV());
for (i = corners.size() - 1; i >= 0; i--) {
Vertex c = corners.get(i);
cr.addVecWithUV(c.xyz, c.uv.x, c.uv.y);
}
// back face
for (i = corners.size() - 1; i >= 0; i--) {
Vertex c = corners.get(i);
cr.addVecWithUV(c.xyz, c.uv.x, c.uv.y);
}
} else {
drawSection(
component.bound,
tex.getMinU(),
tex.getMaxU(),
tex.getMinV(),
tex.getMaxV(),
component.dir,
true);
}
if (conduit.getConnectionMode(component.dir) == ConnectionMode.DISABLED) {
final CubeRenderer cr = CubeRenderer.get();
int i;
tex = EnderIO.blockConduitBundle.getConnectorIcon(component.data);
List<Vertex> corners = component.bound
.getCornersWithUvForFace(component.dir, tex.getMinU(), tex.getMaxU(), tex.getMinV(), tex.getMaxV());
for (i = corners.size() - 1; i >= 0; i--) {
Vertex c = corners.get(i);
cr.addVecWithUV(c.xyz, c.uv.x, c.uv.y);
}
// back face
for (i = corners.size() - 1; i >= 0; i--) {
Vertex c = corners.get(i);
cr.addVecWithUV(c.xyz, c.uv.x, c.uv.y);
}
}
}
@@ -127,29 +113,27 @@ public class LiquidConduitRenderer extends DefaultConduitRenderer implements IRe
}
}
private static final Map<CollidableComponent, Map<Fluid, List<CachableRenderStatement>>> cache = Collections
.synchronizedMap(new WeakHashMap<>());
private static Map<CollidableComponent, Map<Fluid, List<CachableRenderStatement>>> cache = new WeakHashMap<CollidableComponent, Map<Fluid, List<CachableRenderStatement>>>();
public static List<CachableRenderStatement> computeFluidOutlineToCache(CollidableComponent component, Fluid fluid,
double scaleFactor, float outlineWidth) {
// Only init once per component across all threads so the cache stays accurate.
Map<Fluid, List<CachableRenderStatement>> cache0 = cache
.computeIfAbsent(component, _k -> new ConcurrentHashMap<>());
// The rest of this function 'should' be in a `computeIfAbsent` as well for:
// `cache0.computeIfAbsent(fluid, _k -> ...)` but that won't cause a bug in this case,
// just a bit more garbage.
Map<Fluid, List<CachableRenderStatement>> cache0 = cache.get(component);
if (cache0 == null) {
cache0 = new HashMap<Fluid, List<CachableRenderStatement>>();
cache.put(component, cache0);
}
List<CachableRenderStatement> data = cache0.get(fluid);
if (data != null) {
return data;
}
data = new ArrayList<>();
data = new ArrayList<CachableRenderStatement>();
cache0.put(fluid, data);
IIcon texture = fluid.getStillIcon();
if (texture == null) {
texture = fluid.getIcon();
if (texture == null) {
cache0.put(fluid, data);
return data;
}
}
@@ -208,7 +192,6 @@ public class LiquidConduitRenderer extends DefaultConduitRenderer implements IRe
}
}
}
cache0.put(fluid, data);
return data;
}
@@ -256,6 +239,49 @@ public class LiquidConduitRenderer extends DefaultConduitRenderer implements IRe
// done in the dynamic section
}
@Override
public boolean isDynamic() {
return true;
}
@Override
public void renderDynamicEntity(ConduitBundleRenderer conduitBundleRenderer, IConduitBundle te, IConduit conduit,
double x, double y, double z, float partialTick, float worldLight) {
if (((LiquidConduit) conduit).getTank().getFilledRatio() <= 0) {
return;
}
Collection<CollidableComponent> components = conduit.getCollidableComponents();
Tessellator tessellator = Tessellator.instance;
calculateRatios((LiquidConduit) conduit);
transmissionScaleFactor = conduit.getTransmitionGeometryScale();
IIcon tex;
for (CollidableComponent component : components) {
if (renderComponent(component)) {
if (isNSEWUD(component.dir) && conduit.getTransmitionTextureForState(component) != null) {
tessellator.setColorOpaque_F(1, 1, 1);
tex = conduit.getTransmitionTextureForState(component);
BoundingBox[] cubes = toCubes(component.bound);
for (BoundingBox cube : cubes) {
drawSection(
cube,
tex.getMinU(),
tex.getMaxU(),
tex.getMinV(),
tex.getMaxV(),
component.dir,
true);
}
}
}
}
}
@Override
protected void setVerticesForTransmission(BoundingBox bound, ForgeDirection id) {
@@ -14,5 +14,7 @@ public interface IMEConduit extends IConduit {
boolean isDense();
boolean isDenseUltra();
int getChannelsInUse();
}
@@ -15,7 +15,8 @@ public class ItemMEConduit extends AbstractItemConduit {
private static ItemConduitSubtype[] subtypes = new ItemConduitSubtype[] {
new ItemConduitSubtype(ModObject.itemMEConduit.name(), "enderio:itemMeConduit"),
new ItemConduitSubtype(ModObject.itemMEConduit.name() + "Dense", "enderio:itemMeConduitDense") };
new ItemConduitSubtype(ModObject.itemMEConduit.name() + "Dense", "enderio:itemMeConduitDense"),
new ItemConduitSubtype(ModObject.itemMEConduit.name() + "DenseUltra", "enderio:itemMeConduitDenseUltra") };
public static ItemMEConduit create() {
ItemMEConduit result = new ItemMEConduit();
@@ -16,6 +16,7 @@ import com.enderio.core.client.render.IconUtil;
import com.enderio.core.common.util.BlockCoord;
import appeng.api.AEApi;
import appeng.api.networking.GridFlags;
import appeng.api.networking.IGridConnection;
import appeng.api.networking.IGridHost;
import appeng.api.networking.IGridNode;
@@ -50,6 +51,7 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
public static IIcon[] longTextures;
private boolean isDense;
private boolean isDenseUltra;
private int playerID = -1;
public MEConduit() {
@@ -57,6 +59,7 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
}
public MEConduit(int itemDamage) {
isDenseUltra = itemDamage == 2;
isDense = itemDamage == 1;
}
@@ -65,14 +68,16 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
@Override
public void registerIcons(IIconRegister register) {
coreTextures = new IIcon[2];
longTextures = new IIcon[2];
coreTextures = new IIcon[3];
longTextures = new IIcon[3];
coreTextures[0] = register.registerIcon(EnderIO.DOMAIN + ":meConduitCore");
coreTextures[1] = register.registerIcon(EnderIO.DOMAIN + ":meConduitCoreDense");
coreTextures[2] = register.registerIcon(EnderIO.DOMAIN + ":meConduitCoreDenseUltra");
longTextures[0] = register.registerIcon(EnderIO.DOMAIN + ":meConduit");
longTextures[1] = register.registerIcon(EnderIO.DOMAIN + ":meConduitDense");
longTextures[2] = register.registerIcon(EnderIO.DOMAIN + ":meConduitDenseUltra");
}
@Override
@@ -82,7 +87,10 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
});
}
public static int getDamageForState(boolean isDense) {
public static int getDamageForState(boolean isDense, boolean isDenseUltra) {
if (isDenseUltra) {
return 2;
}
if (isDense) {
return 1;
}
@@ -96,7 +104,7 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
@Override
public ItemStack createItem() {
return new ItemStack(EnderIO.itemMEConduit, 1, getDamageForState(isDense));
return new ItemStack(EnderIO.itemMEConduit, 1, getDamageForState(isDense, isDenseUltra));
}
@Override
@@ -114,6 +122,7 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
public void writeToNBT(NBTTagCompound nbtRoot) {
super.writeToNBT(nbtRoot);
nbtRoot.setBoolean("isDense", isDense);
nbtRoot.setBoolean("isDenseUltra", isDenseUltra);
nbtRoot.setInteger("playerID", playerID);
}
@@ -126,6 +135,9 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
} else {
playerID = -1;
}
if (nbtRoot.hasKey("isDenseUltra")) {
isDenseUltra = nbtRoot.getBoolean("isDenseUltra");
}
}
public void setPlayerID(int playerID) {
@@ -196,12 +208,22 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
@Method(modid = "appliedenergistics2")
private Boolean canConnectToGridNode(IGridNode node, ForgeDirection dir) {
return node.getGridBlock().getConnectableSides().contains(dir.getOpposite());
if (node.getGridBlock().getConnectableSides().contains(dir.getOpposite())) {
if (isDenseUltra()) {
return node.hasFlag(GridFlags.ULTRA_DENSE_CAPACITY)
|| ((node.hasFlag(GridFlags.DENSE_CAPACITY)) && !node.hasFlag(GridFlags.CANNOT_CARRY));
} else if (isDense()) {
return true;
} else {
return !node.hasFlag(GridFlags.ULTRA_DENSE_CAPACITY);
}
}
return false;
}
@Override
public IIcon getTextureForState(CollidableComponent component) {
int state = getDamageForState(isDense);
int state = getDamageForState(isDense, isDenseUltra);
if (component.dir == ForgeDirection.UNKNOWN) {
return coreTextures[state];
} else {
@@ -378,4 +400,9 @@ public class MEConduit extends AbstractConduit implements IMEConduit {
public boolean isDense() {
return isDense;
}
@Override
public boolean isDenseUltra() {
return isDenseUltra;
}
}
@@ -43,6 +43,9 @@ public class MEConduitGrid implements IGridBlock {
@Override
public EnumSet<GridFlags> getFlags() {
if (conduit.isDenseUltra()) {
return EnumSet.of(GridFlags.ULTRA_DENSE_CAPACITY);
}
if (conduit.isDense()) {
return EnumSet.of(GridFlags.DENSE_CAPACITY);
}
@@ -11,6 +11,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
@@ -18,9 +19,13 @@ import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import com.enderio.core.client.render.BoundingBox;
import com.enderio.core.client.render.CubeRenderer;
import com.enderio.core.client.render.IconUtil;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.util.BlockCoord;
import com.enderio.core.common.util.IBlockAccessWrapper;
import com.google.common.collect.Lists;
@@ -48,12 +53,59 @@ import crazypants.util.RenderPassHelper;
@SideOnly(Side.CLIENT)
@ThreadSafeISBRH(perThread = false)
public class ConduitBundleRenderer implements ISimpleBlockRenderingHandler {
public class ConduitBundleRenderer extends TileEntitySpecialRenderer implements ISimpleBlockRenderingHandler {
public ConduitBundleRenderer(float conduitScale) {}
public ConduitBundleRenderer() {}
@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float partialTick) {
IConduitBundle bundle = (IConduitBundle) te;
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
if (bundle == null || (bundle.hasFacade() && bundle.getFacadeId().isOpaqueCube()
&& !ConduitUtil.isFacadeHidden(bundle, player))) {
return;
}
final Tessellator tessellator = Tessellator.instance;
float brightness = -1;
for (IConduit con : bundle.getConduits()) {
if (ConduitUtil.renderConduit(player, con)) {
final ConduitRenderer renderer = con.getRenderer();
if (renderer.isDynamic()) {
if (brightness == -1) {
BlockCoord loc = bundle.getLocation();
brightness = bundle.getEntity().getWorldObj()
.getLightBrightnessForSkyBlocks(loc.x, loc.y, loc.z, 0);
RenderUtil.bindBlockTexture();
GL11.glPushAttrib(GL11.GL_ENABLE_BIT | GL11.GL_LIGHTING_BIT);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glPushMatrix();
GL11.glTranslated(x, y, z);
tessellator.startDrawingQuads();
}
renderer.renderDynamicEntity(this, bundle, con, x, y, z, partialTick, brightness);
}
}
}
if (brightness != -1) {
tessellator.draw();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
GL11.glPopAttrib();
}
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId,
RenderBlocks rb) {
@@ -10,4 +10,8 @@ public interface ConduitRenderer {
void renderEntity(ConduitBundleRenderer conduitBundleRenderer, IConduitBundle te, IConduit con, double x, double y,
double z, float partialTick, float worldLight, RenderBlocks rb);
boolean isDynamic();
void renderDynamicEntity(ConduitBundleRenderer conduitBundleRenderer, IConduitBundle te, IConduit con, double x,
double y, double z, float partialTick, float worldLight);
}
@@ -63,6 +63,10 @@ public class DefaultConduitRenderer implements ConduitRenderer {
}
}
@Override
public void renderDynamicEntity(ConduitBundleRenderer conduitBundleRenderer, IConduitBundle te, IConduit con,
double x, double y, double z, float partialTick, float worldLight) {}
protected void renderConduit(IIcon tex, IConduit conduit, CollidableComponent component, float brightness) {
final CubeRenderer cr = CubeRenderer.get();
@@ -345,4 +349,8 @@ public class DefaultConduitRenderer implements ConduitRenderer {
return new BoundingBox[] { bb };
}
@Override
public boolean isDynamic() {
return false;
}
}
@@ -174,6 +174,8 @@ public final class Config {
* The distance travelled when no block is found within {@link #teleportStaffMaxBlinkDistance}.
*/
public static int teleportStaffFailedBlinkDistance = 64;
/** If true, use the original staff of teleportation controls. */
public static boolean teleportStaffOriginalControls = false;
/**
* Sets the teleport staff right-click action.
@@ -186,6 +188,9 @@ public final class Config {
* <li><b>2:</b> Teleport to anchor
* <li><b>3:</b> Teleport to anchor, or to look if no anchor <em>(default)</em>
* </ul>
*
* <p>
* Overridden if {@link #teleportStaffOriginalControls} is true.
*/
public static int teleportStaffAction = 3;
@@ -200,6 +205,9 @@ public final class Config {
* <li><b>2:</b> Teleport to anchor
* <li><b>3:</b> Teleport to anchor, or to look if no anchor
* </ul>
*
* <p>
* Overridden if {@link #teleportStaffOriginalControls} is true.
*/
public static int teleportStaffSneakAction = 1;
@@ -475,6 +483,7 @@ public final class Config {
public static boolean isGasConduitEnabled = true;
public static boolean enableMEConduits = true;
public static boolean enableMEUltraDenseConduits = false;
public static boolean enableOCConduits = true;
public static boolean enableOCConduitsAnimatedTexture = true;
@@ -1298,25 +1307,35 @@ public final class Config {
"Number of blocks teleported when no block is being looked at.")
.getInt(teleportStaffFailedBlinkDistance);
teleportStaffOriginalControls = config.get(
sectionPersonal.name,
"teleportStaffOriginalControls",
teleportStaffOriginalControls,
"If true, the staff of teleportation will use its original controls: R-Click for teleport to look, Shift R-Click for teleport to anchor.")
.getBoolean(teleportStaffOriginalControls);
teleportStaffAction = config.get(
sectionStaff.name,
sectionPersonal.name,
"teleportStaffAction",
teleportStaffAction,
"Sets the action for right-click with the staff of teleportation. Values:\n" + " 0: Do nothing\n"
+ " 1: Teleport to look\n"
+ " 2: Teleport to anchor\n"
+ " 3: Teleport to anchor, or look if no anchor (default)")
+ " 3: Teleport to anchor, or look if no anchor (default)\n"
+ "Overridden if teleportStaffOriginalControls is true.")
.getInt(teleportStaffAction);
teleportStaffSneakAction = config.get(
sectionStaff.name,
"teleportStaffSneakAction",
teleportStaffSneakAction,
"Sets the action for sneak right-click with the staff of teleportation. Values:\n"
+ " 0: Do nothing\n"
+ " 1: Teleport to look (default)\n"
+ " 2: Teleport to anchor\n"
+ " 3: Teleport to anchor, or look if no anchor")
teleportStaffSneakAction = config
.get(
sectionPersonal.name,
"teleportStaffSneakAction",
teleportStaffSneakAction,
"Sets the action for sneak right-click with the staff of teleportation. Values:\n"
+ " 0: Do nothing\n"
+ " 1: Teleport to look (default)\n"
+ " 2: Teleport to anchor\n"
+ " 3: Teleport to anchor, or look if no anchor\n"
+ "Overridden if teleportStaffOriginalControls is true.")
.getInt(teleportStaffSneakAction);
enderIoRange = config.get(
@@ -2414,6 +2433,11 @@ public final class Config {
sectionItems.name,
enableMEConduits,
"Allows ME conduits. Only has an effect with AE2 installed.");
enableMEUltraDenseConduits = config.getBoolean(
"enableMEUltraDenseConduits",
sectionItems.name,
enableMEUltraDenseConduits,
"Allows ME Ultra Dense conduits. Only has an effect with AE2 installed.");
enableOCConduits = config.getBoolean(
"enableOCConduits",
sectionItems.name,
@@ -168,8 +168,7 @@ public abstract class AbstractMachineEntity extends TileEntityEio
public final boolean isItemValidForSlot(int i, ItemStack itemstack) {
if (slotDefinition.isUpgradeSlot(i)) {
return itemstack != null && itemstack.getItem() == EnderIO.itemBasicCapacitor
&& itemstack.getItemDamage() > 0
&& itemstack.getItemDamage() != 7;
&& itemstack.getItemDamage() > 0;
}
return isMachineItemValidForSlot(i, itemstack);
}
@@ -1,7 +1,5 @@
package crazypants.enderio.machine.farm;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
@@ -12,11 +10,9 @@ import org.lwjgl.opengl.GL11;
import com.enderio.core.client.gui.button.IconButton;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.ColorUtil;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.vecmath.Vector4f;
import com.google.common.collect.Lists;
import crazypants.enderio.EnderIO;
import crazypants.enderio.gui.IconEIO;
@@ -24,42 +20,11 @@ import crazypants.enderio.machine.gui.GuiPoweredMachineBase;
public class GuiFarmStation extends GuiPoweredMachineBase<TileFarmStation> {
private static final int RANGE_ID = 8738924;
private static final int LOCK_ID = 1234;
private final ToggleButton showRangeB;
public GuiFarmStation(InventoryPlayer par1InventoryPlayer, TileFarmStation machine) {
super(machine, new FarmStationContainer(par1InventoryPlayer, machine), "farmStation");
int x = getXSize() - 5 - BUTTON_SIZE / 2;
int y = getGuiTop() + 5;
getRedstoneBtn().setPosition(x, y);
y += BUTTON_SIZE + 2;
getConfigBtn().setPosition(x, y);
y += BUTTON_SIZE + 2;
showRangeB = new ToggleButton(this, RANGE_ID, x, y, IconEIO.PLUS, IconEIO.MINUS);
showRangeB.setSize(BUTTON_SIZE, BUTTON_SIZE);
addToolTip(new GuiToolTip(showRangeB.getBounds(), "null") {
@Override
public List<String> getToolTipText() {
return Lists.newArrayList(
EnderIO.lang.localize(
showRangeB.isSelected() ? "gui.spawnGurad.hideRange" : "gui.spawnGurad.showRange"));
}
});
setYSize(ySize + 3);
setXSize(xSize + 8);
}
@Override
protected int getPowerU() {
return 184;
}
@SuppressWarnings("unchecked")
@@ -67,9 +32,6 @@ public class GuiFarmStation extends GuiPoweredMachineBase<TileFarmStation> {
public void initGui() {
super.initGui();
showRangeB.onGuiInit();
showRangeB.setSelected(getTileEntity().isShowingRange());
int x = getGuiLeft() + 36;
int y = getGuiTop() + 43;
@@ -132,10 +94,7 @@ public class GuiFarmStation extends GuiPoweredMachineBase<TileFarmStation> {
protected void actionPerformed(GuiButton b) {
if (b.id >= LOCK_ID + TileFarmStation.minSupSlot && b.id <= LOCK_ID + TileFarmStation.maxSupSlot) {
getTileEntity().toggleLockedState(b.id - LOCK_ID);
} else if (b.id == RANGE_ID) {
getTileEntity().setShowRange(showRangeB.isSelected());
}
super.actionPerformed(b);
}
@@ -15,17 +15,12 @@ import net.minecraft.item.ItemShears;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.EnumSkyBlock;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import com.enderio.core.common.util.BlockCoord;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.ModObject;
import crazypants.enderio.config.Config;
@@ -37,52 +32,13 @@ import crazypants.enderio.machine.SlotDefinition;
import crazypants.enderio.machine.farm.farmers.FarmersCommune;
import crazypants.enderio.machine.farm.farmers.IHarvestResult;
import crazypants.enderio.machine.farm.farmers.RubberTreeFarmerIC2;
import crazypants.enderio.machine.ranged.IRanged;
import crazypants.enderio.machine.ranged.RangeEntity;
import crazypants.enderio.network.PacketHandler;
import crazypants.enderio.power.BasicCapacitor;
import crazypants.enderio.tool.ArrayMappingTool;
public class TileFarmStation extends AbstractPoweredTaskEntity implements IRanged {
public class TileFarmStation extends AbstractPoweredTaskEntity {
private static final int TICKS_PER_WORK = 20;
private boolean showingRange;
@Override
public World getWorld() {
return worldObj;
}
@Override
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
return new Vector3d(getFarmSize(), 0, getFarmSize());
}
@Override
public boolean isShowingRange() {
return showingRange;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
return;
}
showingRange = showRange;
if (showingRange) {
worldObj.spawnEntityInWorld(new RangeEntity(this));
}
}
@Override
public int getColor() {
return 0x66FFAA00;
}
public enum ToolType {
@@ -40,11 +40,6 @@ public class TileZombieGenerator extends AbstractGeneratorEntity
public String getMachineName() {
return ModObject.blockFrankenzombieGenerator.unlocalisedName;
}
@Override
public GeneratorType getGeneratorType() {
return GeneratorType.FRANKENZOMBIE;
}
}
public static class TileEnderGenerator extends TileZombieGenerator {
@@ -63,11 +58,6 @@ public class TileZombieGenerator extends AbstractGeneratorEntity
protected Fluid getFluidType() {
return EnderIO.fluidEnderDistillation;
}
@Override
public GeneratorType getGeneratorType() {
return GeneratorType.ENDER;
}
}
private static int IO_MB_TICK = 250;
@@ -336,7 +326,7 @@ public class TileZombieGenerator extends AbstractGeneratorEntity
}
public GeneratorType getGeneratorType() {
return GeneratorType.ZOMBIE;
return ((BlockZombieGenerator) worldObj.getBlock(xCoord, yCoord, zCoord)).getGeneratorType();
}
public int getOutputPerTick() {
@@ -13,7 +13,6 @@ import org.lwjgl.opengl.GL11;
import com.enderio.core.api.common.util.IProgressTile;
import com.enderio.core.client.gui.button.IconButton;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.util.BlockCoord;
@@ -212,12 +211,4 @@ public abstract class GuiMachineBase<T extends AbstractMachineEntity> extends Gu
}
return 0;
}
protected RedstoneModeButton getRedstoneBtn() {
return redstoneButton;
}
protected ToggleButton getConfigBtn() {
return configB;
}
}
@@ -1,7 +1,6 @@
package crazypants.enderio.machine.killera;
import java.awt.Rectangle;
import java.util.List;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.InventoryPlayer;
@@ -9,11 +8,9 @@ import net.minecraft.entity.player.InventoryPlayer;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.gui.button.IconButton;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.util.SoundUtil;
import com.google.common.collect.Lists;
import crazypants.enderio.EnderIO;
import crazypants.enderio.fluid.Fluids;
@@ -26,9 +23,6 @@ import crazypants.enderio.xp.PacketGivePlayerXP;
public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
private static final int RANGE_ID = 8738924;
private final ToggleButton showRangeB;
private static final int XP_ID = 3489;
private static final int XP10_ID = 34892;
@@ -38,18 +32,6 @@ public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
public GuiKillerJoe(InventoryPlayer inventory, final TileKillerJoe tileEntity) {
super(tileEntity, new ContainerKillerJoe(inventory, tileEntity), "killerJoe");
showRangeB = new ToggleButton(this, RANGE_ID, 155, 24 + 18, IconEIO.PLUS, IconEIO.MINUS);
showRangeB.setSize(BUTTON_SIZE, BUTTON_SIZE);
addToolTip(new GuiToolTip(showRangeB.getBounds(), "null") {
@Override
public List<String> getToolTipText() {
return Lists.newArrayList(
EnderIO.lang.localize(
showRangeB.isSelected() ? "gui.spawnGurad.hideRange" : "gui.spawnGurad.showRange"));
}
});
addToolTip(new GuiToolTip(new Rectangle(18, 11, 15, 47), "") {
@Override
@@ -64,17 +46,11 @@ public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
}
});
int size = 14;
int x = guiLeft + 56 + (65 / 2);
int y = guiTop + 62 + 6;
xpB = new IconButton(this, XP_ID, x - 16, y, IconEIO.XP);
xpB = new IconButton(this, XP_ID, 128, 56, IconEIO.XP);
xpB.setToolTip(EnderIO.lang.localize("killerJoe.giveXp.tooltip"));
xpB.setSize(size, size);
xp10B = new IconButton(this, XP10_ID, x + 2, y, IconEIO.XP_PLUS);
xp10B = new IconButton(this, XP10_ID, 148, 56, IconEIO.XP_PLUS);
xp10B.setToolTip(EnderIO.lang.localize("killerJoe.giveXp10.tooltip"));
xp10B.setSize(size, size);
}
@Override
@@ -82,9 +58,6 @@ public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
super.initGui();
xpB.onGuiInit();
xp10B.onGuiInit();
showRangeB.onGuiInit();
showRangeB.setSelected(getTileEntity().isShowingRange());
((ContainerKillerJoe) inventorySlots).createGhostSlots(getGhostSlots());
}
@@ -97,8 +70,6 @@ public class GuiKillerJoe extends GuiMachineBase<TileKillerJoe> {
} else if (b.id == XP10_ID) {
PacketHandler.INSTANCE.sendToServer(new PacketGivePlayerXP(getTileEntity(), 10));
SoundUtil.playClientSoundFX("random.orb", getTileEntity());
} else if (b.id == RANGE_ID) {
getTileEntity().setShowRange(showRangeB.isSelected());
}
}
@@ -16,7 +16,6 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.FakePlayer;
@@ -40,8 +39,6 @@ import com.mojang.authlib.GameProfile;
import cpw.mods.fml.common.eventhandler.Event.Result;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.ModObject;
import crazypants.enderio.config.Config;
@@ -50,8 +47,6 @@ import crazypants.enderio.machine.FakePlayerEIO;
import crazypants.enderio.machine.SlotDefinition;
import crazypants.enderio.machine.generator.zombie.IHasNutrientTank;
import crazypants.enderio.machine.generator.zombie.PacketNutrientTank;
import crazypants.enderio.machine.ranged.IRanged;
import crazypants.enderio.machine.ranged.RangeEntity;
import crazypants.enderio.machine.wireless.WirelessChargedLocation;
import crazypants.enderio.network.PacketHandler;
import crazypants.enderio.tool.SmartTank;
@@ -61,46 +56,7 @@ import crazypants.enderio.xp.PacketExperianceContainer;
import crazypants.enderio.xp.XpUtil;
public class TileKillerJoe extends AbstractMachineEntity
implements IFluidHandler, IEntitySelector, IHaveExperience, ITankAccess, IHasNutrientTank, IRanged {
private boolean showingRange;
@Override
public World getWorld() {
return worldObj;
}
@Override
public AxisAlignedBB getBounds() {
return getKillBounds();
}
@Override
public Vector3d getRange() {
return null;
}
@Override
@SideOnly(Side.CLIENT)
public boolean isShowingRange() {
return showingRange;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
return;
}
showingRange = showRange;
if (showingRange) {
worldObj.spawnEntityInWorld(new RangeEntity(this));
}
}
@Override
public int getColor() {
return 0x66FF0000;
}
implements IFluidHandler, IEntitySelector, IHaveExperience, ITankAccess, IHasNutrientTank {
public static class ZombieCache {
@@ -5,7 +5,6 @@ import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
@@ -57,10 +56,9 @@ public class BlockLightNode extends BlockEio {
@Override
public void breakBlock(World world, int x, int y, int z, Block par5, int par6) {
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof TileLightNode) {
TileLightNode light = (TileLightNode) te;
light.onBlockRemoved();
TileLightNode te = (TileLightNode) world.getTileEntity(x, y, z);
if (te != null) {
te.onBlockRemoved();
}
}
@@ -67,7 +67,7 @@ public class GuiAttractor extends GuiPoweredMachineBase<TileAttractor> {
super.drawGuiContainerBackgroundLayer(par1, par2, par3);
int range = (int) getTileEntity().getRange().x;
int range = (int) getTileEntity().getRange();
drawCenteredString(
fontRendererObj,
EnderIO.lang.localize("gui.spawnGurad.range") + " " + range,
@@ -61,13 +61,8 @@ public class TileAttractor extends AbstractPowerConsumerEntity implements IRange
}
@Override
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
return new Vector3d(range, range, range);
public float getRange() {
return range;
}
@Override
@@ -76,11 +71,6 @@ public class TileAttractor extends AbstractPowerConsumerEntity implements IRange
return showingRange;
}
@Override
public int getColor() {
return 0x66FFFFFF;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
@@ -327,7 +317,8 @@ public class TileAttractor extends AbstractPowerConsumerEntity implements IRange
ent.faceEntity(getTarget(), 10.0F, 20.0F);
return true;
} else if (ent instanceof EntitySilverfish) {
PathEntity pathentity = worldObj.getPathEntityToEntity(ent, getTarget(), range, true, false, false, true);
PathEntity pathentity = worldObj
.getPathEntityToEntity(ent, getTarget(), getRange(), true, false, false, true);
((EntityCreature) ent).setPathToEntity(pathentity);
return true;
} else if (ent instanceof EntityBlaze) {
@@ -348,7 +339,8 @@ public class TileAttractor extends AbstractPowerConsumerEntity implements IRange
return;
}
EntitySilverfish sf = (EntitySilverfish) ent;
PathEntity pathentity = worldObj.getPathEntityToEntity(ent, getTarget(), range, true, false, false, true);
PathEntity pathentity = worldObj
.getPathEntityToEntity(ent, getTarget(), getRange(), true, false, false, true);
sf.setPathToEntity(pathentity);
} else if (ent instanceof EntityBlaze) {
EntityBlaze mob = (EntityBlaze) ent;
@@ -58,7 +58,7 @@ public class GuiAversionObelisk extends GuiPoweredMachineBase<TileAversionObelis
super.drawGuiContainerBackgroundLayer(par1, par2, par3);
int range = (int) getTileEntity().getRange().x;
int range = (int) getTileEntity().getRange();
drawCenteredString(
fontRendererObj,
EnderIO.lang.localize("gui.spawnGurad.range") + " " + range,
@@ -9,7 +9,6 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import com.enderio.core.client.render.BoundingBox;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -41,11 +40,6 @@ public class TileAversionObelisk extends AbstractPowerConsumerEntity implements
return showingRange;
}
@Override
public int getColor() {
return 0x66FFFFFF;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
@@ -70,13 +64,8 @@ public class TileAversionObelisk extends AbstractPowerConsumerEntity implements
}
@Override
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
return new Vector3d(range, range, range);
public float getRange() {
return range;
}
@Override
@@ -28,7 +28,7 @@ public class GuiInhibitorObelisk extends GuiPoweredMachineBase<TileInhibitorObel
super.drawGuiContainerBackgroundLayer(par1, par2, par3);
int range = (int) getTileEntity().getRange().x;
int range = (int) getTileEntity().getRange();
drawCenteredString(
fontRendererObj,
EnderIO.lang.localize("gui.spawnGurad.range") + " " + range,
@@ -1,11 +1,8 @@
package crazypants.enderio.machine.obelisk.inhibitor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import com.enderio.core.common.vecmath.Vector3d;
import crazypants.enderio.ModObject;
import crazypants.enderio.machine.AbstractPowerConsumerEntity;
import crazypants.enderio.machine.SlotDefinition;
@@ -45,13 +42,8 @@ public class TileInhibitorObelisk extends AbstractPowerConsumerEntity implements
}
@Override
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
return new Vector3d(range, range, range);
public float getRange() {
return range;
}
public void setRange(float range) {
@@ -64,11 +56,6 @@ public class TileInhibitorObelisk extends AbstractPowerConsumerEntity implements
return false;
}
@Override
public int getColor() {
return 0x66FFFFFF;
}
@Override
public void validate() {
super.validate();
@@ -1,10 +1,8 @@
package crazypants.enderio.machine.ranged;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import com.enderio.core.common.util.BlockCoord;
import com.enderio.core.common.vecmath.Vector3d;
public interface IRanged {
@@ -12,11 +10,7 @@ public interface IRanged {
BlockCoord getLocation();
AxisAlignedBB getBounds();
Vector3d getRange();
float getRange();
boolean isShowingRange();
int getColor();
}
@@ -5,7 +5,6 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import com.enderio.core.common.util.BlockCoord;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -14,22 +13,16 @@ public class RangeEntity extends Entity {
int totalLife = 20;
int lifeSpan = totalLife;
private Vector3d lastRange;
private AxisAlignedBB lastBounds;
private final IRanged spawnGuard;
private int color;
private AxisAlignedBB rangeBounds;
private Vector3d range;
float range;
private IRanged spawnGuard;
public RangeEntity(IRanged sg) {
super(sg.getWorld());
spawnGuard = sg;
BlockCoord bc = spawnGuard.getLocation();
setPosition(bc.x - 0.01, bc.y - 0.01, bc.z - 0.01);
setPosition(bc.x + 0.5, bc.y + 0.5, bc.z + 0.5);
ignoreFrustumCheck = true;
color = sg.getColor();
lastRange = spawnGuard.getRange();
lastBounds = spawnGuard.getBounds();
range = sg.getRange() + 0.5f;
}
@Override
@@ -48,14 +41,7 @@ public class RangeEntity extends Entity {
@Override
public AxisAlignedBB getBoundingBox() {
return spawnGuard.getBounds() != null ? spawnGuard.getBounds()
: AxisAlignedBB.getBoundingBox(
posX - lastRange.x,
posY - lastRange.y,
posZ - lastRange.z,
posX + lastRange.x + 1,
posY + lastRange.y + 1,
posZ + lastRange.z + 1);
return null;
}
@Override
@@ -63,8 +49,6 @@ public class RangeEntity extends Entity {
super.onUpdate();
lifeSpan--;
BlockCoord bc = spawnGuard.getLocation();
updateRange();
if (!(worldObj.getTileEntity(bc.x, bc.y, bc.z) instanceof IRanged)) {
setDead();
}
@@ -78,17 +62,4 @@ public class RangeEntity extends Entity {
@Override
protected void writeEntityToNBT(NBTTagCompound p_70014_1_) {}
private void updateRange() {
if (lastRange != null && !lastRange.equals(spawnGuard.getRange())) {
lastRange = spawnGuard.getRange();
} else if (lastBounds != null && !lastBounds.equals(spawnGuard.getBounds())) {
lastBounds = spawnGuard.getBounds();
}
}
public float[] getColor() {
return new float[] { (float) (this.color >> 16 & 255) / 255.0F, (float) (this.color >> 8 & 255) / 255.0F,
(float) (this.color & 255) / 255.0F, (float) (this.color >> 24 & 255) / 255.0F };
}
}
@@ -3,7 +3,6 @@ package crazypants.enderio.machine.ranged;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderEntity;
import net.minecraft.entity.Entity;
import net.minecraft.util.AxisAlignedBB;
import org.lwjgl.opengl.GL11;
@@ -11,19 +10,17 @@ import com.enderio.core.client.render.BoundingBox;
import com.enderio.core.client.render.CubeRenderer;
import com.enderio.core.client.render.IconUtil;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class RangeRenderer extends RenderEntity {
public class RangeRenerer extends RenderEntity {
@Override
public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float p_76986_9_) {
RangeEntity se = ((RangeEntity) entity);
AxisAlignedBB rangeBB = se.getBoundingBox();
final Tessellator tessellator = Tessellator.instance;
GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
@@ -33,29 +30,21 @@ public class RangeRenderer extends RenderEntity {
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glDepthMask(false);
Vector3d translate = new Vector3d(
-(se.posX - rangeBB.minX + 0.01),
-(se.posY - rangeBB.minY + 0.01),
-(se.posZ - rangeBB.minZ + 0.01));
Vector3d scale = new Vector3d(
1 - (se.lifeSpan / (float) se.totalLife),
1 - (se.lifeSpan / (float) se.totalLife),
rangeBB.maxZ - rangeBB.minZ);
scale.x = Math.min(scale.x, 1);
scale.y = Math.min(scale.y, 1);
scale.x *= (rangeBB.maxX - rangeBB.minX);
scale.y *= (rangeBB.maxY - rangeBB.minY);
float scale = 1 - (se.lifeSpan / (float) se.totalLife);
scale = Math.min(scale, 1);
scale *= se.range;
GL11.glPushMatrix();
GL11.glColor4f(se.getColor()[0], se.getColor()[1], se.getColor()[2], se.getColor()[3]);
GL11.glTranslatef((float) x, (float) y, (float) z);
GL11.glTranslatef(0.5f, 0.5f, 0.5f);
GL11.glScalef(scale, scale, scale);
GL11.glTranslatef(-0.5f, -0.5f, -0.5f);
GL11.glColor4f(1, 1, 1, 0.4f);
RenderUtil.bindBlockTexture();
tessellator.startDrawingQuads();
GL11.glTranslated(x, y, z);
GL11.glTranslated(translate.x, translate.y, translate.z);
GL11.glScaled(scale.x, scale.y, scale.z);
tessellator.setBrightness(15 << 20 | 15 << 4);
CubeRenderer.get().render(BoundingBox.UNIT_CUBE, IconUtil.whiteTexture);
tessellator.draw();
@@ -2,7 +2,6 @@ package crazypants.enderio.machine.spawner;
import java.awt.Color;
import java.awt.Rectangle;
import java.util.List;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
@@ -11,40 +10,22 @@ import net.minecraft.entity.player.InventoryPlayer;
import org.lwjgl.opengl.GL11;
import com.enderio.core.client.gui.button.MultiIconButton;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.ColorUtil;
import com.google.common.collect.Lists;
import crazypants.enderio.EnderIO;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.gui.GuiPoweredMachineBase;
import crazypants.enderio.network.PacketHandler;
public class GuiPoweredSpawner extends GuiPoweredMachineBase<TilePoweredSpawner> {
private static final int RANGE_ID = 8738924;
private final MultiIconButton modeB;
private final Rectangle progressTooltipRect;
private final ToggleButton showRangeB;
private boolean wasSpawnMode;
private String header;
public GuiPoweredSpawner(InventoryPlayer par1InventoryPlayer, TilePoweredSpawner te) {
super(te, new ContainerPoweredSpawner(par1InventoryPlayer, te), "poweredSpawner");
showRangeB = new ToggleButton(this, RANGE_ID, 155, 24 + 18, IconEIO.PLUS, IconEIO.MINUS);
showRangeB.setSize(BUTTON_SIZE, BUTTON_SIZE);
addToolTip(new GuiToolTip(showRangeB.getBounds(), "null") {
@Override
public List<String> getToolTipText() {
return Lists.newArrayList(
EnderIO.lang.localize(
showRangeB.isSelected() ? "gui.spawnGurad.hideRange" : "gui.spawnGurad.showRange"));
}
});
modeB = MultiIconButton.createRightArrowButton(this, 8888, 115, 10);
modeB.setSize(10, 16);
@@ -57,8 +38,6 @@ public class GuiPoweredSpawner extends GuiPoweredMachineBase<TilePoweredSpawner>
@Override
public void initGui() {
super.initGui();
showRangeB.onGuiInit();
showRangeB.setSelected(getTileEntity().isShowingRange());
modeB.onGuiInit();
((ContainerPoweredSpawner) inventorySlots).createGhostSlots(getGhostSlots());
}
@@ -68,9 +47,9 @@ public class GuiPoweredSpawner extends GuiPoweredMachineBase<TilePoweredSpawner>
if (par1GuiButton == modeB) {
getTileEntity().setSpawnMode(!getTileEntity().isSpawnMode());
PacketHandler.INSTANCE.sendToServer(new PacketMode(getTileEntity()));
} else if (par1GuiButton.id == RANGE_ID) {
getTileEntity().setShowRange(showRangeB.isSelected());
} else super.actionPerformed(par1GuiButton);
} else {
super.actionPerformed(par1GuiButton);
}
}
private void updateSpawnMode(boolean spawnMode) {
@@ -7,12 +7,7 @@ import net.minecraft.entity.EnumCreatureType;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.ModObject;
import crazypants.enderio.config.Config;
@@ -21,13 +16,11 @@ import crazypants.enderio.machine.IMachineRecipe;
import crazypants.enderio.machine.IPoweredTask;
import crazypants.enderio.machine.PoweredTask;
import crazypants.enderio.machine.SlotDefinition;
import crazypants.enderio.machine.ranged.IRanged;
import crazypants.enderio.machine.ranged.RangeEntity;
import crazypants.enderio.power.BasicCapacitor;
import crazypants.enderio.power.Capacitors;
import crazypants.enderio.power.ICapacitor;
public class TilePoweredSpawner extends AbstractPoweredTaskEntity implements IRanged {
public class TilePoweredSpawner extends AbstractPoweredTaskEntity {
public static final int MIN_SPAWN_DELAY_BASE = Config.poweredSpawnerMinDelayTicks;
public static final int MAX_SPAWN_DELAY_BASE = Config.poweredSpawnerMaxDelayTicks;
@@ -101,7 +94,6 @@ public class TilePoweredSpawner extends AbstractPoweredTaskEntity implements IRa
private boolean isSpawnMode = true;
private int powerUsePerTick;
private int remainingSpawnTries;
private boolean showingRange;
public TilePoweredSpawner() {
super(new SlotDefinition(1, 1, 1));
@@ -186,7 +178,6 @@ public class TilePoweredSpawner extends AbstractPoweredTaskEntity implements IRa
basePowerUse = POWER_PER_TICK_TEN;
break;
}
double multiplier = PoweredSpawnerConfig.getInstance().getCostMultiplierFor(getEntityName());
setCapacitor(
new BasicCapacitor(
@@ -384,41 +375,4 @@ public class TilePoweredSpawner extends AbstractPoweredTaskEntity implements IRa
public boolean hasEntityName() {
return !NULL_ENTITY_NAME.equals(entityTypeName);
}
@Override
public World getWorld() {
return worldObj;
}
@Override
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
int range = Config.poweredSpawnerSpawnRange - 1;
return new Vector3d(range, 1, range);
}
@Override
public boolean isShowingRange() {
return showingRange;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
return;
}
showingRange = showRange;
if (showingRange) {
worldObj.spawnEntityInWorld(new RangeEntity(this));
}
}
@Override
public int getColor() {
return 0x66FF0000;
}
}
@@ -2,7 +2,6 @@ package crazypants.enderio.machine.vacuum;
import java.awt.Color;
import java.awt.Rectangle;
import java.util.List;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
@@ -19,7 +18,6 @@ import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.ColorUtil;
import com.enderio.core.client.render.EnderWidget;
import com.enderio.core.common.util.BlockCoord;
import com.google.common.collect.Lists;
import crazypants.enderio.EnderIO;
import crazypants.enderio.conduit.item.filter.ItemFilter;
@@ -30,7 +28,6 @@ import crazypants.enderio.network.PacketHandler;
public class GuiVacuumChest extends GuiContainerBaseEIO {
private static final int RANGE_ID = 8738924;
private static final int RANGE_LEFT = 145;
private static final int RANGE_TOP = 86;
private static final int RANGE_WIDTH = 16;
@@ -46,7 +43,6 @@ public class GuiVacuumChest extends GuiContainerBaseEIO {
private final TileVacuumChest te;
private final ToggleButton showRangeB;
private final GuiToolTip rangeTooltip;
private final MultiIconButton rangeUpB;
private final MultiIconButton rangeDownB;
@@ -79,18 +75,6 @@ public class GuiVacuumChest extends GuiContainerBaseEIO {
y = 104;
rsB = new RedstoneModeButton(this, ID_REDSTONE, x, y, te, new BlockCoord(te));
showRangeB = new ToggleButton(this, RANGE_ID, x - 18, y, IconEIO.PLUS, IconEIO.MINUS);
showRangeB.setSize(16, 16);
addToolTip(new GuiToolTip(showRangeB.getBounds(), "null") {
@Override
public List<String> getToolTipText() {
return Lists.newArrayList(
EnderIO.lang.localize(
showRangeB.isSelected() ? "gui.spawnGurad.hideRange" : "gui.spawnGurad.showRange"));
}
});
x = FILTER_LEFT + TileVacuumChest.FILTER_SLOTS * 18 + 2;
y = 86;
whiteListB = new ToggleButton(this, ID_WHITELIST, x, y, IconEIO.FILTER_WHITELIST, IconEIO.FILTER_BLACKLIST);
@@ -126,8 +110,6 @@ public class GuiVacuumChest extends GuiContainerBaseEIO {
public void initGui() {
super.initGui();
showRangeB.onGuiInit();
showRangeB.setSelected(te.isShowingRange());
rangeUpB.onGuiInit();
rangeDownB.onGuiInit();
rsB.onGuiInit();
@@ -142,13 +124,11 @@ public class GuiVacuumChest extends GuiContainerBaseEIO {
ItemFilter itemFilter;
switch (guiButton.id) {
case ID_RANGE_UP:
setRange((int) te.getRange().x + 1);
setRange(te.getRange() + 1);
break;
case ID_RANGE_DOWN:
setRange((int) te.getRange().x - 1);
setRange(te.getRange() - 1);
break;
case RANGE_ID:
te.setShowRange(showRangeB.isSelected());
case ID_WHITELIST:
itemFilter = te.getItemFilter();
if (itemFilter != null) {
@@ -213,7 +193,7 @@ public class GuiVacuumChest extends GuiContainerBaseEIO {
fr.drawString(headerInventory, sx + 7, sy + 111, headerColor);
IconEIO.map.render(EnderWidget.BUTTON_DOWN, sx + RANGE_LEFT, sy + RANGE_TOP, RANGE_WIDTH, 16, 0, true);
String str = Integer.toString((int) te.getRange().x);
String str = Integer.toString(te.getRange());
int sw = fr.getStringWidth(str);
fr.drawString(str, sx + RANGE_LEFT + RANGE_WIDTH - sw - 5, sy + RANGE_TOP + 5, ColorUtil.getRGB(Color.black));
@@ -13,14 +13,10 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import com.enderio.core.client.render.BoundingBox;
import com.enderio.core.common.util.ItemUtil;
import com.enderio.core.common.vecmath.Vector3d;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.ModObject;
import crazypants.enderio.TileEntityEio;
@@ -30,11 +26,8 @@ import crazypants.enderio.conduit.item.filter.ItemFilter;
import crazypants.enderio.config.Config;
import crazypants.enderio.machine.IRedstoneModeControlable;
import crazypants.enderio.machine.RedstoneControlMode;
import crazypants.enderio.machine.ranged.IRanged;
import crazypants.enderio.machine.ranged.RangeEntity;
public class TileVacuumChest extends TileEntityEio
implements IEntitySelector, IInventory, IRedstoneModeControlable, IRanged {
public class TileVacuumChest extends TileEntityEio implements IEntitySelector, IInventory, IRedstoneModeControlable {
public static final int ITEM_ROWS = 3;
public static final int ITEM_SLOTS = 9 * ITEM_ROWS;
@@ -49,8 +42,6 @@ public class TileVacuumChest extends TileEntityEio
protected boolean redstoneCheckPassed;
private boolean redstoneStateDirty = true;
private boolean showingRange;
@Override
public void doUpdate() {
if (redstoneStateDirty) {
@@ -235,41 +226,8 @@ public class TileVacuumChest extends TileEntityEio
&& itemstack.getItemDamage() == 0;
}
@Override
public World getWorld() {
return worldObj;
}
@Override
public AxisAlignedBB getBounds() {
return null;
}
@Override
public Vector3d getRange() {
return new Vector3d(range, range, range);
}
@Override
@SideOnly(Side.CLIENT)
public boolean isShowingRange() {
return showingRange;
}
@Override
public int getColor() {
return 0x660000FF;
}
@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
return;
}
showingRange = showRange;
if (showingRange) {
worldObj.spawnEntityInWorld(new RangeEntity(this));
}
public int getRange() {
return range;
}
private int limitRange(int range) {
@@ -33,10 +33,9 @@ public enum Alloy {
if (oreDictName != null) {
this.oreIngots.add("ingot" + StringUtils.capitalize(oreDictName));
this.oreBlocks.add("block" + StringUtils.capitalize(oreDictName));
} else {
this.oreIngots.add("ingot" + StringUtils.capitalize(baseName));
this.oreBlocks.add("block" + StringUtils.capitalize(baseName));
}
this.oreIngots.add("ingot" + StringUtils.capitalize(baseName));
this.oreBlocks.add("block" + StringUtils.capitalize(baseName));
this.hardness = hardness;
}
@@ -103,7 +103,7 @@ public class ItemCapacitor extends Item implements ICapacitorItem {
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
if (par1ItemStack != null && par1ItemStack.getItemDamage() > 0 && par1ItemStack.getItemDamage() != 7) {
if (par1ItemStack != null && par1ItemStack.getItemDamage() > 0) {
par3List.add(EnderIO.lang.localize("machine.tooltip.upgrade"));
if (SpecialTooltipHandler.showAdvancedTooltips()) {
SpecialTooltipHandler.addDetailedTooltipFromResources(par3List, "enderio.machine.tooltip.upgrade");
@@ -57,28 +57,38 @@ public class ItemTeleportStaff extends ItemTravelStaff {
@Override
public ItemStack onItemRightClick(ItemStack equipped, World world, EntityPlayer player) {
if (world.isRemote) {
int action = player.isSneaking() ? Config.teleportStaffSneakAction : Config.teleportStaffAction;
switch (action) {
case 0:
// Do nothing.
break;
case 1:
TravelController.instance.doTeleport(player);
player.swingItem();
break;
case 2:
if (Config.teleportStaffOriginalControls) {
if (player.isSneaking()) {
TravelController.instance
.activateTravelAccessable(equipped, world, player, TravelSource.TELEPORT_STAFF);
player.swingItem();
break;
} else {
TravelController.instance.doTeleport(player);
}
player.swingItem();
} else {
int action = player.isSneaking() ? Config.teleportStaffSneakAction : Config.teleportStaffAction;
switch (action) {
case 0:
// Do nothing.
break;
case 3:
TravelController.instance
.activateTravelAccessable(equipped, world, player, TravelSource.TELEPORT_STAFF, true);
player.swingItem();
break;
case 1:
TravelController.instance.doTeleport(player);
player.swingItem();
break;
case 2:
TravelController.instance
.activateTravelAccessable(equipped, world, player, TravelSource.TELEPORT_STAFF);
player.swingItem();
break;
case 3:
TravelController.instance
.activateTravelAccessable(equipped, world, player, TravelSource.TELEPORT_STAFF, true);
player.swingItem();
break;
}
}
}
return equipped;
@@ -46,6 +46,7 @@ import com.google.common.collect.Table;
import com.google.common.collect.TreeBasedTable;
import com.gtnewhorizon.gtnhlib.GTNHLib;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ObfuscationReflectionHelper;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
@@ -199,11 +200,12 @@ public class TravelController {
public boolean activateTravelAccessable(ItemStack equipped, World world, EntityPlayer player, TravelSource source,
boolean alsoDoTeleport) {
if (!hasTarget()) {
PacketLongDistanceTravelEvent p = new PacketLongDistanceTravelEvent(player, false, source);
if (alsoDoTeleport) {
Optional<BlockCoord> destinationOptional = findTeleportDestination(player);
if (destinationOptional.isPresent()) {
BlockCoord destination = destinationOptional.get();
PacketLongDistanceTravelEvent p = new PacketLongDistanceTravelEvent(
p = new PacketLongDistanceTravelEvent(
player,
false,
source,
@@ -211,18 +213,12 @@ public class TravelController {
destination.x,
destination.y,
destination.z);
PacketHandler.INSTANCE.sendToServer(p);
// We have no way of knowing if it will succeed, so just return false.
return false;
}
}
PacketLongDistanceTravelEvent p = new PacketLongDistanceTravelEvent(player, false, source);
PacketHandler.INSTANCE.sendToServer(p);
// We have no way of knowing if it will succeed, so just return false.
return false;
}
BlockCoord target = selectedCoord;
TileEntity te = world.getTileEntity(target.x, target.y, target.z);
if (te instanceof ITravelAccessable) {
@@ -344,11 +340,111 @@ public class TravelController {
public boolean doTeleport(EntityPlayer player) {
Optional<BlockCoord> destinationOptional = findTeleportDestination(player);
if (destinationOptional.isPresent()) {
return travelToLocation(player, TravelSource.TELEPORT_STAFF_BLINK, destinationOptional.get(), false);
return travelToLocation(player, TravelSource.TELEPORT_STAFF_BLINK, destinationOptional.get(), true);
}
return false;
}
/** Finds the destination for the teleport staff super-teleport, or returns empty optional if unsuccessful. */
public Optional<BlockCoord> findTeleportDestination(EntityPlayer player) {
TravelSource source = TravelSource.TELEPORT_STAFF_BLINK;
Vector3d eye = Util.getEyePositionEio(player);
Vector3d look = Util.getLookVecEio(player);
double playerHeight = player.yOffset;
// +2 to compensate for the standard distance decrement of -2
double teleDistance = Config.teleportStaffFailedBlinkDistance + 2;
Vec3 eye3 = Vec3.createVectorHelper(eye.x, eye.y, eye.z);
// rayTraceBlocks has a limit of 200 distance.
double maxDistance = Config.teleportStaffMaxBlinkDistance;
double currDistance = 0;
Vec3 pos = eye3;
boolean loop = true;
while (loop) {
double distance = 200;
if (maxDistance - currDistance < 200) {
distance = maxDistance - currDistance;
loop = false;
}
Vector3d sample = new Vector3d(look);
sample.scale(distance);
sample.add(eye);
Vec3 end = Vec3.createVectorHelper(sample.x, sample.y, sample.z);
MovingObjectPosition p = player.worldObj
.rayTraceBlocks(pos, end, !Config.travelStaffBlinkThroughClearBlocksEnabled);
if (p != null) {
teleDistance = VecmathUtil.distance(eye, new Vector3d(p.blockX + 0.5, p.blockY + 0.5, p.blockZ + 0.5));
break;
}
pos = end;
currDistance += distance;
}
Vector3d sample = new Vector3d(look);
sample.scale(Config.teleportStaffMaxBlinkDistance);
sample.add(eye);
Vec3 end = Vec3.createVectorHelper(sample.x, sample.y, sample.z);
MovingObjectPosition p = player.worldObj
.rayTraceBlocks(eye3, end, !Config.travelStaffBlinkThroughClearBlocksEnabled);
if (p != null) {
teleDistance = VecmathUtil.distance(eye, new Vector3d(p.blockX + 0.5, p.blockY + 0.5, p.blockZ + 0.5));
}
double distanceIncrement = -2;
int maxIter = Math.min(8, (int) teleDistance / 2);
// Special case: if the targeted block is too close, we'll try to teleport through it.
if (teleDistance < 4) {
distanceIncrement = 0.5;
maxIter = 32;
}
for (int i = 0; i < maxIter; i++) {
teleDistance += distanceIncrement;
sample.set(look);
sample.scale(teleDistance);
sample.add(eye);
// we test against our feets location
sample.y -= playerHeight;
Optional<BlockCoord> destinationOptional = findNearbyDestination(player, source, sample);
if (destinationOptional.isPresent()) {
return destinationOptional;
}
}
return Optional.empty();
}
/** Finds a long-distance travel anchor, or returns empty optional if unsuccessful. */
public Optional<BlockCoord> findTravelDestination(EntityPlayer player, TravelSource source) {
double maxDistance = source.getMaxDistanceTravelled();
double maxMessageDistance = 1.25 * maxDistance;
// Find possible destinations within about 5 degrees.
RowSortedTable<Double, Double, BlockCoord> possibleDestinations = findBlocksWithinAngle(
player,
travelDestinations.get(player.worldObj.provider.dimensionId),
0.087,
maxMessageDistance);
for (Table.Cell<Double, Double, BlockCoord> cell : possibleDestinations.cellSet()) {
if (cell.getColumnKey() <= maxDistance) {
return Optional.of(cell.getValue());
}
}
if (!possibleDestinations.isEmpty()) {
// We found at least one block within maxMessageDistance, but no blocks within maxDistance.
showMessage(player, new ChatComponentTranslation("enderio.blockTravelPlatform.outOfRange"));
}
return Optional.empty();
}
private boolean isBlackListedBlock(EntityPlayer player, MovingObjectPosition pos, Block hitBlock) {
UniqueIdentifier ui = GameRegistry.findUniqueIdentifierFor(hitBlock);
if (ui == null) {
@@ -529,9 +625,9 @@ public class TravelController {
return getTravelItemTravelSource(ep, checkInventoryAndBaubles) != null;
}
/** Currently, we only hide travel targets for the teleport staff, in certain action modes. */
public boolean shouldHideTargets(EntityPlayer ep) {
if (getTravelItemTravelSource(ep, false) != TravelSource.TELEPORT_STAFF) {
if (getTravelItemTravelSource(ep, false) != TravelSource.TELEPORT_STAFF
|| Config.teleportStaffOriginalControls) {
return false;
}
@@ -638,106 +734,6 @@ public class TravelController {
return travelItemSlot;
}
/** Finds the destination for the teleport staff super-teleport, or returns empty optional if unsuccessful. */
public Optional<BlockCoord> findTeleportDestination(EntityPlayer player) {
TravelSource source = TravelSource.TELEPORT_STAFF_BLINK;
Vector3d eye = Util.getEyePositionEio(player);
Vector3d look = Util.getLookVecEio(player);
double playerHeight = player.yOffset;
// +2 to compensate for the standard distance decrement of -2
double teleDistance = Config.teleportStaffFailedBlinkDistance + 2;
Vec3 eye3 = Vec3.createVectorHelper(eye.x, eye.y, eye.z);
// rayTraceBlocks has a limit of 200 distance.
double maxDistance = Config.teleportStaffMaxBlinkDistance;
double currDistance = 0;
Vec3 pos = eye3;
boolean loop = true;
while (loop) {
double distance = 200;
if (maxDistance - currDistance < 200) {
distance = maxDistance - currDistance;
loop = false;
}
Vector3d sample = new Vector3d(look);
sample.scale(distance);
sample.add(eye);
Vec3 end = Vec3.createVectorHelper(sample.x, sample.y, sample.z);
MovingObjectPosition p = player.worldObj
.rayTraceBlocks(pos, end, !Config.travelStaffBlinkThroughClearBlocksEnabled);
if (p != null) {
teleDistance = VecmathUtil.distance(eye, new Vector3d(p.blockX + 0.5, p.blockY + 0.5, p.blockZ + 0.5));
break;
}
pos = end;
currDistance += distance;
}
Vector3d sample = new Vector3d(look);
sample.scale(Config.teleportStaffMaxBlinkDistance);
sample.add(eye);
Vec3 end = Vec3.createVectorHelper(sample.x, sample.y, sample.z);
MovingObjectPosition p = player.worldObj
.rayTraceBlocks(eye3, end, !Config.travelStaffBlinkThroughClearBlocksEnabled);
if (p != null) {
teleDistance = VecmathUtil.distance(eye, new Vector3d(p.blockX + 0.5, p.blockY + 0.5, p.blockZ + 0.5));
}
double distanceIncrement = -2;
int maxIter = Math.min(8, (int) teleDistance / 2);
// Special case: if the targeted block is too close, we'll try to teleport through it.
if (teleDistance < 4) {
distanceIncrement = 0.5;
maxIter = 32;
}
for (int i = 0; i < maxIter; i++) {
teleDistance += distanceIncrement;
sample.set(look);
sample.scale(teleDistance);
sample.add(eye);
// we test against our feets location
sample.y -= playerHeight;
Optional<BlockCoord> destinationOptional = findNearbyDestination(player, source, sample);
if (destinationOptional.isPresent()) {
return destinationOptional;
}
}
return Optional.empty();
}
/** Finds a long-distance travel anchor, or returns empty optional if unsuccessful. */
public Optional<BlockCoord> findTravelDestination(EntityPlayer player, TravelSource source) {
double maxDistance = source.getMaxDistanceTravelled();
double maxMessageDistance = 1.25 * maxDistance;
// Find possible destinations within about 5 degrees.
RowSortedTable<Double, Double, BlockCoord> possibleDestinations = findBlocksWithinAngle(
player,
travelDestinations.get(player.worldObj.provider.dimensionId),
0.087,
maxMessageDistance);
for (Table.Cell<Double, Double, BlockCoord> cell : possibleDestinations.cellSet()) {
if (cell.getColumnKey() <= maxDistance) {
return Optional.of(cell.getValue());
}
}
if (!possibleDestinations.isEmpty()) {
// We found at least one block within maxMessageDistance, but no blocks within maxDistance.
showMessage(player, new ChatComponentTranslation("enderio.blockTravelPlatform.outOfRange"));
}
return Optional.empty();
}
/** Finds a valid destination near the provided vector, or returns empty optional if unsuccessful. */
private Optional<BlockCoord> findNearbyDestination(EntityPlayer player, TravelSource source, Vector3d sample) {
Optional<BlockCoord> destinationOptional = findValidDestination(
@@ -1193,15 +1189,19 @@ public class TravelController {
}
public static void showMessage(EntityPlayer player, IChatComponent chatComponent) {
if (player instanceof EntityPlayerMP) {
chatComponent.setChatStyle(new ChatStyle().setColor(EnumChatFormatting.WHITE));
GTNHLib.proxy.sendMessageAboveHotbar((EntityPlayerMP) player, chatComponent, 60, true, true);
if (Loader.isModLoaded("gtnhlib")) {
if (player instanceof EntityPlayerMP) {
chatComponent.setChatStyle(new ChatStyle().setColor(EnumChatFormatting.WHITE));
GTNHLib.proxy.sendMessageAboveHotbar((EntityPlayerMP) player, chatComponent, 60, true, true);
} else {
GTNHLib.proxy.printMessageAboveHotbar(
EnumChatFormatting.WHITE + chatComponent.getFormattedText(),
60,
true,
true);
}
} else {
GTNHLib.proxy.printMessageAboveHotbar(
EnumChatFormatting.WHITE + chatComponent.getFormattedText(),
60,
true,
true);
player.addChatComponentMessage(chatComponent);
}
}
}
@@ -337,9 +337,6 @@ public class TileTravelAnchor extends TileEntityEio implements ITravelAccessable
public void validate() {
super.validate();
if (isTravelSource()) {
// Note: travelDestinations is a SetMultimap, which does not allow duplicate entries.
// So it's okay if this gets called multiple times with the same BlockCoord.
// Though, I think that it's not currently getting called multiple times, anyway.
TravelController.instance.travelDestinations.put(worldObj.provider.dimensionId, getLocation());
}
}
@@ -344,13 +344,14 @@ public class WailaCompat implements IWailaDataProvider {
} else if (itemStack.getItem() == EnderIO.itemMEConduit) {
NBTTagCompound nbtRoot = accessor.getNBTData();
if (nbtRoot.hasKey("isDense")) {
boolean isDenseUltra = nbtRoot.getBoolean("isDenseUltra");
boolean isDense = nbtRoot.getBoolean("isDense");
int channelsInUse = nbtRoot.getInteger("channelsInUse");
currenttip.add(
MessageFormat.format(
EnderIO.lang.localize("itemMEConduit.channelsUsed"),
channelsInUse,
isDense ? 32 : 8));
isDenseUltra ? 128 : (isDense ? 32 : 8)));
}
}
}
@@ -386,6 +387,7 @@ public class WailaCompat implements IWailaDataProvider {
if (mec != null) {
tag.setInteger("channelsInUse", mec.getChannelsInUse());
tag.setBoolean("isDense", mec.isDense());
tag.setBoolean("isDenseUltra", mec.isDenseUltra());
}
} else if (te instanceof IInternalPoweredTile) {
IInternalPoweredTile ipte = (IInternalPoweredTile) te;
@@ -130,6 +130,7 @@ enderio.itemGasConduit.tooltip.detailed.line1=Transportiert Mekanism-kompatible
enderio.itemMEConduit.name=ME-Leitung
enderio.itemMEConduitDense.name=Dichte ME-Leitung
enderio.itemMEConduitDenseUltra.name=Extrem Dichte ME-Leitungen
enderio.itemMEConduit.channelsUsed={0,number} von {1,number} Kanälen
enderio.itemOCConduit.name=Netzwerkleitung (OC)
@@ -19,7 +19,6 @@ item.enderio.itemEnderface.name=Enderface
#Conduits
enderio.blockConduitBundle=Conduit Bundle
tile.blockConduitFacade.name=Conduit Facade
enderio.blockConduitFacade=Conduit Facade
item.enderio.itemConduitFacade.name=Conduit Facade
item.enderio.itemConduitFacade.hardened.name=Hardened Conduit Facade
@@ -30,12 +29,10 @@ item.enderio.itemConduitFacade.tooltip.detailed.line3=Hidden when a wrench or co
item.enderio.itemConduitFacade.tooltip.detailed.line4=is equipped
item.enderio.itemConduitFacade.hardened.tooltip=Hardened: Resists breaking and explosions
item.itemPowerConduit.name=Energy Conduit
enderio.itemPowerConduit.name=Energy Conduit
enderio.itemPowerConduitEnhanced.name=Enhanced Energy Conduit
enderio.itemPowerConduitEnder.name=Ender Energy Conduit
item.itemPowerConduitEndergy.name=Energy Conduit
enderio.itemPowerConduitEndergyCrude.name=Clay Compound Energy Conduit
enderio.itemPowerConduitEndergyIron.name=Iron Energy Conduit
enderio.itemPowerConduitEndergyAluminum.name=Aluminum Energy Conduit
@@ -49,12 +46,10 @@ enderio.itemPowerConduitEndergyCrystallinePinkSlime.name=Crystalline Pink Slime
enderio.itemPowerConduitEndergyMelodic.name=Melodic Energy Conduit
enderio.itemPowerConduitEndergyStellar.name=Stellar Energy Conduit
item.itemRedstoneConduit.name=Redstone Conduit
enderio.itemRedstoneConduit.name=Redstone Conduit
enderio.itemRedstoneConduitSwitch.name=Conduit Switch
enderio.itemRedstoneConduitInsulated.name=Insulated Redstone Conduit
item.itemLiquidConduit.name=Fluid Conduit
enderio.itemLiquidConduit.name=Fluid Conduit
enderio.itemLiquidConduitAdvanced.name=Pressurized Fluid Conduit
enderio.itemLiquidConduitEnder.name=Ender Fluid Conduit
@@ -76,13 +71,10 @@ enderio.itemLiquidConduitEnder.tooltip.detailed.line1=Instant fluid teleportatio
enderio.itemLiquidConduitEnder.tooltip.detailed.line2=allows multiple fluids to be
enderio.itemLiquidConduitEnder.tooltip.detailed.line3=transported on the same line
item.itemItemConduit.name=Item Conduit
enderio.itemItemConduit.name=Item Conduit
item.itemBasicFilterUpgrade.name=Item Filter
enderio.filterUpgradeBasic.name=Basic Item Filter
enderio.filterUpgradeAdvanced.name=Advanced Item Filter
item.itemBigFilterUpgrade.name=Big Item Filter
enderio.filterUpgradeBig.name=Big Item Filter
enderio.filterUpgradeBigAdvanced.name=Big Advanced Item Filter
enderio.itemConduitFilterUpgrade=Upgrade for item conduits
@@ -127,7 +119,6 @@ item.itemExtractSpeedDowngrade.tooltip.basic.line1=Downgrade for item conduits
item.itemExtractSpeedDowngrade.tooltip.detailed.line1=Reduces speed to 1
item.itemExtractSpeedDowngrade.tooltip.detailed.line2=item per extraction
item.itemFunctionUpgrade.name=Remote Awareness Upgrade
item.itemInventoryPanelUpgrade.name=Remote Awareness Upgrade
item.itemInventoryPanelUpgrade.tooltip.basic.line1=Inventory Panel Remote Awareness
item.itemInventoryPanelUpgrade.tooltip.detailed.line1=Function upgrade for item conduits
@@ -143,12 +134,11 @@ enderio.itemGasConduit.tooltip.maxExtract=Max Extract:
enderio.itemGasConduit.tooltip.maxIo=Max IO:
enderio.itemGasConduit.tooltip.detailed.line1=Transfers Mekanism-compatible gases
item.itemMEConduit.name=ME Conduit
enderio.itemMEConduit.name=ME Conduit
enderio.itemMEConduitDense.name=Dense ME Conduit
enderio.itemMEConduitDenseUltra.name=Ultra Dense ME Conduit
enderio.itemMEConduit.channelsUsed={0,number} of {1,number} Channels
item.itemOCConduit.name=Network Conduit (OC)
enderio.itemOCConduit.name=Network Conduit (OC)
#Entity
@@ -156,12 +146,11 @@ entity.witherSkeleton.name=Wither Skeleton
#Materials
enderio.itemMaterial.name=Materials
item.itemMaterial.name=Materials
enderio.silicon.name=Silicon
enderio.conduitBinder.name=Conduit Binder
enderio.binderComposite.name=Binder Composite
enderio.phasedIronNugget.name=Pulsating Iron Nugget
tile.blockDarkIronBars.name=Dark Steel Bars
tile.blockDarkIronBars.name=Dark Iron Bars
tile.blockSoulariumBars.name=Soularium Bars
tile.blockEndSteelBars.name=End Steel Bars
tile.blockEndermanSkull.name=Enderman Skull
@@ -233,7 +222,6 @@ enderio.gas.gasTick=Gas/t
#Materials
enderio.itemMachinePart.name=Machine Parts
item.itemMachinePart.name=Machine Parts
enderio.machineChassi.name=Machine Chassis
enderio.basicGear.name=Basic Gear
enderio.soulMachineChassi.name=Soul Machine Chassis
@@ -244,7 +232,6 @@ enderio.enderCrystal.name=Ender Crystal
enderio.attractorCrystal.name=Enticing Crystal
enderio.weatherCrystal.name=Weather Crystal
item.itemGrindingBall.name=Grinding Ball
enderio.darkGrindingBall.name=Dark Steel Ball
enderio.electricalGrindingBall.name=Electrical Steel Ball
enderio.energeticGrindingBall.name=Energetic Alloy Ball
@@ -278,7 +265,6 @@ enderio.itemPowderIngot=Powders & Ingots
#Alloys
enderio.itemAlloy.name=Alloy
item.itemAlloy.name=Alloy
enderio.electricalSteel.name=Electrical Steel
enderio.energeticAlloy.name=Energetic Alloy
enderio.phasedGold.name=Vibrant Alloy
@@ -291,7 +277,6 @@ enderio.soularium.name=Soularium
enderio.endSteel.name=End Steel
enderio.endSteelNugget.name=End Steel Nugget
item.itemAlloyEndergy.name=Alloy
enderio.crudeSteel.name=Clay Compound
enderio.crystallineAlloy.name=Crystalline Alloy
enderio.melodicAlloy.name=Melodic Alloy
@@ -300,7 +285,6 @@ enderio.crystallinePinkSlime.name=Crystalline Pink Slime
enderio.energeticSilver.name=Energetic Silver
enderio.vividAlloy.name=Vivid Alloy
item.itemGrindingBallEndergy.name=Grinding Ball
enderio.crudeSteelGrindingBall.name=Clay Compound Grinding Ball
enderio.crystallineAlloyGrindingBall.name=Crystalline Alloy Grinding Ball
enderio.melodicAlloyGrindingBall.name=Melodic Alloy Grinding Ball
@@ -339,7 +323,6 @@ tile.enderio.darkSteel.name=Dark Steel Block
tile.enderio.soularium.name=Soularium Block
tile.enderio.endSteel.name=End Steel Block
tile.blockIngotStorageEndergy.name=Alloy Block
tile.enderio.crudeSteel.name=Clay Compound Block
tile.enderio.crystallineAlloy.name=Crystalline Alloy Block
tile.enderio.melodicAlloy.name=Melodic Alloy Block
@@ -349,7 +332,6 @@ tile.enderio.energeticSilver.name=Energetic Silver Block
tile.enderio.vividAlloy.name=Vivid Alloy Block
#Powder / Ingot
item.itemPowderIngot.name=Powder
enderio.powderCoal.name=Coal Powder
enderio.powderIron.name=Iron Powder
enderio.powderGold.name=Gold Powder
@@ -361,7 +343,6 @@ enderio.ingotEnderiumBase.name=Enderium Base
#Capacitors
enderio.itemBasicCapacitor.name=Capacitor
item.itemBasicCapacitor.name=Capacitor
enderio.basicCapacitor.name=Basic Capacitor
enderio.activatedCapacitor.name=Double-Layer Capacitor
enderio.enderCapacitor.name=Octadic Capacitor
@@ -410,7 +391,6 @@ enderio.maxSolorProduction=Max Output
enderio.tooltip.efficiency=Efficiency
enderio.tooltip.sunlightBlocked=Sky Blocked!
tile.blockElectricLight.name=Powered Light
item.itemElectricLight.name=Powered Light
item.itemElectricLight.tooltip.detailed.line1=Lights a large area when supplied with
item.itemElectricLight.tooltip.detailed.line2=power and a redstone signal.
@@ -428,8 +408,6 @@ item.itemLightInverted.name=Light (Inverted)
item.itemLightInverted.tooltip.detailed.line1=Emits light, disable with
item.itemLightInverted.tooltip.detailed.line2=a redstone signal.
tile.blockLightNode.name=Light Node
item.itemWirelessLight.name=Wireless Powered Light
item.itemWirelessLight.tooltip.detailed.line1=Lights a large area when supplied with
item.itemWirelessLight.tooltip.detailed.line2=power and a redstone signal.
@@ -447,7 +425,6 @@ tile.blockCapacitorBank.tooltip.detailed.line1=Convert to new block by placing
tile.blockCapacitorBank.tooltip.detailed.line2=in a crafting grid
tile.blockCapacitorBank.tooltipPrefix=Contains
tile.blockCapBank.name=Capacitor Bank
tile.blockCapBank.creative.name=Creative Capacitor Bank
tile.blockCapBank.simple.name=Basic Capacitor Bank
tile.blockCapBank.activated.name=Capacitor Bank
@@ -645,7 +622,6 @@ tile.blockWeatherObelisk.tooltip.detailed.line1=Changes the current weather
tile.blockWeatherObelisk.tooltip.detailed.line2=Requires a lot of power and
tile.blockWeatherObelisk.tooltip.detailed.line3=a catalyst item
tile.blockBuffer.name=Buffer
tile.blockBuffer.item.name=Item Buffer
tile.blockBuffer.power.name=Power Buffer
tile.blockBuffer.omni.name=Omni Buffer
@@ -720,7 +696,6 @@ tile.blockDarkSteelPressurePlate.silent.tooltip.detailed.line2=Can be painted in
tile.blockDarkSteelPressurePlate.silent.tooltip.detailed.line3=invisible when painted with Quite
tile.blockDarkSteelPressurePlate.silent.tooltip.detailed.line4=Clear Glass
tile.blockDarkSteelAnvil.name=Dark Steel Anvil
tile.blockDarkSteelAnvil.intact.name=Dark Steel Anvil
tile.blockDarkSteelAnvil.slightlyDamaged.name=Slightly Damaged Dark Steel Anvil
tile.blockDarkSteelAnvil.veryDamaged.name=Very Damaged Dark Steel Anvil
@@ -784,7 +759,6 @@ tile.blockPaintedFenceGate.name=Painted Gate
tile.blockPaintedWall.name=Painted Wall
tile.blockPaintedStair.name=Painted Stairs
tile.blockPaintedSlab.name=Painted Slab
tile.blockPaintedSlabDouble.name=Painted Slab
tile.blockPaintedDoubleSlab.name=Painted Slab
tile.blockPaintedGlowstone.name=Painted Glowstone
tile.blockPaintedCarpet.name=Painted Carpet
@@ -836,7 +810,6 @@ item.itemXpTransfer.tooltip.detailed.line2=liquid XP to gain levels
item.itemXpTransfer.tooltip.detailed.line3=Shift-R-Click to transfer levels to
item.itemXpTransfer.tooltip.detailed.line4=the tank
item.itemFrankenSkull.name=Zombie Electrode
skullZombieElectrode.name=Zombie Electrode
skullZombieController.name=Z-Logic Controller
skullZombieFrankenstien.name=Frank'N'Zombie
Binary file not shown.

After

Width:  |  Height:  |  Size: 731 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB