From f58ffa9b65c28ac81b2037086d7732d9eb168b6e Mon Sep 17 00:00:00 2001 From: Malte Reents Date: Mon, 8 Jan 2024 11:10:15 +0100 Subject: [PATCH] message on sleep Sendet eine nachricht, wenn sich der Client schlafen legt. Vorstufe zum testen, dass der event-caller auch funktioniert --- src/client/java/modchest/REServerModClient.java | 11 ++++++++++- .../resources/reservermod.client.mixins.json | 16 ++++++++-------- src/main/java/modchest/REServerMod.java | 6 ++++-- .../entitySleepStartSleepingEventHandler.java | 16 ++++++++++++++++ 4 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 src/main/java/modchest/event/entitySleepStartSleepingEventHandler.java diff --git a/src/client/java/modchest/REServerModClient.java b/src/client/java/modchest/REServerModClient.java index bf03b1b..075f88b 100644 --- a/src/client/java/modchest/REServerModClient.java +++ b/src/client/java/modchest/REServerModClient.java @@ -1,11 +1,20 @@ package modchest; -import modchest.block.modBlocks; import net.fabricmc.api.ClientModInitializer; +import net.minecraft.client.MinecraftClient; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.text.Text; public class REServerModClient implements ClientModInitializer { @Override public void onInitializeClient() { // This entrypoint is suitable for setting up client-specific logic, such as rendering. + //EntitySleepEvents.START_SLEEPING.register(new entitySleepStartSleepingEventHandler()); + } + + public static void writeMessage(String text) { //holt den Spieler dieses Clients und sendet ihm eine Nachricht + PlayerEntity thisPlayer = MinecraftClient.getInstance().player; + assert thisPlayer != null; + thisPlayer.sendMessage(Text.literal(text)); } } \ No newline at end of file diff --git a/src/client/resources/reservermod.client.mixins.json b/src/client/resources/reservermod.client.mixins.json index ee8b04c..efda068 100644 --- a/src/client/resources/reservermod.client.mixins.json +++ b/src/client/resources/reservermod.client.mixins.json @@ -1,11 +1,11 @@ { - "required": true, - "package": "modchest.mixin.client", - "compatibilityLevel": "JAVA_17", - "client": [ - "ExampleClientMixin" - ], - "injectors": { - "defaultRequire": 1 + "required": true, + "package": "modchest.mixin.client", + "compatibilityLevel": "JAVA_17", + "client": [ + "ExampleClientMixin" + ], + "injectors": { + "defaultRequire": 1 } } \ No newline at end of file diff --git a/src/main/java/modchest/REServerMod.java b/src/main/java/modchest/REServerMod.java index 32c7533..a082617 100644 --- a/src/main/java/modchest/REServerMod.java +++ b/src/main/java/modchest/REServerMod.java @@ -2,10 +2,11 @@ package modchest; import modchest.block.entity.modBlockEntities; import modchest.block.modBlocks; +import modchest.event.entitySleepStartSleepingEventHandler; import modchest.item.modItemGroup; import modchest.item.modItems; import net.fabricmc.api.ModInitializer; - +import net.fabricmc.fabric.api.entity.event.v1.EntitySleepEvents; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,10 +18,11 @@ public class REServerMod implements ModInitializer { @Override public void onInitialize() { modItemGroup.modchest(); // Item Gruppe fürs Creative-Inventar wird erstellt; In dieser Gruppe sollen - // dann alle Items und Blöcke dieser Mod angezeigt werden + // dann alle Items und Blöcke dieser Mod angezeigt werden modItems.setItems(); // die Items werden erstellt modBlocks.setBlocks(); // Hier werden die Blöcke erstellt modBlockEntities.registerBlockEntities(); // Die Interaktionsmenüs für die Blöcke werden erstellt + EntitySleepEvents.START_SLEEPING.register(new entitySleepStartSleepingEventHandler()); LOGGER.info("Modchest erfolgreich geladen!"); } diff --git a/src/main/java/modchest/event/entitySleepStartSleepingEventHandler.java b/src/main/java/modchest/event/entitySleepStartSleepingEventHandler.java new file mode 100644 index 0000000..26b182a --- /dev/null +++ b/src/main/java/modchest/event/entitySleepStartSleepingEventHandler.java @@ -0,0 +1,16 @@ +package modchest.event; + +import net.fabricmc.fabric.api.entity.event.v1.EntitySleepEvents; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.text.Text; +import net.minecraft.util.math.BlockPos; + +public class entitySleepStartSleepingEventHandler implements EntitySleepEvents.StartSleeping { + @Override + public void onStartSleeping(LivingEntity entity, BlockPos sleepingPos) { //Methode die aufgerufen wird, wenn sich ein entity Hinlegt + if (entity instanceof PlayerEntity) { //ueberprueft ob das Entity ein Spieler ist + entity.sendMessage(Text.of("Schlafmütze!")); + } + } +} \ No newline at end of file