Skip to content

Commit

Permalink
feat: add attack reach indicator for the Ravenous Claws
Browse files Browse the repository at this point in the history
  • Loading branch information
Elenterius committed Jul 18, 2023
1 parent fe2ae46 commit ccc850f
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.github.elenterius.biomancy.client.util.GuiRenderUtil;
import com.github.elenterius.biomancy.client.util.GuiUtil;
import com.github.elenterius.biomancy.entity.ownable.IControllableMob;
import com.github.elenterius.biomancy.item.AttackReachIndicator;
import com.github.elenterius.biomancy.item.ItemCharge;
import com.github.elenterius.biomancy.item.injector.InjectorItem;
import com.github.elenterius.biomancy.item.weapon.IGun;
Expand All @@ -15,6 +16,7 @@
import net.minecraft.client.gui.GuiComponent;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.client.gui.overlay.ForgeGui;
import net.minecraftforge.client.gui.overlay.IGuiOverlay;
Expand All @@ -23,6 +25,7 @@ public final class IngameOverlays {

// public static final ResourceLocation COMMAND_ICONS = BiomancyMod.createRL("textures/gui/command_icons.png");
public static final ResourceLocation INJECTOR_COOL_DOWN = BiomancyMod.createRL("textures/gui/indicator_injector_cooldown.png");
public static final ResourceLocation ATTACK_REACH = BiomancyMod.createRL("textures/gui/indicator_attack_reach.png");
public static final ResourceLocation ORNATE_CORNER_BOTTOM_RIGHT = BiomancyMod.createRL("textures/gui/ornate_corner_br.png");
public static final ResourceLocation CHARGE_BAR = BiomancyMod.createRL("textures/gui/charge_bar.png");

Expand Down Expand Up @@ -77,6 +80,27 @@ public final class IngameOverlays {
}
};

public static final IGuiOverlay ATTACK_REACH_OVERLAY = (gui, poseStack, partialTicks, screenWidth, screenHeight) -> {
Minecraft minecraft = Minecraft.getInstance();
if (!minecraft.options.hideGui && minecraft.player != null) {
ItemStack stack = minecraft.player.getMainHandItem();
if (stack.isEmpty() || !(stack.getItem() instanceof AttackReachIndicator)) return;

if (GuiUtil.isFirstPersonView()) {
gui.setupOverlayRenderState(true, false);
gui.setBlitOffset(-90);

if (minecraft.crosshairPickEntity instanceof LivingEntity crosshairTarget && crosshairTarget.isAlive() && minecraft.player.canHit(crosshairTarget, 0)) {
int x = screenWidth / 2 - 8;
int y = screenHeight / 2 - 16 - 8;
RenderSystem.setShaderTexture(0, ATTACK_REACH);
RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.ONE_MINUS_DST_COLOR, GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
GuiComponent.blit(poseStack, x, y, gui.getBlitOffset(), 0, 0, 16, 16, 16, 16);
}
}
}
};

private IngameOverlays() {}

static void renderCommandOverlay(PoseStack poseStack, int screenWidth, int screenHeight, IControllableMob.Command command) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ public static void registerGameOverlays(RegisterGuiOverlaysEvent event) {
// event.registerAboveAll("biomancy_gun", IngameOverlays.GUN_OVERLAY);
event.registerAboveAll("biomancy_injector", IngameOverlays.INJECTOR_OVERLAY);
event.registerAboveAll("biomancy_charge_bar", IngameOverlays.CHARGE_BAR_OVERLAY);
event.registerAboveAll("biomancy_attack_reach", IngameOverlays.ATTACK_REACH_OVERLAY);
}

@SubscribeEvent
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.github.elenterius.biomancy.item;

public interface AttackReachIndicator {

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.github.elenterius.biomancy.entity.MobUtil;
import com.github.elenterius.biomancy.init.ModParticleTypes;
import com.github.elenterius.biomancy.init.ModSoundEvents;
import com.github.elenterius.biomancy.item.AttackReachIndicator;
import com.github.elenterius.biomancy.item.ItemCharge;
import com.github.elenterius.biomancy.item.livingtool.LivingClawsItem;
import com.github.elenterius.biomancy.item.livingtool.LivingToolState;
Expand Down Expand Up @@ -56,7 +57,7 @@
import java.util.UUID;
import java.util.function.Consumer;

public class RavenousClawsItem extends LivingClawsItem implements IAnimatable, ItemCharge {
public class RavenousClawsItem extends LivingClawsItem implements IAnimatable, ItemCharge, AttackReachIndicator {
protected static final UUID BASE_ATTACK_KNOCKBACK_UUID = UUID.fromString("6175525b-56dd-4f87-b035-86b892afe7b3");
private final Lazy<Multimap<Attribute, AttributeModifier>> brokenAttributes;
private final Lazy<Multimap<Attribute, AttributeModifier>> dormantAttributes;
Expand Down
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit ccc850f

Please sign in to comment.