Search in sources :

Example 11 with Skill

use of jackiecrazy.wardance.skill.Skill in project WarDance by Jackiecrazy.

the class SkillEventHandler method staggerFlagS.

@SubscribeEvent(priority = EventPriority.LOWEST)
public static void staggerFlagS(StaggerEvent e) {
    if (!e.getEntityLiving().isEffectiveAi())
        return;
    if (e.getAttacker() != null) {
        LivingEntity attacker = e.getAttacker();
        ISkillCapability isc = CasterData.getCap(attacker);
        for (Skill s : isc.getEquippedSkills()) {
            isc.getSkillData(s).ifPresent(d -> s.onProc(attacker, e, d.getState(), d, e.getEntityLiving()));
        }
    }
    ISkillCapability isc = CasterData.getCap(e.getEntityLiving());
    for (Skill s : isc.getEquippedSkills()) {
        isc.getSkillData(s).ifPresent(d -> s.onProc(e.getEntityLiving(), e, d.getState(), d, e.getAttacker()));
    }
}
Also used : LivingEntity(net.minecraft.entity.LivingEntity) Skill(jackiecrazy.wardance.skill.Skill) ISkillCapability(jackiecrazy.wardance.capability.skill.ISkillCapability) SubscribeEvent(net.minecraftforge.eventbus.api.SubscribeEvent)

Example 12 with Skill

use of jackiecrazy.wardance.skill.Skill in project WarDance by Jackiecrazy.

the class RenderEvents method displayCoolie.

