From f00d5c297f7ac44756d2f6002ce069ba554dcdba Mon Sep 17 00:00:00 2001 From: TheJulianJES Date: Sat, 16 May 2015 20:58:00 +0200 Subject: [PATCH] Parts display correctly in WAILA Register an method that can be overidden Register the same method in the interface New class that picks the item and displays it to WAILA Register the new class and call the other class method Import in PartWailaDataProvider Fixed errors Renamed all Display -> Stack Stuff --- .../appeng/integration/modules/Waila.java | 1 + .../modules/waila/PartWailaDataProvider.java | 22 +++++++++- .../waila/part/BasePartWailaDataProvider.java | 7 ++++ .../waila/part/IPartWailaDataProvider.java | 3 ++ .../part/PartStackWailaDataProvider.java | 42 +++++++++++++++++++ 5 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 src/main/java/appeng/integration/modules/waila/part/PartStackWailaDataProvider.java diff --git a/src/main/java/appeng/integration/modules/Waila.java b/src/main/java/appeng/integration/modules/Waila.java index 94d4cfe4..bc982261 100644 --- a/src/main/java/appeng/integration/modules/Waila.java +++ b/src/main/java/appeng/integration/modules/Waila.java @@ -38,6 +38,7 @@ public class Waila extends BaseModule { final IWailaDataProvider partHost = new PartWailaDataProvider(); + registrar.registerStackProvider( partHost, AEBaseTile.class ); registrar.registerBodyProvider( partHost, AEBaseTile.class ); registrar.registerNBTProvider( partHost, AEBaseTile.class ); diff --git a/src/main/java/appeng/integration/modules/waila/PartWailaDataProvider.java b/src/main/java/appeng/integration/modules/waila/PartWailaDataProvider.java index 73e35e7d..20cacb26 100644 --- a/src/main/java/appeng/integration/modules/waila/PartWailaDataProvider.java +++ b/src/main/java/appeng/integration/modules/waila/PartWailaDataProvider.java @@ -38,6 +38,7 @@ import appeng.api.parts.IPart; import appeng.integration.modules.waila.part.ChannelWailaDataProvider; import appeng.integration.modules.waila.part.IPartWailaDataProvider; import appeng.integration.modules.waila.part.PartAccessor; +import appeng.integration.modules.waila.part.PartStackWailaDataProvider; import appeng.integration.modules.waila.part.PowerStateWailaDataProvider; import appeng.integration.modules.waila.part.StorageMonitorWailaDataProvider; import appeng.integration.modules.waila.part.Tracer; @@ -75,13 +76,32 @@ public final class PartWailaDataProvider implements IWailaDataProvider final IPartWailaDataProvider channel = new ChannelWailaDataProvider(); final IPartWailaDataProvider storageMonitor = new StorageMonitorWailaDataProvider(); final IPartWailaDataProvider powerState = new PowerStateWailaDataProvider(); + final IPartWailaDataProvider partStack = new PartStackWailaDataProvider(); - this.providers = Lists.newArrayList( channel, storageMonitor, powerState ); + this.providers = Lists.newArrayList( channel, storageMonitor, powerState, partStack ); } @Override public ItemStack getWailaStack( IWailaDataAccessor accessor, IWailaConfigHandler config ) { + final TileEntity te = accessor.getTileEntity(); + final MovingObjectPosition mop = accessor.getPosition(); + + final Optional maybePart = this.accessor.getMaybePart( te, mop ); + + if( maybePart.isPresent() ) + { + final IPart part = maybePart.get(); + + ItemStack wailaStack = null; + + for( IPartWailaDataProvider provider : this.providers ) + { + wailaStack = provider.getWailaStack( part, config, wailaStack ); + } + return wailaStack; + } + return null; } diff --git a/src/main/java/appeng/integration/modules/waila/part/BasePartWailaDataProvider.java b/src/main/java/appeng/integration/modules/waila/part/BasePartWailaDataProvider.java index 00394a97..b7042238 100644 --- a/src/main/java/appeng/integration/modules/waila/part/BasePartWailaDataProvider.java +++ b/src/main/java/appeng/integration/modules/waila/part/BasePartWailaDataProvider.java @@ -22,6 +22,7 @@ package appeng.integration.modules.waila.part; import java.util.List; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -41,6 +42,12 @@ import appeng.api.parts.IPart; */ public abstract class BasePartWailaDataProvider implements IPartWailaDataProvider { + @Override + public ItemStack getWailaStack( IPart part, IWailaConfigHandler config, ItemStack partStack ) + { + return null; + } + @Override public List getWailaHead( IPart part, List currentToolTip, IWailaDataAccessor accessor, IWailaConfigHandler config ) { diff --git a/src/main/java/appeng/integration/modules/waila/part/IPartWailaDataProvider.java b/src/main/java/appeng/integration/modules/waila/part/IPartWailaDataProvider.java index d6a79f7f..0aeadf84 100644 --- a/src/main/java/appeng/integration/modules/waila/part/IPartWailaDataProvider.java +++ b/src/main/java/appeng/integration/modules/waila/part/IPartWailaDataProvider.java @@ -22,6 +22,7 @@ package appeng.integration.modules.waila.part; import java.util.List; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -41,6 +42,8 @@ import appeng.api.parts.IPart; */ public interface IPartWailaDataProvider { + ItemStack getWailaStack( IPart part, IWailaConfigHandler config, ItemStack partStack ); + List getWailaHead( IPart part, List currentToolTip, IWailaDataAccessor accessor, IWailaConfigHandler config ); List getWailaBody( IPart part, List currentToolTip, IWailaDataAccessor accessor, IWailaConfigHandler config ); diff --git a/src/main/java/appeng/integration/modules/waila/part/PartStackWailaDataProvider.java b/src/main/java/appeng/integration/modules/waila/part/PartStackWailaDataProvider.java new file mode 100644 index 00000000..b70d5902 --- /dev/null +++ b/src/main/java/appeng/integration/modules/waila/part/PartStackWailaDataProvider.java @@ -0,0 +1,42 @@ +/* + * This file is part of Applied Energistics 2. + * Copyright (c) 2013 - 2015, AlgorithmX2, All rights reserved. + * + * Applied Energistics 2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Applied Energistics 2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Applied Energistics 2. If not, see . + */ + +package appeng.integration.modules.waila.part; + +import appeng.api.parts.IPart; +import appeng.api.parts.PartItemStack; +import mcp.mobius.waila.api.IWailaConfigHandler; +import net.minecraft.item.ItemStack; + +/** + * Part ItemStack provider for WAILA + * + * @author TheJulianJES + * @version rv3 + * @since rv3 + */ +public class PartStackWailaDataProvider extends BasePartWailaDataProvider { + + @Override + public ItemStack getWailaStack( IPart part, IWailaConfigHandler config, ItemStack partStack ) + { + partStack = part.getItemStack( PartItemStack.Pick ); + return partStack; + } + +} \ No newline at end of file