diff options
| author | Jason Mitchell <mitchej@gmail.com> | 2022-01-28 18:47:12 -0800 | 
|---|---|---|
| committer | Jason Mitchell <mitchej+github@gmail.com> | 2022-01-28 19:04:47 -0800 | 
| commit | 746a6d96932c35dcea9a29cebb1be60528c1d63e (patch) | |
| tree | 98292d52bf82ec709d95aa1f80547ad661956507 | |
| parent | 3d2640eab73e1ecb17cff4700d8aa83fb324ee37 (diff) | |
| download | GT5-Unofficial-746a6d96932c35dcea9a29cebb1be60528c1d63e.tar.gz GT5-Unofficial-746a6d96932c35dcea9a29cebb1be60528c1d63e.tar.bz2 GT5-Unofficial-746a6d96932c35dcea9a29cebb1be60528c1d63e.zip | |
Bring Waila handling in house
Update deps
| -rw-r--r-- | dependencies.gradle | 13 | ||||
| -rw-r--r-- | src/main/java/gregtech/GT_Mod.java | 2 | ||||
| -rw-r--r-- | src/main/java/gregtech/crossmod/GregtechWailaDataProvider.java | 187 | ||||
| -rw-r--r-- | src/main/java/gregtech/crossmod/Waila.java | 28 | 
4 files changed, 224 insertions, 6 deletions
| diff --git a/dependencies.gradle b/dependencies.gradle index 22e929c166..7ac1152b09 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -4,26 +4,27 @@  // also being more explicit about what is depended on.  dependencies { -    compile("com.github.GTNewHorizons:StructureLib:1.0.14:dev") -    compile("com.github.GTNewHorizons:NotEnoughItems:2.1.22-GTNH:dev") +    compile("com.github.GTNewHorizons:StructureLib:1.0.15:dev") +    compile("com.github.GTNewHorizons:NotEnoughItems:2.2.3-GTNH:dev")      compile("com.github.GTNewHorizons:CodeChickenCore:1.1.3:dev")      compile("com.github.GTNewHorizons:CodeChickenLib:1.1.5.1:dev") - +    compile("com.github.GTNewHorizons:waila:1.5.18:dev") +          compile("net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev")      compileOnly("com.github.GTNewHorizons:EnderCore:0.2.6:dev") {          transitive = false      } -    compileOnly("com.github.GTNewHorizons:ForestryMC:4.4.4:dev") { +    compileOnly("com.github.GTNewHorizons:ForestryMC:4.4.5:dev") {          transitive = false      }      compileOnly("com.github.GTNewHorizons:Railcraft:9.13.5:dev") {          transitive = false      } -    compileOnly("com.github.GTNewHorizons:Galacticraft:3.0.36-GTNH:dev") { +    compileOnly("com.github.GTNewHorizons:Galacticraft:3.0.37-GTNH:dev") {          transitive = false      } -    compileOnly("com.github.GTNewHorizons:AppleCore:3.1.6:dev") { +    compileOnly("com.github.GTNewHorizons:AppleCore:3.1.7:dev") {          transitive = false      }      compileOnly("com.github.GTNewHorizons:TinkersConstruct:1.9.0.10-GTNH:dev") { diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java index 474fd5decc..bfe7a96b81 100644 --- a/src/main/java/gregtech/GT_Mod.java +++ b/src/main/java/gregtech/GT_Mod.java @@ -27,6 +27,7 @@ import gregtech.common.entities.GT_Entity_Arrow;  import gregtech.common.entities.GT_Entity_Arrow_Potion;  import gregtech.common.misc.GT_Command;  import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalChestBase; +import gregtech.crossmod.Waila;  import gregtech.loaders.ExtraIcons;  import gregtech.loaders.load.GT_CoverBehaviorLoader;  import gregtech.loaders.load.GT_FuelLoader; @@ -250,6 +251,7 @@ public class GT_Mod implements IGT_Mod {              gregtechproxy.registerUnificationEntries();              new GT_FuelLoader().run();          } +        Waila.init();          GregTech_API.sLoadFinished = true;          GT_Log.out.println("GT_Mod: Load-Phase finished!");          GT_Log.ore.println("GT_Mod: Load-Phase finished!"); diff --git a/src/main/java/gregtech/crossmod/GregtechWailaDataProvider.java b/src/main/java/gregtech/crossmod/GregtechWailaDataProvider.java new file mode 100644 index 0000000000..94591c60df --- /dev/null +++ b/src/main/java/gregtech/crossmod/GregtechWailaDataProvider.java @@ -0,0 +1,187 @@ +package gregtech.crossmod; + +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.BaseMetaPipeEntity; +import gregtech.api.metatileentity.BaseMetaTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Transformer; +import gregtech.common.covers.GT_Cover_Fluidfilter; +import gregtech.common.tileentities.boilers.GT_MetaTileEntity_Boiler_Solar; +import gregtech.common.tileentities.machines.long_distance.GT_MetaTileEntity_LongDistancePipelineBase; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import static mcp.mobius.waila.api.SpecialChars.RESET; +import static mcp.mobius.waila.api.SpecialChars.GOLD; +import static mcp.mobius.waila.api.SpecialChars.BLUE; +import static mcp.mobius.waila.api.SpecialChars.GREEN; +import static mcp.mobius.waila.api.SpecialChars.RED; + +import java.util.List; + +public class GregtechWailaDataProvider implements IWailaDataProvider { +    private String getKey(String key) { +        return "Gregtech5U:" + key; +    } +     +    @Override +    public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) { +        return null; +    } + +    @Override +    public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { +        return currenttip; +    } +    @Override +    public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { +        final TileEntity tile = accessor.getTileEntity(); +        MovingObjectPosition pos = accessor.getPosition(); +        NBTTagCompound tag = accessor.getNBTData(); +        final int side = (byte)accessor.getSide().ordinal(); + +        final IGregTechTileEntity tBaseMetaTile = tile instanceof IGregTechTileEntity ? ((IGregTechTileEntity) tile) : null; +        final IMetaTileEntity tMeta = tBaseMetaTile != null ? tBaseMetaTile.getMetaTileEntity() : null; +        final BaseMetaTileEntity mBaseMetaTileEntity = tile instanceof  BaseMetaTileEntity ? ((BaseMetaTileEntity) tile) : null; +        final GT_MetaTileEntity_BasicMachine BasicMachine = tMeta instanceof GT_MetaTileEntity_BasicMachine ? ((GT_MetaTileEntity_BasicMachine) tMeta) : null; +        final GT_MetaTileEntity_MultiBlockBase multiBlockBase = tMeta instanceof GT_MetaTileEntity_MultiBlockBase ? ((GT_MetaTileEntity_MultiBlockBase) tMeta) : null; + +        final boolean showTransformer = tMeta instanceof GT_MetaTileEntity_Transformer && config.getConfig(getKey("transformer")); +        final boolean showLDP = tMeta instanceof GT_MetaTileEntity_LongDistancePipelineBase && config.getConfig(getKey("LDP")); +        final boolean showSolar = tMeta instanceof GT_MetaTileEntity_Boiler_Solar && config.getConfig(getKey("solar")); +        final boolean allowedToWork = tag.hasKey("isAllowedToWork") && tag.getBoolean("isAllowedToWork"); + +        if (tBaseMetaTile != null && config.getConfig(getKey("fluidFilter"))) { +            final String filterKey = "filterInfo" + side; +            if (tag.hasKey(filterKey)) { +                currenttip.add(tag.getString(filterKey)); +            } +        } + +        if (tMeta != null) { +            String facingStr = "Facing"; +            if (showTransformer && tag.hasKey("isAllowedToWork")) { +                currenttip.add( +                    String.format( +                        "%s %d(%dA) -> %d(%dA)", +                        (allowedToWork ? (GREEN + "Step Down") : (RED + "Step Up")) + RESET, +                        tag.getLong("maxEUInput"), +                        tag.getLong("maxAmperesIn"), +                        tag.getLong("maxEUOutput"), +                        tag.getLong("maxAmperesOut") +                    ) +                ); +                facingStr = tag.getBoolean("isAllowedToWork") ? "Input" : "Output"; +            } +            if (showSolar && tag.hasKey("calcificationOutput")) { +                currenttip.add(String.format((GOLD + "Solar Boiler Output: " + RESET + "%d/%d L/s"), tag.getInteger("calcificationOutput"), tag.getInteger("maxCalcificationOutput"))); +            } + +            if (mBaseMetaTileEntity != null && config.getConfig(getKey("machineFacing"))) { +                final int facing = mBaseMetaTileEntity.getFrontFacing(); +                if(showTransformer) { +                    if((side == facing && allowedToWork) || (side != facing && !allowedToWork)) { +                        currenttip.add(String.format(GOLD + "Input:" + RESET + " %d(%dA)", tag.getLong("maxEUInput"), tag.getLong("maxAmperesIn"))); +                    } else { +                        currenttip.add(String.format(BLUE + "Output:" + RESET + " %d(%dA)", tag.getLong("maxEUOutput"), tag.getLong("maxAmperesOut"))); +                    } +                } else if (showLDP) { +                    if(side == facing) +                        currenttip.add(GOLD + "Pipeline Input" + RESET); +                    else if (side == ForgeDirection.OPPOSITES[facing]) +                        currenttip.add(BLUE + "Pipeline Output" + RESET); +                    else +                        currenttip.add("Pipeline Side"); +                } else { +                    currenttip.add(String.format("%s: %s", facingStr, ForgeDirection.getOrientation(facing).name())); +                } +            } + +            if (BasicMachine != null && config.getConfig(getKey("basicmachine"))) { +                currenttip.add(String.format("Progress: %d s / %d s", tag.getInteger("progressSingleBlock"), tag.getInteger("maxProgressSingleBlock"))); +            } + +            if(multiBlockBase != null && config.getConfig(getKey("multiblock"))) { +                if(tag.getBoolean("incompleteStructure")) { +                    currenttip.add(RED + "** INCOMPLETE STRUCTURE **" + RESET); +                } +                currenttip.add((tag.getBoolean("hasProblems") ? (RED + "** HAS PROBLEMS **") : GREEN + "Running Fine") + RESET +                                   + "  Efficiency: " + tag.getFloat("efficiency") + "%"); + +                currenttip.add(String.format("Progress: %d s / %d s", tag.getInteger("progress"), tag.getInteger("maxProgress"))); + +            } +        } +        return currenttip; +    } +    @Override +    public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { +        final TileEntity tile = accessor.getTileEntity(); +        return currenttip; +    } + +    @Override +    public NBTTagCompound getNBTData(final EntityPlayerMP player, final TileEntity tile, final NBTTagCompound tag, final World world, int x, int y, int z) { +        final IGregTechTileEntity tBaseMetaTile = tile instanceof IGregTechTileEntity ? ((IGregTechTileEntity) tile) : null; +        final IMetaTileEntity tMeta = tBaseMetaTile != null ? tBaseMetaTile.getMetaTileEntity() : null; +        final GT_MetaTileEntity_BasicMachine BasicMachine = tMeta instanceof GT_MetaTileEntity_BasicMachine ? ((GT_MetaTileEntity_BasicMachine) tMeta) : null; +        final GT_MetaTileEntity_MultiBlockBase multiBlockBase = tMeta instanceof GT_MetaTileEntity_MultiBlockBase ? ((GT_MetaTileEntity_MultiBlockBase) tMeta) : null; + +        if (tMeta != null) { +            if (tMeta instanceof GT_MetaTileEntity_Transformer) { +                final GT_MetaTileEntity_Transformer transformer = (GT_MetaTileEntity_Transformer)tMeta; +                tag.setBoolean("isAllowedToWork", tMeta.getBaseMetaTileEntity().isAllowedToWork()); +                tag.setLong("maxEUInput", transformer.maxEUInput()); +                tag.setLong("maxAmperesIn", transformer.maxAmperesIn()); +                tag.setLong("maxEUOutput", transformer.maxEUOutput()); +                tag.setLong("maxAmperesOut", transformer.maxAmperesOut()); +            } else if (tMeta instanceof GT_MetaTileEntity_Boiler_Solar) { +                final GT_MetaTileEntity_Boiler_Solar solar = (GT_MetaTileEntity_Boiler_Solar)tMeta; +                tag.setInteger("calcificationOutput", (solar.getProductionPerSecond())); +                tag.setInteger("maxCalcificationOutput", (solar.getMaxOutputPerSecond())); +            } + +            if (BasicMachine != null) { +                final int progressSingleBlock = BasicMachine.mProgresstime/20; +                final int maxProgressSingleBlock = BasicMachine.mMaxProgresstime/20; +                tag.setInteger("progressSingleBlock", progressSingleBlock); +                tag.setInteger("maxProgressSingleBlock", maxProgressSingleBlock); +            } + +            if (multiBlockBase != null) { +                final int problems = multiBlockBase.getIdealStatus() - multiBlockBase.getRepairStatus(); +                final float efficiency = multiBlockBase.mEfficiency / 100.0F; +                final int progress = multiBlockBase.mProgresstime/20; +                final int maxProgress = multiBlockBase.mMaxProgresstime/20; + +                tag.setBoolean("hasProblems", problems > 0); +                tag.setFloat("efficiency", efficiency); +                tag.setInteger("progress", progress); +                tag.setInteger("maxProgress", maxProgress); +                tag.setBoolean("incompleteStructure", (tBaseMetaTile.getErrorDisplayID() & 64) != 0); + +            } +        } +        if (tBaseMetaTile != null) { +            if (tBaseMetaTile instanceof BaseMetaPipeEntity) { +                for(byte side=0 ; side < 6 ; side++) { +                    if(tBaseMetaTile.getCoverBehaviorAtSideNew(side) instanceof GT_Cover_Fluidfilter) { +                        tag.setString("filterInfo" + side, ((GT_Cover_Fluidfilter) tBaseMetaTile.getCoverBehaviorAtSideNew(side)).getDescription(side, tBaseMetaTile.getCoverIDAtSide(side), tBaseMetaTile.getComplexCoverDataAtSide(side), tBaseMetaTile)); +                    } +                } +            } +        } + +        return tag; +    } +} diff --git a/src/main/java/gregtech/crossmod/Waila.java b/src/main/java/gregtech/crossmod/Waila.java new file mode 100644 index 0000000000..c8bdb1b275 --- /dev/null +++ b/src/main/java/gregtech/crossmod/Waila.java @@ -0,0 +1,28 @@ +package gregtech.crossmod; + +import cpw.mods.fml.common.event.FMLInterModComms; +import gregtech.api.metatileentity.BaseMetaPipeEntity; +import gregtech.api.metatileentity.BaseMetaTileEntity; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.api.IWailaRegistrar; + +public class Waila { +    public static void callbackRegister(IWailaRegistrar register){ +        final IWailaDataProvider multiBlockProvider = new GregtechWailaDataProvider(); + +        register.registerBodyProvider(multiBlockProvider, BaseMetaTileEntity.class); +        register.registerBodyProvider(multiBlockProvider, BaseMetaPipeEntity.class); +         +        register.registerNBTProvider(multiBlockProvider, BaseMetaTileEntity.class); +        register.registerNBTProvider(multiBlockProvider, BaseMetaPipeEntity.class); +         +        register.registerTailProvider(multiBlockProvider, BaseMetaTileEntity.class); +        register.registerTailProvider(multiBlockProvider, BaseMetaPipeEntity.class); +    } + +    public static void init()  { +        FMLInterModComms.sendMessage("Waila", "register", Waila.class.getName() + ".callbackRegister" ); +    } + + +} | 
