Skip to content

Commit 7bb40b2

Browse files
committed
Clean up WAILA compat.
1 parent 000af9f commit 7bb40b2

1 file changed

Lines changed: 110 additions & 81 deletions

File tree

src/main/java/com/blakebr0/extendedcrafting/compat/WailaDataProvider.java

Lines changed: 110 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -15,102 +15,131 @@
1515
import mcp.mobius.waila.api.IWailaDataAccessor;
1616
import mcp.mobius.waila.api.IWailaDataProvider;
1717
import mcp.mobius.waila.api.IWailaRegistrar;
18-
import net.minecraft.block.Block;
1918
import net.minecraft.item.ItemStack;
2019
import net.minecraft.tileentity.TileEntity;
2120

21+
import javax.annotation.Nonnull;
2222
import java.util.List;
2323

24+
import static com.blakebr0.extendedcrafting.compat.WailaDataProvider.TooltipProvider.of;
25+
2426
@MethodsReturnNonnullByDefault
2527
@SuppressWarnings("unused")
2628
public class WailaDataProvider implements IWailaDataProvider {
2729

2830
public static void callbackRegister(IWailaRegistrar registrar) {
29-
registrar.registerBodyProvider(new WailaDataProvider(), BlockLamp.class);
30-
registrar.registerBodyProvider(new WailaDataProvider(), BlockTrimmed.class);
31-
registrar.registerBodyProvider(new WailaDataProvider(), BlockBasicTable.class);
32-
registrar.registerBodyProvider(new WailaDataProvider(), BlockAdvancedTable.class);
33-
registrar.registerBodyProvider(new WailaDataProvider(), BlockEliteTable.class);
34-
registrar.registerBodyProvider(new WailaDataProvider(), BlockUltimateTable.class);
35-
registrar.registerBodyProvider(new WailaDataProvider(), BlockPedestal.class);
36-
registrar.registerBodyProvider(new WailaDataProvider(), BlockCraftingCore.class);
37-
registrar.registerBodyProvider(new WailaDataProvider(), BlockAutomationInterface.class);
38-
registrar.registerBodyProvider(new WailaDataProvider(), BlockEnderCrafter.class);
39-
registrar.registerBodyProvider(new WailaDataProvider(), BlockCompressor.class);
31+
registrar.registerBodyProvider(of((stack, tooltip, data, config) ->
32+
tooltip.add(Utils.localize("tooltip.ec.lamp_" + BlockLamp.Type.byMetadata(data.getMetadata()).getName()))),
33+
BlockLamp.class
34+
);
35+
36+
registrar.registerBodyProvider(of((stack, tooltip, data, config) ->
37+
tooltip.add(Utils.localize("tooltip.ec.trimmed_" + BlockTrimmed.Type.byMetadata(data.getMetadata()).getName()))),
38+
BlockTrimmed.class
39+
);
40+
41+
registrar.registerBodyProvider(checkTile(TilePedestal.class, (stack, tooltip, data, config, pedestal) -> {
42+
ItemStack result = pedestal.getStack();
43+
if (!result.isEmpty()) {
44+
tooltip.add(result.getDisplayName());
45+
}
46+
}),
47+
BlockPedestal.class
48+
);
49+
50+
registrar.registerBodyProvider(checkTile(TileCraftingCore.class, (stack, tooltip, data, config, core) -> {
51+
if (ModConfig.confEnergyInWaila) {
52+
tooltip.add(Utils.format(core.getEnergy().getEnergyStored()) + " FE");
53+
}
54+
55+
CombinationRecipe recipe = core.getRecipe();
56+
ItemStack output = recipe == null ? ItemStack.EMPTY : recipe.getOutput();
57+
tooltip.add(Utils.localize("tooltip.ec.crafting", output.getCount(), output.getDisplayName()));
58+
}),
59+
BlockCraftingCore.class
60+
);
61+
62+
registrar.registerBodyProvider(checkTile(TileAutomationInterface.class, (stack, tooltip, data, config, auto) -> {
63+
if (ModConfig.confEnergyInWaila) {
64+
tooltip.add(Utils.format(auto.getEnergy().getEnergyStored()) + " FE");
65+
}
66+
67+
ItemStack result = auto.getResult();
68+
if (!result.isEmpty()) {
69+
tooltip.add(Utils.localize("tooltip.ec.crafting", result.getCount(), result.getDisplayName()));
70+
}
71+
}),
72+
BlockAutomationInterface.class
73+
);
74+
75+
registrar.registerBodyProvider(checkTile(TileEnderCrafter.class, (stack, tooltip, data, config, crafter) -> {
76+
ItemStack result = crafter.getResult();
77+
if (!result.isEmpty()) {
78+
tooltip.add(Utils.localize("tooltip.ec.output", result.getCount(), result.getDisplayName()));
79+
}
80+
}),
81+
BlockEnderCrafter.class
82+
);
83+
84+
registrar.registerBodyProvider(checkTile(TileCompressor.class, (stack, tooltip, data, config, compressor) -> {
85+
if (ModConfig.confEnergyInWaila) {
86+
tooltip.add(Utils.format(compressor.getEnergy().getEnergyStored()) + " FE");
87+
}
88+
89+
CompressorRecipe recipe = compressor.getRecipe();
90+
ItemStack output = recipe == null ? ItemStack.EMPTY : recipe.getOutput();
91+
tooltip.add(Utils.localize("tooltip.ec.crafting", output.getCount(), output.getDisplayName()));
92+
}),
93+
BlockCompressor.class
94+
);
95+
96+
registrar.registerBodyProvider(table(1), BlockBasicTable.class);
97+
registrar.registerBodyProvider(table(2), BlockAdvancedTable.class);
98+
registrar.registerBodyProvider(table(3), BlockEliteTable.class);
99+
registrar.registerBodyProvider(table(4), BlockUltimateTable.class);
40100
}
41101

42-
@Override
43-
public List<String> getWailaBody(ItemStack stack, List<String> tooltip, IWailaDataAccessor data, IWailaConfigHandler config) {
44-
Block block = data.getBlock();
45-
TileEntity tile = data.getTileEntity();
46-
47-
if (block instanceof BlockLamp) {
48-
tooltip.add(Utils.localize("tooltip.ec.lamp_" + BlockLamp.Type.byMetadata(data.getMetadata()).getName()));
49-
}
50-
51-
if (block instanceof BlockTrimmed) {
52-
tooltip.add(Utils.localize("tooltip.ec.trimmed_" + BlockTrimmed.Type.byMetadata(data.getMetadata()).getName()));
53-
}
54-
55-
if (block instanceof BlockPedestal && tile instanceof TilePedestal && !tile.isInvalid()) {
56-
TilePedestal pedestal = (TilePedestal) tile;
57-
ItemStack result = pedestal.getStack();
58-
if (!result.isEmpty()) {
59-
tooltip.add(result.getDisplayName());
60-
}
61-
}
62-
63-
if (block instanceof BlockCraftingCore && tile instanceof TileCraftingCore && !tile.isInvalid()) {
64-
TileCraftingCore core = (TileCraftingCore) tile;
65-
66-
if (ModConfig.confEnergyInWaila) {
67-
tooltip.add(Utils.format(core.getEnergy().getEnergyStored()) + " FE");
68-
}
69-
70-
CombinationRecipe recipe = core.getRecipe();
71-
ItemStack output = recipe == null ? ItemStack.EMPTY : recipe.getOutput();
72-
tooltip.add(Utils.localize("tooltip.ec.crafting", output.getCount(), output.getDisplayName()));
73-
}
74-
75-
if (block instanceof BlockBasicTable) tooltip.add(Utils.localize("tooltip.ec.tier", 1));
76-
if (block instanceof BlockAdvancedTable) tooltip.add(Utils.localize("tooltip.ec.tier", 2));
77-
if (block instanceof BlockEliteTable) tooltip.add(Utils.localize("tooltip.ec.tier", 3));
78-
if (block instanceof BlockUltimateTable) tooltip.add(Utils.localize("tooltip.ec.tier", 4));
79-
80-
if (block instanceof BlockAutomationInterface && tile instanceof TileAutomationInterface && !tile.isInvalid()) {
81-
TileAutomationInterface auto = (TileAutomationInterface) tile;
82-
83-
if (ModConfig.confEnergyInWaila) {
84-
tooltip.add(Utils.format(auto.getEnergy().getEnergyStored()) + " FE");
85-
}
86-
87-
ItemStack result = auto.getResult();
88-
if (!result.isEmpty()) {
89-
tooltip.add(Utils.localize("tooltip.ec.crafting", result.getCount(), result.getDisplayName()));
102+
private static TooltipProvider table(int tier) {
103+
return of((stack, tooltip, data, config) ->
104+
tooltip.add(Utils.localize("tooltip.ec.tier", tier)));
105+
}
106+
107+
private static <T extends TileEntity> TooltipProvider checkTile(Class<T> clazz, TileBodyConsumer<T> consumer) {
108+
return of((stack, tooltip, data, config) -> {
109+
TileEntity tile = data.getTileEntity();
110+
if(clazz.isInstance(tile) && !tile.isInvalid()) {
111+
consumer.getWailaBody(stack, tooltip, data, config, clazz.cast(tile));
90112
}
113+
});
114+
}
115+
116+
@FunctionalInterface
117+
private interface TileBodyConsumer<T> {
118+
void getWailaBody(ItemStack stack, List<String> tooltip, IWailaDataAccessor data, IWailaConfigHandler config, T tile);
119+
}
120+
121+
@FunctionalInterface
122+
private interface BodyConsumer {
123+
void getWailaBody(ItemStack stack, List<String> tooltip, IWailaDataAccessor data, IWailaConfigHandler config);
124+
}
125+
126+
public static class TooltipProvider implements IWailaDataProvider {
127+
128+
private final BodyConsumer consumer;
129+
130+
private TooltipProvider(BodyConsumer consumer) {
131+
this.consumer = consumer;
91132
}
92-
93-
if (block instanceof BlockEnderCrafter && tile instanceof TileEnderCrafter && !tile.isInvalid()) {
94-
TileEnderCrafter crafter = (TileEnderCrafter) tile;
95-
ItemStack result = crafter.getResult();
96-
if (!result.isEmpty()) {
97-
tooltip.add(Utils.localize("tooltip.ec.output", result.getCount(), result.getDisplayName()));
98-
}
133+
134+
public static TooltipProvider of(BodyConsumer consumer) {
135+
return new TooltipProvider(consumer);
99136
}
100-
101-
if (block instanceof BlockCompressor && tile instanceof TileCompressor && !tile.isInvalid()) {
102-
TileCompressor compressor = (TileCompressor) tile;
103-
104-
if (ModConfig.confEnergyInWaila) {
105-
tooltip.add(Utils.format(compressor.getEnergy().getEnergyStored()) + " FE");
106-
}
107-
108-
CompressorRecipe recipe = compressor.getRecipe();
109-
ItemStack output = recipe == null ? ItemStack.EMPTY : recipe.getOutput();
110-
tooltip.add(Utils.localize("tooltip.ec.crafting", output.getCount(), output.getDisplayName()));
137+
138+
@Nonnull
139+
@Override
140+
public List<String> getWailaBody(ItemStack itemStack, List<String> tooltip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
141+
consumer.getWailaBody(itemStack, tooltip, accessor, config);
142+
return tooltip;
111143
}
112-
113-
return tooltip;
114144
}
115-
116145
}

0 commit comments

Comments
 (0)