@SubscribeEvent
public static void displayCoolie(RenderGameOverlayEvent.Post event) {
    MainWindow sr = event.getWindow();
    final Minecraft mc = Minecraft.getInstance();
    final MatrixStack stack = event.getMatrixStack();
    if (GeneralConfig.dual) {
        if (event.getType().equals(RenderGameOverlayEvent.ElementType.CROSSHAIRS)) {
            // draw offhand cooldown, crosshair type
            {
                GameSettings gamesettings = mc.options;
                if (gamesettings.getCameraType() == PointOfView.FIRST_PERSON) {
                    int width = sr.getGuiScaledWidth();
                    int height = sr.getGuiScaledHeight();
                    ClientPlayerEntity player = mc.player;
                    if (player == null)
                        return;
                    if (!gamesettings.renderDebug || gamesettings.hideGui || player.isReducedDebugInfo() || gamesettings.reducedDebugInfo) {
                        if (mc.options.attackIndicator == AttackIndicatorStatus.CROSSHAIR) {
                            GlStateManager._enableAlphaTest();
                            float cooldown = CombatUtils.getCooledAttackStrength(player, Hand.OFF_HAND, 0f);
                            boolean hyperspeed = false;
                            if (getEntityLookedAt(player, GeneralUtils.getAttributeValueHandSensitive(player, ForgeMod.REACH_DISTANCE.get(), Hand.OFF_HAND)) != null && cooldown >= 1.0F) {
                                hyperspeed = CombatUtils.getCooldownPeriod(player, Hand.OFF_HAND) > 5.0F;
                                hyperspeed = hyperspeed & (getEntityLookedAt(player, GeneralUtils.getAttributeValueHandSensitive(player, ForgeMod.REACH_DISTANCE.get(), Hand.OFF_HAND))).isAlive();
                            }
                            int y = height / 2 - 7 - 7;
                            int x = width / 2 - 8;
                            if (hyperspeed) {
                                mc.gui.blit(stack, x, y, 68, 94, 16, 16);
                            } else if (cooldown < 1.0F) {
                                int k = (int) (cooldown * 17.0F);
                                mc.gui.blit(stack, x, y, 36, 94, 16, 4);
                                mc.gui.blit(stack, x, y, 52, 94, k, 4);
                            }
                        }
                    }
                }
            }
        }
        if (event.getType().equals(RenderGameOverlayEvent.ElementType.HOTBAR)) {
            // draw offhand cooldown, hotbar type
            if (mc.getCameraEntity() instanceof PlayerEntity) {
                GlStateManager._clearColor(1.0F, 1.0F, 1.0F, 1.0F);
                PlayerEntity p = (PlayerEntity) mc.getCameraEntity();
                ItemStack itemstack = p.getOffhandItem();
                HandSide oppositeHand = p.getMainArm().getOpposite();
                int halfOfScreen = sr.getGuiScaledWidth() / 2;
                GlStateManager._enableRescaleNormal();
                RenderSystem.enableBlend();
                RenderSystem.defaultBlendFunc();
                RenderHelper.turnBackOn();
                if (mc.options.attackIndicator == AttackIndicatorStatus.HOTBAR) {
                    float strength = CombatUtils.getCooledAttackStrength(p, Hand.OFF_HAND, 0);
                    if (strength < 1.0F) {
                        int y = sr.getGuiScaledHeight() - 20;
                        int x = halfOfScreen + 91 + 6;
                        if (oppositeHand == HandSide.LEFT) {
                            x = halfOfScreen - 91 - 22;
                        }
                        mc.getTextureManager().bind(AbstractGui.GUI_ICONS_LOCATION);
                        int modStrength = (int) (strength * 19.0F);
                        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
                        mc.gui.blit(stack, x + 18, y, 0, 94, 18, 18);
                        mc.gui.blit(stack, x + 18, y + 18 - modStrength, 18, 112 - modStrength, 18, modStrength);
                    }
                }
                RenderHelper.turnOff();
                RenderSystem.disableBlend();
            }
        }
    }
    if (event.getType().equals(RenderGameOverlayEvent.ElementType.ALL))
        if (mc.getCameraEntity() instanceof PlayerEntity) {
            ClientPlayerEntity player = mc.player;
            ICombatCapability cap = CombatData.getCap(player);
            int width = sr.getGuiScaledWidth();
            int height = sr.getGuiScaledHeight();
            mc.getTextureManager().bind(raihud);
            currentSpiritLevel = updateValue(currentSpiritLevel, cap.getSpirit());
            currentMightLevel = updateValue(currentMightLevel, cap.getMight());
            currentComboLevel = cap.getRank() > currentComboLevel ? updateValue(currentComboLevel, cap.getRank()) : cap.getRank();
            // yourCurrentPostureLevel = updateValue(yourCurrentPostureLevel, cap.getPosture());
            if (cap.isCombatMode()) {
                stack.pushPose();
                RenderSystem.enableBlend();
                RenderSystem.enableAlphaTest();
                Pair<Integer, Integer> pair = translateCoords(ClientConfig.CONFIG.might, width, height);
                int x = Math.max(pair.getFirst() - 16, 0);
                int y = Math.min(pair.getSecond() - 16, height - 32);
                int fillHeight = (int) (Math.min(1, currentMightLevel / cap.getMaxMight()) * 32);
                if (ClientConfig.CONFIG.might.enabled) {
                    // might circle
                    RenderSystem.color4f(1, 1, 1, 1);
                    stack.pushPose();
                    stack.pushPose();
                    mc.gui.blit(stack, x, y, 0, 64, 32, 32);
                    stack.popPose();
                    // might circle filling
                    stack.pushPose();
                    mc.gui.blit(stack, x, y + 32 - fillHeight, 0, 96 - fillHeight, 32, fillHeight);
                    stack.popPose();
                    fillHeight += Math.min(fillHeight, 3);
                    fillHeight = Math.min(fillHeight, 32);
                    // might base
                    stack.pushPose();
                    mc.gui.blit(stack, x, y, 32, 64, 32, 32);
                    stack.popPose();
                    // might illumination
                    stack.pushPose();
                    mc.gui.blit(stack, x, y + 32 - fillHeight, 64, 96 - fillHeight, 32, fillHeight);
                    stack.popPose();
                    stack.popPose();
                }
                pair = translateCoords(ClientConfig.CONFIG.spirit, width, height);
                x = MathHelper.clamp(pair.getFirst() - 16, 0, width - 32);
                y = MathHelper.clamp(pair.getSecond() - 16, 0, height - 32);
                fillHeight = (int) (Math.min(1, currentSpiritLevel / cap.getMaxSpirit()) * 32);
                String display = formatter.format(currentSpiritLevel) + "/" + formatter.format(cap.getMaxSpirit());
                // spirit circle
                stack.pushPose();
                if (ClientConfig.CONFIG.spirit.enabled) {
                    stack.pushPose();
                    mc.gui.blit(stack, x, y, 0, 96, 32, 32);
                    stack.popPose();
                    // spirit circle filling
                    stack.pushPose();
                    mc.gui.blit(stack, x, y + 32 - fillHeight, 0, 128 - fillHeight, 32, fillHeight);
                    stack.popPose();
                    fillHeight += Math.min(fillHeight, 3);
                    fillHeight = Math.min(fillHeight, 32);
                    // spirit base
                    stack.pushPose();
                    mc.gui.blit(stack, x, y + 1, 32, 96, 32, 32);
                    stack.popPose();
                    // spirit illumination
                    stack.pushPose();
                    mc.gui.blit(stack, x, y + 33 - fillHeight, 64, 128 - fillHeight, 32, fillHeight);
                    stack.popPose();
                }
                if (ClientConfig.CONFIG.spiritNumber.enabled) {
                    pair = translateCoords(ClientConfig.CONFIG.spiritNumber, width, height);
                    mc.font.drawShadow(event.getMatrixStack(), display, pair.getFirst() - mc.font.width(display) / 2f, pair.getSecond() - 2, ClientConfig.spiritColor);
                }
                if (ClientConfig.CONFIG.mightNumber.enabled) {
                    pair = translateCoords(ClientConfig.CONFIG.mightNumber, width, height);
                    display = formatter.format(currentMightLevel) + "/" + formatter.format(cap.getMaxMight());
                    mc.font.drawShadow(event.getMatrixStack(), display, pair.getFirst() - mc.font.width(display) / 2f, pair.getSecond() - 2, ClientConfig.mightColor);
                }
                stack.popPose();
                RenderSystem.disableAlphaTest();
                RenderSystem.disableBlend();
                stack.popPose();
                // combo bar at 224,20 to 229, 121. Grace at 222,95 to 224, 121
                // initial bar
                RenderSystem.enableBlend();
                stack.pushPose();
                if (ClientConfig.CONFIG.combo.enabled) {
                    mc.getTextureManager().bind(raihud);
                    int combowidth = 32;
                    float workingCombo = currentComboLevel;
                    int comboU = (int) (MathHelper.clamp(Math.floor(workingCombo), 0, 4)) * 32;
                    int divisor = 1;
                    if (// S
                    workingCombo >= 4)
                        divisor = 2;
                    if (workingCombo >= 6) {
                        // SS
                        combowidth = 33;
                        comboU = 159;
                        divisor = 3;
                    }
                    if (workingCombo >= 9) {
                        // SSS
                        combowidth = 64;
                        comboU = 192;
                        fillHeight = (int) ((workingCombo - 9) * 32f);
                    } else if (divisor > 1)
                        fillHeight = (int) ((workingCombo - divisor * 2) / divisor * 32f);
                    else
                        fillHeight = (int) ((workingCombo - Math.floor(workingCombo)) * 32f);
                    pair = translateCoords(ClientConfig.CONFIG.combo, width, height);
                    x = MathHelper.clamp(pair.getFirst() - combowidth / 2, 0, width - combowidth);
                    y = MathHelper.clamp(pair.getSecond() - 23, 0, height - 46);
                    mc.gui.blit(stack, x, y, comboU, 0, combowidth, 32);
                    // fancy fill percentage
                    mc.gui.blit(stack, x, y + 33 - fillHeight, comboU, 65 - fillHeight, combowidth, fillHeight - 2);
                }
                stack.popPose();
                RenderSystem.disableBlend();
            }
            mc.getTextureManager().bind(amo);
            // render posture bar if not full, displayed even out of combat mode because it's pretty relevant to not dying
            if (cap.isCombatMode() || cap.getPosture() < cap.getMaxPosture() || cap.getStaggerTime() > 0 || cap.getShatterCooldown() < Math.floor(GeneralUtils.getAttributeValueSafe(player, WarAttributes.SHATTER.get())) || cap.getBarrier() < cap.getMaxBarrier())
                drawPostureBarAt(true, stack, player, width, height);
            Entity look = getEntityLookedAt(player, 32);
            if (look instanceof LivingEntity) {
                LivingEntity looked = (LivingEntity) look;
                List<Skill> afflict = new ArrayList<>();
                final ISkillCapability skill = CasterData.getCap(player);
                if (ClientConfig.CONFIG.enemyAfflict.enabled) {
                    // coup de grace
                    final Skill variant = skill.getEquippedVariation(SkillCategories.coup_de_grace);
                    if (look != player && skill.isSkillUsable(variant)) {
                        CoupDeGrace cdg = (CoupDeGrace) variant;
                        if (cdg.willKillOnCast(player, looked)) {
                            afflict.add(cdg);
                        }
                    }
                    // marks
                    afflict.addAll(Marks.getCap(looked).getActiveMarks().keySet());
                    Pair<Integer, Integer> pair = translateCoords(ClientConfig.CONFIG.enemyAfflict, width, height);
                    for (int index = 0; index < afflict.size(); index++) {
                        Skill s = afflict.get(index);
                        mc.getTextureManager().bind(s.icon());
                        Color c = s.getColor();
                        RenderSystem.color4f(c.getRed() / 255f, c.getGreen() / 255f, c.getBlue() / 255f, 1);
                        AbstractGui.blit(stack, pair.getFirst() - (afflict.size() - 1 - index) * 16 + (afflict.size() - 1) * 8 - 8, pair.getSecond(), 0, 0, 16, 16, 16, 16);
                    }
                }
                stealth: if (ClientConfig.CONFIG.stealth.enabled && cap.isCombatMode()) {
                    Pair<Integer, Integer> pair = translateCoords(ClientConfig.CONFIG.stealth, width, height);
                    final Tuple<StealthUtils.Awareness, Double> info = stealthInfo(looked);
                    double dist = info.getB();
                    int shift = 0;
                    switch(info.getA()) {
                        case ALERT:
                            break stealth;
                        case DISTRACTED:
                            shift = 1;
                            break;
                        case UNAWARE:
                            shift = looked.distanceToSqr(player) < dist * dist ? 2 : 3;
                            break;
                    }
                    renderEye(looked, event.getPartialTicks(), stack);
                    mc.getTextureManager().bind(stealth);
                    AbstractGui.blit(stack, pair.getFirst() - 16, pair.getSecond() - 8, 0, shift * 16, 32, 16, 64, 64);
                }
                RenderSystem.color4f(1, 1, 1, 1);
                if (ClientConfig.CONFIG.enemyPosture.enabled && (cap.isCombatMode() || CombatData.getCap((LivingEntity) look).getPosture() < CombatData.getCap((LivingEntity) look).getMaxPosture() || CombatData.getCap((LivingEntity) look).getStaggerTime() > 0 || cap.getShatterCooldown() < GeneralUtils.getAttributeValueSafe(player, WarAttributes.SHATTER.get()) || cap.getBarrier() < cap.getMaxBarrier()))
                    // Math.min(HudConfig.client.enemyPosture.x, width - 64), Math.min(HudConfig.client.enemyPosture.y, height - 64));
                    drawPostureBarAt(false, stack, looked, width, height);
            }
        }
}
Also used : PlayerEntity(net.minecraft.entity.player.PlayerEntity) LivingEntity(net.minecraft.entity.LivingEntity) ClientPlayerEntity(net.minecraft.client.entity.player.ClientPlayerEntity) Entity(net.minecraft.entity.Entity) MatrixStack(com.mojang.blaze3d.matrix.MatrixStack) CoupDeGrace(jackiecrazy.wardance.skill.coupdegrace.CoupDeGrace) PlayerEntity(net.minecraft.entity.player.PlayerEntity) ClientPlayerEntity(net.minecraft.client.entity.player.ClientPlayerEntity) LivingEntity(net.minecraft.entity.LivingEntity) MainWindow(net.minecraft.client.MainWindow) List(java.util.List) ArrayList(java.util.ArrayList) GameSettings(net.minecraft.client.GameSettings) ClientPlayerEntity(net.minecraft.client.entity.player.ClientPlayerEntity) Pair(com.mojang.datafixers.util.Pair) HandSide(net.minecraft.util.HandSide) Minecraft(net.minecraft.client.Minecraft) ICombatCapability(jackiecrazy.wardance.capability.resources.ICombatCapability) Skill(jackiecrazy.wardance.skill.Skill) ISkillCapability(jackiecrazy.wardance.capability.skill.ISkillCapability) ItemStack(net.minecraft.item.ItemStack) SubscribeEvent(net.minecraftforge.eventbus.api.SubscribeEvent)

