From 821928f86514afc24795281cbdc914ca11f35934 Mon Sep 17 00:00:00 2001 From: Paula Date: Thu, 25 Apr 2024 21:20:07 +0200 Subject: [PATCH] gridBlockAbilities added MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit useBlockCallback Event hinzugefügt: bei benutzen vom gridBlock wird der Block zum Block den man in der Hand hatte, wie Blöcke platzieren, nur cooler Ist nur ein Zwischenstadium, keine Sorge --- .../java/modchest/event/useBlockCallback.java | 45 +++++++++++++++++++ src/main/java/modchest/util/initializer.java | 2 + 2 files changed, 47 insertions(+) create mode 100644 src/main/java/modchest/event/useBlockCallback.java diff --git a/src/main/java/modchest/event/useBlockCallback.java b/src/main/java/modchest/event/useBlockCallback.java new file mode 100644 index 0000000..143a318 --- /dev/null +++ b/src/main/java/modchest/event/useBlockCallback.java @@ -0,0 +1,45 @@ +package modchest.event; + +import static net.minecraft.block.Block.getBlockFromItem; + +import java.util.LinkedList; +import java.util.List; + +import modchest.block.custom.gridBlock; +import net.fabricmc.fabric.api.event.player.UseBlockCallback; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Position; +import net.minecraft.world.World; + +public class useBlockCallback implements UseBlockCallback{ + + @Override + public ActionResult interact(PlayerEntity player, World world, Hand hand, BlockHitResult hitResult) { + Block BlockInHand = getBlockFromItem(player.getMainHandStack().getItem()); + BlockState StateInHand = BlockInHand.getDefaultState(); + BlockPos gridBlockPos = hitResult.getBlockPos(); + + if (world.getBlockState(hitResult.getBlockPos()).getBlock().toString().equals("Block{modchest:grid_block}") && player.isSpectator()==false) { + + if (BlockInHand instanceof gridBlock) { + return ActionResult.PASS; + } else { + player.sendMessage(Text.of("gridBlock benutzt")); + world.setBlockState(gridBlockPos, StateInHand); //tauscht die Textur des "benutzten" gridBlocks mit der des Blocks in der Hand + player.getMainHandStack().decrement(1); + List gridBlockList = new LinkedList(); + gridBlockList.add(hitResult.getPos()); + } + } else { + return ActionResult.PASS; + } + return ActionResult.SUCCESS; + } +} diff --git a/src/main/java/modchest/util/initializer.java b/src/main/java/modchest/util/initializer.java index 6308369..5d21799 100644 --- a/src/main/java/modchest/util/initializer.java +++ b/src/main/java/modchest/util/initializer.java @@ -3,6 +3,7 @@ package modchest.util; import modchest.block.entity.modBlockEntities; import modchest.block.modBlocks; import modchest.event.playerAfterRespawnEvent; +import modchest.event.useBlockCallback; import modchest.item.modItemGroup; import modchest.item.modItems; import modchest.networking.modNetworkingServer; @@ -22,6 +23,7 @@ public class initializer { public static void events() { //Events, bei denen custom Code ausgefuehrt wird, werden eingefuehrt ServerPlayerEvents.AFTER_RESPAWN.register(new playerAfterRespawnEvent()); + useBlockCallback.EVENT.register(new useBlockCallback()); } public static void networking() { //Identifier unter denen der Server zuhoert werden registriert