11package extracells .part ;
22
3+ import static net .minecraftforge .common .util .Constants .NBT .TAG_COMPOUND ;
4+
35import java .io .IOException ;
46import java .util .Arrays ;
57import java .util .List ;
810import net .minecraft .entity .player .EntityPlayer ;
911import net .minecraft .item .ItemStack ;
1012import net .minecraft .nbt .NBTTagCompound ;
13+ import net .minecraft .nbt .NBTTagList ;
1114import net .minecraft .tileentity .TileEntity ;
1215import net .minecraft .util .Vec3 ;
1316import net .minecraftforge .common .util .ForgeDirection ;
2124import appeng .api .networking .ticking .TickRateModulation ;
2225import appeng .api .networking .ticking .TickingRequest ;
2326import appeng .api .parts .IPartCollisionHelper ;
27+ import appeng .api .parts .IPartDeprecated ;
2428import appeng .api .parts .IPartHost ;
2529import appeng .api .parts .IPartRenderHelper ;
2630import cpw .mods .fml .relauncher .Side ;
2731import cpw .mods .fml .relauncher .SideOnly ;
2832import extracells .Extracells ;
2933import extracells .container .ContainerBusFluidIO ;
3034import extracells .gui .GuiBusFluidIO ;
35+ import extracells .integration .Integration ;
36+ import extracells .integration .ae2fc .FluidCraft ;
3137import extracells .item .ItemPartECBase ;
3238import extracells .network .packet .other .IFluidSlotPartOrBlock ;
3339import extracells .network .packet .other .PacketFluidSlot ;
3743import io .netty .buffer .ByteBuf ;
3844
3945public abstract class PartFluidIO extends PartECBase
40- implements IGridTickable , IInventoryUpdateReceiver , IFluidSlotPartOrBlock {
46+ implements IGridTickable , IInventoryUpdateReceiver , IFluidSlotPartOrBlock , IPartDeprecated {
4147
4248 public Fluid [] filterFluids = new Fluid [9 ];
4349 private RedstoneMode redstoneMode = RedstoneMode .IGNORE ;
@@ -181,6 +187,16 @@ public void onNeighborChanged() {
181187 this .lastRedstone = redstonePowered ;
182188 }
183189
190+ /**
191+ * Map for converting slots from bus EC2 -> AE2FC
192+ */
193+ private static int [] FILTER_MAP = null ;
194+ static {
195+ if (Integration .Mods .FLUIDCRAFT .isEnabled ()) {
196+ FILTER_MAP = new int [] { 5 , 3 , 6 , 1 , 0 , 2 , 7 , 4 , 8 };
197+ }
198+ }
199+
184200 @ Override
185201 public final void readFromNBT (NBTTagCompound data ) {
186202 super .readFromNBT (data );
@@ -192,6 +208,57 @@ public final void readFromNBT(NBTTagCompound data) {
192208 onInventoryChanged ();
193209 }
194210
211+ @ Override
212+ public NBTTagCompound transformNBT (NBTTagCompound extra ) {
213+ if (Integration .Mods .FLUIDCRAFT .isEnabled ()) {
214+ // Transform NBT in place
215+ // Fluid Filter
216+ NBTTagCompound fluidFilterNew = new NBTTagCompound ();
217+ for (int slot = 0 ; slot < 9 ; ++slot ) {
218+ String oldFilterName = "FilterFluid#" + slot ;
219+ fluidFilterNew
220+ .setTag ("#" + FILTER_MAP [slot ], FluidCraft .createFluidDisplay (extra .getString (oldFilterName )));
221+ extra .removeTag (oldFilterName );
222+ }
223+ extra .setTag ("config" , fluidFilterNew );
224+ // Upgrades
225+ NBTTagList upgrades = extra .getTagList ("upgradeInventory" , TAG_COMPOUND );
226+ NBTTagCompound upgradesNew = new NBTTagCompound ();
227+ for (int i = 0 ; i < 4 ; ++i ) {
228+ NBTTagCompound upgrade = upgrades .getCompoundTagAt (i );
229+ upgrade .removeTag ("Slot" );
230+ upgradesNew .setTag ("#" + i , upgrade );
231+ }
232+ extra .removeTag ("upgradeInventory" );
233+ extra .setTag ("upgrades" , upgradesNew );
234+ // Redstone mode
235+ RedstoneMode redstoneMode = RedstoneMode .values ()[extra .getInteger ("redstoneMode" )];
236+ switch (redstoneMode ) {
237+ case LOW_SIGNAL :
238+ extra .setString ("REDSTONE_CONTROLLED" , "LOW_SIGNAL" );
239+ break ;
240+ case HIGH_SIGNAL :
241+ extra .setString ("REDSTONE_CONTROLLED" , "HIGH_SIGNAL" );
242+ break ;
243+ case SIGNAL_PULSE :
244+ extra .setString ("REDSTONE_CONTROLLED" , "SIGNAL_PULSE" );
245+ break ;
246+ default :
247+ extra .setString ("REDSTONE_CONTROLLED" , "IGNORE" );
248+ break ;
249+ }
250+ extra .removeTag ("redstoneMode" );
251+ // Part data
252+ extra .setTag ("part" , extra .getCompoundTag ("node" ).getCompoundTag ("node0" ));
253+ extra .removeTag ("node" );
254+ // Extra tags
255+ extra .setString ("CRAFT_ONLY" , "NO" );
256+ extra .setString ("FUZZY_MODE" , "IGNORE_ALL" );
257+ extra .setString ("SCHEDULING_MODE" , "DEFAULT" );
258+ }
259+ return extra ;
260+ }
261+
195262 @ Override
196263 public final boolean readFromStream (ByteBuf data ) throws IOException {
197264 return super .readFromStream (data );
0 commit comments