Example 13 with Skill

use of jackiecrazy.wardance.skill.Skill in project WarDance by Jackiecrazy.

the class SkillCastScreen method render.

@Override
public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
    super.render(matrixStack, mouseX, mouseY, partialTicks);
    // draw background, then slice, then each skill at determined points
    // don't draw slices that cannot be used (so they appear to be greyed out)
    // highlight a slice based on distance from center (to allow cancel leeway) and direction
    // listen to key release to send cast message to server
    Minecraft mc = Minecraft.getInstance();
    int width = mc.getWindow().getGuiScaledWidth(), height = mc.getWindow().getGuiScaledHeight();
    // get distance
    float centeredx = mouseX - width / 2f;
    float centeredy = mouseY - height / 2f;
    double angle = Math.toDegrees(MathHelper.atan2(centeredx, -centeredy));
    if (angle < 45)
        angle += 720;
    // at 45/135/215/305 deg, the distance cutoff should be 430, otherwise 700
    double cutoffy = centeredx > 0 ? 37 - centeredx : centeredx + 37;
    boolean distance = centeredy > cutoffy;
    if (centeredy < 0) {
        cutoffy = centeredx < 0 ? -37 - centeredx : centeredx - 37;
        distance = cutoffy > centeredy;
    }
    int index = distance ? (int) Math.floor((angle / 90) % 4) + 1 : 0;
    matrixStack.pushPose();
    RenderSystem.enableAlphaTest();
    RenderSystem.enableBlend();
    mc.getTextureManager().bind(radial);
    this.exIndex = index;
    // mc.player.sendStatusMessage(new StringTextComponent(selected == null ? "none" : selected.getRegistryName().toString()), true);
    int x = width / 2 - 100;
    int y = height / 2 - 100;
    RenderSystem.color4f(0.6f, 0.6f, 0.6f, 1);
    blit(matrixStack, x, y, 0, 0, 200, 200, 600, 600);
    RenderSystem.color4f(1, 1, 1, 1);
    for (int a = 0; a < elements.length; a++) {
        if (elements[a] != null) {
            Skill s = elements[a];
            // radial slice for highlighting
            matrixStack.pushPose();
            mc.textureManager.bind(radial);
            // holstered is green
            if (CasterData.getCap(mc.player).getHolsteredSkill() == elements[a])
                RenderSystem.color4f(0.4f, 0.7f, 0.4f, 1);
            else // active is blue
            if (CasterData.getCap(mc.player).getSkillState(elements[a]) == Skill.STATE.ACTIVE)
                RenderSystem.color4f(0.4f, 0.4f, 0.9f, 1);
            else // not allowed is dark gray
            if (s.castingCheck(mc.player) != Skill.CastStatus.ALLOWED)
                RenderSystem.color4f(0.4f, 0.4f, 0.4f, 1);
            else // allowed is light gray, selected is white
            if (a != index)
                RenderSystem.color4f(0.6f, 0.6f, 0.6f, 1);
            blit(matrixStack, x, y, fixedU[a], fixedV[a], 200, 200, 600, 600);
            matrixStack.popPose();
            // skill icon
            matrixStack.pushPose();
            mc.textureManager.bind(s.icon());
            Color c = s.getColor();
            RenderSystem.color4f(c.getRed() / 255f, c.getGreen() / 255f, c.getBlue() / 255f, 1);
            AbstractGui.blit(matrixStack, x + iconX[a], y + iconY[a], 0, 0, 32, 32, 32, 32);
            RenderSystem.color4f(1, 1, 1, 1);
            matrixStack.popPose();
            // cooldown overlay and mask
            if (CasterData.getCap(mc.player).getSkillState(s) == Skill.STATE.COOLING) {
                matrixStack.pushPose();
                // overlay mask
                RenderSystem.enableBlend();
                RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.ZERO, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.DestFactor.ZERO);
                AbstractGui.blit(matrixStack, x + iconX[a], y + iconY[a], 0, 0, 32, 32, 32, 32);
                if (CasterData.getCap(mc.player).getSkillData(s).orElse(SkillData.DUMMY).getMaxDuration() != 0) {
                    // cooldown spinny
                    float cd = CasterData.getCap(mc.player).getSkillData(s).orElse(SkillData.DUMMY).getDuration();
                    float cdPerc = cd / CasterData.getCap(mc.player).getSkillData(s).orElse(SkillData.DUMMY).getMaxDuration();
                    mc.textureManager.bind(cooldown);
                    drawCooldownCircle(matrixStack, x + iconX[a], y + iconY[a], cdPerc);
                    RenderSystem.disableBlend();
                    // cooldown number
                    String num = String.valueOf((int) cd);
                    if (Math.ceil(cd) != cd)
                        num = formatter.format(cd);
                    matrixStack.pushPose();
                    mc.textureManager.bind(cooldown);
                    RenderSystem.color4f(1.0F, 1.0F, 1.0F, 0.6F);
                    // AbstractGui.blit(matrixStack, x + iconX[a], y + iconY[a], 0, 0, 32, 32, 32, 32);
                    mc.font.draw(matrixStack, num, x + iconX[a] + 16 - mc.font.width(num) / 2f, y + iconY[a] + 12, 0xFFFFFF);
                    matrixStack.popPose();
                }
                matrixStack.popPose();
            } else if (CasterData.getCap(mc.player).getSkillState(s) == Skill.STATE.ACTIVE) {
                matrixStack.pushPose();
                int finalA = a;
                CasterData.getCap(mc.player).getSkillData(s).ifPresent((sd) -> {
                    RenderSystem.enableBlend();
                    // active mask
                    RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.ZERO, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.DestFactor.ZERO);
                    AbstractGui.blit(matrixStack, x + iconX[finalA], y + iconY[finalA], 0, 0, 32, 32, 32, 32);
                    if (sd.getMaxDuration() != 0) {
                        // active spinny
                        float cdPerc = sd.getDuration() / sd.getMaxDuration();
                        mc.textureManager.bind(cooldown);
                        float cd = sd.getDuration();
                        RenderSystem.color4f(0.4f, 0.7f, 0.4f, 1);
                        drawCooldownCircle(matrixStack, x + iconX[finalA], y + iconY[finalA], cdPerc);
                        // active number
                        String num = String.valueOf((int) cd);
                        if (Math.ceil(cd) != cd)
                            num = formatter.format(cd);
                        matrixStack.pushPose();
                        mc.textureManager.bind(cooldown);
                        RenderSystem.color4f(1.0F, 1.0F, 1.0F, 0.6F);
                        // AbstractGui.blit(matrixStack, x + iconX[a], y + iconY[a], 0, 0, 32, 32, 32, 32);
                        mc.font.draw(matrixStack, num, x + iconX[finalA] + 16 - mc.font.width(num) / 2f, y + iconY[finalA] + 12, 0xFFFFFF);
                        matrixStack.popPose();
                    }
                });
                matrixStack.popPose();
            }
        }
    }
    if (index >= 0 && elements[index] != null) {
        Skill selected = elements[index];
        String print = selected.getDisplayName(mc.player).getString();
        int yee = mc.font.width(print);
        mc.gui.getFont().draw(matrixStack, print, (width - yee) / 2f, 4, selected.getColor().getRGB());
        final Skill.CastStatus castStatus = selected.castingCheck(mc.player);
        if (castStatus != Skill.CastStatus.ALLOWED && castStatus != Skill.CastStatus.HOLSTERED && castStatus != Skill.CastStatus.ACTIVE) {
            switch(castStatus) {
                case COOLDOWN:
                    print = new TranslationTextComponent("wardance.skill.cooldown").getString();
                    break;
                case CONFLICT:
                    print = new TranslationTextComponent("wardance.skill.conflict").getString();
                    break;
                case SILENCE:
                    print = new TranslationTextComponent("wardance.skill.silence").getString();
                    break;
                case SPIRIT:
                    print = new TranslationTextComponent("wardance.skill.spirit", selected.spiritConsumption(mc.player)).getString();
                    break;
                case MIGHT:
                    print = new TranslationTextComponent("wardance.skill.might", selected.mightConsumption(mc.player)).getString();
                    break;
                case OTHER:
                    print = new TranslationTextComponent(elements[index].getRegistryName().toString() + ".requirement").getString();
                    break;
            }
            yee = mc.font.width(print);
            mc.gui.getFont().draw(matrixStack, print, (width - yee) / 2f, 12, Color.RED.getRGB());
        }
    }
    RenderSystem.disableAlphaTest();
    RenderSystem.disableBlend();
    matrixStack.popPose();
}
Also used : SkillData(jackiecrazy.wardance.skill.SkillData) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn) SelectSkillPacket(jackiecrazy.wardance.networking.SelectSkillPacket) BufferBuilder(net.minecraft.client.renderer.BufferBuilder) CasterData(jackiecrazy.wardance.capability.skill.CasterData) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) Dist(net.minecraftforge.api.distmarker.Dist) DefaultVertexFormats(net.minecraft.client.renderer.vertex.DefaultVertexFormats) Minecraft(net.minecraft.client.Minecraft) StringTextComponent(net.minecraft.util.text.StringTextComponent) MatrixStack(com.mojang.blaze3d.matrix.MatrixStack) Skill(jackiecrazy.wardance.skill.Skill) GlStateManager(com.mojang.blaze3d.platform.GlStateManager) Keybinds(jackiecrazy.wardance.client.Keybinds) DecimalFormat(java.text.DecimalFormat) CombatChannel(jackiecrazy.wardance.networking.CombatChannel) AbstractGui(net.minecraft.client.gui.AbstractGui) java.awt(java.awt) List(java.util.List) Screen(net.minecraft.client.gui.screen.Screen) Tessellator(net.minecraft.client.renderer.Tessellator) MathHelper(net.minecraft.util.math.MathHelper) RenderSystem(com.mojang.blaze3d.systems.RenderSystem) ResourceLocation(net.minecraft.util.ResourceLocation) ForgeIngameGui(net.minecraftforge.client.gui.ForgeIngameGui) WarDance(jackiecrazy.wardance.WarDance) Skill(jackiecrazy.wardance.skill.Skill) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) Minecraft(net.minecraft.client.Minecraft)

