diff options
author | Anthony Hilyard <anthony.hilyard@gmail.com> | 2021-10-24 11:46:40 -0700 |
---|---|---|
committer | Anthony Hilyard <anthony.hilyard@gmail.com> | 2021-10-24 11:46:40 -0700 |
commit | ec4c5aebf3b5b5af872c6b168c02bedd2bd5a9e3 (patch) | |
tree | 7f46aca691a09d9df9140505403a647827011df6 /src/main/java/com/anthonyhilyard/iceberg/events | |
parent | 2b38fda32d059303bed929b7ae634efa4dffc706 (diff) | |
download | Iceberg-ec4c5aebf3b5b5af872c6b168c02bedd2bd5a9e3.tar.gz Iceberg-ec4c5aebf3b5b5af872c6b168c02bedd2bd5a9e3.tar.bz2 Iceberg-ec4c5aebf3b5b5af872c6b168c02bedd2bd5a9e3.zip |
Initial Fabric port.
Diffstat (limited to 'src/main/java/com/anthonyhilyard/iceberg/events')
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; } - } -} |