Skip to content

Commit

Permalink
more cleanup and documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
Terrails committed May 5, 2024
1 parent 150ba2d commit 27b01d3
Show file tree
Hide file tree
Showing 14 changed files with 51 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
import terrails.colorfulhearts.api.heart.Hearts;
import terrails.colorfulhearts.api.heart.drawing.StatusEffectHeart;

/**
* Used to register custom heart types. Currently, it can only be used to register status effect type hearts.
*/
public class HeartRegistry {

public <T extends StatusEffectHeart> T registerStatusEffectHeart(T heart) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ public Pre(GuiGraphics guiGraphics, int x, int y, boolean blinking, boolean hard
super(guiGraphics, x, y, blinking, hardcore, effectHeart);
}

public void cancel() {
this.cancelled = true;
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
public boolean isCancelled() {
return this.cancelled;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
public class Heart {

/**
* Set with all created {@link Heart} objects
* in order to avoid creating multiple objects with same values
* Set with all created {@link Heart} objects in order to avoid creating multiple objects with same values
*/
private static final Set<Heart> CACHE = new HashSet<>();

Expand Down Expand Up @@ -72,8 +71,7 @@ public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Heart heart = (Heart) o;
return this.half == heart.half && this.drawing == heart.drawing
&& this.backgroundHeart == heart.backgroundHeart;
return this.half == heart.half && this.drawing == heart.drawing && this.backgroundHeart == heart.backgroundHeart;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ public String toString() {
'}';
}

/**
* Creates an instance of {@link Builder} to create an instance of {@link StatusEffectHeart}
* @param id easily distinguishable ID useful for debugging
* @param condition for this heart type to be active
*/
public static Builder build(ResourceLocation id, Predicate<Player> condition) {
return new Builder(id, condition);
}
Expand All @@ -58,7 +63,6 @@ public static class Builder {
final Predicate<Player> condition;

HeartDrawing healthFirst, healthSecond;

HeartDrawing absorptionFirst, absorptionSecond;

Builder(ResourceLocation id, Predicate<Player> condition) {
Expand All @@ -68,12 +72,14 @@ public static class Builder {

/**
* Uses the provided {@link HeartDrawing} object for the first heart color and colors the same texture using the provided rgb values for the second heart color
* Makes it easy for mods that do not want to provide their own alternate texture
*/
public Builder addHealth(HeartDrawing drawing, float r, float g, float b) {
return this.addHealth(drawing, r, g, b, 1.0f, GL11.GL_ONE, GL11.GL_SRC_COLOR);
}

/**
* Uses the provided {@link HeartDrawing} object for the first heart color and colors the same texture using the provided rgba values and blending modes
*/
public Builder addHealth(HeartDrawing drawing, float r, float g, float b, float alpha, int sourceFactor, int destinationFactor) {
ResourceLocation secondId = drawing.getId().withSuffix("_2");
HeartDrawing second = new HeartDrawing() {
Expand All @@ -97,16 +103,25 @@ public ResourceLocation getId() {
return this;
}

/**
* Uses the provided {@link HeartDrawing} for both health icons
*/
public Builder addHealth(HeartDrawing first, HeartDrawing second) {
this.healthFirst = first;
this.healthSecond = second;
return this;
}

/**
* Uses the provided {@link HeartDrawing} object for the first heart color and colors the same texture using the provided rgb values for the second heart color
*/
public Builder addAbsorption(HeartDrawing drawing, float r, float g, float b) {
return this.addAbsorption(drawing, r, g, b, 1.0f, GL11.GL_ONE, GL11.GL_SRC_COLOR);
}

/**
* Uses the provided {@link HeartDrawing} object for the first heart color and colors the same texture using the provided rgba values and blending modes
*/
public Builder addAbsorption(HeartDrawing drawing, float r, float g, float b, float alpha, int sourceFactor, int destinationFactor) {
ResourceLocation secondId = drawing.getId().withSuffix("_2");
HeartDrawing second = new HeartDrawing() {
Expand All @@ -130,18 +145,27 @@ public ResourceLocation getId() {
return this;
}

/**
* Uses the provided {@link HeartDrawing} object for the first heart color and colors the same texture using the provided rgb values for the second heart color
*/
public Builder addAbsorption(HeartDrawing first, HeartDrawing second) {
this.absorptionFirst = first;
this.absorptionSecond = second;
return this;
}

/**
* Makes it so that absorption is replaced by empty containers when under effect
*/
public Builder blankAbsorption() {
this.absorptionFirst = Hearts.CONTAINER;
this.absorptionSecond = Hearts.CONTAINER;
return this;
}

/**
* Finishes building the final effect heart
*/
public StatusEffectHeart finish() {
if (this.healthFirst == null || this.healthSecond == null) {
throw new IllegalArgumentException("Health hearts were not defined");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import java.util.List;

public abstract class AppleSkinCompat {
public abstract class AppleSkinCommonCompat {

public final Minecraft client = Minecraft.getInstance();
private final RandomSource random = RandomSource.create();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,8 @@
*/
public interface ColorfulHeartsApi {

/**
* Used to register custom heart types. Currently, it can only be used to register status effect type hearts.
*/
void registerHearts(HeartRegistry registry);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
import squeek.appleskin.api.AppleSkinApi;
import squeek.appleskin.api.event.HUDOverlayEvent;
import squeek.appleskin.client.HUDOverlayHandler;
import terrails.colorfulhearts.compat.AppleSkinCompat;
import terrails.colorfulhearts.compat.AppleSkinCommonCompat;
import terrails.colorfulhearts.fabric.api.event.FabHeartEvents;
import terrails.colorfulhearts.fabric.mixin.compat.appleskin.HUDOverlayHandlerAccessor;

public class AppleSkinFabCompat extends AppleSkinCompat implements AppleSkinApi {
public class AppleSkinCompat extends AppleSkinCommonCompat implements AppleSkinApi {

private int modifiedHealth;

Expand Down
2 changes: 1 addition & 1 deletion fabric/src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"client": [ "terrails.colorfulhearts.fabric.ColorfulHearts" ],
"modmenu": [ "terrails.colorfulhearts.fabric.compat.ModMenuCompat" ],
"appleskin": [
"terrails.colorfulhearts.fabric.compat.AppleSkinFabCompat"
"terrails.colorfulhearts.fabric.compat.AppleSkinCompat"
]
},

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public class ColorfulHearts {
private static final List<ConfigOption<?, ?>> CONFIG_OPTIONS = new ArrayList<>();

private static final Map<String, String> COMPAT = Map.of(
"appleskin", "AppleSkinForgeCompat"
"appleskin", "AppleSkinCompat"
);

public ColorfulHearts() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,7 @@ public boolean isCanceled() {

@Override
public void setCanceled(boolean cancel) {
if (cancel) {
event.cancel();
}
super.setCanceled(cancel);
event.setCancelled(cancel);
}

public void setX(int x) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@
import squeek.appleskin.api.food.FoodValues;
import squeek.appleskin.client.HUDOverlayHandler;
import squeek.appleskin.helpers.FoodHelper;
import terrails.colorfulhearts.compat.AppleSkinCompat;
import terrails.colorfulhearts.compat.AppleSkinCommonCompat;
import terrails.colorfulhearts.forge.api.event.ForgeHeartUpdateEvent;
import terrails.colorfulhearts.forge.api.event.ForgeHeartRenderEvent;
import terrails.colorfulhearts.forge.mixin.compat.appleskin.HUDOverlayHandlerAccessor;
import terrails.colorfulhearts.api.heart.drawing.StatusEffectHeart;

public class AppleSkinForgeCompat extends AppleSkinCompat {
public class AppleSkinCompat extends AppleSkinCommonCompat {

public AppleSkinForgeCompat() {
public AppleSkinCompat() {
MinecraftForge.EVENT_BUS.addListener(this::onDefaultRender);
MinecraftForge.EVENT_BUS.addListener(this::onPostRender);
MinecraftForge.EVENT_BUS.addListener(this::heartChanged);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public class ColorfulHearts {
private static final List<ConfigOption<?, ?>> CONFIG_OPTIONS = new ArrayList<>();

private static final Map<String, String> COMPAT = Map.of(
"appleskin", "AppleSkinNeoCompat",
"appleskin", "AppleSkinCompat",
"undergarden", "UndergardenCompat"
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ public Pre(GuiGraphics guiGraphics, int x, int y, boolean blinking, boolean hard
super(new HeartRenderEvent.Pre(guiGraphics, x, y, blinking, hardcore, effectHeart));
}

public void cancel() {
event.cancel();
public void setCancelled(boolean cancel) {
event.setCancelled(cancel);
}
public boolean isCancelled() {
return event.isCancelled();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@
import squeek.appleskin.api.food.FoodValues;
import squeek.appleskin.client.HUDOverlayHandler;
import squeek.appleskin.helpers.FoodHelper;
import terrails.colorfulhearts.compat.AppleSkinCompat;
import terrails.colorfulhearts.compat.AppleSkinCommonCompat;
import terrails.colorfulhearts.api.heart.drawing.StatusEffectHeart;
import terrails.colorfulhearts.neoforge.api.event.NeoHeartUpdateEvent;
import terrails.colorfulhearts.neoforge.api.event.NeoHeartRenderEvent;
import terrails.colorfulhearts.neoforge.mixin.compat.appleskin.HUDOverlayHandlerAccessor;

public class AppleSkinNeoCompat extends AppleSkinCompat {
public class AppleSkinCompat extends AppleSkinCommonCompat {

public AppleSkinNeoCompat() {
public AppleSkinCompat() {
NeoForge.EVENT_BUS.addListener(this::onDefaultRender);
NeoForge.EVENT_BUS.addListener(this::onPostRender);
NeoForge.EVENT_BUS.addListener(this::heartChanged);
Expand Down

0 comments on commit 27b01d3

Please sign in to comment.