Example 14 with Skill

use of jackiecrazy.wardance.skill.Skill in project WarDance by Jackiecrazy.

the class WarDanceCommand method setSkill.

private static int setSkill(CommandContext<CommandSource> ctx) throws CommandSyntaxException {
    PlayerEntity player = EntityArgument.getPlayer(ctx, "player");
    final Skill skill = ctx.getArgument("skill", Skill.class);
    final boolean enabled = BoolArgumentType.getBool(ctx, "enabled");
    CasterData.getCap(player).setSkillSelectable(skill, enabled);
    ctx.getSource().sendSuccess(new TranslationTextComponent("wardance.command.setSkill" + (CasterData.getCap(player).isSkillSelectable(skill)), player.getDisplayName(), skill.getDisplayName(null)), false);
    return Command.SINGLE_SUCCESS;
}
Also used : Skill(jackiecrazy.wardance.skill.Skill) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) PlayerEntity(net.minecraft.entity.player.PlayerEntity)

Example 15 with Skill

use of jackiecrazy.wardance.skill.Skill in project WarDance by Jackiecrazy.

the class WarDanceCommand method getSkill.

private static int getSkill(CommandContext<CommandSource> ctx) throws CommandSyntaxException {
    PlayerEntity player = EntityArgument.getPlayer(ctx, "player");
    final Skill skill = ctx.getArgument("skill", Skill.class);
    final boolean enabled = CasterData.getCap(player).isSkillSelectable(skill);
    ctx.getSource().sendSuccess(new TranslationTextComponent("wardance.command.getSkill" + (CasterData.getCap(player).isSkillSelectable(skill)), player.getDisplayName(), skill.getDisplayName(null)), false);
    return enabled ? 1 : 0;
}
Also used : Skill(jackiecrazy.wardance.skill.Skill) TranslationTextComponent(net.minecraft.util.text.TranslationTextComponent) PlayerEntity(net.minecraft.entity.player.PlayerEntity)

