BloodMagic/src/main/java/WayofTime/bloodmagic/client/hud/Elements.java

137 lines
7.3 KiB
Java
Raw Normal View History

package WayofTime.bloodmagic.client.hud;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.client.Sprite;
import WayofTime.bloodmagic.client.hud.element.ElementDemonAura;
import WayofTime.bloodmagic.client.hud.element.ElementDivinedInformation;
import WayofTime.bloodmagic.client.hud.element.ElementHolding;
import WayofTime.bloodmagic.tile.TileAltar;
import WayofTime.bloodmagic.tile.TileIncenseAltar;
import WayofTime.bloodmagic.tile.TileInversionPillar;
import WayofTime.bloodmagic.util.helper.NumeralHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.ResourceLocation;
import org.apache.commons.lang3.tuple.Pair;
import javax.vecmath.Vector2f;
import java.awt.Point;
import java.util.function.Consumer;
import java.util.function.Function;
public class Elements {
public static void registerElements() {
ElementRegistry.registerHandler(
new ResourceLocation(BloodMagic.MODID, "blood_altar"),
new ElementDivinedInformation<TileAltar>(2, true, TileAltar.class) {
@Override
public void gatherInformation(Consumer<Pair<Sprite, Function<TileAltar, String>>> information) {
// Current tier
information.accept(Pair.of(
new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 0, 46, 16, 16),
altar -> altar == null ? "IV" : NumeralHelper.toRoman(altar.getTier().toInt())
));
// Stored/Capacity
information.accept(Pair.of(
new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 16, 46, 16, 16),
altar -> String.format("%d/%d", altar == null ? 0 : altar.getCurrentBlood(), altar == null ? 10000 : altar.getCapacity())
));
}
},
new Vector2f(0.01F, 0.01F)
);
ElementRegistry.registerHandler(
new ResourceLocation(BloodMagic.MODID, "blood_altar_adv"),
new ElementDivinedInformation<TileAltar>(5, false, TileAltar.class) {
@Override
public void gatherInformation(Consumer<Pair<Sprite, Function<TileAltar, String>>> information) {
// Current tier
information.accept(Pair.of(
new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 0, 46, 16, 16),
altar -> altar == null ? "IV" : NumeralHelper.toRoman(altar.getTier().toInt())
));
// Stored/Capacity
information.accept(Pair.of(
new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 16, 46, 16, 16),
altar -> String.format("%d/%d", altar == null ? 0 : altar.getCurrentBlood(), altar == null ? 10000 : altar.getCapacity())
));
// Crafting progress/Crafting requirement
information.accept(Pair.of(
new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 32, 46, 16, 16),
altar -> {
if (altar == null || !altar.isActive())
return I18n.format("hud.bloodmagic.inactive");
int progress = altar.getProgress();
int totalLiquidRequired = altar.getLiquidRequired() * altar.getStackInSlot(0).getCount();
return String.format("%d/%d", progress, totalLiquidRequired);
}
));
// Consumption rate
information.accept(Pair.of(
new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 48, 46, 16, 16),
altar -> altar == null ? "0" : String.valueOf((int) (altar.getConsumptionRate() * (altar.getConsumptionMultiplier() + 1)))
));
// Total charge
information.accept(Pair.of(
new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 64, 46, 16, 16),
altar -> altar == null ? "0" : String.valueOf(altar.getTotalCharge())
));
}
},
new Vector2f(0.01F, 0.01F)
);
ElementRegistry.registerHandler(
new ResourceLocation(BloodMagic.MODID, "incense_altar"),
new ElementDivinedInformation<TileIncenseAltar>(2, true, TileIncenseAltar.class) {
@Override
public void gatherInformation(Consumer<Pair<Sprite, Function<TileIncenseAltar, String>>> information) {
// Current tranquility
information.accept(Pair.of(
new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 80, 46, 16, 16),
incense -> incense == null ? "0" : String.valueOf((int) ((100D * (int) (100 * incense.tranquility)) / 100D))
));
// Sacrifice bonus
information.accept(Pair.of(
new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 96, 46, 16, 16),
incense -> incense == null ? "0" : String.valueOf((int) (100 * incense.incenseAddition))
));
}
},
new Vector2f(0.01F, 0.01F)
);
ElementRegistry.registerHandler(
new ResourceLocation(BloodMagic.MODID, "inversion_pillar"),
new ElementDivinedInformation<TileInversionPillar>(1, true, TileInversionPillar.class) {
@Override
public void gatherInformation(Consumer<Pair<Sprite, Function<TileInversionPillar, String>>> information) {
// Current inversion
information.accept(Pair.of(
new Sprite(new ResourceLocation(BloodMagic.MODID, "textures/gui/widgets.png"), 112, 46, 16, 16),
pillar -> pillar == null ? "0" : String.valueOf(((int) (10 * pillar.getCurrentInversion())) / 10D)
));
}
},
new Vector2f(0.01F, 0.01F)
);
ElementRegistry.registerHandler(
new ResourceLocation(BloodMagic.MODID, "demon_will_aura"),
new ElementDemonAura(),
new Vector2f(0.01F, 0.01F)
);
ElementRegistry.registerHandler(
new ResourceLocation(BloodMagic.MODID, "holding"),
new ElementHolding(),
new Vector2f(0.72F, 1.0F)
);
ElementRegistry.readConfig();
}
}