From 8e4560e8da736fc66f17f9f067759cb3f851c9b0 Mon Sep 17 00:00:00 2001 From: RawDiamondMC Date: Sat, 21 Sep 2024 15:48:29 +0800 Subject: [PATCH] Some changes --- ...Entrypoint.java => KessokuBaseFabric.java} | 2 +- .../fabric/src/main/resources/fabric.mod.json | 2 +- ...ava => KessokuBaseEntrypointNeoforge.java} | 4 +-- .../lib/data/KessokuDataEntrypoint.java | 2 +- .../fabric/src/main/resources/fabric.mod.json | 5 +++ .../events/entity/KessokuEntityEvents.java | 17 ++++++++- .../events/entity/api/EntityElytraEvent.java | 30 ++++------------ ...int.java => KessokuEntityEventFabric.java} | 3 +- .../fabric/src/main/resources/fabric.mod.json | 36 +++++++++++++++++++ ...t.java => KessokuEntityEventNeoforge.java} | 5 +-- 10 files changed, 74 insertions(+), 32 deletions(-) rename base/fabric/src/main/java/band/kessoku/lib/base/{KessokuBaseEntrypoint.java => KessokuBaseFabric.java} (92%) rename base/neo/src/main/java/band/kessoku/lib/base/{KessokuBaseEntrypoint.java => KessokuBaseEntrypointNeoforge.java} (89%) rename entity-events/fabric/src/main/java/band/kessoku/lib/events/entity/{KessokuEntityEventEntrypoint.java => KessokuEntityEventFabric.java} (93%) create mode 100644 entity-events/fabric/src/main/resources/fabric.mod.json rename entity-events/neo/src/main/java/band/kessoku/lib/events/entity/{KessokuEntityEventEntrypoint.java => KessokuEntityEventNeoforge.java} (96%) diff --git a/base/fabric/src/main/java/band/kessoku/lib/base/KessokuBaseEntrypoint.java b/base/fabric/src/main/java/band/kessoku/lib/base/KessokuBaseFabric.java similarity index 92% rename from base/fabric/src/main/java/band/kessoku/lib/base/KessokuBaseEntrypoint.java rename to base/fabric/src/main/java/band/kessoku/lib/base/KessokuBaseFabric.java index 6f339d3..90733f2 100644 --- a/base/fabric/src/main/java/band/kessoku/lib/base/KessokuBaseEntrypoint.java +++ b/base/fabric/src/main/java/band/kessoku/lib/base/KessokuBaseFabric.java @@ -17,7 +17,7 @@ import net.fabricmc.api.ModInitializer; -public final class KessokuBaseEntrypoint implements ModInitializer { +public final class KessokuBaseFabric implements ModInitializer { @Override public void onInitialize() { ModUtils.getLogger().info(KessokuBase.MARKER, "KessokuLib-Base is loaded!"); diff --git a/base/fabric/src/main/resources/fabric.mod.json b/base/fabric/src/main/resources/fabric.mod.json index e9c5979..e4d1e45 100644 --- a/base/fabric/src/main/resources/fabric.mod.json +++ b/base/fabric/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "icon": "icon.png", "entrypoints": { "main": [ - "band.kessoku.lib.base.KessokuBaseEntrypoint" + "band.kessoku.lib.base.KessokuBaseFabric" ] }, "environment": "*", diff --git a/base/neo/src/main/java/band/kessoku/lib/base/KessokuBaseEntrypoint.java b/base/neo/src/main/java/band/kessoku/lib/base/KessokuBaseEntrypointNeoforge.java similarity index 89% rename from base/neo/src/main/java/band/kessoku/lib/base/KessokuBaseEntrypoint.java rename to base/neo/src/main/java/band/kessoku/lib/base/KessokuBaseEntrypointNeoforge.java index 309acbb..a3a9cb1 100644 --- a/base/neo/src/main/java/band/kessoku/lib/base/KessokuBaseEntrypoint.java +++ b/base/neo/src/main/java/band/kessoku/lib/base/KessokuBaseEntrypointNeoforge.java @@ -18,8 +18,8 @@ import net.neoforged.fml.common.Mod; @Mod(KessokuBase.MOD_ID) -public final class KessokuBaseEntrypoint { - public KessokuBaseEntrypoint() { +public final class KessokuBaseEntrypointNeoforge { + public KessokuBaseEntrypointNeoforge() { ModUtils.getLogger().info(KessokuBase.MARKER, "KessokuLib-Base is loaded!"); } } diff --git a/data/fabric/src/main/java/band/kessoku/lib/data/KessokuDataEntrypoint.java b/data/fabric/src/main/java/band/kessoku/lib/data/KessokuDataEntrypoint.java index b0eb48f..65b5e3b 100644 --- a/data/fabric/src/main/java/band/kessoku/lib/data/KessokuDataEntrypoint.java +++ b/data/fabric/src/main/java/band/kessoku/lib/data/KessokuDataEntrypoint.java @@ -3,7 +3,7 @@ import band.kessoku.lib.base.ModUtils; import net.fabricmc.api.ModInitializer; -public class KessokuDataEntrypoint implements ModInitializer { +public final class KessokuDataEntrypoint implements ModInitializer { @Override public void onInitialize() { ModUtils.getLogger().info(KessokuData.MARKER, "KessokuLib-BlockEntity is Loaded!"); diff --git a/data/fabric/src/main/resources/fabric.mod.json b/data/fabric/src/main/resources/fabric.mod.json index 4202d5b..bd0db67 100644 --- a/data/fabric/src/main/resources/fabric.mod.json +++ b/data/fabric/src/main/resources/fabric.mod.json @@ -14,6 +14,11 @@ }, "license": "LGPL-3.0-only", "icon": "icon.png", + "entrypoints": { + "main": [ + "band.kessoku.lib.data.KessokuDataEntrypoint" + ] + }, "environment": "*", "depends": { "fabricloader": ">=0.16.0", diff --git a/entity-events/common/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEvents.java b/entity-events/common/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEvents.java index da91229..14952e8 100644 --- a/entity-events/common/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEvents.java +++ b/entity-events/common/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEvents.java @@ -15,10 +15,25 @@ */ package band.kessoku.lib.events.entity; +import band.kessoku.lib.events.entity.api.EntityElytraEvent; +import band.kessoku.lib.events.entity.api.item.KessokuElytraItem; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.item.ItemStack; import org.slf4j.Marker; import org.slf4j.MarkerFactory; -public class KessokuEntityEvents { +public final class KessokuEntityEvents { public static final String MOD_ID = "kessoku_entity_events"; public static final Marker MARKER = MarkerFactory.getMarker("[KessokuEntityEvents]"); + static void init() { + EntityElytraEvent.CUSTOM.register((entity, tickElytra) -> { + ItemStack chestStack = entity.getEquippedStack(EquipmentSlot.CHEST); + + if (chestStack.getItem() instanceof KessokuElytraItem fabricElytraItem) { + return fabricElytraItem.useCustomElytra(entity, chestStack, tickElytra); + } + + return false; + }); + } } diff --git a/entity-events/common/src/main/java/band/kessoku/lib/events/entity/api/EntityElytraEvent.java b/entity-events/common/src/main/java/band/kessoku/lib/events/entity/api/EntityElytraEvent.java index b0e8eec..dd26018 100644 --- a/entity-events/common/src/main/java/band/kessoku/lib/events/entity/api/EntityElytraEvent.java +++ b/entity-events/common/src/main/java/band/kessoku/lib/events/entity/api/EntityElytraEvent.java @@ -18,20 +18,20 @@ import band.kessoku.lib.event.api.Event; import band.kessoku.lib.events.entity.api.item.KessokuElytraItem; -import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.ApiStatus; /** * Events related to elytra flight for living entities. Elytra flight is also known as "fall flying". */ -public class EntityElytraEvent { +@ApiStatus.NonExtendable +public interface EntityElytraEvent { /** * An event to check if elytra flight (both through normal and custom elytras) is allowed. * All listeners need to return true to allow the entity to fly, otherwise elytra flight will be blocked/stopped. */ - public static final Event ALLOW = Event.of(listeners -> entity -> { + Event ALLOW = Event.of(listeners -> entity -> { for (Allow listener : listeners) { if (!listener.allowElytraFlight(entity)) { return false; @@ -47,7 +47,7 @@ public class EntityElytraEvent { * *

Items that wish to enable custom elytra flight when worn in the chest equipment slot can simply implement {@link KessokuElytraItem} instead of registering a listener. */ - public static final Event CUSTOM = Event.of(listeners -> (entity, tickElytra) -> { + Event CUSTOM = Event.of(listeners -> (entity, tickElytra) -> { for (Custom listener : listeners) { if (listener.useCustomElytra(entity, tickElytra)) { return true; @@ -57,20 +57,8 @@ public class EntityElytraEvent { return false; }); - static { - CUSTOM.register((entity, tickElytra) -> { - ItemStack chestStack = entity.getEquippedStack(EquipmentSlot.CHEST); - - if (chestStack.getItem() instanceof KessokuElytraItem fabricElytraItem) { - return fabricElytraItem.useCustomElytra(entity, chestStack, tickElytra); - } - - return false; - }); - } - @FunctionalInterface - public interface Allow { + interface Allow { /** * @return false to block elytra flight, true to allow it (unless another listener returns false) */ @@ -78,7 +66,7 @@ public interface Allow { } @FunctionalInterface - public interface Custom { + interface Custom { /** * Try to use a custom elytra for an entity. * A custom elytra is anything that allows an entity to enter and continue elytra flight when some condition is met. @@ -104,8 +92,4 @@ public interface Custom { */ boolean useCustomElytra(LivingEntity entity, boolean tickElytra); } - - private EntityElytraEvent() { - } - } diff --git a/entity-events/fabric/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventEntrypoint.java b/entity-events/fabric/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventFabric.java similarity index 93% rename from entity-events/fabric/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventEntrypoint.java rename to entity-events/fabric/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventFabric.java index 9ae2dcc..8602706 100644 --- a/entity-events/fabric/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventEntrypoint.java +++ b/entity-events/fabric/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventFabric.java @@ -21,9 +21,10 @@ import net.fabricmc.fabric.api.entity.event.v1.EntityElytraEvents; import net.fabricmc.fabric.api.entity.event.v1.EntitySleepEvents; -public class KessokuEntityEventEntrypoint implements ModInitializer { +public final class KessokuEntityEventFabric implements ModInitializer { @Override public void onInitialize() { + KessokuEntityEvents.init(); EntityElytraEvents.ALLOW.register(entity -> EntityElytraEvent.ALLOW.invoker().allowElytraFlight(entity)); EntityElytraEvents.CUSTOM.register((entity, tickElytra) -> EntityElytraEvent.CUSTOM.invoker().useCustomElytra(entity, tickElytra)); diff --git a/entity-events/fabric/src/main/resources/fabric.mod.json b/entity-events/fabric/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..b8989df --- /dev/null +++ b/entity-events/fabric/src/main/resources/fabric.mod.json @@ -0,0 +1,36 @@ +{ + "schemaVersion": 1, + "id": "kessoku_entity_events", + "version": "${version}", + "name": "Kessoku Entity Events API", + "description": "Provide some events about entity.", + "authors": [ + "Kessoku Tea Time" + ], + "contact": { + "homepage": "https://modrinth.com/mod/kessoku-lib", + "sources": "https://github.com/KessokuTeaTime/KessokuLib", + "issues": "https://github.com/KessokuTeaTime/KessokuLib/issues" + }, + "license": "LGPL-3.0-only", + "icon": "icon.png", + "entrypoints": { + "main": [ + "band.kessoku.lib.events.entity.KessokuEntityEventFabric" + ] + }, + "environment": "*", + "depends": { + "fabricloader": ">=0.16.0", + "minecraft": "1.21", + "java": ">=21", + "fabric-api": "*" + }, + "custom": { + "modmenu": { + "badges": [ + "library" + ] + } + } +} \ No newline at end of file diff --git a/entity-events/neo/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventEntrypoint.java b/entity-events/neo/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventNeoforge.java similarity index 96% rename from entity-events/neo/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventEntrypoint.java rename to entity-events/neo/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventNeoforge.java index d5407d8..fe62973 100644 --- a/entity-events/neo/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventEntrypoint.java +++ b/entity-events/neo/src/main/java/band/kessoku/lib/events/entity/KessokuEntityEventNeoforge.java @@ -32,8 +32,9 @@ import net.neoforged.neoforge.event.entity.player.PlayerEvent; @Mod(KessokuEntityEvents.MOD_ID) -public class KessokuEntityEventEntrypoint { - public KessokuEntityEventEntrypoint() { +public final class KessokuEntityEventNeoforge { + public KessokuEntityEventNeoforge() { + KessokuEntityEvents.init(); NeoEventUtils.registerEvent(NeoForge.EVENT_BUS, LivingIncomingDamageEvent.class, event -> { var entity = event.getEntity(); if (!entity.getWorld().isClient() && ServerLivingEntityEvent.ALLOW_DAMAGE.invoker().allowDamage(entity, event.getSource(), event.getAmount())) {