Aggregations

Skill (jackiecrazy.wardance.skill.Skill)32 ISkillCapability (jackiecrazy.wardance.capability.skill.ISkillCapability)23 SubscribeEvent (net.minecraftforge.eventbus.api.SubscribeEvent)23 LivingEntity (net.minecraft.entity.LivingEntity)21 MatrixStack (com.mojang.blaze3d.matrix.MatrixStack)3 ICombatCapability (jackiecrazy.wardance.capability.resources.ICombatCapability)3 SkillData (jackiecrazy.wardance.skill.SkillData)3 ArrayList (java.util.ArrayList)3 List (java.util.List)3 Minecraft (net.minecraft.client.Minecraft)3 PlayerEntity (net.minecraft.entity.player.PlayerEntity)3 ResourceLocation (net.minecraft.util.ResourceLocation)3 TranslationTextComponent (net.minecraft.util.text.TranslationTextComponent)3 RenderSystem (com.mojang.blaze3d.systems.RenderSystem)2 WarDance (jackiecrazy.wardance.WarDance)2 CasterData (jackiecrazy.wardance.capability.skill.CasterData)2 CombatChannel (jackiecrazy.wardance.networking.CombatChannel)2 UpdateSkillSelectionPacket (jackiecrazy.wardance.networking.UpdateSkillSelectionPacket)2 Screen (net.minecraft.client.gui.screen.Screen)2 Tessellator (net.minecraft.client.renderer.Tessellator)2