-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add lectern compatibility for modonomicon books
Closes #162
- Loading branch information
1 parent
f8f4a8d
commit ee6c0d7
Showing
31 changed files
with
204 additions
and
21 deletions.
There are no files selected for viewing
68 changes: 68 additions & 0 deletions
68
common/src/main/java/com/klikli_dev/modonomicon/integration/LecternIntegration.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package com.klikli_dev.modonomicon.integration; | ||
|
||
import com.klikli_dev.modonomicon.Modonomicon; | ||
import com.klikli_dev.modonomicon.client.gui.BookGuiManager; | ||
import com.klikli_dev.modonomicon.client.gui.book.BookAddress; | ||
import com.klikli_dev.modonomicon.item.ModonomiconItem; | ||
import com.klikli_dev.modonomicon.networking.OpenBookOnClientMessage; | ||
import com.klikli_dev.modonomicon.platform.Services; | ||
import com.klikli_dev.modonomicon.registry.DataComponentRegistry; | ||
import net.minecraft.core.BlockPos; | ||
import net.minecraft.server.level.ServerPlayer; | ||
import net.minecraft.world.InteractionHand; | ||
import net.minecraft.world.InteractionResult; | ||
import net.minecraft.world.entity.player.Player; | ||
import net.minecraft.world.item.ItemStack; | ||
import net.minecraft.world.level.Level; | ||
import net.minecraft.world.level.block.LecternBlock; | ||
import net.minecraft.world.level.block.entity.LecternBlockEntity; | ||
import net.minecraft.world.level.block.state.BlockState; | ||
import net.minecraft.world.phys.BlockHitResult; | ||
|
||
public class LecternIntegration { | ||
|
||
public static InteractionResult rightClick(Player player, Level pLevel, InteractionHand hand, BlockHitResult hit) { | ||
BlockPos pos = hit.getBlockPos(); | ||
BlockState state = pLevel.getBlockState(pos); | ||
|
||
if (!(pLevel.getBlockEntity(pos) instanceof LecternBlockEntity lectern)) | ||
return InteractionResult.PASS; | ||
|
||
if (state.getValue(LecternBlock.HAS_BOOK)) { | ||
if (player.isShiftKeyDown()) { | ||
takeBook(player, lectern); | ||
} else { | ||
if (!pLevel.isClientSide && player instanceof ServerPlayer serverPlayer) { | ||
openBook(serverPlayer, lectern.getBook()); | ||
} | ||
return InteractionResult.SUCCESS; | ||
} | ||
} else { | ||
ItemStack stack = player.getItemInHand(hand); | ||
if (stack.get(DataComponentRegistry.BOOK_ID.get()) != null) { | ||
if (LecternBlock.tryPlaceBook(player, pLevel, pos, state, stack)) { | ||
return InteractionResult.SUCCESS; | ||
} | ||
} | ||
} | ||
return InteractionResult.PASS; | ||
} | ||
|
||
private static void openBook(ServerPlayer player, ItemStack stack) { | ||
var bookId = stack.get(DataComponentRegistry.BOOK_ID.get()); | ||
if (bookId != null) { | ||
Services.NETWORK.sendTo(player, new OpenBookOnClientMessage(bookId)); | ||
} else { | ||
Modonomicon.LOG.error("Modonomicon Lectern: ItemStack has no tag!"); | ||
} | ||
} | ||
|
||
private static void takeBook(Player player, LecternBlockEntity lectern) { | ||
ItemStack itemstack = lectern.getBook(); | ||
lectern.setBook(ItemStack.EMPTY); | ||
LecternBlock.resetBookState(player, lectern.getLevel(), lectern.getBlockPos(), lectern.getBlockState(), false); | ||
if (!player.getInventory().add(itemstack)) { | ||
player.drop(itemstack, false); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
48 changes: 48 additions & 0 deletions
48
common/src/main/java/com/klikli_dev/modonomicon/networking/OpenBookOnClientMessage.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
/* | ||
* SPDX-FileCopyrightText: 2022 klikli-dev | ||
* | ||
* SPDX-License-Identifier: MIT | ||
*/ | ||
|
||
package com.klikli_dev.modonomicon.networking; | ||
|
||
import com.klikli_dev.modonomicon.Modonomicon; | ||
import com.klikli_dev.modonomicon.client.gui.BookGuiManager; | ||
import com.klikli_dev.modonomicon.client.gui.book.BookAddress; | ||
import com.klikli_dev.modonomicon.data.BookDataManager; | ||
import net.minecraft.client.Minecraft; | ||
import net.minecraft.network.RegistryFriendlyByteBuf; | ||
import net.minecraft.network.codec.StreamCodec; | ||
import net.minecraft.network.protocol.common.custom.CustomPacketPayload; | ||
import net.minecraft.resources.ResourceLocation; | ||
import net.minecraft.world.entity.player.Player; | ||
|
||
public class OpenBookOnClientMessage implements Message { | ||
|
||
public static final Type<OpenBookOnClientMessage> TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(Modonomicon.MOD_ID, "open_book_on_client")); | ||
|
||
public static final StreamCodec<RegistryFriendlyByteBuf, OpenBookOnClientMessage> STREAM_CODEC = StreamCodec.composite( | ||
ResourceLocation.STREAM_CODEC, | ||
(m) -> m.bookId, | ||
OpenBookOnClientMessage::new | ||
); | ||
|
||
public ResourceLocation bookId; | ||
|
||
public OpenBookOnClientMessage(ResourceLocation bookId) { | ||
this.bookId = bookId; | ||
} | ||
|
||
@Override | ||
public Type<? extends CustomPacketPayload> type() { | ||
return TYPE; | ||
} | ||
|
||
@Override | ||
public void onClientReceived(Minecraft minecraft, Player player) { | ||
var book = BookDataManager.get().getBook(this.bookId); | ||
if (book != null) { | ||
BookGuiManager.get().openBook(BookAddress.defaultFor(book)); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
fabric/src/generated/resources/.cache/3eecf17e0b3542fa44b02bae7aa93622bb4a80e9
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
// 1.21 2024-06-16T10:11:59.7711644 Modonomicon/Languages: en_us | ||
dbd6b0627e6448e2df2ca44b3da68ed7e141ddda assets\modonomicon\lang\en_us.json | ||
// 1.21 2024-06-22T12:56:14.3935275 Modonomicon/Languages: en_us | ||
5e9bca31739f981be8d1893d1091664494280f6a assets\modonomicon\lang\en_us.json |
3 changes: 2 additions & 1 deletion
3
fabric/src/generated/resources/.cache/a4d0ca8e1032fb3f0e5e6d547c3176158d2ab2f7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
// 1.21 2024-06-16T10:11:59.7701583 Modonomicon/Tags for minecraft:item | ||
// 1.21 2024-06-22T12:56:14.3925257 Modonomicon/Tags for minecraft:item | ||
44de4772d365fcc0e5706dbfcd83d2967ec352c0 data\minecraft\tags\item\bookshelf_books.json | ||
44de4772d365fcc0e5706dbfcd83d2967ec352c0 data\minecraft\tags\item\lectern_books.json |
2 changes: 1 addition & 1 deletion
2
fabric/src/generated/resources/.cache/e6530a5ab7a2c0d5d93ba510671319215bfabee3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
fabric/src/generated/resources/.cache/fbe7fdca8a3d7d4724f001a760fe02aeb76403e5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 changes: 5 additions & 0 deletions
5
fabric/src/generated/resources/data/minecraft/tags/item/lectern_books.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"values": [ | ||
"modonomicon:modonomicon" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3 changes: 2 additions & 1 deletion
3
forge/src/generated/resources/.cache/6c598f431bd47b05b7a4eb102a1f5ce41438a4c5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
// 1.21 2024-06-16T10:28:55.6717379 Tags for minecraft:item mod id modonomicon | ||
// 1.21 2024-06-22T12:54:19.9035275 Tags for minecraft:item mod id modonomicon | ||
44de4772d365fcc0e5706dbfcd83d2967ec352c0 data/minecraft/tags/item/bookshelf_books.json | ||
44de4772d365fcc0e5706dbfcd83d2967ec352c0 data/minecraft/tags/item/lectern_books.json |
4 changes: 2 additions & 2 deletions
4
forge/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
// 1.21 2024-06-15T21:00:35.2793933 Languages: en_us | ||
dbd6b0627e6448e2df2ca44b3da68ed7e141ddda assets/modonomicon/lang/en_us.json | ||
// 1.21 2024-06-22T12:54:19.9035275 Languages: en_us | ||
5e9bca31739f981be8d1893d1091664494280f6a assets/modonomicon/lang/en_us.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 changes: 5 additions & 0 deletions
5
forge/src/generated/resources/data/minecraft/tags/item/lectern_books.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"values": [ | ||
"modonomicon:modonomicon" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.