From 7ff81ad637b559af46b3f0f8bd8582faa623d388 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Wed, 28 Dec 2016 03:12:17 +0100 Subject: [PATCH] Make Phantomfaces only actually support the capabilities they advertise --- .../mod/tile/TileEntityPhantomEnergyface.java | 6 ++++++ .../mod/tile/TileEntityPhantomItemface.java | 6 ++++++ .../mod/tile/TileEntityPhantomLiquiface.java | 6 ++++++ .../mod/tile/TileEntityPhantomRedstoneface.java | 6 ++++++ .../actuallyadditions/mod/tile/TileEntityPhantomface.java | 8 +++++--- 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomEnergyface.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomEnergyface.java index 649306f90..571dda896 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomEnergyface.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomEnergyface.java @@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.blocks.BlockPhantom; import de.ellpeck.actuallyadditions.mod.util.compat.TeslaUtil; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.energy.CapabilityEnergy; public class TileEntityPhantomEnergyface extends TileEntityPhantomface implements ISharingEnergyProvider{ @@ -44,6 +45,11 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement return false; } + @Override + protected boolean isCapabilitySupported(Capability capability){ + return capability == CapabilityEnergy.ENERGY || capability == TeslaUtil.teslaHolder || capability == TeslaUtil.teslaConsumer || capability == TeslaUtil.teslaProducer; + } + @Override public int getEnergyToSplitShare(){ return Integer.MAX_VALUE; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomItemface.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomItemface.java index 0eff0d509..3b5092e38 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomItemface.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomItemface.java @@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.blocks.BlockPhantom; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; public class TileEntityPhantomItemface extends TileEntityPhantomface{ @@ -43,6 +44,11 @@ public class TileEntityPhantomItemface extends TileEntityPhantomface{ return false; } + @Override + protected boolean isCapabilitySupported(Capability capability){ + return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY; + } + @Override public boolean canExtractItem(int slot, ItemStack stack){ return this.isBoundThingInRange(); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomLiquiface.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomLiquiface.java index b9e9f687c..b9bf779a8 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomLiquiface.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomLiquiface.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import de.ellpeck.actuallyadditions.mod.blocks.BlockPhantom; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fluids.capability.CapabilityFluidHandler; public class TileEntityPhantomLiquiface extends TileEntityPhantomface implements ISharingFluidHandler{ @@ -37,6 +38,11 @@ public class TileEntityPhantomLiquiface extends TileEntityPhantomface implements return false; } + @Override + protected boolean isCapabilitySupported(Capability capability){ + return capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY; + } + @Override public int getMaxFluidAmountToSplitShare(){ return Integer.MAX_VALUE; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomRedstoneface.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomRedstoneface.java index a9756a7e4..1aad7e83d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomRedstoneface.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomRedstoneface.java @@ -13,6 +13,7 @@ package de.ellpeck.actuallyadditions.mod.tile; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.capabilities.Capability; import java.util.Arrays; @@ -61,4 +62,9 @@ public class TileEntityPhantomRedstoneface extends TileEntityPhantomface{ super.onUpdateSent(); } + + @Override + protected boolean isCapabilitySupported(Capability capability){ + return false; + } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomface.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomface.java index 4bf215a46..778c5ea9e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomface.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityPhantomface.java @@ -24,7 +24,7 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -public class TileEntityPhantomface extends TileEntityInventoryBase implements IPhantomTile{ +public abstract class TileEntityPhantomface extends TileEntityInventoryBase implements IPhantomTile{ public static final int RANGE = 16; public BlockPos boundPosition; @@ -170,9 +170,11 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP return this.range; } + protected abstract boolean isCapabilitySupported(Capability capability); + @Override public boolean hasCapability(Capability capability, EnumFacing facing){ - if(this.isBoundThingInRange()){ + if(this.isBoundThingInRange() && this.isCapabilitySupported(capability)){ TileEntity tile = this.world.getTileEntity(this.getBoundPosition()); if(tile != null){ return tile.hasCapability(capability, facing); @@ -183,7 +185,7 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP @Override public T getCapability(Capability capability, EnumFacing facing){ - if(this.isBoundThingInRange()){ + if(this.isBoundThingInRange() && this.isCapabilitySupported(capability)){ TileEntity tile = this.world.getTileEntity(this.getBoundPosition()); if(tile != null){ return tile.getCapability(capability, facing);