aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/anthonyhilyard/iceberg/events
diff options
context:
space:
mode:
authorAnthony Hilyard <anthony.hilyard@gmail.com>2021-10-24 11:46:40 -0700
committerAnthony Hilyard <anthony.hilyard@gmail.com>2021-10-24 11:46:40 -0700
commitec4c5aebf3b5b5af872c6b168c02bedd2bd5a9e3 (patch)
tree7f46aca691a09d9df9140505403a647827011df6 /src/main/java/com/anthonyhilyard/iceberg/events
parent2b38fda32d059303bed929b7ae634efa4dffc706 (diff)
downloadIceberg-ec4c5aebf3b5b5af872c6b168c02bedd2bd5a9e3.tar.gz
Iceberg-ec4c5aebf3b5b5af872c6b168c02bedd2bd5a9e3.tar.bz2
Iceberg-ec4c5aebf3b5b5af872c6b168c02bedd2bd5a9e3.zip
Initial Fabric port.
Diffstat (limited to 'src/main/java/com/anthonyhilyard/iceberg/events')
-rw-r--r--src/main/java/com/anthonyhilyard/iceberg/events/CriterionCallback.java23
-rw-r--r--src/main/java/com/anthonyhilyard/iceberg/events/CriterionEvent.java38
-rw-r--r--src/main/java/com/anthonyhilyard/iceberg/events/EntityFluidEvent.java57
-rw-r--r--src/main/java/com/anthonyhilyard/iceberg/events/EntityFluidEvents.java44
-rw-r--r--src/main/java/com/anthonyhilyard/iceberg/events/NewItemPickupCallback.java24
-rw-r--r--src/main/java/com/anthonyhilyard/iceberg/events/NewItemPickupEvent.java41
-rw-r--r--src/main/java/com/anthonyhilyard/iceberg/events/RenderTooltipEvents.java65
-rw-r--r--src/main/java/com/anthonyhilyard/iceberg/events/RenderTooltipExtEvent.java65
8 files changed, 156 insertions, 201 deletions
diff --git a/src/main/java/com/anthonyhilyard/iceberg/events/CriterionCallback.java b/src/main/java/com/anthonyhilyard/iceberg/events/CriterionCallback.java
new file mode 100644
index 0000000..f46f082
--- /dev/null
+++ b/src/main/java/com/anthonyhilyard/iceberg/events/CriterionCallback.java
@@ -0,0 +1,23 @@
+package com.anthonyhilyard.iceberg.events;
+
+import net.fabricmc.fabric.api.event.Event;
+import net.fabricmc.fabric.api.event.EventFactory;
+import net.minecraft.advancements.Advancement;
+import net.minecraft.world.entity.player.Player;
+
+/**
+ * This event is fired when a player is granted an advancement criterion.
+ */
+public interface CriterionCallback
+{
+ Event<CriterionCallback> EVENT = EventFactory.createArrayBacked(CriterionCallback.class,
+ (listeners) -> (player, advancement, criterionKey) -> {
+ for (CriterionCallback listener : listeners)
+ {
+ listener.awardCriterion(player, advancement, criterionKey);
+ }
+ }
+ );
+
+ public void awardCriterion(Player player, Advancement advancement, String criterionKey);
+}
diff --git a/src/main/java/com/anthonyhilyard/iceberg/events/CriterionEvent.java b/src/main/java/com/anthonyhilyard/iceberg/events/CriterionEvent.java
deleted file mode 100644
index fed7ec2..0000000
--- a/src/main/java/com/anthonyhilyard/iceberg/events/CriterionEvent.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.anthonyhilyard.iceberg.events;
-
-import net.minecraftforge.event.entity.player.PlayerEvent;
-import net.minecraft.advancements.Advancement;
-import net.minecraft.world.entity.player.Player;
-import net.minecraftforge.common.MinecraftForge;
-
-/**
- * This event is fired when a player is granted an advancement criterion.
- * <br>
- * This event is not {@link net.minecraftforge.eventbus.api.Cancelable}.<br>
- * <br>
- * This event does not have a result. {@link HasResult}<br>
- * <br>
- * This event is fired on the {@link MinecraftForge#EVENT_BUS}.
- */
-public class CriterionEvent extends PlayerEvent
-{
- private final Advancement advancement;
- private final String criterionKey;
-
- public CriterionEvent(Player player, Advancement advancement, String criterionKey)
- {
- super(player);
- this.advancement = advancement;
- this.criterionKey = criterionKey;
- }
-
- public Advancement getAdvancement()
- {
- return advancement;
- }
-
- public String getCriterionKey()
- {
- return criterionKey;
- }
-}
diff --git a/src/main/java/com/anthonyhilyard/iceberg/events/EntityFluidEvent.java b/src/main/java/com/anthonyhilyard/iceberg/events/EntityFluidEvent.java
deleted file mode 100644
index d2abcb2..0000000
--- a/src/main/java/com/anthonyhilyard/iceberg/events/EntityFluidEvent.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.anthonyhilyard.iceberg.events;
-
-import net.minecraft.world.entity.Entity;
-import net.minecraft.world.level.material.Fluid;
-import net.minecraftforge.event.entity.EntityEvent;
-
-public class EntityFluidEvent extends EntityEvent
-{
- private final Fluid fluid;
-
- private EntityFluidEvent(Entity entity, Fluid fluid)
- {
- super(entity);
- this.fluid = fluid;
- }
-
- public Fluid getFluid()
- {
- return fluid;
- }
-
- /**
- * This event is fired when an entity enters a fluid to at least eye-level.
- * If this is a player, they will see the "submerged in fluid" effect at this point.
- * <br>
- * This event is not {@link net.minecraftforge.eventbus.api.Cancelable}.<br>
- * <br>
- * This event does not have a result. {@link HasResult}<br>
- * <br>
- * This event is fired on the {@link MinecraftForge#EVENT_BUS}.
- */
- public static class Entered extends EntityFluidEvent
- {
- public Entered(Entity entity, Fluid fluid)
- {
- super(entity, fluid);
- }
- }
-
- /**
- * This event is fired when an entity was previously submerged in a fluid to at least eye-level and no longer are.
- * If this is a player, they will no longer see the "submerged in fluid" effect at this point.
- * <br>
- * This event is not {@link net.minecraftforge.eventbus.api.Cancelable}.<br>
- * <br>
- * This event does not have a result. {@link HasResult}<br>
- * <br>
- * This event is fired on the {@link MinecraftForge#EVENT_BUS}.
- */
- public static class Exited extends EntityFluidEvent
- {
- public Exited(Entity entity, Fluid fluid)
- {
- super(entity, fluid);
- }
- }
-}
diff --git a/src/main/java/com/anthonyhilyard/iceberg/events/EntityFluidEvents.java b/src/main/java/com/anthonyhilyard/iceberg/events/EntityFluidEvents.java
new file mode 100644
index 0000000..3ffea9a
--- /dev/null
+++ b/src/main/java/com/anthonyhilyard/iceberg/events/EntityFluidEvents.java
@@ -0,0 +1,44 @@
+package com.anthonyhilyard.iceberg.events;
+
+import net.fabricmc.fabric.api.event.Event;
+import net.fabricmc.fabric.api.event.EventFactory;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.level.material.Fluid;
+
+
+public final class EntityFluidEvents
+{
+ public EntityFluidEvents() { }
+
+ /**
+ * Called when an Entity enters a new fluid.
+ */
+ public static final Event<EntityFluidEvents.Entered> ENTERED = EventFactory.createArrayBacked(EntityFluidEvents.Entered.class, callbacks -> (entity, fluid) -> {
+ for (EntityFluidEvents.Entered callback : callbacks)
+ {
+ callback.onEntered(entity, fluid);
+ }
+ });
+
+ /**
+ * Called when an Entity exits a fluid.
+ */
+ public static final Event<EntityFluidEvents.Exited> EXITED = EventFactory.createArrayBacked(EntityFluidEvents.Exited.class, callbacks -> (entity, fluid) -> {
+ for (EntityFluidEvents.Exited callback : callbacks)
+ {
+ callback.onExited(entity, fluid);
+ }
+ });
+
+ @FunctionalInterface
+ public interface Entered
+ {
+ void onEntered(Entity entity, Fluid fluid);
+ }
+
+ @FunctionalInterface
+ public interface Exited
+ {
+ void onExited(Entity entity, Fluid fluid);
+ }
+} \ No newline at end of file
diff --git a/src/main/java/com/anthonyhilyard/iceberg/events/NewItemPickupCallback.java b/src/main/java/com/anthonyhilyard/iceberg/events/NewItemPickupCallback.java
new file mode 100644
index 0000000..5f56eb9
--- /dev/null
+++ b/src/main/java/com/anthonyhilyard/iceberg/events/NewItemPickupCallback.java
@@ -0,0 +1,24 @@
+package com.anthonyhilyard.iceberg.events;
+
+import java.util.UUID;
+
+import net.fabricmc.fabric.api.event.Event;
+import net.fabricmc.fabric.api.event.EventFactory;
+import net.minecraft.world.item.ItemStack;
+
+/**
+ * This event is fired right before a player picks up a new item. This event fires on the logical client.
+ */
+public interface NewItemPickupCallback
+{
+ Event<NewItemPickupCallback> EVENT = EventFactory.createArrayBacked(NewItemPickupCallback.class,
+ (listeners) -> (playerUUID, itemStack) -> {
+ for (NewItemPickupCallback listener : listeners)
+ {
+ listener.onItemPickup(playerUUID, itemStack);
+ }
+ }
+ );
+
+ public void onItemPickup(UUID playerUUID, ItemStack itemStack);
+} \ No newline at end of file
diff --git a/src/main/java/com/anthonyhilyard/iceberg/events/NewItemPickupEvent.java b/src/main/java/com/anthonyhilyard/iceberg/events/NewItemPickupEvent.java
deleted file mode 100644
index 48f2faf..0000000
--- a/src/main/java/com/anthonyhilyard/iceberg/events/NewItemPickupEvent.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.anthonyhilyard.iceberg.events;
-
-import net.minecraftforge.event.entity.player.PlayerEvent;
-
-import java.util.UUID;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.item.ItemStack;
-import net.minecraftforge.common.MinecraftForge;
-
-/**
- * This event is fired right before a player picks up a new item. Unlike EntityItemPickupEvent, this event fires on the logical client.
- * <br>
- * This event is not {@link net.minecraftforge.eventbus.api.Cancelable}.<br>
- * <br>
- * This event does not have a result. {@link HasResult}<br>
- * <br>
- * This event is fired on the {@link MinecraftForge#EVENT_BUS}.
- */
-public class NewItemPickupEvent extends PlayerEvent
-{
- private final ItemStack itemStack;
-
- public NewItemPickupEvent(Player player, ItemStack itemStack)
- {
- super(player);
- this.itemStack = itemStack;
- }
-
- @SuppressWarnings("resource")
- public NewItemPickupEvent(UUID playerUUID, ItemStack itemStack)
- {
- this(Minecraft.getInstance().level.getPlayerByUUID(playerUUID), itemStack);
- }
-
- public ItemStack getItemStack()
- {
- return itemStack;
- }
-}
diff --git a/src/main/java/com/anthonyhilyard/iceberg/events/RenderTooltipEvents.java b/src/main/java/com/anthonyhilyard/iceberg/events/RenderTooltipEvents.java
new file mode 100644
index 0000000..1ef654d
--- /dev/null
+++ b/src/main/java/com/anthonyhilyard/iceberg/events/RenderTooltipEvents.java
@@ -0,0 +1,65 @@
+package com.anthonyhilyard.iceberg.events;
+
+import java.util.List;
+
+import com.mojang.blaze3d.vertex.PoseStack;
+
+import net.fabricmc.fabric.api.event.Event;
+import net.fabricmc.fabric.api.event.EventFactory;
+import net.minecraft.client.gui.Font;
+import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.item.ItemStack;
+
+public final class RenderTooltipEvents
+{
+ public RenderTooltipEvents() { }
+
+ public static final Event<RenderTooltipEvents.Pre> PRE = EventFactory.createArrayBacked(RenderTooltipEvents.Pre.class,
+ callbacks -> (stack, components, poseStack, x, y, screenWidth, screenHeight, maxWidth, font, comparison) -> {
+ for (RenderTooltipEvents.Pre callback : callbacks)
+ {
+ InteractionResult result = callback.onPre(stack, components, poseStack, x, y, screenWidth, screenHeight, maxWidth, font, comparison);
+
+ if (result != InteractionResult.PASS)
+ {
+ return result;
+ }
+ }
+ return InteractionResult.PASS;
+ });
+
+ public static final Event<RenderTooltipEvents.Color> COLOR = EventFactory.createArrayBacked(RenderTooltipEvents.Color.class,
+ callbacks -> (stack, components, poseStack, x, y, font, background, borderStart, borderEnd, comparison) -> {
+ for (RenderTooltipEvents.Color callback : callbacks)
+ {
+ callback.onColor(stack, components, poseStack, x, y, font, background, borderStart, borderEnd, comparison);
+ }
+ });
+
+ public static final Event<RenderTooltipEvents.Post> POST = EventFactory.createArrayBacked(RenderTooltipEvents.Post.class,
+ callbacks -> (stack, components, poseStack, x, y, font, width, height, comparison) -> {
+ for (RenderTooltipEvents.Post callback : callbacks)
+ {
+ callback.onPost(stack, components, poseStack, x, y, font, width, height, comparison);
+ }
+ });
+
+ @FunctionalInterface
+ public interface Pre
+ {
+ InteractionResult onPre(ItemStack stack, List<ClientTooltipComponent> components, PoseStack poseStack, int x, int y, int screenWidth, int screenHeight, int maxWidth, Font font, boolean comparison);
+ }
+
+ @FunctionalInterface
+ public interface Color
+ {
+ void onColor(ItemStack stack, List<ClientTooltipComponent> components, PoseStack poseStack, int x, int y, Font font, int background, int borderStart, int borderEnd, boolean comparison);
+ }
+
+ @FunctionalInterface
+ public interface Post
+ {
+ void onPost(ItemStack stack, List<ClientTooltipComponent> components, PoseStack poseStack, int x, int y, Font font, int width, int height, boolean comparison);
+ }
+}
diff --git a/src/main/java/com/anthonyhilyard/iceberg/events/RenderTooltipExtEvent.java b/src/main/java/com/anthonyhilyard/iceberg/events/RenderTooltipExtEvent.java
deleted file mode 100644
index 3ca2d37..0000000
--- a/src/main/java/com/anthonyhilyard/iceberg/events/RenderTooltipExtEvent.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.anthonyhilyard.iceberg.events;
-
-import java.util.List;
-
-import com.mojang.blaze3d.vertex.PoseStack;
-
-import net.minecraft.client.gui.Font;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.network.chat.FormattedText;
-import net.minecraftforge.client.event.RenderTooltipEvent;
-
-public class RenderTooltipExtEvent
-{
- public static class Pre extends RenderTooltipEvent.Pre
- {
- private boolean comparisonTooltip = false;
-
- @SuppressWarnings("removal")
- public Pre(ItemStack stack, List<? extends FormattedText> lines, PoseStack PoseStack, int x, int y, int screenWidth, int screenHeight, int maxWidth, Font font, boolean comparison)
- {
- super(stack, lines, PoseStack, x, y, screenWidth, screenHeight, maxWidth, font);
- comparisonTooltip = comparison;
- }
- public boolean isComparison() { return comparisonTooltip; }
- }
-
- @SuppressWarnings("removal")
- public static class PostBackground extends RenderTooltipEvent.PostBackground
- {
- private boolean comparisonTooltip = false;
-
- public PostBackground(ItemStack stack, List<? extends FormattedText> textLines, PoseStack PoseStack, int x, int y, Font font, int width, int height, boolean comparison)
- {
- super(stack, textLines, PoseStack, x, y, font, width, height);
- comparisonTooltip = comparison;
- }
- public boolean isComparison() { return comparisonTooltip; }
- }
-
- @SuppressWarnings("removal")
- public static class PostText extends RenderTooltipEvent.PostText
- {
- private boolean comparisonTooltip = false;
-
- public PostText(ItemStack stack, List<? extends FormattedText> textLines, PoseStack PoseStack, int x, int y, Font font, int width, int height, boolean comparison)
- {
- super(stack, textLines, PoseStack, x, y, font, width, height);
- comparisonTooltip = comparison;
- }
- public boolean isComparison() { return comparisonTooltip; }
- }
-
- public static class Color extends RenderTooltipEvent.Color
- {
- private boolean comparisonTooltip = false;
-
- @SuppressWarnings("removal")
- public Color(ItemStack stack, List<? extends FormattedText> textLines, PoseStack PoseStack, int x, int y, Font font, int background, int borderStart, int borderEnd, boolean comparison)
- {
- super(stack, textLines, PoseStack, x, y, font, background, borderStart, borderEnd);
- comparisonTooltip = comparison;
- }
- public boolean isComparison() { return comparisonTooltip; }
- }
-}