diff --git a/src/client/java/modchest/networking/packet/gridRenderRequestS2CPacket.java b/src/client/java/modchest/networking/packet/gridRenderRequestS2CPacket.java index 97c1963..c4e8627 100644 --- a/src/client/java/modchest/networking/packet/gridRenderRequestS2CPacket.java +++ b/src/client/java/modchest/networking/packet/gridRenderRequestS2CPacket.java @@ -1,13 +1,21 @@ package modchest.networking.packet; +import static net.minecraft.block.Block.getBlockFromItem; + /*import modchest.rendering.gridBlockRender; import modchest.rendering.gridBlockTexture;*/ import net.fabricmc.fabric.api.networking.v1.PacketSender; +import net.minecraft.block.Block; import net.minecraft.client.MinecraftClient; import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.render.block.BlockModelRenderer; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.nbt.NbtCompound; import net.minecraft.network.PacketByteBuf; +import net.minecraft.text.Text; +import net.minecraft.util.math.BlockPos; public class gridRenderRequestS2CPacket extends BlockModelRenderer { @@ -19,21 +27,19 @@ public class gridRenderRequestS2CPacket extends BlockModelRenderer { public static void receive(MinecraftClient minecraftClient, ClientPlayNetworkHandler clientPlayNetworkHandler, PacketByteBuf buffer, PacketSender PacketSender) { // clientPlayNetworkHandler.getWorld(); - // modNetworkingClient.grid_block_networking.; - // PacketByteBuf buf = - /*NbtCompound nbtgrid = buffer.readNbt(); + NbtCompound nbtgrid = buffer.readNbt(); int[] positionarray = nbtgrid.getIntArray("BlockPosition"); Integer h = positionarray[0]; Integer i = positionarray[1]; - Integer j = positionarray[2];*/ - + Integer j = positionarray[2]; + + BlockPos gridBlockPos = new BlockPos(h, i, j); + // minecraftClient.getBakedModelManager().getBlockModels(); // minecraftClient.getSpriteAtlas(gridBlockTexture.getBlockInHandId(null)); //BlockRenderView world = minecraftClient.world; - //BlockPos gridBlockPos = new BlockPos(h, i, j); - /*@Nullable BlockState gridBlockState = getStateFromRawId(FORCE_STATE); MatrixStack matrix = new MatrixStack(); @@ -41,7 +47,7 @@ public class gridRenderRequestS2CPacket extends BlockModelRenderer { Random randomGrid = new Random(); long seed = 7756495;*/ - /*PlayerEntity playerEntity = minecraftClient.player; + PlayerEntity playerEntity = minecraftClient.player; Block BlockInHand = getBlockFromItem(playerEntity.getMainHandStack().getItem()); String inHandData = BlockInHand.getDefaultState().toString(); playerEntity.sendMessage(Text.of(inHandData)); diff --git a/src/client/java/modchest/rendering/gridBlockRender.java b/src/client/java/modchest/rendering/gridBlockRender.java index 6ff764e..404969a 100644 --- a/src/client/java/modchest/rendering/gridBlockRender.java +++ b/src/client/java/modchest/rendering/gridBlockRender.java @@ -1,6 +1,16 @@ package modchest.rendering; -/*public class gridBlockRender extends BlockModelRenderer{ +import net.minecraft.block.BlockState; +import net.minecraft.client.color.block.BlockColors; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.block.BlockModelRenderer; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.BlockRenderView; + +public class gridBlockRender extends BlockModelRenderer{ public gridBlockRender(BlockColors colors) { super(colors); @@ -11,4 +21,4 @@ package modchest.rendering; MatrixStack matrices, VertexConsumer vertexConsumer, boolean cull, Random random, long seed, int overlay) { } -}*/ +} diff --git a/src/client/java/modchest/rendering/gridBlockTexture.java b/src/client/java/modchest/rendering/gridBlockTexture.java index fd9a103..e696e3b 100644 --- a/src/client/java/modchest/rendering/gridBlockTexture.java +++ b/src/client/java/modchest/rendering/gridBlockTexture.java @@ -1,11 +1,21 @@ package modchest.rendering; -//public class gridBlockTexture extends TextureManager{ +import net.minecraft.client.texture.AbstractTexture; +import net.minecraft.client.texture.TextureManager; +import net.minecraft.resource.ResourceManager; +import net.minecraft.util.Identifier; - //public gridBlockTexture(ResourceManager resourceManager) { - // super(resourceManager); +public class gridBlockTexture extends TextureManager{ + + public gridBlockTexture(ResourceManager resourceManager) { + super(resourceManager); //TODO Auto-generated constructor stub - //} + } + + @Override + public AbstractTexture getTexture(Identifier id) { + return super.getTexture(id); + } /*public static BlockColors getBlockColors(Block block, BlockRenderView world, BlockPos pos, BlockColors blockColors) { BlockState state = block.getDefaultState(); @@ -14,11 +24,6 @@ package modchest.rendering; return colors; }*/ - /*@Override - public AbstractTexture getTexture(Identifier id) { - return super.getTexture(id); - }*/ - /*public static Overlay getOverlayGrid(){ MinecraftClient minecraftClient = MinecraftClient.getInstance(); PlayerEntity player = minecraftClient.player; @@ -30,6 +35,6 @@ package modchest.rendering; //stateInHand.getRenderingSeed -//} +} diff --git a/src/main/java/modchest/event/useBlockCallback.java b/src/main/java/modchest/event/useBlockCallback.java index 65daf7a..b35f176 100644 --- a/src/main/java/modchest/event/useBlockCallback.java +++ b/src/main/java/modchest/event/useBlockCallback.java @@ -3,10 +3,15 @@ package modchest.event; import static net.minecraft.block.Block.getBlockFromItem; import modchest.block.custom.gridBlock; +import modchest.networking.modNetworkingServer; +import modchest.networking.packet.gridBlockS2CPacket; import net.fabricmc.fabric.api.event.player.UseBlockCallback; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; @@ -21,8 +26,8 @@ public class useBlockCallback implements UseBlockCallback { Block BlockInHand = getBlockFromItem(player.getMainHandStack().getItem()); BlockState StateInHand = BlockInHand.getDefaultState(); BlockPos gridBlockPos = hitResult.getBlockPos(); - //PlayerPublicKey playerPublicKey = player.getPublicKey(); - //ServerPlayerEntity serverPlayer = ((ServerPlayerEntity) player); + + // PlayerPublicKey playerPublicKey = player.getPublicKey(); if (world.getBlockState(hitResult.getBlockPos()).getBlock().toString().equals("Block{modchest:grid_block}") && player.isSpectator() == false) { if (BlockInHand instanceof gridBlock) { @@ -34,7 +39,13 @@ public class useBlockCallback implements UseBlockCallback { player.getMainHandStack().decrement(1); player.jump(); // player.onLanding(player.playSoundIfNotSilent()); - //gridBlockS2CPacket.sendPacket(serverPlayer, hitResult); + if (player instanceof ServerPlayerEntity) { // nötig, um sicherzustellen, dass eine ServerPlayerEntity + // fürs networking übergeben wird und nicht eine + // PlayerEntity, da sonst Absturz + ServerPlayerEntity serverPlayer = (ServerPlayerEntity) player; + ServerPlayNetworking.send(serverPlayer, modNetworkingServer.grid_block_networking, + gridBlock.writeBuffer(hitResult)); + } } } else { return ActionResult.PASS; diff --git a/src/main/java/modchest/networking/packet/gridBlockS2CPacket.java b/src/main/java/modchest/networking/packet/gridBlockS2CPacket.java index 2554aa3..162846a 100644 --- a/src/main/java/modchest/networking/packet/gridBlockS2CPacket.java +++ b/src/main/java/modchest/networking/packet/gridBlockS2CPacket.java @@ -1,10 +1,13 @@ package modchest.networking.packet; +import net.minecraft.network.PacketByteBuf; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.Identifier; import net.minecraft.util.hit.BlockHitResult; public class gridBlockS2CPacket { + public static void sendPacket(ServerPlayerEntity serverPlayerEntity, BlockHitResult hitResult) { //PacketByteBuf gridBuffer = gridBlock.writeBuffer(hitResult); //ServerPlayNetworking.send(serverPlayerEntity, modNetworkingServer.grid_block_networking, gridBuffer);