aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.properties2
-rw-r--r--src/main/java/gregtech/api/enums/ItemList.java2
-rw-r--r--src/main/java/gregtech/api/enums/Materials.java8
-rw-r--r--src/main/java/gregtech/api/graphs/GenerateNodeMap.java68
-rw-r--r--src/main/java/gregtech/api/graphs/GenerateNodeMapPower.java2
-rw-r--r--src/main/java/gregtech/api/graphs/Node.java10
-rw-r--r--src/main/java/gregtech/api/graphs/NodeList.java12
-rw-r--r--src/main/java/gregtech/api/graphs/PowerNodes.java44
-rw-r--r--src/main/java/gregtech/api/graphs/consumers/ConsumerNode.java4
-rw-r--r--src/main/java/gregtech/api/graphs/consumers/EmptyPowerConsumer.java4
-rw-r--r--src/main/java/gregtech/api/graphs/consumers/NodeEnergyReceiver.java4
-rw-r--r--src/main/java/gregtech/api/graphs/consumers/NodeEnergySink.java4
-rw-r--r--src/main/java/gregtech/api/graphs/consumers/NodeGTBaseMetaTile.java4
-rw-r--r--src/main/java/gregtech/api/graphs/paths/PowerNodePath.java4
-rw-r--r--src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java18
-rw-r--r--src/main/java/gregtech/api/gui/GT_GUICover.java7
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java6
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_OutputBus.java5
-rw-r--r--src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java95
-rw-r--r--src/main/java/gregtech/api/threads/GT_Runnable_Cable_Update.java6
-rw-r--r--src/main/java/gregtech/api/util/GT_CoverBehavior.java1
-rw-r--r--src/main/java/gregtech/api/util/GT_OreDictUnificator.java1
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeRegistrator.java13
-rw-r--r--src/main/java/gregtech/api/util/GT_SpawnEventHandler.java4
-rw-r--r--src/main/java/gregtech/api/util/GT_Utility.java17
-rw-r--r--src/main/java/gregtech/common/GT_Network.java2
-rw-r--r--src/main/java/gregtech/common/GT_Pollution.java1
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java223
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java134
-rw-r--r--src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java41
-rw-r--r--src/main/java/gregtech/common/items/GT_MetaGenerated_Item_03.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_Filter.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_Regulator.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_TypeFilter.java2
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Lava.java24
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MonsterRepellent.java4
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_RockBreaker.java2
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingBlock.java12
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingLog.java1
-rw-r--r--src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java67
-rw-r--r--src/main/java/gregtech/nei/GT_NEI_AssLineHandler.java11
-rw-r--r--src/main/resources/assets/gregtech/lang/en_US.lang14
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeAlloySmelter.pngbin2541 -> 2821 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeCompressor.pngbin2416 -> 2674 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeExtractor.pngbin2460 -> 2766 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeFurnace.pngbin2482 -> 2762 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeHammer.pngbin2394 -> 2634 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeMacerator.pngbin2532 -> 3012 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelAlloySmelter.pngbin2545 -> 2943 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelCompressor.pngbin2418 -> 2690 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelExtractor.pngbin2462 -> 2791 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelFurnace.pngbin2482 -> 2781 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelHammer.pngbin2404 -> 2686 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelMacerator.pngbin2534 -> 3027 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/270.pngbin0 -> 1729 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/271.pngbin0 -> 1729 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/609.pngbin0 -> 4235 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/12.pngbin1403 -> 2136 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/13.pngbin1378 -> 3047 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/23.pngbin3511 -> 2025 bytes
61 files changed, 664 insertions, 227 deletions
diff --git a/build.properties b/build.properties
index 05eb72a3a0..b6ab999f42 100644
--- a/build.properties
+++ b/build.properties
@@ -1,6 +1,6 @@
minecraft.version=1.7.10
forge.version=10.13.4.1614-1.7.10
-gt.version=5.09.34.18
+gt.version=5.09.35.00
ae2.version=rv3-beta-22
applecore.version=1.7.10-1.2.1+107.59407
buildcraft.version=7.1.11
diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java
index 5d6de01493..64bda0f170 100644
--- a/src/main/java/gregtech/api/enums/ItemList.java
+++ b/src/main/java/gregtech/api/enums/ItemList.java
@@ -1571,6 +1571,8 @@ public enum ItemList implements IItemContainer {
FluidRegulator_ZPM,
FluidRegulator_UV,
FluidFilter,
+ ItemFilter_Export,
+ ItemFilter_Import,
CuringOven,
Machine_Multi_Assemblyline,
Machine_Multi_DieselEngine,
diff --git a/src/main/java/gregtech/api/enums/Materials.java b/src/main/java/gregtech/api/enums/Materials.java
index 1bb38f7621..905e08a434 100644
--- a/src/main/java/gregtech/api/enums/Materials.java
+++ b/src/main/java/gregtech/api/enums/Materials.java
@@ -508,15 +508,15 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
public static Materials EnrichedNaquadria = new MaterialBuilder(601, TextureSet.SET_FLUID , "Enriched Naquadria").setName("EnrichedNaquadria").addCell().addFluid().setRGB(52, 52, 52).setColor(Dyes.dyeBlack).constructMaterial();
public static Materials ReinforceGlass = new MaterialBuilder(602, TextureSet.SET_FLUID , "Molten Reinforced Glass").setName("ReinforcedGlass").addCell().addFluid().setRGB(192, 245, 254).setColor(Dyes.dyeWhite).setLiquidTemperature(2000).constructMaterial();
- public static Materials BioMediumRaw = new MaterialBuilder(603, TextureSet.SET_FLUID , "Raw Bio Medium").setName("BioMediumRaw").addCell().addFluid().setRGB(97, 147, 46).setColor(Dyes.dyeLime).constructMaterial();
- public static Materials BioMediumSterilized = new MaterialBuilder(604, TextureSet.SET_FLUID , "Sterilized Bio Medium").setName("BiohMediumSterilized").addCell().addFluid().setRGB(162, 253, 53).setColor(Dyes.dyeLime).constructMaterial();
+ public static Materials BioMediumRaw = new MaterialBuilder(603, TextureSet.SET_FLUID , "Raw Bio Catalyst Medium").setName("BioMediumRaw").addCell().addFluid().setRGB(97, 147, 46).setColor(Dyes.dyeLime).constructMaterial();
+ public static Materials BioMediumSterilized = new MaterialBuilder(604, TextureSet.SET_FLUID , "Sterilized Bio Catalyst Medium").setName("BiohMediumSterilized").addCell().addFluid().setRGB(162, 253, 53).setColor(Dyes.dyeLime).constructMaterial();
public static Materials Chlorobenzene = new MaterialBuilder(605, TextureSet.SET_FLUID , "Chlorobenzene").addCell().addFluid().setRGB(0, 50, 65).setColor(Dyes.dyeGray).setMaterialList(new MaterialStack(Carbon, 6), new MaterialStack(Hydrogen, 5), new MaterialStack(Chlorine, 1)).addElectrolyzerRecipe().constructMaterial();
public static Materials DilutedHydrochloricAcid = new MaterialBuilder(606, TextureSet.SET_FLUID , "Diluted Hydrochloric Acid").setName("DilutedHydrochloricAcid_GT5U").addCell().addFluid().setRGB(153, 167, 163).setColor(Dyes.dyeLightGray).setMaterialList(new MaterialStack(Hydrogen, 1), new MaterialStack(Chlorine, 1)).constructMaterial();
public static Materials Pyrochlore = new MaterialBuilder(607, TextureSet.SET_METALLIC , "Pyrochlore").addDustItems().addOreItems().setRGB(43, 17, 0).setColor(Dyes.dyeBlack).setMaterialList(new MaterialStack(Calcium, 2), new MaterialStack(Niobium, 2), new MaterialStack(Oxygen, 7)).addElectrolyzerRecipe().constructMaterial();
- public static Materials GrowthMediumRaw = new MaterialBuilder(608, TextureSet.SET_FLUID , "Raw Growth Medium").setName("GrowthMediumRaw").addCell().addFluid().setRGB(211, 141, 95).setColor(Dyes.dyeOrange).constructMaterial();
- public static Materials GrowthMediumSterilized = new MaterialBuilder(609, TextureSet.SET_FLUID , "Sterilized Growth Medium").setName("GrowthMediumSterilized").addCell().addFluid().setRGB(222, 170, 135).setColor(Dyes.dyeOrange).constructMaterial();
+ public static Materials GrowthMediumRaw = new MaterialBuilder(608, TextureSet.SET_FLUID , "Raw Growth Catalyst Medium").setName("GrowthMediumRaw").addCell().addFluid().setRGB(211, 141, 95).setColor(Dyes.dyeOrange).constructMaterial();
+ public static Materials GrowthMediumSterilized = new MaterialBuilder(609, TextureSet.SET_FLUID , "Growth Catalyst Medium").setName("GrowthMediumSterilized").addCell().addFluid().setRGB(222, 170, 135).setColor(Dyes.dyeOrange).constructMaterial();
public static Materials FerriteMixture = new MaterialBuilder(612, TextureSet.SET_METALLIC , "Ferrite Mixture").addDustItems().setRGB(180, 180, 180).setColor(Dyes.dyeGray).setMaterialList(new MaterialStack(Nickel, 1), new MaterialStack(Zinc, 1), new MaterialStack(Iron, 4)).constructMaterial();
public static Materials NickelZincFerrite = new MaterialBuilder(613, TextureSet.SET_ROUGH , "Nickel-Zinc Ferrite").addDustItems().addMetalItems().addToolHeadItems().addGearItems().setToolSpeed(3.0f).setDurability(32).setRGB(60, 60, 60).setColor(Dyes.dyeBlack).setBlastFurnaceRequired(true).setBlastFurnaceTemp(1500).setMaterialList(new MaterialStack(Nickel, 1), new MaterialStack(Zinc, 1), new MaterialStack(Iron, 4), new MaterialStack(Oxygen, 8)).constructMaterial();
diff --git a/src/main/java/gregtech/api/graphs/GenerateNodeMap.java b/src/main/java/gregtech/api/graphs/GenerateNodeMap.java
index 60a820cdd1..98c8215fc7 100644
--- a/src/main/java/gregtech/api/graphs/GenerateNodeMap.java
+++ b/src/main/java/gregtech/api/graphs/GenerateNodeMap.java
@@ -13,7 +13,7 @@ import static gregtech.api.util.GT_Utility.getOppositeSide;
//generates the node map
abstract public class GenerateNodeMap {
- //clearign the node map to make sure it is gone on reset
+ //clearing the node map to make sure it is gone on reset
public static void clearNodeMap(Node aNode,int aReturnNodeValue) {
if (aNode.mTileEntity instanceof BaseMetaPipeEntity) {
BaseMetaPipeEntity tPipe = (BaseMetaPipeEntity) aNode.mTileEntity;
@@ -25,21 +25,21 @@ abstract public class GenerateNodeMap {
}
}
for (int i = 0;i<6;i++) {
- NodePath tPath = aNode.mNodePats[i];
+ NodePath tPath = aNode.mNodePaths[i];
if (tPath != null) {
tPath.clearPath();
- aNode.mNodePats[i] = null;
+ aNode.mNodePaths[i] = null;
}
- Node tNextNode = aNode.mNeigbourNodes[i];
+ Node tNextNode = aNode.mNeighbourNodes[i];
if (tNextNode == null) continue;
if (tNextNode.mNodeValue != aReturnNodeValue)
clearNodeMap(tNextNode,aNode.mNodeValue);
- aNode.mNeigbourNodes[i] = null;
+ aNode.mNeighbourNodes[i] = null;
}
}
//gets the next node
- protected void generateNextNode(BaseMetaPipeEntity aPipe, Node aPipeNode, byte aInvalidSide, int aNextNodeVale,
+ protected void generateNextNode(BaseMetaPipeEntity aPipe, Node aPipeNode, byte aInvalidSide, int aNextNodeValue,
ArrayList<ConsumerNode> tConsumers, HashSet<Node> tNodeMap) {
MetaPipeEntity tMetaPipe = (MetaPipeEntity) aPipe.getMetaTileEntity();
for (byte i = 0;i<6;i++) {
@@ -51,20 +51,20 @@ abstract public class GenerateNodeMap {
ArrayList<MetaPipeEntity> tNewPipes = new ArrayList<MetaPipeEntity>();
Pair nextTileEntity = getNextValidTileEntity(tNextTileEntity,tNewPipes,i,tNodeMap);
if (nextTileEntity != null) {
- Node tNextNode = generateNode(nextTileEntity.mTileEntity,aPipeNode,aNextNodeVale+1,tNewPipes,
+ Node tNextNode = generateNode(nextTileEntity.mTileEntity,aPipeNode,aNextNodeValue+1,tNewPipes,
nextTileEntity.mSide,tConsumers,tNodeMap);
if (tNextNode != null) {
- aNextNodeVale = tNextNode.mHigestNodeValue;
- aPipeNode.mHigestNodeValue = tNextNode.mHigestNodeValue;
- aPipeNode.mNeigbourNodes[i] = tNextNode;
- aPipeNode.mNodePats[i] = aPipeNode.mReturnPath;
+ aNextNodeValue = tNextNode.mHighestNodeValue;
+ aPipeNode.mHighestNodeValue = tNextNode.mHighestNodeValue;
+ aPipeNode.mNeighbourNodes[i] = tNextNode;
+ aPipeNode.mNodePaths[i] = aPipeNode.mReturnPath;
}
}
}
}
- //on a valid tilentity create a new node
- protected Node generateNode(TileEntity aTileEntity, Node aPreviousNode, int aNextNodeVale, ArrayList<MetaPipeEntity> aPipes,
+ //on a valid tile entity create a new node
+ protected Node generateNode(TileEntity aTileEntity, Node aPreviousNode, int aNextNodeValue, ArrayList<MetaPipeEntity> aPipes,
int aSide, ArrayList<ConsumerNode> aConsumers, HashSet<Node> aNodeMap) {
if (aTileEntity.isInvalid()) return null;
byte tSideOp = getOppositeSide(aSide);
@@ -73,36 +73,36 @@ abstract public class GenerateNodeMap {
if (isPipe(aTileEntity)){
BaseMetaPipeEntity tPipe = (BaseMetaPipeEntity) aTileEntity;
MetaPipeEntity tMetaPipe = (MetaPipeEntity) tPipe.getMetaTileEntity();
- int tConections = getNumberOfConections(tMetaPipe);
+ int tConnections = getNumberOfConnections(tMetaPipe);
Node tPipeNode;
- if (tConections == 1) {
- tPipeNode = getEmptyNode(aNextNodeVale,tSideOp,aTileEntity,aConsumers);
+ if (tConnections == 1) {
+ tPipeNode = getEmptyNode(aNextNodeValue,tSideOp,aTileEntity,aConsumers);
if (tPipeNode == null) return null;
} else {
- tPipeNode = getPipeNode(aNextNodeVale,tSideOp,aTileEntity,aConsumers);
+ tPipeNode = getPipeNode(aNextNodeValue,tSideOp,aTileEntity,aConsumers);
}
tPipe.setNode(tPipeNode);
aNodeMap.add(tPipeNode);
tPipeNode.mSelfPath = getNewPath(new MetaPipeEntity[]{tMetaPipe});
tThisNode = tPipeNode;
if (tInvalidSide>-1) {
- tPipeNode.mNeigbourNodes[tInvalidSide] = aPreviousNode;
- tPipeNode.mNodePats[tInvalidSide] = getNewPath(aPipes.toArray(new MetaPipeEntity[0]));
- aPreviousNode.mReturnPath = tPipeNode.mNodePats[tInvalidSide];
+ tPipeNode.mNeighbourNodes[tInvalidSide] = aPreviousNode;
+ tPipeNode.mNodePaths[tInvalidSide] = getNewPath(aPipes.toArray(new MetaPipeEntity[0]));
+ aPreviousNode.mReturnPath = tPipeNode.mNodePaths[tInvalidSide];
}
- if (tConections > 1)
- generateNextNode(tPipe,tPipeNode,tInvalidSide,aNextNodeVale,aConsumers,aNodeMap);
- } else if (addConsumer(aTileEntity,tSideOp,aNextNodeVale,aConsumers)) {
+ if (tConnections > 1)
+ generateNextNode(tPipe,tPipeNode,tInvalidSide,aNextNodeValue,aConsumers,aNodeMap);
+ } else if (addConsumer(aTileEntity,tSideOp,aNextNodeValue,aConsumers)) {
ConsumerNode tConsumeNode = aConsumers.get(aConsumers.size()-1);
- tConsumeNode.mNeigbourNodes[tSideOp] = aPreviousNode;
- tConsumeNode.mNodePats[tSideOp] = getNewPath(aPipes.toArray(new MetaPipeEntity[0]));
- aPreviousNode.mReturnPath = tConsumeNode.mNodePats[tSideOp];
+ tConsumeNode.mNeighbourNodes[tSideOp] = aPreviousNode;
+ tConsumeNode.mNodePaths[tSideOp] = getNewPath(aPipes.toArray(new MetaPipeEntity[0]));
+ aPreviousNode.mReturnPath = tConsumeNode.mNodePaths[tSideOp];
tThisNode = tConsumeNode;
}
return tThisNode;
}
- //go over the pipes until we see a valid tileentity that needs a node
+ //go over the pipes until we see a valid tile entity that needs a node
protected Pair getNextValidTileEntity(TileEntity aTileEntity, ArrayList<MetaPipeEntity> aPipes, byte aSide, HashSet<Node> aNodeMap) {
if (isPipe(aTileEntity)) {
BaseMetaPipeEntity tPipe = (BaseMetaPipeEntity) aTileEntity;
@@ -112,8 +112,8 @@ abstract public class GenerateNodeMap {
if (aNodeMap.contains(tNode))
return null;
}
- int tConections = getNumberOfConections(tMetaPipe);
- if (tConections == 2) {
+ int tConnections = getNumberOfConnections(tMetaPipe);
+ if (tConnections == 2) {
byte tSideOp = getOppositeSide(aSide);
for (byte i = 0;i<6;i++) {
if (i == tSideOp || !(tMetaPipe.isConnectedAtSide(i))) continue;
@@ -144,16 +144,16 @@ abstract public class GenerateNodeMap {
}
}
- //if check if the tileentity is the correct pipe
+ //if check if the tile entity is the correct pipe
protected boolean isPipe(TileEntity aTileEntity) {
return aTileEntity instanceof BaseMetaPipeEntity;
}
- //checks if the tileentity is a consumer and add to the list
+ //checks if the tile entity is a consumer and add to the list
abstract protected boolean addConsumer(TileEntity aTileEntity, byte aSide, int aNodeValue, ArrayList<ConsumerNode> aConsumers);
//get correct pathClass that you need for your node network
protected abstract NodePath getNewPath(MetaPipeEntity[] aPipes);
- //used for if you need to use death ends for somthing
+ //used for if you need to use death ends for something
//can be null
protected Node getEmptyNode(int aNodeValue, byte aSide, TileEntity aTileEntity, ArrayList<ConsumerNode> aConsumers) {
return null;
@@ -163,8 +163,8 @@ abstract public class GenerateNodeMap {
return new Node(aNodeValue,aTileEntity,aConsumers);
}
- //get how many conections the pipe have
- private static int getNumberOfConections(MetaPipeEntity aPipe) {
+ //get how many connections the pipe have
+ private static int getNumberOfConnections(MetaPipeEntity aPipe) {
int tCons = 0;
for (int i = 0; i < 6; i++) {
if (aPipe.isConnectedAtSide(i)) tCons++;
diff --git a/src/main/java/gregtech/api/graphs/GenerateNodeMapPower.java b/src/main/java/gregtech/api/graphs/GenerateNodeMapPower.java
index ec5c984bc0..76a24e8802 100644
--- a/src/main/java/gregtech/api/graphs/GenerateNodeMapPower.java
+++ b/src/main/java/gregtech/api/graphs/GenerateNodeMapPower.java
@@ -17,7 +17,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import java.util.ArrayList;
import java.util.HashSet;
-//node map generator for power distrubution
+//node map generator for power distribution
public class GenerateNodeMapPower extends GenerateNodeMap {
public GenerateNodeMapPower(BaseMetaPipeEntity aTileEntity) {
generateNode(aTileEntity,null,1,null,
diff --git a/src/main/java/gregtech/api/graphs/Node.java b/src/main/java/gregtech/api/graphs/Node.java
index fed599881c..258915e473 100644
--- a/src/main/java/gregtech/api/graphs/Node.java
+++ b/src/main/java/gregtech/api/graphs/Node.java
@@ -12,8 +12,8 @@ public class Node {
this.mNodeValue = aNodeValue;
this.mTileEntity = aTileEntity;
this.mConsumers = aConsumers;
- mHigestNodeValue = aNodeValue;
- //you dont want to generate map multiple times in the same tick
+ mHighestNodeValue = aNodeValue;
+ //you don't want to generate map multiple times in the same tick
mCreationTime = MinecraftServer.getServer().getTickCounter();
}
@@ -23,8 +23,8 @@ public class Node {
public ArrayList<ConsumerNode> mConsumers;
public int mNodeValue;
public final TileEntity mTileEntity;
- public Node[] mNeigbourNodes = new Node[6];
- public NodePath[] mNodePats = new NodePath[6];
+ public Node[] mNeighbourNodes = new Node[6];
+ public NodePath[] mNodePaths = new NodePath[6];
public NodePath mReturnPath;
- public int mHigestNodeValue;
+ public int mHighestNodeValue;
}
diff --git a/src/main/java/gregtech/api/graphs/NodeList.java b/src/main/java/gregtech/api/graphs/NodeList.java
index 702e8446c0..36ebbc4f6f 100644
--- a/src/main/java/gregtech/api/graphs/NodeList.java
+++ b/src/main/java/gregtech/api/graphs/NodeList.java
@@ -1,23 +1,23 @@
package gregtech.api.graphs;
-//keep track on wich node is being looked for accrouse the recursif functions
+//keep track on which node is being looked for across the recursive functions
public class NodeList {
Node[] mNodes;
- int mConter = 0;
+ int mCounter = 0;
public NodeList(Node[] mNodes) {
this.mNodes = mNodes;
}
Node getNextNode() {
- if (++mConter < mNodes.length)
- return mNodes[mConter];
+ if (++mCounter < mNodes.length)
+ return mNodes[mCounter];
else
return null;
}
Node getNode() {
- if (mConter < mNodes.length)
- return mNodes[mConter];
+ if (mCounter < mNodes.length)
+ return mNodes[mCounter];
else
return null;
}
diff --git a/src/main/java/gregtech/api/graphs/PowerNodes.java b/src/main/java/gregtech/api/graphs/PowerNodes.java
index 39844bdd17..411d690cca 100644
--- a/src/main/java/gregtech/api/graphs/PowerNodes.java
+++ b/src/main/java/gregtech/api/graphs/PowerNodes.java
@@ -12,9 +12,9 @@ import gregtech.api.graphs.paths.PowerNodePath;
* this network only includes nodes that have a higher value then it self so it does not know the highest known value that
* the return node knows
*
- * with these rules we can know what a node contains the target node in its network as long the target node has a value
- * more or equal then the node we are looking but is less or equal then the highest value that node knows
- * this way we don't have to go over the entire network too look for it
+ * with these rules we can know for the target node to be in the network of a node, the target node must have a value no
+ * less than the node we are looking and no greater than the highest value that node knows
+ * this way we don't have to go over the entire network to look for it
*
* we also hold a list of all consumers so we can check before looking if that consumer actually needs power
* and only look for nodes that actually need power
@@ -27,11 +27,11 @@ public class PowerNodes {
ConsumerNode tConsumer =(ConsumerNode) aConsumers.getNode();
int tLoopProtection = 0;
while (tConsumer != null) {
- int tTagetNodeValue = tConsumer.mNodeValue;
+ int tTargetNodeValue = tConsumer.mNodeValue;
//if the target node has a value less then the current node
- if (tTagetNodeValue < aCurrentNode.mNodeValue || tTagetNodeValue > aCurrentNode.mHigestNodeValue) {
+ if (tTargetNodeValue < aCurrentNode.mNodeValue || tTargetNodeValue > aCurrentNode.mHighestNodeValue) {
for (int j = 0;j<6;j++) {
- Node tNextNode = aCurrentNode.mNeigbourNodes[j];
+ Node tNextNode = aCurrentNode.mNeighbourNodes[j];
if (tNextNode != null && tNextNode.mNodeValue < aCurrentNode.mNodeValue) {
if (tNextNode.mNodeValue == tConsumer.mNodeValue) {
tAmpsUsed += processNodeInject(aCurrentNode,tConsumer,j,aMaxAmps-tAmpsUsed,aVoltage,false);
@@ -46,16 +46,16 @@ public class PowerNodes {
}
}
} else {
- //if the target node has a node value greater then current node vale
+ //if the target node has a node value greater then current node value
for (int side = 5;side>-1;side--) {
- Node tNextNode = aCurrentNode.mNeigbourNodes[side];
+ Node tNextNode = aCurrentNode.mNeighbourNodes[side];
if (tNextNode == null) continue;
- if (tNextNode.mNodeValue > aCurrentNode.mNodeValue && tNextNode.mNodeValue < tTagetNodeValue) {
+ if (tNextNode.mNodeValue > aCurrentNode.mNodeValue && tNextNode.mNodeValue < tTargetNodeValue) {
if (tNextNode == aPreviousNode) return tAmpsUsed;
tAmpsUsed += processNextNodeAbove(aCurrentNode,tNextNode,aConsumers,side,aMaxAmps-tAmpsUsed,aVoltage);
tConsumer =(ConsumerNode) aConsumers.getNode();
break;
- } else if (tNextNode.mNodeValue == tTagetNodeValue) {
+ } else if (tNextNode.mNodeValue == tTargetNodeValue) {
tAmpsUsed += processNodeInject(aCurrentNode,tConsumer,side,aMaxAmps-tAmpsUsed,aVoltage,true);
tConsumer =(ConsumerNode) aConsumers.getNextNode();
break;
@@ -66,32 +66,32 @@ public class PowerNodes {
return tAmpsUsed;
}
if (tLoopProtection++ > 20) {
- throw new NullPointerException("infinit loop in powering nodes ");
+ throw new NullPointerException("infinite loop in powering nodes ");
}
}
return tAmpsUsed;
}
- //checking if target node is next to it ot has a higer value then current node value
- //thse functions are difrent to eayer go down or up the stack
+ //checking if target node is next to it or has a higher value then current node value
+ //these functions are different to either go down or up the stack
protected static int powerNodeAbove(Node aCurrentNode, Node aPreviousNode, NodeList aConsumers, int aVoltage, int aMaxAmps) {
int tAmpsUsed = 0;
int tLoopProtection = 0;
ConsumerNode tConsumer =(ConsumerNode) aConsumers.getNode();
while (tConsumer != null) {
- int tTagetNodeValue = tConsumer.mNodeValue;
- if (tTagetNodeValue > aCurrentNode.mHigestNodeValue || tTagetNodeValue < aCurrentNode.mNodeValue) {
+ int tTargetNodeValue = tConsumer.mNodeValue;
+ if (tTargetNodeValue > aCurrentNode.mHighestNodeValue || tTargetNodeValue < aCurrentNode.mNodeValue) {
return tAmpsUsed;
} else {
for (int side = 5;side>-1;side--) {
- Node tNextNode = aCurrentNode.mNeigbourNodes[side];
+ Node tNextNode = aCurrentNode.mNeighbourNodes[side];
if (tNextNode == null) continue;
- if (tNextNode.mNodeValue > aCurrentNode.mNodeValue && tNextNode.mNodeValue < tTagetNodeValue) {
+ if (tNextNode.mNodeValue > aCurrentNode.mNodeValue && tNextNode.mNodeValue < tTargetNodeValue) {
if (tNextNode == aPreviousNode) return tAmpsUsed;
tAmpsUsed += processNextNodeAbove(aCurrentNode,tNextNode,aConsumers,side,aMaxAmps-tAmpsUsed,aVoltage);
tConsumer =(ConsumerNode) aConsumers.getNode();
break;
- } else if (tNextNode.mNodeValue == tTagetNodeValue) {
+ } else if (tNextNode.mNodeValue == tTargetNodeValue) {
tAmpsUsed += processNodeInject(aCurrentNode,tConsumer,side,aMaxAmps-tAmpsUsed,aVoltage,true);
tConsumer =(ConsumerNode) aConsumers.getNextNode();
break;
@@ -102,14 +102,14 @@ public class PowerNodes {
return tAmpsUsed;
}
if (tLoopProtection++ > 20) {
- throw new NullPointerException("infinit loop in powering nodes ");
+ throw new NullPointerException("infinite loop in powering nodes ");
}
}
return tAmpsUsed;
}
protected static int processNextNode(Node aCurrentNode, Node aNextNode, NodeList aConsumers, int aSide, int aMaxAmps, int aVoltage) {
- PowerNodePath tPath = (PowerNodePath)aCurrentNode.mNodePats[aSide];
+ PowerNodePath tPath = (PowerNodePath)aCurrentNode.mNodePaths[aSide];
PowerNodePath tSelfPath = (PowerNodePath) aCurrentNode.mSelfPath;
int tVoltLoss = 0;
if (tSelfPath != null) {
@@ -126,7 +126,7 @@ public class PowerNodes {
}
protected static int processNextNodeAbove(Node aCurrentNode, Node aNextNode, NodeList aConsumers, int aSide, int aMaxAmps, int aVoltage) {
- PowerNodePath tPath = (PowerNodePath)aCurrentNode.mNodePats[aSide];
+ PowerNodePath tPath = (PowerNodePath)aCurrentNode.mNodePaths[aSide];
PowerNodePath tSelfPath = (PowerNodePath) aCurrentNode.mSelfPath;
int tVoltLoss = 0;
if (tSelfPath != null) {
@@ -144,7 +144,7 @@ public class PowerNodes {
protected static int processNodeInject(Node aCurrentNode, ConsumerNode aConsumer, int aSide,int aMaxAmps, int aVoltage,
boolean isUp) {
- PowerNodePath tPath = (PowerNodePath)aCurrentNode.mNodePats[aSide];
+ PowerNodePath tPath = (PowerNodePath)aCurrentNode.mNodePaths[aSide];
PowerNodePath tSelfPath = (PowerNodePath) aCurrentNode.mSelfPath;
int tVoltLoss = 0;
if (tSelfPath != null) {
diff --git a/src/main/java/gregtech/api/graphs/consumers/ConsumerNode.java b/src/main/java/gregtech/api/graphs/consumers/ConsumerNode.java
index d2be4d94f1..87376008c4 100644
--- a/src/main/java/gregtech/api/graphs/consumers/ConsumerNode.java
+++ b/src/main/java/gregtech/api/graphs/consumers/ConsumerNode.java
@@ -5,7 +5,7 @@ import net.minecraft.tileentity.TileEntity;
import java.util.ArrayList;
-//node atached to a tileentity that can consume stuff from the network
+//node attached to a tile entity that can consume stuff from the network
public class ConsumerNode extends Node {
public byte mSide;
public ConsumerNode(int aNodeValue, TileEntity aTileEntity, byte aSide, ArrayList<ConsumerNode> aConsumers) {
@@ -17,7 +17,7 @@ public class ConsumerNode extends Node {
return !mTileEntity.isInvalid();
}
- public int injectEnergy(int aVoltage, int aMaxApms) {
+ public int injectEnergy(int aVoltage, int aMaxAmps) {
return 0;
}
}
diff --git a/src/main/java/gregtech/api/graphs/consumers/EmptyPowerConsumer.java b/src/main/java/gregtech/api/graphs/consumers/EmptyPowerConsumer.java
index 47e3bca144..da3d0a757b 100644
--- a/src/main/java/gregtech/api/graphs/consumers/EmptyPowerConsumer.java
+++ b/src/main/java/gregtech/api/graphs/consumers/EmptyPowerConsumer.java
@@ -6,7 +6,7 @@ import net.minecraft.tileentity.TileEntity;
import java.util.ArrayList;
-//this is here to aply voltage to death ends
+//this is here to apply voltage to death ends
public class EmptyPowerConsumer extends ConsumerNode{
public EmptyPowerConsumer(int aNodeValue, TileEntity aTileEntity, byte aSide, ArrayList<ConsumerNode> aConsumers) {
super(aNodeValue, aTileEntity, aSide, aConsumers);
@@ -18,7 +18,7 @@ public class EmptyPowerConsumer extends ConsumerNode{
}
@Override
- public int injectEnergy(int aVoltage, int aMaxApms) {
+ public int injectEnergy(int aVoltage, int aMaxAmps) {
BaseMetaPipeEntity tPipe = (BaseMetaPipeEntity) mTileEntity;
PowerNodePath tPath =(PowerNodePath) tPipe.getNodePath();
tPath.applyVoltage(aVoltage,true);
diff --git a/src/main/java/gregtech/api/graphs/consumers/NodeEnergyReceiver.java b/src/main/java/gregtech/api/graphs/consumers/NodeEnergyReceiver.java
index 099c7617f0..a24c4acbcd 100644
--- a/src/main/java/gregtech/api/graphs/consumers/NodeEnergyReceiver.java
+++ b/src/main/java/gregtech/api/graphs/consumers/NodeEnergyReceiver.java
@@ -23,7 +23,7 @@ public class NodeEnergyReceiver extends ConsumerNode {
}
@Override
- public int injectEnergy(int aVoltage, int aMaxApms) {
+ public int injectEnergy(int aVoltage, int aMaxAmps) {
ForgeDirection tDirection = ForgeDirection.getOrientation(mSide);
int rfOut = GT_Utility.safeInt(aVoltage * GregTech_API.mEUtoRF / 100);
int ampsUsed = 0;
@@ -43,7 +43,7 @@ public class NodeEnergyReceiver extends ConsumerNode {
return 0;
}
- //copyed from IEnergyConnected
+ //copied from IEnergyConnected
private void explode(int aRfOut) {
if (aRfOut > 32L * GregTech_API.mEUtoRF / 100L) {
int aExplosionPower = aRfOut;
diff --git a/src/main/java/gregtech/api/graphs/consumers/NodeEnergySink.java b/src/main/java/gregtech/api/graphs/consumers/NodeEnergySink.java
index db9f383492..3f93c62010 100644
--- a/src/main/java/gregtech/api/graphs/consumers/NodeEnergySink.java
+++ b/src/main/java/gregtech/api/graphs/consumers/NodeEnergySink.java
@@ -18,9 +18,9 @@ public class NodeEnergySink extends ConsumerNode {
}
@Override
- public int injectEnergy(int aVoltage, int aMaxApms) {
+ public int injectEnergy(int aVoltage, int aMaxAmps) {
int tUsedAmps = 0;
- while (aMaxApms > tUsedAmps && ((IEnergySink) mTileEntity).getDemandedEnergy() > 0 &&
+ while (aMaxAmps > tUsedAmps && ((IEnergySink) mTileEntity).getDemandedEnergy() > 0 &&
((IEnergySink) mTileEntity).injectEnergy(ForgeDirection.getOrientation(mSide), aVoltage, aVoltage) < aVoltage)
tUsedAmps++;
return tUsedAmps;
diff --git a/src/main/java/gregtech/api/graphs/consumers/NodeGTBaseMetaTile.java b/src/main/java/gregtech/api/graphs/consumers/NodeGTBaseMetaTile.java
index dbcc3c3b62..5c54ee16f9 100644
--- a/src/main/java/gregtech/api/graphs/consumers/NodeGTBaseMetaTile.java
+++ b/src/main/java/gregtech/api/graphs/consumers/NodeGTBaseMetaTile.java
@@ -11,8 +11,8 @@ public class NodeGTBaseMetaTile extends ConsumerNode {
}
@Override
- public int injectEnergy(int aVoltage, int aMaxApms) {
- return (int)((IEnergyConnected) mTileEntity).injectEnergyUnits(mSide,aVoltage, aMaxApms);
+ public int injectEnergy(int aVoltage, int aMaxAmps) {
+ return (int)((IEnergyConnected) mTileEntity).injectEnergyUnits(mSide,aVoltage, aMaxAmps);
}
@Override
diff --git a/src/main/java/gregtech/api/graphs/paths/PowerNodePath.java b/src/main/java/gregtech/api/graphs/paths/PowerNodePath.java
index 1120fe84e4..a91f9b10a8 100644
--- a/src/main/java/gregtech/api/graphs/paths/PowerNodePath.java
+++ b/src/main/java/gregtech/api/graphs/paths/PowerNodePath.java
@@ -6,7 +6,7 @@ import gregtech.api.metatileentity.implementations.GT_MetaPipeEntity_Cable;
import net.minecraft.server.MinecraftServer;
//path for cables
-//al calculations like ams and voltage hapens here
+//all calculations like amp and voltage happens here
public class PowerNodePath extends NodePath {
int mMaxAmps;
int mAmps = 0;
@@ -60,7 +60,7 @@ public class PowerNodePath extends NodePath {
}
//if no amps pass trough for more then 0.5 second reduce them to minimize wrong results
- //but still allow the player to see if activity is hapening
+ //but still allow the player to see if activity is happening
public int getAmps() {
int tTime = MinecraftServer.getServer().getTickCounter() - 10;
if (mTick < tTime) {
diff --git a/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java b/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java
index a27ee175ef..bd28bb11e9 100644
--- a/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java
+++ b/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java
@@ -1,6 +1,7 @@
package gregtech.api.gui;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine_Bronze;
import net.minecraft.entity.player.InventoryPlayer;
import java.util.ArrayList;
@@ -23,6 +24,8 @@ public class GT_GUIContainer_BasicMachine extends GT_GUIContainerMetaTile_Machin
public final byte
mProgressBarDirection,
mProgressBarAmount;
+ public final boolean
+ mRenderAutoOutputSlots;
public GT_GUIContainer_BasicMachine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, String aName, String aTextureFile, String aNEI) {
this(aInventoryPlayer, aTileEntity, aName, aTextureFile, aNEI, (byte) 0, (byte) 1);
@@ -34,12 +37,15 @@ public class GT_GUIContainer_BasicMachine extends GT_GUIContainerMetaTile_Machin
mProgressBarAmount = (byte) Math.max(1, aProgressBarAmount);
mName = aName;
mNEI = aNEI;
+ mRenderAutoOutputSlots = !(aTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_BasicMachine_Bronze);
}
@Override
public void drawScreen(int par1, int par2, float par3) {
super.drawScreen(par1, par2, par3);
- drawTooltip(par1, par2);
+ if (mRenderAutoOutputSlots){
+ drawTooltip(par1, par2);
+ }
}
@Override
@@ -72,10 +78,12 @@ public class GT_GUIContainer_BasicMachine extends GT_GUIContainerMetaTile_Machin
int y = (height - ySize) / 2;
drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
if (mContainer != null) {
- if (((GT_Container_BasicMachine) mContainer).mFluidTransfer)
- drawTexturedModalRect(x + 7, y + 62, 176, 18, 18, 18);
- if (((GT_Container_BasicMachine) mContainer).mItemTransfer)
- drawTexturedModalRect(x + 25, y + 62, 176, 36, 18, 18);
+ if (mRenderAutoOutputSlots){
+ if (((GT_Container_BasicMachine) mContainer).mFluidTransfer)
+ drawTexturedModalRect(x + 7, y + 62, 176, 18, 18, 18);
+ if (((GT_Container_BasicMachine) mContainer).mItemTransfer)
+ drawTexturedModalRect(x + 25, y + 62, 176, 36, 18, 18);
+ }
if (((GT_Container_BasicMachine) mContainer).mStuttering)
drawTexturedModalRect(x + 79, y + 44, 176, 54, 18, 18);
diff --git a/src/main/java/gregtech/api/gui/GT_GUICover.java b/src/main/java/gregtech/api/gui/GT_GUICover.java
index 1e51cf0758..2e9d082ebf 100644
--- a/src/main/java/gregtech/api/gui/GT_GUICover.java
+++ b/src/main/java/gregtech/api/gui/GT_GUICover.java
@@ -252,10 +252,17 @@ public abstract class GT_GUICover extends GuiScreen implements GT_IToolTipRender
textBox.setFocused(textBox.equals(boxToFocus) && textBox.isEnabled());
}
}
+
+ /**
+ * Given textbox's value might have changed.
+ */
public void applyTextBox(GT_GuiIntegerTextBox box) {
}
+ /**
+ * Reset the given textbox to the last valid value, <b>NOT</b> 0.
+ */
public void resetTextBox(GT_GuiIntegerTextBox box) {
}
diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java
index 39cbee3aa9..b51377550b 100644
--- a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java
@@ -283,14 +283,14 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE
if (!hasValidMetaTileEntity()) return;
}
}
- byte oldConections = mConnections;
- // Mask-out Connection direction bits to keep only Foam related connections
+ byte oldConnections = mConnections;
+ // Mask-out connection direction bits to keep only Foam related connections
mConnections = (byte) (mMetaTileEntity.mConnections | (mConnections & ~IConnectable.CONNECTED_ALL));
// If foam not hardened, tries roll chance to harden
if ((mConnections & IConnectable.HAS_FOAM) == IConnectable.HAS_FRESHFOAM && getRandomNumber(1000) == 0) {
mConnections = (byte) ((mConnections & ~IConnectable.HAS_FRESHFOAM) | IConnectable.HAS_HARDENEDFOAM);
}
- if (mTickTimer > 12 && oldConections != mConnections)
+ if (mTickTimer > 12 && oldConnections != mConnections)
GregTech_API.causeCableUpdate(worldObj,xCoord,yCoord,zCoord);
}
case 8:
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_OutputBus.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_OutputBus.java
index 7c8efb88e0..a46157fb36 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_OutputBus.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_OutputBus.java
@@ -126,7 +126,7 @@ public class GT_MetaTileEntity_Hatch_OutputBus extends GT_MetaTileEntity_Hatch {
* @return true if stack is fully accepted. false is stack is partially accepted or nothing is accepted
*/
public boolean storeAll(ItemStack aStack) {
- for (int i = 0, mInventoryLength = mInventory.length; i < mInventoryLength; i++) {
+ for (int i = 0, mInventoryLength = mInventory.length; i < mInventoryLength && aStack.stackSize > 0; i++) {
ItemStack tSlot = mInventory[i];
if (GT_Utility.isStackInvalid(tSlot)) {
if (aStack.stackSize <= getInventoryStackLimit()) {
@@ -170,7 +170,8 @@ public class GT_MetaTileEntity_Hatch_OutputBus extends GT_MetaTileEntity_Hatch {
IInventory tTileEntity =aBaseMetaTileEntity.getIInventoryAtSide(aBaseMetaTileEntity.getFrontFacing());
if(tTileEntity!=null){
moveMultipleItemStacks(aBaseMetaTileEntity,tTileEntity,aBaseMetaTileEntity.getFrontFacing(),aBaseMetaTileEntity.getBackFacing(),null,false,(byte)64,(byte)1,(byte)64,(byte)1,mInventory.length);
-
+ for (int i = 0; i < mInventory.length; i++)
+ if (mInventory[i] != null && mInventory[i].stackSize <= 0) mInventory[i] = null;
// GT_Utility.moveOneItemStack(aBaseMetaTileEntity, tTileEntity,
// aBaseMetaTileEntity.getFrontFacing(), aBaseMetaTileEntity.getBackFacing(),
// null, false, (byte) 64, (byte) 1, (byte)( 64 * aBaseMetaTileEntity.getSizeInventory()), (byte) 1);
diff --git a/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java b/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java
new file mode 100644
index 0000000000..3ce0b48821
--- /dev/null
+++ b/src/main/java/gregtech/api/net/GT_Packet_WirelessRedstoneCover.java
@@ -0,0 +1,95 @@
+package gregtech.api.net;
+
+import com.google.common.io.ByteArrayDataInput;
+import gregtech.api.interfaces.tileentity.ICoverable;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import io.netty.buffer.ByteBuf;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.network.INetHandler;
+import net.minecraft.network.NetHandlerPlayServer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraftforge.common.DimensionManager;
+
+public class GT_Packet_WirelessRedstoneCover extends GT_Packet_TileEntityCover {
+ private static final int PRIVATE_MASK = 0xFFFE0000;
+ private static final int PUBLIC_MASK = 0x0000FFFF;
+ private static final int CHECKBOX_MASK = 0x00010000;
+
+ private EntityPlayerMP mPlayer;
+ private int mPublicChannel;
+ private int mCheckBoxValue;
+
+ public GT_Packet_WirelessRedstoneCover() {
+ super();
+ }
+
+ public GT_Packet_WirelessRedstoneCover(int mX, short mY, int mZ, byte coverSide, int coverID, int dimID, int publicChannel, int checkBoxValue) {
+ super(mX, mY, mZ, coverSide, coverID, 0, dimID);
+ mPublicChannel = publicChannel;
+ mCheckBoxValue = checkBoxValue;
+ }
+
+ public GT_Packet_WirelessRedstoneCover(byte coverSide, int coverID, ICoverable tile, int publicChannel, int checkBoxValue) {
+ super(coverSide, coverID, 0, tile);
+ mPublicChannel = publicChannel;
+ mCheckBoxValue = checkBoxValue;
+ }
+
+ @Override
+ public byte getPacketID() {
+ return 10;
+ }
+
+ @Override
+ public void setINetHandler(INetHandler aHandler) {
+ if (aHandler instanceof NetHandlerPlayServer) {
+ mPlayer = ((NetHandlerPlayServer) aHandler).playerEntity;
+ }
+ }
+
+ @Override
+ public void encode(ByteBuf aOut) {
+ aOut.writeInt(mX);
+ aOut.writeShort(mY);
+ aOut.writeInt(mZ);
+
+ aOut.writeByte(side);
+ aOut.writeInt(coverID);
+
+ aOut.writeInt(dimID);
+
+ aOut.writeInt(mPublicChannel);
+ aOut.writeInt(mCheckBoxValue);
+ }
+
+ @Override
+ public GT_Packet_New decode(ByteArrayDataInput aData) {
+ return new GT_Packet_WirelessRedstoneCover(
+ aData.readInt(),
+ aData.readShort(),
+ aData.readInt(),
+
+ aData.readByte(),
+ aData.readInt(),
+
+ aData.readInt(),
+
+ aData.readInt(),
+ aData.readInt());
+ }
+
+ @Override
+ public void process(IBlockAccess aWorld) {
+ World world = DimensionManager.getWorld(dimID);
+ if (world != null && world.blockExists(mX, mY, mZ)) {
+ TileEntity tile = world.getTileEntity(mX, mY, mZ);
+ if (tile instanceof IGregTechTileEntity && !((IGregTechTileEntity) tile).isDead()) {
+ int tPrivateChannel = (mCheckBoxValue > 0) ? mPlayer.getUniqueID().hashCode() & PRIVATE_MASK : 0;
+ int tCoverData = tPrivateChannel | (mCheckBoxValue & CHECKBOX_MASK) | (mPublicChannel & PUBLIC_MASK);
+ ((IGregTechTileEntity) tile).receiveCoverData(side, coverID, tCoverData);
+ }
+ }
+ }
+}
diff --git a/src/main/java/gregtech/api/threads/GT_Runnable_Cable_Update.java b/src/main/java/gregtech/api/threads/GT_Runnable_Cable_Update.java
index 6bc42e9cc8..7093184533 100644
--- a/src/main/java/gregtech/api/threads/GT_Runnable_Cable_Update.java
+++ b/src/main/java/gregtech/api/threads/GT_Runnable_Cable_Update.java
@@ -21,18 +21,16 @@ public class GT_Runnable_Cable_Update extends GT_Runnable_MachineBlockUpdate {
}
}
-
@Override
public void run() {
try {
while (!tQueue.isEmpty()) {
final ChunkCoordinates aCoords = tQueue.poll();
final TileEntity tTileEntity;
- final boolean isMachineBlock;
GT_Proxy.TICK_LOCK.lock();
try {
- //we dont want to go over cables that are in unloaded chuncks
+ //we dont want to go over cables that are in unloaded chunks
//keeping the lock just to make sure no CME happens
if (world.blockExists(aCoords.posX, aCoords.posY, aCoords.posZ)) {
tTileEntity = world.getTileEntity(aCoords.posX, aCoords.posY, aCoords.posZ);
@@ -48,7 +46,7 @@ public class GT_Runnable_Cable_Update extends GT_Runnable_MachineBlockUpdate {
((IMachineBlockUpdateable) tTileEntity).onMachineBlockUpdate();
// Now see if we should add the nearby blocks to the queue:
- //only add blocks wich the cable is conected too
+ // only add blocks the cable is connected to
if (tTileEntity instanceof BaseMetaPipeEntity &&
((BaseMetaPipeEntity) tTileEntity).getMetaTileEntity() instanceof GT_MetaPipeEntity_Cable)
{
diff --git a/src/main/java/gregtech/api/util/GT_CoverBehavior.java b/src/main/java/gregtech/api/util/GT_CoverBehavior.java
index 08092cd31e..ebd3a98d55 100644
--- a/src/main/java/gregtech/api/util/GT_CoverBehavior.java
+++ b/src/main/java/gregtech/api/util/GT_CoverBehavior.java
@@ -57,6 +57,7 @@ public abstract class GT_CoverBehavior {
*/
public boolean onCoverShiftRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer) {
if(hasCoverGUI() && aPlayer instanceof EntityPlayerMP) {
+ lastPlayer = aPlayer;
GT_Values.NW.sendToPlayer(new GT_Packet_TileEntityCoverGUI(aSide, aCoverID, aCoverVariable, aTileEntity, (EntityPlayerMP) aPlayer), (EntityPlayerMP) aPlayer);
return true;
}
diff --git a/src/main/java/gregtech/api/util/GT_OreDictUnificator.java b/src/main/java/gregtech/api/util/GT_OreDictUnificator.java
index 4a5ca9070b..98809bbf45 100644
--- a/src/main/java/gregtech/api/util/GT_OreDictUnificator.java
+++ b/src/main/java/gregtech/api/util/GT_OreDictUnificator.java
@@ -448,7 +448,6 @@ public class GT_OreDictUnificator {
public static ItemStack getIngotOrDust(MaterialStack aMaterial) {
ItemStack rStack = getIngot(aMaterial);
- if(aMaterial!=null&&aMaterial.mMaterial!=null&&(aMaterial.mMaterial==Materials.Naquadah||aMaterial.mMaterial==Materials.NaquadahEnriched))rStack = getDust(aMaterial);
if (rStack == null) rStack = getDust(aMaterial);
return rStack;
}
diff --git a/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java b/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java
index cbaea6af3a..0868ff41c8 100644
--- a/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java
+++ b/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java
@@ -260,14 +260,15 @@ public class GT_RecipeRegistrator {
long tAmount = 0;
for (MaterialStack tMaterial : aData.getAllMaterialStacks())
tAmount += tMaterial.mAmount * tMaterial.mMaterial.getMass();
- boolean tHide = (aData.mMaterial.mMaterial != Materials.Iron)&&(GT_Mod.gregtechproxy.mHideRecyclingRecipes);
+ boolean tHide = (aData.mMaterial.mMaterial != Materials.Iron) && (GT_Mod.gregtechproxy.mHideRecyclingRecipes);
RA.addPulveriserRecipe(aStack, new ItemStack[]{GT_OreDictUnificator.getDust(aData.mMaterial), GT_OreDictUnificator.getDust(aData.getByProduct(0)), GT_OreDictUnificator.getDust(aData.getByProduct(1)), GT_OreDictUnificator.getDust(aData.getByProduct(2))}, null, aData.mMaterial.mMaterial==Materials.Marble ? 1 : (int) Math.max(16, tAmount / M), 4, tHide);
- if (aAllowHammer) for (MaterialStack tMaterial : aData.getAllMaterialStacks())
- if (tMaterial.mMaterial.contains(SubTag.CRYSTAL) && !tMaterial.mMaterial.contains(SubTag.METAL) && tMaterial.mMaterial != Materials.Glass) {
- if (RA.addForgeHammerRecipe(GT_Utility.copyAmount(1, aStack), GT_OreDictUnificator.getDust(aData.mMaterial), 200, 30))
- break;
- }
+ if (aAllowHammer)
+ for (MaterialStack tMaterial : aData.getAllMaterialStacks())
+ if (tMaterial.mMaterial.contains(SubTag.CRYSTAL) && !tMaterial.mMaterial.contains(SubTag.METAL) && tMaterial.mMaterial != Materials.Glass) {
+ if (RA.addForgeHammerRecipe(GT_Utility.copyAmount(1, aStack), GT_OreDictUnificator.getDust(aData.mMaterial), 200, 30))
+ break;
+ }
ItemStack tDust = GT_OreDictUnificator.getDust(aData.mMaterial);
if (tDust != null && GT_ModHandler.addPulverisationRecipe(GT_Utility.copyAmount(1, aStack), tDust, GT_OreDictUnificator.getDust(aData.getByProduct(0)), 100, GT_OreDictUnificator.getDust(aData.getByProduct(1)), 100, true)) {
if (GregTech_API.sThaumcraftCompat != null)
diff --git a/src/main/java/gregtech/api/util/GT_SpawnEventHandler.java b/src/main/java/gregtech/api/util/GT_SpawnEventHandler.java
index 9063b1f7c9..0e29950dbd 100644
--- a/src/main/java/gregtech/api/util/GT_SpawnEventHandler.java
+++ b/src/main/java/gregtech/api/util/GT_SpawnEventHandler.java
@@ -9,12 +9,12 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.living.LivingSpawnEvent.CheckSpawn;
-import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
public class GT_SpawnEventHandler {
- public static volatile List<int[]> mobReps = new ArrayList();
+ public static volatile List<int[]> mobReps = new CopyOnWriteArrayList<>();
public GT_SpawnEventHandler() {
MinecraftForge.EVENT_BUS.register(this);
diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java
index e9a9d6a436..8cbb44fe07 100644
--- a/src/main/java/gregtech/api/util/GT_Utility.java
+++ b/src/main/java/gregtech/api/util/GT_Utility.java
@@ -886,13 +886,16 @@ public class GT_Utility {
public static boolean listContainsItem(Collection<ItemStack> aList, ItemStack aStack, boolean aTIfListEmpty, boolean aInvertFilter) {
if (aStack == null || aStack.stackSize < 1) return false;
if (aList == null) return aTIfListEmpty;
- aList.removeIf(Objects::isNull);
- if (aList.size() < 1) return aTIfListEmpty;
- Iterator<ItemStack> tIterator = aList.iterator();
- ItemStack tStack = null;
- while (tIterator.hasNext())
- if ((tStack = tIterator.next()) != null && areStacksEqual(aStack, tStack)) return !aInvertFilter;
- return aInvertFilter;
+ boolean tEmpty = true;
+ for (ItemStack tStack : aList) {
+ if (tStack != null) {
+ tEmpty = false;
+ if (areStacksEqual(aStack, tStack)) {
+ return !aInvertFilter;
+ }
+ }
+ }
+ return tEmpty ? aTIfListEmpty : aInvertFilter;
}
public static boolean areStacksOrToolsEqual(ItemStack aStack1, ItemStack aStack2) {
diff --git a/src/main/java/gregtech/common/GT_Network.java b/src/main/java/gregtech/common/GT_Network.java
index b721e44eba..c9c57676ad 100644
--- a/src/main/java/gregtech/common/GT_Network.java
+++ b/src/main/java/gregtech/common/GT_Network.java
@@ -36,7 +36,7 @@ public class GT_Network extends MessageToMessageCodec<FMLProxyPacket, GT_Packet>
public GT_Network() {
this.mChannel = NetworkRegistry.INSTANCE.newChannel("GregTech", this, new HandlerShared());
- this.mSubChannels = new GT_Packet[]{new GT_Packet_TileEntity(), new GT_Packet_Sound(), new GT_Packet_Block_Event(), new GT_Packet_Ores(), new GT_Packet_Pollution(), new MessageSetFlaskCapacity(), new GT_Packet_TileEntityCover(), new GT_Packet_TileEntityCoverGUI(), new MessageUpdateFluidDisplayItem(), new GT_Packet_ClientPreference()};
+ this.mSubChannels = new GT_Packet[]{new GT_Packet_TileEntity(), new GT_Packet_Sound(), new GT_Packet_Block_Event(), new GT_Packet_Ores(), new GT_Packet_Pollution(), new MessageSetFlaskCapacity(), new GT_Packet_TileEntityCover(), new GT_Packet_TileEntityCoverGUI(), new MessageUpdateFluidDisplayItem(), new GT_Packet_ClientPreference(), new GT_Packet_WirelessRedstoneCover()};
}
@Override
diff --git a/src/main/java/gregtech/common/GT_Pollution.java b/src/main/java/gregtech/common/GT_Pollution.java
index 65c9ce5054..7b1ad90d52 100644
--- a/src/main/java/gregtech/common/GT_Pollution.java
+++ b/src/main/java/gregtech/common/GT_Pollution.java
@@ -313,6 +313,7 @@ public class GT_Pollution {
public class GT_PollutionEventHandler {
@SubscribeEvent
public void chunkWatch(ChunkWatchEvent.Watch event) {
+ if(!GT_Mod.gregtechproxy.mPollution) return;
if (chunkData.containsKey(event.chunk)) {
int pollution = chunkData.get(event.chunk)[GTPOLLUTION];
if (pollution > POLLUTIONPACKET_MINVALUE)
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java
new file mode 100644
index 0000000000..90c09f8168
--- /dev/null
+++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemFilter.java
@@ -0,0 +1,223 @@
+package gregtech.common.covers;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.gui.GT_GUICover;
+import gregtech.api.gui.widgets.GT_GuiFakeItemButton;
+import gregtech.api.gui.widgets.GT_GuiIcon;
+import gregtech.api.gui.widgets.GT_GuiIconButton;
+import gregtech.api.interfaces.tileentity.ICoverable;
+import gregtech.api.net.GT_Packet_TileEntityCover;
+import gregtech.api.util.GT_CoverBehavior;
+import gregtech.api.util.GT_Utility;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.fluids.Fluid;
+
+import java.util.Collections;
+import java.util.List;
+
+import static gregtech.api.util.GT_Utility.*;
+
+public class GT_Cover_ItemFilter extends GT_CoverBehavior {
+
+ private final boolean mExport;
+
+ public GT_Cover_ItemFilter(boolean isExport){
+ this.mExport = isExport;
+ }
+
+ @Override
+ public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) {
+ TileEntity tTileEntity = aTileEntity.getTileEntityAtSide(aSide);
+ Object fromEntity = mExport ? aTileEntity : tTileEntity,
+ toEntity = !mExport ? aTileEntity : tTileEntity;
+ byte fromSide = !mExport ? GT_Utility.getOppositeSide(aSide) : aSide,
+ toSide = mExport ? GT_Utility.getOppositeSide(aSide) : aSide;
+
+ int FilterId = aCoverVariable >>> 1;
+ List<ItemStack> Filter = Collections.singletonList(intToStack(FilterId));
+
+ boolean isWhiteList = (aCoverVariable & 1) != 0;
+
+ moveMultipleItemStacks(fromEntity, toEntity, fromSide , toSide, Filter, isWhiteList, (byte) 64, (byte) 1, (byte) 64, (byte) 1,64);
+
+ return aCoverVariable;
+ }
+
+ @Override
+ public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ){
+ ItemStack tStack = aPlayer.inventory.getCurrentItem();
+ if (tStack != null){
+ aCoverVariable = (stackToInt(tStack) << 1) + (aCoverVariable & 1);
+ aTileEntity.setCoverDataAtSide(aSide, aCoverVariable);
+ GT_Utility.sendChatToPlayer(aPlayer, trans("301", "Item Filter: ") + tStack.getDisplayName());
+ }
+ else{
+ aCoverVariable = aCoverVariable & 1;
+ aTileEntity.setCoverDataAtSide(aSide, aCoverVariable);
+ GT_Utility.sendChatToPlayer(aPlayer, trans("300", "Filter Cleared!"));
+ }
+ return true;
+ }
+
+ @Override
+ public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ int mode = aCoverVariable & 1;
+ if (mode == 1) mode = 0;
+ else mode = 1;
+ if (mode == 1){
+ GT_Utility.sendChatToPlayer(aPlayer, trans("124", "Blacklist Mode"));
+ }
+ else{
+ GT_Utility.sendChatToPlayer(aPlayer, trans("125", "Whitelist Mode"));
+ }
+ aCoverVariable = (aCoverVariable & ~0x1) + mode;
+ return aCoverVariable;
+ }
+
+ @Override
+ public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ return true;
+ }
+
+ @Override
+ public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ return true;
+ }
+
+ @Override
+ public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ return true;
+ }
+
+ @Override
+ public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ return true;
+ }
+
+ @Override
+ public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
+ return false;
+ }
+
+ @Override
+ public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) {
+ return false;
+ }
+
+ @Override
+ public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) {
+ return true;
+ }
+
+ @Override
+ public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) {
+ return true;
+ }
+
+ @Override
+ public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ return true;
+ }
+
+ @Override
+ public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ return 1;
+ }
+
+ /**
+ * GUI Stuff
+ */
+
+ @Override
+ public boolean hasCoverGUI() {
+ return true;
+ }
+
+ @Override
+ public Object getClientGUI(byte aSide, int aCoverID, int coverData, ICoverable aTileEntity) {
+ return new GT_Cover_ItemFilter.GUI(aSide, aCoverID, coverData, aTileEntity);
+ }
+
+ private class GUI extends GT_GUICover {
+ private final byte side;
+ private final int coverID;
+ private int coverVariable;
+ private final GT_GuiFakeItemButton itemFilterButtons;
+
+ private static final int startX = 10;
+ private static final int startY = 25;
+ private static final int spaceX = 18;
+ private static final int spaceY = 18;
+
+ public GUI(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
+ super(aTileEntity, 176, 107, GT_Utility.intToStack(aCoverID));
+ this.side = aSide;
+ this.coverID = aCoverID;
+ this.coverVariable = aCoverVariable;
+
+ GT_GuiIconButton b;
+ b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.WHITELIST).setTooltipText(trans("125","Whitelist Mode"));
+ b = new GT_GuiIconButton(this, 1, startX + spaceX*1, startY+spaceY*0, GT_GuiIcon.BLACKLIST).setTooltipText(trans("124","Blacklist Mode"));
+
+ itemFilterButtons = new GT_GuiFakeItemButton(this ,startX + spaceX*0, startY+spaceY*2, GT_GuiIcon.SLOT_GRAY);
+ }
+
+ @Override
+ public void drawExtras(int mouseX, int mouseY, float parTicks) {
+ super.drawExtras(mouseX, mouseY, parTicks);
+ this.fontRendererObj.drawString(trans("303", "Filter: "), startX + spaceX*0, 3+startY+spaceY*1, 0xFF555555);
+ this.fontRendererObj.drawString(trans("302", "Check Mode"), startX + spaceX*2, 3+startY+spaceY*0, 0xFF555555);
+ }
+
+ @Override
+ protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) {
+ updateButtons();
+ }
+
+ @Override
+ public void buttonClicked(GuiButton btn){
+ if (getClickable(btn.id)){
+ coverVariable = getNewCoverVariable(btn.id);
+ GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile));
+ }
+ updateButtons();
+ }
+
+ private void updateButtons(){
+ GuiButton b;
+ for (Object o : buttonList) {
+ b = (GuiButton) o;
+ b.enabled = getClickable(b.id);
+ }
+ ItemStack tItemStack = intToStack(coverVariable >>> 1);
+ if (tItemStack != null){
+ itemFilterButtons.setItem(tItemStack);
+ return;
+ }
+ itemFilterButtons.setItem(null);
+ }
+
+ private int getNewCoverVariable(int id) {
+ switch (id) {
+ case 0:
+ return coverVariable & ~0x1;
+ case 1:
+ return coverVariable | 0x1;
+ }
+ return coverVariable;
+ }
+
+ private boolean getClickable(int id) {
+ switch (id) {
+ case 0:
+ return (0x1 & coverVariable) != 0;
+ case 1:
+ return (0x1 & coverVariable) == 0;
+ }
+ return false;
+ }
+ }
+}
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java
index 58d89948ef..93a729d0c2 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java
@@ -3,16 +3,26 @@ package gregtech.common.covers;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
import gregtech.api.gui.GT_GUICover;
+import gregtech.api.gui.widgets.GT_GuiIcon;
+import gregtech.api.gui.widgets.GT_GuiIconCheckButton;
import gregtech.api.gui.widgets.GT_GuiIntegerTextBox;
import gregtech.api.interfaces.IGuiScreen;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.net.GT_Packet_TileEntityCover;
+import gregtech.api.net.GT_Packet_WirelessRedstoneCover;
import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
+import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.fluids.Fluid;
public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
+
+ private static final int MAX_CHANNEL = 65535;
+ private static final int PRIVATE_MASK = 0xFFFE0000;
+ private static final int PUBLIC_MASK = 0x0000FFFF;
+ private static final int CHECKBOX_MASK = 0x00010000;
+
@Override
public boolean onCoverRemoval(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, boolean aForced) {
GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf((byte) 0));
@@ -23,7 +33,8 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
if (((aX > 0.375D) && (aX < 0.625D)) || ((aSide > 3) && ((aY > 0.375D) && (aY < 0.625D)))) {
GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf((byte) 0));
- aCoverVariable = GT_Utility.stackToInt(aPlayer.inventory.getCurrentItem());
+ aCoverVariable = (aCoverVariable & (PRIVATE_MASK | CHECKBOX_MASK)) | (((Integer)GT_Utility.stackToInt(aPlayer.inventory.getCurrentItem())).hashCode() & PUBLIC_MASK);
+
aTileEntity.setCoverDataAtSide(aSide, aCoverVariable);
GT_Utility.sendChatToPlayer(aPlayer, trans("081", "Frequency: ") + aCoverVariable);
return true;
@@ -36,18 +47,33 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
if (((aX > 0.375D) && (aX < 0.625D)) || ((aSide <= 3) || (((aY > 0.375D) && (aY < 0.625D)) || ((((aZ <= 0.375D) || (aZ >= 0.625D))))))) {
GregTech_API.sWirelessRedstone.put(Integer.valueOf(aCoverVariable), Byte.valueOf((byte) 0));
float[] tCoords = GT_Utility.getClickedFacingCoords(aSide, aX, aY, aZ);
+
+ short tAdjustVal = 0;
+
switch ((byte) ((byte) (int) (tCoords[0] * 2.0F) + 2 * (byte) (int) (tCoords[1] * 2.0F))) {
case 0:
- aCoverVariable -= 32;
+ tAdjustVal = -32;
break;
case 1:
- aCoverVariable += 32;
+ tAdjustVal = 32;
break;
case 2:
- aCoverVariable -= 1024;
+ tAdjustVal = -1024;
break;
case 3:
- aCoverVariable += 1024;
+ tAdjustVal = 1024;
+ }
+
+ int tPublicChannel = (aCoverVariable & PUBLIC_MASK) + tAdjustVal;
+
+ if (tPublicChannel < 0) {
+ aCoverVariable = aCoverVariable & ~PUBLIC_MASK;
+ }
+ else if (tPublicChannel > MAX_CHANNEL) {
+ aCoverVariable = (aCoverVariable & (PRIVATE_MASK | CHECKBOX_MASK)) | MAX_CHANNEL;
+ }
+ else {
+ aCoverVariable = (aCoverVariable & (PRIVATE_MASK | CHECKBOX_MASK)) | tPublicChannel;
}
}
GT_Utility.sendChatToPlayer(aPlayer, trans("081", "Frequency: ") + aCoverVariable);
@@ -125,21 +151,25 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
this.coverID = aCoverID;
this.coverVariable = aCoverVariable;
- fBox = new GT_GuiIntegerTextBoxWithMinus(this, 2,startX + spaceX*0,startY+spaceY*0 + 2, spaceX*4-3,12);
- fBox.setText(String.valueOf(coverVariable));
+ fBox = new GT_GuiShortTextBox(this, 2,startX + spaceX*0,startY+spaceY*0 + 2, spaceX*4-3,12);
+ fBox.setText(String.valueOf(coverVariable & PUBLIC_MASK));
fBox.setMaxStringLength(12);
+ GuiButton b;
+ b = new GT_GuiIconCheckButton(this, 0, startX + spaceX * 0, startY + spaceY * 2, GT_GuiIcon.CHECKMARK, null);
}
@Override
public void drawExtras(int mouseX, int mouseY, float parTicks) {
super.drawExtras(mouseX, mouseY, parTicks);
this.getFontRenderer().drawString(trans("246","Frequency" ), startX + spaceX*4, 4+startY+spaceY*0, 0xFF555555);
+ this.getFontRenderer().drawString(trans("601", "Use Private Frequency"), startX + spaceX * 1, startY + spaceY * 2 + 4, 0xFF555555);
}
@Override
protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) {
fBox.setFocused(true);
+ ((GT_GuiIconCheckButton) buttonList.get(0)).setChecked((coverVariable & CHECKBOX_MASK) > 0);
}
@Override
@@ -148,19 +178,19 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
if (box.isFocused()) {
int step = Math.max(1, Math.abs(delta / 120));
step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step);
- long i;
+ long tCoverVariable;
try {
- i = Long.parseLong(box.getText());
+ tCoverVariable = Long.parseLong(box.getText());
} catch (NumberFormatException e) {
return;
}
- i = i + step;
- if (i > Integer.MAX_VALUE)
- i = Integer.MAX_VALUE;
- else if (i < Integer.MIN_VALUE)
- i = Integer.MIN_VALUE;
+ tCoverVariable = tCoverVariable + step;
+ if (tCoverVariable > MAX_CHANNEL)
+ tCoverVariable = MAX_CHANNEL;
+ else if (tCoverVariable < 0)
+ tCoverVariable = 0;
- box.setText(String.valueOf(i));
+ box.setText(String.valueOf(tCoverVariable));
return;
}
}
@@ -168,42 +198,84 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
@Override
public void applyTextBox(GT_GuiIntegerTextBox box) {
- long i;
+ int tPublicChannel;
String s = box.getText().trim();
try {
- i = Long.parseLong(s);
+ tPublicChannel = Integer.parseInt(s);
} catch (NumberFormatException e) {
resetTextBox(box);
return;
}
- if (i > Integer.MAX_VALUE)
- i = Integer.MAX_VALUE;
- else if (i < Integer.MIN_VALUE)
- i = Integer.MIN_VALUE;
+ if (tPublicChannel > MAX_CHANNEL)
+ tPublicChannel = MAX_CHANNEL;
+ else if (tPublicChannel < 0)
+ tPublicChannel = 0;
+ int tCheckBoxValue = ((GT_GuiIconCheckButton)this.buttonList.get(0)).isChecked() ? CHECKBOX_MASK : 0;
- coverVariable = (int) i;
- fBox.setText(String.valueOf(coverVariable));
- GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile));
+ coverVariable = tCheckBoxValue | tPublicChannel;
+
+ fBox.setText(Integer.toString(tPublicChannel));
+ GT_Values.NW.sendToServer(new GT_Packet_WirelessRedstoneCover(side, coverID, tile, tPublicChannel, tCheckBoxValue));
}
@Override
public void resetTextBox(GT_GuiIntegerTextBox box) {
- box.setText(String.valueOf(coverVariable));
+ box.setText(String.valueOf(coverVariable & PUBLIC_MASK));
+ }
+
+ @Override
+ public void buttonClicked(GuiButton btn) {
+
+ final GT_GuiIconCheckButton tBtn = (GT_GuiIconCheckButton) btn;
+
+ tBtn.setChecked(!tBtn.isChecked());
+
+ int tPublicChannel = 0;
+ String tText = fBox.getText().trim();
+
+ if (tText.length() > 0) {
+ tPublicChannel = Integer.parseInt(tText);
+ }
+
+ int tCheckBoxValue = tBtn.isChecked() ? CHECKBOX_MASK : 0;
+
+ coverVariable = tCheckBoxValue | tPublicChannel;
+
+ GT_Values.NW.sendToServer(new GT_Packet_WirelessRedstoneCover(side, coverID, tile, tPublicChannel, tCheckBoxValue));
}
- private class GT_GuiIntegerTextBoxWithMinus extends GT_GuiIntegerTextBox {
+ private class GT_GuiShortTextBox extends GT_GuiIntegerTextBox {
- public GT_GuiIntegerTextBoxWithMinus(IGuiScreen gui, int id, int x, int y, int width, int height) {
+ public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) {
super(gui, id, x, y, width, height);
}
@Override
- public boolean validChar(char c, int key) {
- if (getCursorPosition() == 0 && key == 12) // minus first allowed.
- return true;
- return super.validChar(c, key);
+ public boolean textboxKeyTyped(char c, int key) {
+ int tValue = 0;
+
+ if(!super.textboxKeyTyped(c, key))
+ return false;
+
+ int cursorPos = this.getCursorPosition();
+
+ String tText = getText().trim();
+ if (tText.length() > 0) {
+ try {
+ tValue = Integer.parseInt(tText);
+ } catch (NumberFormatException ignored) {}
+
+ if (tValue > MAX_CHANNEL)
+ setText(String.valueOf(MAX_CHANNEL));
+ else
+ setText(String.valueOf(tValue));
+
+ setCursorPosition(cursorPos);
+ }
+
+ return true;
}
}
}
diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java
index 0f6d5b3e7e..f0904485d4 100644
--- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java
+++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java
@@ -22,28 +22,7 @@ import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gregtech.common.covers.GT_Cover_Arm;
-import gregtech.common.covers.GT_Cover_ControlsWork;
-import gregtech.common.covers.GT_Cover_Conveyor;
-import gregtech.common.covers.GT_Cover_Crafting;
-import gregtech.common.covers.GT_Cover_DoesWork;
-import gregtech.common.covers.GT_Cover_Drain;
-import gregtech.common.covers.GT_Cover_EUMeter;
-import gregtech.common.covers.GT_Cover_FluidRegulator;
-import gregtech.common.covers.GT_Cover_Fluidfilter;
-import gregtech.common.covers.GT_Cover_ItemMeter;
-import gregtech.common.covers.GT_Cover_LiquidMeter;
-import gregtech.common.covers.GT_Cover_NeedMaintainance;
-import gregtech.common.covers.GT_Cover_PlayerDetector;
-import gregtech.common.covers.GT_Cover_Pump;
-import gregtech.common.covers.GT_Cover_RedstoneReceiverExternal;
-import gregtech.common.covers.GT_Cover_RedstoneReceiverInternal;
-import gregtech.common.covers.GT_Cover_RedstoneTransmitterExternal;
-import gregtech.common.covers.GT_Cover_RedstoneTransmitterInternal;
-import gregtech.common.covers.GT_Cover_Screen;
-import gregtech.common.covers.GT_Cover_Shutter;
-import gregtech.common.covers.GT_Cover_SolarPanel;
-import gregtech.common.covers.GT_Cover_SteamValve;
+import gregtech.common.covers.*;
import gregtech.common.items.behaviors.Behaviour_Arrow_Potion;
import gregtech.common.items.behaviors.Behaviour_DataOrb;
import gregtech.common.items.behaviors.Behaviour_DataStick;
@@ -550,7 +529,7 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 {
GregTech_API.registerCover(ItemList.Electric_Pump_ZPM.get(1L), TextureFactory.of(MACHINE_CASINGS[7][0], TextureFactory.of(OVERLAY_PUMP)), new GT_Cover_Pump(131072));
GregTech_API.registerCover(ItemList.Electric_Pump_UV.get(1L), TextureFactory.of(MACHINE_CASINGS[8][0], TextureFactory.of(OVERLAY_PUMP)), new GT_Cover_Pump(524288));
GregTech_API.registerCover(ItemList.Electric_Pump_UHV.get(1L), TextureFactory.of(MACHINE_CASINGS[9][0], TextureFactory.of(OVERLAY_PUMP)), new GT_Cover_Pump(1048576));
- GregTech_API.registerCover(ItemList.Electric_Pump_UEV.get(1L), TextureFactory.of(MACHINE_CASINGS[9][0], TextureFactory.of(OVERLAY_PUMP)), new GT_Cover_Pump(2097152));
+ GregTech_API.registerCover(ItemList.Electric_Pump_UEV.get(1L), TextureFactory.of(MACHINE_CASINGS[10][0], TextureFactory.of(OVERLAY_PUMP)), new GT_Cover_Pump(2097152));
ItemList.Steam_Valve_LV.set(addItem(620, "Steam Valve (LV)", "20.480 L/sec (as Cover)", new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 1L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L), new TC_Aspects.TC_AspectStack(TC_Aspects.ITER, 1L), new TC_Aspects.TC_AspectStack(TC_Aspects.AQUA, 1L)));
ItemList.Steam_Valve_MV.set(addItem(621, "Steam Valve (MV)", "40.960 L/sec (as Cover)", new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.ITER, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.AQUA, 2L)));
@@ -584,6 +563,10 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 {
ItemList.FluidFilter.set(addItem(669, "Fluid Filter Cover", "Set with Fluid Container to only accept one Fluid Type"));
GregTech_API.registerCover(ItemList.FluidFilter.get(1L), TextureFactory.of(MACHINE_CASINGS[1][0], TextureFactory.of(OVERLAY_SHUTTER)), new GT_Cover_Fluidfilter());
+ ItemList.ItemFilter_Export.set(addItem(270,"Item Filter Cover (Export)", "Right click with an item to set filter (Only supports Export Mode)"));
+ GregTech_API.registerCover(ItemList.ItemFilter_Export.get(1L), TextureFactory.of(MACHINE_CASINGS[5][0], TextureFactory.of(OVERLAY_CONVEYOR)), new GT_Cover_ItemFilter(true));
+ ItemList.ItemFilter_Import.set(addItem(271,"Item Filter Cover (Import)", "Right click with an item to set filter (Only supports Import Mode)"));
+ GregTech_API.registerCover(ItemList.ItemFilter_Import.get(1L), TextureFactory.of(MACHINE_CASINGS[5][0], TextureFactory.of(OVERLAY_CONVEYOR)), new GT_Cover_ItemFilter(false));
/*ItemList.Rotor_LV.set(addItem(tLastID = 620, "Tin Rotor", "", new Object[] { OrePrefixes.rotor.get(Materials.Tin), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 1L), new TC_Aspects.TC_AspectStack(TC_Aspects.MOTUS, 1L) }));
ItemList.Rotor_MV.set(addItem(tLastID = 621, "Bronze Rotor", "", new Object[] { OrePrefixes.rotor.get(Materials.Bronze), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MOTUS, 2L) }));
@@ -865,6 +848,18 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 {
ItemList.Cover_NeedsMaintainance.set(addItem(tLastID = 748, "Needs Maintenance Cover", "Attach to Multiblock Controller. Emits Redstone Signal if needs Maintenance", new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 1L)));
GregTech_API.registerCover(ItemList.Cover_NeedsMaintainance.get(1L), TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(TextureFactory.of(OVERLAY_ACTIVITYDETECTOR), TextureFactory.builder().addIcon(OVERLAY_ACTIVITYDETECTOR_GLOW).glow().build())), new GT_Cover_NeedMaintainance());
GT_Values.RA.addAssemblerRecipe(ItemList.Emitter_MV.get(1L), GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Aluminium, 1L), ItemList.Cover_NeedsMaintainance.get(1L), 600, 24);
+
+ GT_ModHandler.addCraftingRecipe(ItemList.ItemFilter_Export.get(1L),new Object[]{"SPS","dIC","SPS",'P',OrePrefixes.plateDouble.get(Materials.StainlessSteel),'S',OrePrefixes.screw.get(Materials.StainlessSteel),'I',ItemList.Component_Filter,'C',ItemList.Conveyor_Module_HV});
+ GT_ModHandler.addCraftingRecipe(ItemList.ItemFilter_Import.get(1L),new Object[]{"SPS","CId","SPS",'P',OrePrefixes.plateDouble.get(Materials.StainlessSteel),'S',OrePrefixes.screw.get(Materials.StainlessSteel),'I',ItemList.Component_Filter,'C',ItemList.Conveyor_Module_HV});
+ GT_ModHandler.addShapelessCraftingRecipe(ItemList.ItemFilter_Export.get(1L),new Object[]{ItemList.ItemFilter_Import.get(1L)});
+ GT_ModHandler.addShapelessCraftingRecipe(ItemList.ItemFilter_Import.get(1L),new Object[]{ItemList.ItemFilter_Export.get(1L)});
+
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(1)},Materials.SolderingAlloy.getMolten(72L),ItemList.ItemFilter_Export.get(1L),100,30);
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(1)},Materials.Tin.getMolten(144L),ItemList.ItemFilter_Export.get(1L),100,30);
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(1)},Materials.Lead.getMolten(288L),ItemList.ItemFilter_Export.get(1L),100,30);
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(2)},Materials.SolderingAlloy.getMolten(72L),ItemList.ItemFilter_Import.get(1L),100,30);
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(2)},Materials.Tin.getMolten(144L),ItemList.ItemFilter_Import.get(1L),100,30);
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(2)},Materials.Lead.getMolten(288L),ItemList.ItemFilter_Import.get(1L),100,30);
}
private static final Map<Materials,Materials> cauldronRemap =new HashMap<>();
diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_03.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_03.java
index bd9613bd16..251842334a 100644
--- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_03.java
+++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_03.java
@@ -162,7 +162,7 @@ public class GT_MetaGenerated_Item_03
ItemList.Circuit_Chip_BioCPU.set(addItem(tLastID = 77, "Bio Processing Unit", "Bio CPU", o));
//Nand Chip
- ItemList.NandChip.set(addItem(tLastID = 75, "Nand Chip", "A very simple Circuit", OrePrefixes.circuit.get(Materials.Primitive), SubTag.NO_UNIFICATION));
+ ItemList.NandChip.set(addItem(tLastID = 75, "NAND Chip", "A very simple Circuit", OrePrefixes.circuit.get(Materials.Primitive), SubTag.NO_UNIFICATION));
//Vacuum Tube Item01
//Basic Circuit IC2
diff --git a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_Filter.java b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_Filter.java
index 0c5b1dfda8..5b23c36d9a 100644
--- a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_Filter.java
+++ b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_Filter.java
@@ -23,7 +23,7 @@ public class GT_MetaTileEntity_Filter extends GT_MetaTileEntity_Buffer {
super(aID, aName, aNameRegional, aTier, 19, new String[]{
"Filters up to 9 different Items",
"Use Screwdriver to regulate output stack size",
- "Consumes 1EU per moved Item"});
+ "Does not consume energy to move Item"});
}
public GT_MetaTileEntity_Filter(String aName, int aTier, int aInvSlotCount, String aDescription, ITexture[][][] aTextures) {
diff --git a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java
index c941b73e58..d3b124b79f 100644
--- a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java
+++ b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java
@@ -27,7 +27,7 @@ public class GT_MetaTileEntity_ItemDistributor extends GT_MetaTileEntity_Buffer
"Distributes Items between different Machine Sides",
"Default Items per Machine Side: 0",
"Use Screwdriver to increase/decrease Items per Side",
- "Consumes 1EU per moved Item"});
+ "Does not consume energy to move Item"});
}
public GT_MetaTileEntity_ItemDistributor(int aID, String aName, String aNameRegional, int aTier, int aInvSlotCount,
diff --git a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_Regulator.java b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_Regulator.java
index 3bc79f3348..c20df68b32 100644
--- a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_Regulator.java
+++ b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_Regulator.java
@@ -28,7 +28,7 @@ public class GT_MetaTileEntity_Regulator
"Filters up to 9 different Items",
"Allows Item-specific output stack size",
"Allows Item-specific output slot",
- "Consumes 1EU per moved Item"});
+ "Does not consume energy to move Item"});
}
public GT_MetaTileEntity_Regulator(String aName, int aTier, int aInvSlotCount, String aDescription, ITexture[][][] aTextures) {
diff --git a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_TypeFilter.java b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_TypeFilter.java
index 4e5864c3e6..61f0b5cb29 100644
--- a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_TypeFilter.java
+++ b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_TypeFilter.java
@@ -29,7 +29,7 @@ public class GT_MetaTileEntity_TypeFilter extends GT_MetaTileEntity_Buffer {
super(aID, aName, aNameRegional, aTier, 11, new String[]{
"Filters 1 Item Type",
"Use Screwdriver to regulate output stack size",
- "Consumes 1 EU per moved Item"});
+ "Does not consume energy to move Item"});
}
public GT_MetaTileEntity_TypeFilter(String aName, int aTier, int aInvSlotCount, String aDescription, ITexture[][][] aTextures) {
diff --git a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Lava.java b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Lava.java
index 7b0723f37d..c71126b146 100644
--- a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Lava.java
+++ b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Lava.java
@@ -23,11 +23,19 @@ import static gregtech.api.enums.Textures.BlockIcons.MACHINE_STEELBRICKS_TOP;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_PIPE;
public class GT_MetaTileEntity_Boiler_Lava extends GT_MetaTileEntity_Boiler {
+
+ public static final int COOLDOWN_INTERVAL = 20;
+ public static final int ENERGY_PER_LAVA = 1;
+ public static final int CONSUMPTION_PER_HEATUP = 3;
+ public static final int PRODUCTION_PER_SECOND = 600;
+ public static final int POLLUTION_PER_SECOND = 20;
+
public GT_MetaTileEntity_Boiler_Lava(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional, new String[]{
"A Boiler running off Lava",
- "Produces 600L of Steam per second",
- "Causes 20 Pollution per second"});
+ "Produces " + PRODUCTION_PER_SECOND + "L of Steam per second",
+ "Causes " + POLLUTION_PER_SECOND + " Pollution per second",
+ "Consumes " + ((double) CONSUMPTION_PER_HEATUP / ENERGY_PER_LAVA) + "L of Lava every " + COOLDOWN_INTERVAL + " ticks when fully heat up"});
}
public GT_MetaTileEntity_Boiler_Lava(String aName, int aTier, String aDescription, ITexture[][][] aTextures) {
@@ -85,12 +93,12 @@ public class GT_MetaTileEntity_Boiler_Lava extends GT_MetaTileEntity_Boiler {
@Override
protected int getPollution() {
- return 20;
+ return POLLUTION_PER_SECOND;
}
@Override
protected int getProductionPerSecond() {
- return 600;
+ return PRODUCTION_PER_SECOND;
}
@Override
@@ -100,18 +108,18 @@ public class GT_MetaTileEntity_Boiler_Lava extends GT_MetaTileEntity_Boiler {
@Override
protected int getEnergyConsumption() {
- return 3;
+ return CONSUMPTION_PER_HEATUP;
}
@Override
protected int getCooldownInterval() {
- return 20;
+ return COOLDOWN_INTERVAL;
}
@Override
protected void updateFuel(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
if (GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.bucket.get(Materials.Lava))) {
- this.mProcessingEnergy += 1000;
+ this.mProcessingEnergy += 1000 * ENERGY_PER_LAVA;
aBaseMetaTileEntity.decrStackSize(2, 1);
aBaseMetaTileEntity.addStackToSlot(3, GT_OreDictUnificator.get(OrePrefixes.bucket, Materials.Empty, 1L));
}
@@ -122,7 +130,7 @@ public class GT_MetaTileEntity_Boiler_Lava extends GT_MetaTileEntity_Boiler {
if ((GT_ModHandler.isLava(aFluid)) && (this.mProcessingEnergy < 50)) {
int tFilledAmount = Math.min(50, aFluid.amount);
if (doFill) {
- this.mProcessingEnergy += tFilledAmount;
+ this.mProcessingEnergy += tFilledAmount * ENERGY_PER_LAVA;
}
return tFilledAmount;
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MonsterRepellent.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MonsterRepellent.java
index 095c87f948..1e1beaf528 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MonsterRepellent.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_MonsterRepellent.java
@@ -10,6 +10,8 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
+import java.util.Arrays;
+
import static gregtech.api.enums.GT_Values.V;
import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TELEPORTER;
@@ -75,7 +77,7 @@ public class GT_MetaTileEntity_MonsterRepellent extends GT_MetaTileEntity_Tiered
@Override
public void onRemoval() {
int[] tCoords = {this.getBaseMetaTileEntity().getXCoord(), this.getBaseMetaTileEntity().getYCoord(), this.getBaseMetaTileEntity().getZCoord(), this.getBaseMetaTileEntity().getWorld().provider.dimensionId};
- GT_SpawnEventHandler.mobReps.remove(tCoords);
+ GT_SpawnEventHandler.mobReps.removeIf(coords -> Arrays.equals(coords, tCoords));
}
@Override
diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_RockBreaker.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_RockBreaker.java
index 7ddf24b912..a07af88917 100644
--- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_RockBreaker.java
+++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_RockBreaker.java
@@ -64,7 +64,7 @@ public class GT_MetaTileEntity_RockBreaker extends GT_MetaTileEntity_BasicMachin
@Override
protected boolean allowPutStackValidated(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
- return super.allowPutStack(aBaseMetaTileEntity, aIndex, aSide, aStack) && getRecipeList().containsInput(aStack);
+ return super.allowPutStackValidated(aBaseMetaTileEntity, aIndex, aSide, aStack) && getRecipeList().containsInput(aStack);
}
@Override
diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingBlock.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingBlock.java
index 3e5b276296..39c71050f5 100644
--- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingBlock.java
+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingBlock.java
@@ -43,11 +43,12 @@ public class ProcessingBlock implements gregtech.api.interfaces.IOreRecipeRegist
GT_ModHandler.addCraftingRecipe(GT_OreDictUnificator.get(OrePrefixes.block, aMaterial, 1L), new Object[]{"XXX", "XXX", "XXX", 'X', OrePrefixes.ingot.get(aMaterial)});
}
}
- if (tStack1 != null) tStack1.stackSize = 9;
- if (tStack2 != null) tStack2.stackSize = 9;
- if (tStack3 != null) {
+ if (tStack1 != null)
+ tStack1.stackSize = 9;
+ if (tStack2 != null)
+ tStack2.stackSize = 9;
+ if (tStack3 != null)
tStack3.stackSize = 9;
- }
GT_Values.RA.addForgeHammerRecipe(aStack, tStack2, 100, 24);
if (GregTech_API.sRecipeFile.get(ConfigCategories.Recipes.storageblockdecrafting, OrePrefixes.block.get(aMaterial).toString(), tStack2 != null)) {
@@ -55,9 +56,8 @@ public class ProcessingBlock implements gregtech.api.interfaces.IOreRecipeRegist
GT_ModHandler.addShapelessCraftingRecipe(tStack3, new Object[]{OrePrefixes.block.get(aMaterial)});
if (tStack2 != null)
GT_ModHandler.addShapelessCraftingRecipe(tStack2, new Object[]{OrePrefixes.block.get(aMaterial)});
- if (tStack1 != null) {
+ if (tStack1 != null)
GT_ModHandler.addShapelessCraftingRecipe(tStack1, new Object[]{OrePrefixes.block.get(aMaterial)});
- }
}
if (!OrePrefixes.block.isIgnored(aMaterial))
GT_ModHandler.addCompressionRecipe(GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 9L), GT_OreDictUnificator.get(OrePrefixes.block, aMaterial, 1L));
diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingLog.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingLog.java
index 778be1e7ca..dfccc35684 100644
--- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingLog.java
+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingLog.java
@@ -22,6 +22,7 @@ public class ProcessingLog implements gregtech.api.interfaces.IOreRecipeRegistra
GT_ModHandler.addExtractionRecipe(GT_Utility.copyAmount(1L, aStack), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.RawRubber, 1L));
GT_ModHandler.addPulverisationRecipe(GT_Utility.copyAmount(1L, aStack), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Wood, 6L), ItemList.IC2_Resin.get(1L), 33, false);
} else {
+ GT_Values.RA.addCentrifugeRecipe(GT_Utility.copyAmount(1L, aStack), GT_Utility.getIntegratedCircuit(1), null, Materials.Methane.getGas(60L), GT_Values.NI, GT_Values.NI, GT_Values.NI, GT_Values.NI, GT_Values.NI, GT_Values.NI, null, 200, 20);
GT_ModHandler.addPulverisationRecipe(GT_Utility.copyAmount(1L, aStack), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Wood, 6L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Wood, 1L), 80, false);
}
diff --git a/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java b/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java
index f1236cc6b2..d886055050 100644
--- a/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java
+++ b/src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java
@@ -513,6 +513,8 @@ public class GT_MachineRecipeLoader implements Runnable {
GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.Steel, 2L), GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Steel, 9L), GT_Utility.getIntegratedCircuit(24)}, Materials.Tin.getMolten(144L), ItemList.Long_Distance_Pipeline_Fluid_Pipe.get(64L), 600, 24);
GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.Tin, 2L), GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Steel, 9L), GT_Utility.getIntegratedCircuit(24)}, Materials.Tin.getMolten(144L), ItemList.Long_Distance_Pipeline_Item_Pipe.get(64L), 600, 24);
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Steel, 4L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1L), ItemList.Robot_Arm_IV.get(2L), GT_Utility.getIntegratedCircuit(3)}, GT_Values.NF, ItemList.Casing_Gearbox_TungstenSteel.get(1L), 200, 30);
+
{//limiting life time of the variables
ItemStack flask = ItemList.VOLUMETRIC_FLASK.get(1);
NBTTagCompound nbtFlask = new NBTTagCompound();
@@ -749,14 +751,13 @@ public class GT_MachineRecipeLoader implements Runnable {
GT_Values.RA.addUniversalDistillationRecipe(Materials.OilMedium.getFluid(100), new FluidStack[]{Materials.SulfuricGas.getGas(60), Materials.SulfuricNaphtha.getFluid(20), Materials.SulfuricLightFuel.getFluid(50), Materials.SulfuricHeavyFuel.getFluid(15)}, null, 32, 64);
GT_Values.RA.addUniversalDistillationRecipe(Materials.Oil.getFluid(50L), new FluidStack[]{Materials.SulfuricGas.getGas(60), Materials.SulfuricNaphtha.getFluid(20), Materials.SulfuricLightFuel.getFluid(50), Materials.SulfuricHeavyFuel.getFluid(15)}, null, 32, 64);
- if (GregTech_API.sSpecialFile.get("general", "EnableLagencyOilGalactiCraft", false) && FluidRegistry.getFluid("oilgc") != null) {
+ if (GregTech_API.sSpecialFile.get("general", "EnableLagencyOilGalactiCraft", false) && FluidRegistry.getFluid("oilgc") != null)
GT_Values.RA.addUniversalDistillationRecipe(new FluidStack(FluidRegistry.getFluid("oilgc"), 50), new FluidStack[]{Materials.SulfuricHeavyFuel.getFluid(15), Materials.SulfuricLightFuel.getFluid(50), Materials.SulfuricNaphtha.getFluid(20), Materials.SulfuricGas.getGas(60)}, null, 20, 96);
- }
+
GT_Values.RA.addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 1L), new FluidStack(ItemList.sOilExtraHeavy,10), Materials.OilHeavy.getFluid(15), 16, 24, false);
GT_Values.RA.addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 1L), Materials.HeavyFuel.getFluid(10L), new FluidStack(ItemList.sToluene,4), 16, 24, false);
GT_Values.RA.addDistilleryRecipe(ItemList.Circuit_Integrated.getWithDamage(0L, 1L), new FluidStack(ItemList.sToluene,30), Materials.LightFuel.getFluid(30L), 16, 24, false);
- GT_Values.RA.addChemicalRecipe(ItemList.GelledToluene.get(4), GT_Utility.getIntegratedCircuit(1), Materials.SulfuricAcid.getFluid(250), GT_Values.NF, new ItemStack(Blocks.tnt, 1), 200, 24);
-
+
GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Ball.get(0L), Materials.Glass.getMolten(144), ItemList.Circuit_Parts_Glass_Tube.get(1), 200, 24);
GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Ball.get(0L), Materials.ReinforceGlass.getFluid(288), ItemList.Circuit_Parts_Reinforced_Glass_Tube.get(1), 200, 240);
GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Ball.get(0L), FluidRegistry.getFluidStack("glass.molten", 1000), ItemList.Circuit_Parts_Glass_Tube.get(1), 200, 24);
@@ -770,9 +771,11 @@ public class GT_MachineRecipeLoader implements Runnable {
GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Ingot.get(0L), Materials.WroughtIron.getMolten(144), GT_OreDictUnificator.get(OrePrefixes.ingot, Materials.Iron, 1L), 32, 8);
GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Block.get(0L), Materials.WroughtIron.getMolten(1296), GT_OreDictUnificator.get(OrePrefixes.block, Materials.Iron, 1L), 288, 8);
- GT_Values.RA.addChemicalRecipe(new ItemStack(Items.sugar), GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Plastic, 1), new FluidStack(ItemList.sToluene, 133), GT_Values.NF, ItemList.GelledToluene.get(2), 140, 192);
-
GT_Values.RA.addMixerRecipe(GT_OreDictUnificator.get(OrePrefixes.cell,Materials.SulfuricAcid, 1), GT_Values.NI, GT_Values.NI, GT_Values.NI, GT_Values.NI, GT_Utility.getIntegratedCircuit(1), new FluidStack(ItemList.sNitricAcid,1000), new FluidStack(ItemList.sNitrationMixture, 2000), ItemList.Cell_Empty.get(1), 480, 2);
+
+ GT_Values.RA.addChemicalRecipe(new ItemStack(Items.sugar), GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Plastic, 1), new FluidStack(ItemList.sToluene, 133), GT_Values.NF, ItemList.GelledToluene.get(2), 140, 192);
+ GT_Values.RA.addChemicalRecipe(new ItemStack(Items.sugar, 9), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Plastic, 1), new FluidStack(ItemList.sToluene, 1197), GT_Values.NF, ItemList.GelledToluene.get(18), 1260, 192);
+ GT_Values.RA.addChemicalRecipe(ItemList.GelledToluene.get(4), GT_Utility.getIntegratedCircuit(1), Materials.SulfuricAcid.getFluid(250), GT_Values.NF, new ItemStack(Blocks.tnt, 1), 200, 24);
GT_Values.RA.addChemicalRecipe(ItemList.GelledToluene.get(4), GT_Utility.getIntegratedCircuit(1), new FluidStack(ItemList.sNitrationMixture,200), Materials.DilutedSulfuricAcid.getFluid(200), GT_ModHandler.getIC2Item("industrialTnt", 1L), 80, 480);
GT_Values.RA.addChemicalRecipe(GT_OreDictUnificator.get(OrePrefixes.cell, Materials.Hydrogen, 2L), GT_Utility.getIntegratedCircuit(4), Materials.NatruralGas.getGas(16000), Materials.Gas.getGas(16000), GT_OreDictUnificator.get(OrePrefixes.cell, Materials.HydricSulfide, 1L), Materials.Empty.getCells(1), 160);
@@ -1100,19 +1103,24 @@ public class GT_MachineRecipeLoader implements Runnable {
GT_ModHandler.addPulverisationRecipe(GT_ModHandler.getModItem(GT_MachineRecipeLoader.aTextAE, "tile.BlockSkyChest", 1L, 32767), GT_ModHandler.getModItem(GT_MachineRecipeLoader.aTextAE, GT_MachineRecipeLoader.aTextAEMM, 8L, 45), GT_Values.NI, 0, false);
GT_ModHandler.addPulverisationRecipe(new ItemStack(Items.blaze_rod, 1), new ItemStack(Items.blaze_powder, 3), new ItemStack(Items.blaze_powder, 1), 50, false);
GT_ModHandler.addPulverisationRecipe(GT_ModHandler.getModItem("Railcraft", "cube.crushed.obsidian", 1L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Obsidian, 1L), GT_Values.NI, 0, true);
- GT_ModHandler.addPulverisationRecipe(new ItemStack(Items.flint, 1, 32767), GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Flint, 4L), GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Flint, 1L), 40, true);
GT_ModHandler.addPulverisationRecipe(new ItemStack(Blocks.red_mushroom, 1, 32767), ItemList.IC2_Grin_Powder.get(1L));
GT_ModHandler.addPulverisationRecipe(new ItemStack(Items.item_frame, 1, 32767), new ItemStack(Items.leather, 1), GT_OreDictUnificator.getDust(Materials.Wood, OrePrefixes.stick.mMaterialAmount * 4L), 95, false);
GT_ModHandler.addPulverisationRecipe(new ItemStack(Items.bow, 1, 0), new ItemStack(Items.string, 3), GT_OreDictUnificator.getDust(Materials.Wood, OrePrefixes.stick.mMaterialAmount * 3L), 95, false);
+ GT_ModHandler.addPulverisationRecipe(Materials.Brick.getIngots(1), Materials.Brick.getDustSmall(1));
+ GT_ModHandler.addPulverisationRecipe(new ItemStack(Blocks.brick_stairs, 1, 0), Materials.Brick.getDustSmall(6));
+ GT_ModHandler.addPulverisationRecipe(ItemList.CompressedFireclay.get(1), Materials.Fireclay.getDustSmall(1));
+ GT_ModHandler.addPulverisationRecipe(ItemList.Firebrick.get(1), Materials.Brick.getDust(1));
+ GT_ModHandler.addPulverisationRecipe(ItemList.Casing_Firebricks.get(1), Materials.Brick.getDust(4));
+ GT_ModHandler.addPulverisationRecipe(ItemList.Machine_Bricked_BlastFurnace.get(1), Materials.Brick.getDust(8), Materials.Iron.getDust(1), true);
+ GT_Values.RA.addPulveriserRecipe(ItemList.Conveyor_Module_LV.get(1), new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Rubber, 5L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Copper, 4L),GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Iron, 3L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Tin, 2L)}, null, 1328, 4);
+
+ GT_Values.RA.addSifterRecipe(new ItemStack(Blocks.gravel, 1, 0), new ItemStack[] {new ItemStack(Items.flint, 1, 0), new ItemStack(Items.flint, 1, 0), new ItemStack(Items.flint, 1, 0), new ItemStack(Items.flint, 1, 0), new ItemStack(Items.flint, 1, 0), new ItemStack(Items.flint, 1, 0)}, new int[] {10000, 9000, 8000, 6000, 3300, 2500}, 600, 16);
+ GT_Values.RA.addSifterRecipe(GT_OreDictUnificator.get(OrePrefixes.crushedPurified, Materials.Coal, 1L), new ItemStack[]{new ItemStack(Items.coal, 1, 0), new ItemStack(Items.coal, 1, 0), new ItemStack(Items.coal, 1, 0), new ItemStack(Items.coal, 1, 0), new ItemStack(Items.coal, 1, 0), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Coal, 1L)}, new int[]{10000, 9000, 8000, 7000, 6000, 5000}, 600, 16);
GT_Values.RA.addForgeHammerRecipe(new ItemStack(Blocks.stonebrick, 1, 0), new ItemStack(Blocks.stonebrick, 1, 2), 10, 16);
GT_Values.RA.addForgeHammerRecipe(new ItemStack(Blocks.stone, 1, 0), new ItemStack(Blocks.cobblestone, 1, 0), 10, 16);
GT_Values.RA.addForgeHammerRecipe(new ItemStack(Blocks.cobblestone, 1, 0), new ItemStack(Blocks.gravel, 1, 0), 10, 16);
GT_Values.RA.addForgeHammerRecipe(new ItemStack(Blocks.gravel, 1, 0), new ItemStack(Blocks.sand, 1, 0), 10, 16);
-
- GT_Values.RA.addSifterRecipe(new ItemStack(Blocks.gravel, 1, 0), new ItemStack[] {new ItemStack(Items.flint, 1, 0), new ItemStack(Items.flint, 1, 0), new ItemStack(Items.flint, 1, 0), new ItemStack(Items.flint, 1, 0), new ItemStack(Items.flint, 1, 0), new ItemStack(Items.flint, 1, 0)}, new int[] {10000, 9000, 8000, 6000, 3300, 2500}, 600, 16);
- GT_Values.RA.addSifterRecipe(GT_OreDictUnificator.get(OrePrefixes.crushedPurified, Materials.Coal, 1L), new ItemStack[]{new ItemStack(Items.coal, 1, 0), new ItemStack(Items.coal, 1, 0), new ItemStack(Items.coal, 1, 0), new ItemStack(Items.coal, 1, 0), new ItemStack(Items.coal, 1, 0), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Coal, 1L)}, new int[]{10000, 9000, 8000, 7000, 6000, 5000}, 600, 16);
-
GT_Values.RA.addForgeHammerRecipe(new ItemStack(Blocks.sandstone, 1, 32767), new ItemStack(Blocks.sand, 1, 0), 10, 16);
GT_Values.RA.addForgeHammerRecipe(new ItemStack(Blocks.ice, 1, 0), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Ice, 1L), 10, 16);
GT_Values.RA.addForgeHammerRecipe(new ItemStack(Blocks.packed_ice, 1, 0), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Ice, 2L), 10, 16);
@@ -1122,23 +1130,15 @@ public class GT_MachineRecipeLoader implements Runnable {
GT_Values.RA.addForgeHammerRecipe(new ItemStack(Blocks.glass, 1, 32767), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Glass, 1L), 10, 10);
GT_Values.RA.addForgeHammerRecipe(new ItemStack(Blocks.stained_glass_pane, 1, 32767), GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Glass, 3L), 10, 16);
GT_Values.RA.addForgeHammerRecipe(new ItemStack(Blocks.glass_pane, 1, 32767), GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Glass, 3L), 10, 16);
-
GT_Values.RA.addForgeHammerRecipe(Materials.Brick.getIngots(1), Materials.Brick.getDustSmall(1), 10, 16);
GT_Values.RA.addForgeHammerRecipe(ItemList.Firebrick.get(1), Materials.Brick.getDust(1), 10, 16);
GT_Values.RA.addForgeHammerRecipe(ItemList.Casing_Firebricks.get(1), ItemList.Firebrick.get(3), 10, 16);
-
- GT_ModHandler.addPulverisationRecipe(Materials.Brick.getIngots(1), Materials.Brick.getDustSmall(1));
- GT_ModHandler.addPulverisationRecipe(new ItemStack(Blocks.brick_stairs, 1, 0), Materials.Brick.getDustSmall(6));
- GT_ModHandler.addPulverisationRecipe(ItemList.CompressedFireclay.get(1), Materials.Fireclay.getDustSmall(1));
- GT_ModHandler.addPulverisationRecipe(ItemList.Firebrick.get(1), Materials.Brick.getDust(1));
- GT_ModHandler.addPulverisationRecipe(ItemList.Casing_Firebricks.get(1), Materials.Brick.getDust(4));
- GT_ModHandler.addPulverisationRecipe(ItemList.Machine_Bricked_BlastFurnace.get(1), Materials.Brick.getDust(8), Materials.Iron.getDust(1), true);
-
- GT_Values.RA.addPulveriserRecipe(ItemList.Conveyor_Module_LV.get(1), new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Rubber, 5L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Copper, 4L),GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Iron, 3L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Tin, 2L)}, null, 1328, 4);
-
- GT_Values.RA.addForgeHammerRecipe(GT_ModHandler.getModItem("HardcoreEnderExpansion", "endium_ore", 1), GT_OreDictUnificator.get(OrePrefixes.crushed, Materials.HeeEndium, 1), 16, 10);
- GT_ModHandler.addPulverisationRecipe(GT_ModHandler.getModItem("HardcoreEnderExpansion", "endium_ore", 1), GT_OreDictUnificator.get(OrePrefixes.crushed, Materials.HeeEndium, 2), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Endstone, 1), 50, GT_Values.NI, 0, true);
- GT_OreDictUnificator.set(OrePrefixes.ingot, Materials.HeeEndium, GT_ModHandler.getModItem("HardcoreEnderExpansion", "endium_ingot", 1), true, true);
+
+ if (Loader.isModLoaded("HardcoreEnderExpansion")) {
+ GT_Values.RA.addForgeHammerRecipe(GT_ModHandler.getModItem("HardcoreEnderExpansion", "endium_ore", 1), GT_OreDictUnificator.get(OrePrefixes.crushed, Materials.HeeEndium, 1), 16, 10);
+ GT_ModHandler.addPulverisationRecipe(GT_ModHandler.getModItem("HardcoreEnderExpansion", "endium_ore", 1), GT_OreDictUnificator.get(OrePrefixes.crushed, Materials.HeeEndium, 2), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Endstone, 1), 50, GT_Values.NI, 0, true);
+ GT_OreDictUnificator.set(OrePrefixes.ingot, Materials.HeeEndium, GT_ModHandler.getModItem("HardcoreEnderExpansion", "endium_ingot", 1), true, true);
+ }
GT_Values.RA.addAmplifier(ItemList.IC2_Scrap.get(9L), 180, 1);
GT_Values.RA.addAmplifier(ItemList.IC2_Scrapbox.get(1L), 180, 1);
@@ -1149,15 +1149,14 @@ public class GT_MachineRecipeLoader implements Runnable {
GT_Values.RA.addBoxingRecipe(ItemList.Food_ChiliChips.get(1L), GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Aluminium, 1L), ItemList.Food_Packaged_ChiliChips.get(1L), 64, 16);
//fuel rod canner recipes
- if (!GregTech_API.mIC2Classic) {
- GT_Values.RA.addCannerRecipe(GT_ModHandler.getIC2Item("fuelRod", 1), GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Lithium, 1L), GT_ModHandler.getIC2Item("reactorLithiumCell", 1, 1), null, 16, 64);
- GT_Values.RA.addFluidExtractionRecipe(GT_ModHandler.getIC2Item("TritiumCell", 1), GT_ModHandler.getIC2Item("fuelRod", 1), Materials.Tritium.getGas(32), 10000, 16, 64);
- GT_Values.RA.addCannerRecipe(GT_ModHandler.getIC2Item("fuelRod", 1), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Thorium, 3), ItemList.ThoriumCell_1.get(1L), null, 30, 16);
- GT_Values.RA.addCannerRecipe(ItemList.Large_Fluid_Cell_TungstenSteel.get(1L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.NaquadahEnriched, 3), ItemList.NaquadahCell_1.get(1L), null, 30, 16);
- GT_Values.RA.addCannerRecipe(ItemList.Large_Fluid_Cell_TungstenSteel.get(1L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Naquadria, 3), ItemList.MNqCell_1.get(1L), null, 30, 16);
- GT_Values.RA.addCannerRecipe(GT_ModHandler.getIC2Item("fuelRod", 1), GT_ModHandler.getIC2Item("UranFuel", 1), ItemList.Uraniumcell_1.get(1), null, 30, 16);
- GT_Values.RA.addCannerRecipe(GT_ModHandler.getIC2Item("fuelRod", 1), GT_ModHandler.getIC2Item("MOXFuel", 1), ItemList.Moxcell_1.get(1), null, 30, 16);
- }
+ GT_Values.RA.addCannerRecipe(GT_ModHandler.getIC2Item("fuelRod", 1), GT_OreDictUnificator.get(OrePrefixes.dustTiny, Materials.Lithium, 1L), GT_ModHandler.getIC2Item("reactorLithiumCell", 1, 1), null, 16, 64);
+ GT_Values.RA.addFluidExtractionRecipe(GT_ModHandler.getIC2Item("TritiumCell", 1), GT_ModHandler.getIC2Item("fuelRod", 1), Materials.Tritium.getGas(32), 10000, 16, 64);
+ GT_Values.RA.addCannerRecipe(GT_ModHandler.getIC2Item("fuelRod", 1), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Thorium, 3), ItemList.ThoriumCell_1.get(1L), null, 30, 16);
+ GT_Values.RA.addCannerRecipe(ItemList.Large_Fluid_Cell_TungstenSteel.get(1L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.NaquadahEnriched, 3), ItemList.NaquadahCell_1.get(1L), null, 30, 16);
+ GT_Values.RA.addCannerRecipe(ItemList.Large_Fluid_Cell_TungstenSteel.get(1L), GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Naquadria, 3), ItemList.MNqCell_1.get(1L), null, 30, 16);
+ GT_Values.RA.addCannerRecipe(GT_ModHandler.getIC2Item("fuelRod", 1), GT_ModHandler.getIC2Item("UranFuel", 1), ItemList.Uraniumcell_1.get(1), null, 30, 16);
+ GT_Values.RA.addCannerRecipe(GT_ModHandler.getIC2Item("fuelRod", 1), GT_ModHandler.getIC2Item("MOXFuel", 1), ItemList.Moxcell_1.get(1), null, 30, 16);
+
//Fusion tiering -T1 32768EU/t -T2 65536EU/t - T3 131073EU/t
//Fusion with margin 32700 65450 131000
//Startup max 160M EU 320M EU 640M EU
diff --git a/src/main/java/gregtech/nei/GT_NEI_AssLineHandler.java b/src/main/java/gregtech/nei/GT_NEI_AssLineHandler.java
index 9afea436d0..6c315edb42 100644
--- a/src/main/java/gregtech/nei/GT_NEI_AssLineHandler.java
+++ b/src/main/java/gregtech/nei/GT_NEI_AssLineHandler.java
@@ -30,6 +30,7 @@ import org.lwjgl.opengl.GL11;
import java.awt.*;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -56,6 +57,12 @@ public class GT_NEI_AssLineHandler extends TemplateRecipeHandler {
}
}
+ public List<GT_Recipe> getSortedRecipes() {
+ List<GT_Recipe> result = new ArrayList<>(this.mRecipeMap.mRecipeList);
+ Collections.sort(result);
+ return result;
+ }
+
public static void drawText(int aX, int aY, String aString, int aColor) {
Minecraft.getMinecraft().fontRenderer.drawString(aString, aX, aY, aColor);
}
@@ -69,7 +76,7 @@ public class GT_NEI_AssLineHandler extends TemplateRecipeHandler {
@Override
public void loadCraftingRecipes(String outputId, Object... results) {
if (outputId.equals(getOverlayIdentifier())) {
- for (GT_Recipe tRecipe : this.mRecipeMap.mRecipeList) {
+ for (GT_Recipe tRecipe : getSortedRecipes()) {
if (!tRecipe.mHidden) {
this.arecipes.add(new CachedDefaultRecipe(tRecipe));
}else{
@@ -102,7 +109,7 @@ public class GT_NEI_AssLineHandler extends TemplateRecipeHandler {
}
}
}
- for (GT_Recipe tRecipe : this.mRecipeMap.mRecipeList) {
+ for (GT_Recipe tRecipe : getSortedRecipes()) {
if (!tRecipe.mHidden) {
CachedDefaultRecipe tNEIRecipe = new CachedDefaultRecipe(tRecipe);
for (ItemStack tStack : tResults) {
diff --git a/src/main/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang
index 9d89ababc0..51b792f44f 100644
--- a/src/main/resources/assets/gregtech/lang/en_US.lang
+++ b/src/main/resources/assets/gregtech/lang/en_US.lang
@@ -775,6 +775,12 @@ achievement.gt.blockmachines.hatch.energy.tier.08=UV Energy Hatch
achievement.gt.blockmachines.hatch.energy.tier.08.desc=Pickup this item to see the recipe in NEI
achievement.gt.blockmachines.hatch.energy.tier.09=UHV Energy Hatch
achievement.gt.blockmachines.hatch.energy.tier.09.desc=Pickup this item to see the recipe in NEI
+achievement.gt.blockmachines.hatch.energy.tier.10=UEV Energy Hatch
+achievement.gt.blockmachines.hatch.energy.tier.10.desc=Pickup this item to see the recipe in NEI
+achievement.gt.blockmachines.hatch.energy.tier.11=UIV Energy Hatch
+achievement.gt.blockmachines.hatch.energy.tier.11.desc=Pickup this item to see the recipe in NEI
+achievement.gt.blockmachines.hatch.energy.tier.12=UMV Energy Hatch
+achievement.gt.blockmachines.hatch.energy.tier.12.desc=Pickup this item to see the recipe in NEI
achievement.gt.blockmachines.hatch.dynamo.tier.06=LuV Dynamo Hatch
achievement.gt.blockmachines.hatch.dynamo.tier.06.desc=Pickup this item to see the recipe in NEI
@@ -784,6 +790,12 @@ achievement.gt.blockmachines.hatch.dynamo.tier.08=UV Dynamo Hatch
achievement.gt.blockmachines.hatch.dynamo.tier.08.desc=Pickup this item to see the recipe in NEI
achievement.gt.blockmachines.hatch.dynamo.tier.09=UHV Dynamo Hatch
achievement.gt.blockmachines.hatch.dynamo.tier.09.desc=Pickup this item to see the recipe in NEI
+achievement.gt.blockmachines.hatch.dynamo.tier.10=UEV Dynamo Hatch
+achievement.gt.blockmachines.hatch.dynamo.tier.10.desc=Pickup this item to see the recipe in NEI
+achievement.gt.blockmachines.hatch.dynamo.tier.11=UIV Dynamo Hatch
+achievement.gt.blockmachines.hatch.dynamo.tier.11.desc=Pickup this item to see the recipe in NEI
+achievement.gt.blockmachines.hatch.dynamo.tier.12=UMV Dynamo Hatch
+achievement.gt.blockmachines.hatch.dynamo.tier.12.desc=Pickup this item to see the recipe in NEI
achievement.gt.blockmachines.fusioncomputer.tier.06=Fusion Computer Mark I
achievement.gt.blockmachines.fusioncomputer.tier.06.desc=Pickup this item to see the recipe in NEI
@@ -809,6 +821,8 @@ achievement.item.PikoCircuit=Piko Circuit
achievement.item.PikoCircuit.desc=Pickup this item to see the recipe in NEI
achievement.item.QuantumCircuit=Quantum Circuit
achievement.item.QuantumCircuit.desc=Pickup this item to see the recipe in NEI
+achievement.item.relocator=Relocator
+achievement.item.relocator.desc=Pickup this item to see the recipe in NEI
achievement.gt.blockmachines.multimachine.em.computer=Quantum Computer
achievement.gt.blockmachines.multimachine.em.computer.desc=Pickup this item to see the recipe in NEI
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeAlloySmelter.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeAlloySmelter.png
index 54e112e67b..7d8bc973b8 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeAlloySmelter.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeAlloySmelter.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeCompressor.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeCompressor.png
index d34569c5f3..dd44d80d76 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeCompressor.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeCompressor.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeExtractor.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeExtractor.png
index decb60232f..4dae2b1794 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeExtractor.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeExtractor.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeFurnace.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeFurnace.png
index 6bbe2eb904..6f9f50584f 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeFurnace.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeFurnace.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeHammer.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeHammer.png
index dc9bbc559d..6509aad78d 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeHammer.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeHammer.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeMacerator.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeMacerator.png
index 38af0ee224..7d7d3ea74a 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeMacerator.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/BronzeMacerator.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelAlloySmelter.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelAlloySmelter.png
index 862c785606..a7aad64078 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelAlloySmelter.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelAlloySmelter.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelCompressor.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelCompressor.png
index cca9978663..8d1815f389 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelCompressor.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelCompressor.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelExtractor.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelExtractor.png
index 700944727f..9bd354a0b3 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelExtractor.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelExtractor.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelFurnace.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelFurnace.png
index 0250f22b31..da52514474 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelFurnace.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelFurnace.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelHammer.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelHammer.png
index f379f8c000..30e2d2a09b 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelHammer.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelHammer.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelMacerator.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelMacerator.png
index 141879d5b6..c313c26bc5 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelMacerator.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/SteelMacerator.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/270.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/270.png
new file mode 100644
index 0000000000..ff42b6f6e5
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/270.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/271.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/271.png
new file mode 100644
index 0000000000..ff42b6f6e5
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/271.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/609.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/609.png
new file mode 100644
index 0000000000..a9f16893b2
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.01/609.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/12.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/12.png
index 8a4fee39f5..45ccdcbac6 100644
--- a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/12.png
+++ b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/12.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/13.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/13.png
index 5af04ce86a..aac7d830d3 100644
--- a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/13.png
+++ b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/13.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/23.png b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/23.png
index 28beb6060d..6fe51d5228 100644
--- a/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/23.png
+++ b/src/main/resources/assets/gregtech/textures/items/gt.metaitem.03/23.png
Binary files differ