From c80f53d5c92a80c655a802bfb7636d48642bbaca Mon Sep 17 00:00:00 2001 From: 3944Realms Date: Sat, 23 Nov 2024 19:30:26 +0800 Subject: [PATCH] =?UTF-8?q?2024/11/23=20=E8=BF=9B=E4=B8=80=E6=AD=A5?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1749bb0c3e8c52cfb2d8ed2140e4678c71e770f5 | 6 ++- .../data/c/tags/item/tools/shear.json | 5 +++ .../tags/item/enchantable/durability.json | 5 +++ .../tags/item/enchantable/mining.json | 5 +++ .../tags/item/enchantable/vanishing.json | 5 +++ .../leashedplayer/ClientEventHandler.java | 3 +- .../leashedplayer/CommonEventHandler.java | 20 ++++++++++ .../leashedplayer/api/JEIPlugin.java | 8 ++++ .../TippedLeashRopeArrowRecipeMaker.java | 38 ------------------- .../OpenTOPNeededModeWhenScreenIsNotNull.java | 6 ++- .../datagen/provider/ModItemTagProvider.java | 10 +++++ .../network/LeashedPlayerNetwork.java | 6 +++ .../BooleanGameRuleValueChangeData.java | 31 +++++++++++++++ .../client/IGameRuleValueChangeData.java | 11 ++++++ .../r3944realms/leashedplayer/utils/Util.java | 2 +- 15 files changed, 119 insertions(+), 42 deletions(-) create mode 100644 src/generated/resources/data/c/tags/item/tools/shear.json create mode 100644 src/generated/resources/data/minecraft/tags/item/enchantable/durability.json create mode 100644 src/generated/resources/data/minecraft/tags/item/enchantable/mining.json create mode 100644 src/generated/resources/data/minecraft/tags/item/enchantable/vanishing.json delete mode 100644 src/main/java/com/r3944realms/leashedplayer/apiContent/item/repcipe/TippedLeashRopeArrowRecipeMaker.java create mode 100644 src/main/java/com/r3944realms/leashedplayer/network/client/BooleanGameRuleValueChangeData.java create mode 100644 src/main/java/com/r3944realms/leashedplayer/network/client/IGameRuleValueChangeData.java diff --git a/src/generated/resources/.cache/1749bb0c3e8c52cfb2d8ed2140e4678c71e770f5 b/src/generated/resources/.cache/1749bb0c3e8c52cfb2d8ed2140e4678c71e770f5 index ecf2370..57fbd72 100644 --- a/src/generated/resources/.cache/1749bb0c3e8c52cfb2d8ed2140e4678c71e770f5 +++ b/src/generated/resources/.cache/1749bb0c3e8c52cfb2d8ed2140e4678c71e770f5 @@ -1,3 +1,7 @@ -// 1.21 2024-11-11T12:54:18.1914427 Tags for minecraft:item mod id leashedplayer +// 1.21 2024-11-23T19:27:19.709121 Tags for minecraft:item mod id leashedplayer +84707301f1fe2490a899deb51302d413cfff5a89 data/c/tags/item/tools/shear.json 63e4ad58dc8397171f84264d53dfe4fb503c7b1e data/minecraft/tags/item/arrows.json +84707301f1fe2490a899deb51302d413cfff5a89 data/minecraft/tags/item/enchantable/durability.json +84707301f1fe2490a899deb51302d413cfff5a89 data/minecraft/tags/item/enchantable/mining.json +84707301f1fe2490a899deb51302d413cfff5a89 data/minecraft/tags/item/enchantable/vanishing.json 5cf114c796db4c2235df11ee7f656bba09d72a7a data/minecraft/tags/item/head_armor.json diff --git a/src/generated/resources/data/c/tags/item/tools/shear.json b/src/generated/resources/data/c/tags/item/tools/shear.json new file mode 100644 index 0000000..069fe5f --- /dev/null +++ b/src/generated/resources/data/c/tags/item/tools/shear.json @@ -0,0 +1,5 @@ +{ + "values": [ + "leashedplayer:amethyst_shears" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/enchantable/durability.json b/src/generated/resources/data/minecraft/tags/item/enchantable/durability.json new file mode 100644 index 0000000..069fe5f --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/item/enchantable/durability.json @@ -0,0 +1,5 @@ +{ + "values": [ + "leashedplayer:amethyst_shears" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/enchantable/mining.json b/src/generated/resources/data/minecraft/tags/item/enchantable/mining.json new file mode 100644 index 0000000..069fe5f --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/item/enchantable/mining.json @@ -0,0 +1,5 @@ +{ + "values": [ + "leashedplayer:amethyst_shears" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/item/enchantable/vanishing.json b/src/generated/resources/data/minecraft/tags/item/enchantable/vanishing.json new file mode 100644 index 0000000..069fe5f --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/item/enchantable/vanishing.json @@ -0,0 +1,5 @@ +{ + "values": [ + "leashedplayer:amethyst_shears" + ] +} \ No newline at end of file diff --git a/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java b/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java index 1b20556..dea14ec 100644 --- a/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java +++ b/src/main/java/com/r3944realms/leashedplayer/ClientEventHandler.java @@ -13,6 +13,7 @@ import com.r3944realms.leashedplayer.utils.Logger; import mcjty.theoneprobe.config.Config; import mcjty.theoneprobe.gui.GuiNote; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.ChatScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; import net.minecraft.client.renderer.entity.player.PlayerRenderer; @@ -52,7 +53,7 @@ public abstract class ClientEventHandler { Screen currentScreen = mc.screen; if (IS_TOP_LOADED) { if (currentScreen != null) { - if (currentScreen instanceof GuiNote) { + if (currentScreen instanceof GuiNote || currentScreen instanceof ChatScreen) { configSaved = false; oldSelect = Config.needsProbe.get(); } else { diff --git a/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java b/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java index d2406a6..a7b7bdb 100644 --- a/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java +++ b/src/main/java/com/r3944realms/leashedplayer/CommonEventHandler.java @@ -10,14 +10,19 @@ import com.r3944realms.leashedplayer.content.effects.ModPotionRegister; import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow; import com.r3944realms.leashedplayer.content.entities.LittlePlayer; import com.r3944realms.leashedplayer.content.entities.ModEntityRegister; +import com.r3944realms.leashedplayer.content.gamerules.GameruleRegistry; +import com.r3944realms.leashedplayer.content.gamerules.Gamerules; +import com.r3944realms.leashedplayer.content.gamerules.Server.OpenTOPNeededModeWhenScreenIsNotNull; import com.r3944realms.leashedplayer.content.items.ModItemRegister; import com.r3944realms.leashedplayer.content.misc.LeadBreakItemBehavior; import com.r3944realms.leashedplayer.modInterface.PlayerLeashable; +import com.r3944realms.leashedplayer.network.client.BooleanGameRuleValueChangeData; import com.r3944realms.leashedplayer.utils.Util; import net.minecraft.ChatFormatting; import net.minecraft.commands.CommandSourceStack; import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.tags.ItemTags; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.Entity; @@ -29,6 +34,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.alchemy.PotionBrewing; import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.level.GameRules; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.DispenserBlock; import net.neoforged.bus.api.SubscribeEvent; @@ -38,7 +44,9 @@ import net.neoforged.neoforge.event.AnvilUpdateEvent; import net.neoforged.neoforge.event.RegisterCommandsEvent; import net.neoforged.neoforge.event.brewing.RegisterBrewingRecipesEvent; import net.neoforged.neoforge.event.entity.EntityAttributeCreationEvent; +import net.neoforged.neoforge.event.entity.player.PlayerEvent; import net.neoforged.neoforge.event.tick.EntityTickEvent; +import net.neoforged.neoforge.network.PacketDistributor; public class CommonEventHandler { @@ -53,6 +61,18 @@ public class CommonEventHandler { TickCommand.register(dispatcher); } + @SubscribeEvent + public static void onJoinServer(PlayerEvent.PlayerLoggedInEvent event) { + PacketDistributor.sendToPlayer((ServerPlayer) event.getEntity(), + new BooleanGameRuleValueChangeData( + OpenTOPNeededModeWhenScreenIsNotNull.ID, + GameruleRegistry.getGameruleBoolValue( + event.getEntity().level(), + OpenTOPNeededModeWhenScreenIsNotNull.ID) + ) + ); + } + @SubscribeEvent public static void OnRegisterPotionBrewing(RegisterBrewingRecipesEvent event) { diff --git a/src/main/java/com/r3944realms/leashedplayer/api/JEIPlugin.java b/src/main/java/com/r3944realms/leashedplayer/api/JEIPlugin.java index 9b6ee0c..a1aa63a 100644 --- a/src/main/java/com/r3944realms/leashedplayer/api/JEIPlugin.java +++ b/src/main/java/com/r3944realms/leashedplayer/api/JEIPlugin.java @@ -3,14 +3,21 @@ package com.r3944realms.leashedplayer.api; import com.r3944realms.leashedplayer.LeashedPlayer; import com.r3944realms.leashedplayer.apiContent.item.repcipe.JEIRecipeTypes; +import com.r3944realms.leashedplayer.content.items.repcipe.TippedLeashRopeArrowRecipe; import mezz.jei.api.IModPlugin; import mezz.jei.api.JeiPlugin; +import mezz.jei.api.constants.RecipeTypes; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.recipe.vanilla.IVanillaRecipeFactory; import mezz.jei.api.registration.IRecipeRegistration; +import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.RecipeType; import org.jetbrains.annotations.NotNull; +import java.util.List; + @JeiPlugin public class JEIPlugin implements IModPlugin { private static final ResourceLocation UID = ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID, "jei_plugin"); @@ -23,5 +30,6 @@ public class JEIPlugin implements IModPlugin { @Override public void registerRecipes(@NotNull IRecipeRegistration registration) { + } } diff --git a/src/main/java/com/r3944realms/leashedplayer/apiContent/item/repcipe/TippedLeashRopeArrowRecipeMaker.java b/src/main/java/com/r3944realms/leashedplayer/apiContent/item/repcipe/TippedLeashRopeArrowRecipeMaker.java deleted file mode 100644 index c6d561e..0000000 --- a/src/main/java/com/r3944realms/leashedplayer/apiContent/item/repcipe/TippedLeashRopeArrowRecipeMaker.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.r3944realms.leashedplayer.apiContent.item.repcipe; - -import mezz.jei.api.constants.ModIds; -import mezz.jei.api.helpers.IJeiHelpers; - -import net.minecraft.core.HolderLookup; -import net.minecraft.core.NonNullList; -import net.minecraft.core.Registry; -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.alchemy.PotionContents; -import net.minecraft.world.item.crafting.*; -import net.neoforged.neoforge.common.CommonHooks; - -import java.util.List; -import java.util.Optional; - -import static net.minecraft.world.item.Items.*; - -public class TippedLeashRopeArrowRecipeMaker { - public static List> createRecipes(IJeiHelpers jeiHelpers) { - - - String group = "jei.tipped.arrow"; - ItemStack arrowStack = new ItemStack(Items.ARROW); - Ingredient arrowIngredient = Ingredient.of(arrowStack); - - HolderLookup.RegistryLookup potionRegistry = CommonHooks.resolveLookup(Registries.POTION); - return null; - } - - private TippedLeashRopeArrowRecipeMaker() { - - } -} diff --git a/src/main/java/com/r3944realms/leashedplayer/content/gamerules/Server/OpenTOPNeededModeWhenScreenIsNotNull.java b/src/main/java/com/r3944realms/leashedplayer/content/gamerules/Server/OpenTOPNeededModeWhenScreenIsNotNull.java index 4397d9e..da24da0 100644 --- a/src/main/java/com/r3944realms/leashedplayer/content/gamerules/Server/OpenTOPNeededModeWhenScreenIsNotNull.java +++ b/src/main/java/com/r3944realms/leashedplayer/content/gamerules/Server/OpenTOPNeededModeWhenScreenIsNotNull.java @@ -2,11 +2,13 @@ package com.r3944realms.leashedplayer.content.gamerules.Server; import com.r3944realms.leashedplayer.LeashedPlayer; import com.r3944realms.leashedplayer.content.gamerules.Gamerules; +import com.r3944realms.leashedplayer.network.client.BooleanGameRuleValueChangeData; import com.r3944realms.leashedplayer.utils.Util; import net.minecraft.world.level.GameRules; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.neoforge.network.PacketDistributor; import static com.r3944realms.leashedplayer.content.gamerules.Gamerules.GAMERULE_REGISTRY; @@ -20,6 +22,8 @@ public class OpenTOPNeededModeWhenScreenIsNotNull { @SubscribeEvent public static void onCommonSetup(final FMLCommonSetupEvent event) { - GAMERULE_REGISTRY.registerGamerule(ID, CATEGORY, DEFAULT_VALUE, (i, j)->{}); + GAMERULE_REGISTRY.registerGamerule(ID, CATEGORY, DEFAULT_VALUE, (server, value)->{ + PacketDistributor.sendToAllPlayers(new BooleanGameRuleValueChangeData(ID, value.get())); + }); } } diff --git a/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemTagProvider.java b/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemTagProvider.java index 704c7fe..77b3235 100644 --- a/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemTagProvider.java +++ b/src/main/java/com/r3944realms/leashedplayer/datagen/provider/ModItemTagProvider.java @@ -6,8 +6,10 @@ import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.data.tags.ItemTagsProvider; import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; +import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.NotNull; @@ -28,5 +30,13 @@ public class ModItemTagProvider extends ItemTagsProvider { this.tag(ItemTags.HEAD_ARMOR) .add(ModItemRegister.NEOFORGE.get()) .add(Items.LEAD); + this.tag(ItemTags.MINING_ENCHANTABLE) + .add(ModItemRegister.AMETHYST_SHEARS.get()); + this.tag(ItemTags.VANISHING_ENCHANTABLE) + .add(ModItemRegister.AMETHYST_SHEARS.get()); + this.tag(ItemTags.DURABILITY_ENCHANTABLE) + .add(ModItemRegister.AMETHYST_SHEARS.get()); + this.tag(Tags.Items.TOOLS_SHEAR) + .add(ModItemRegister.AMETHYST_SHEARS.get()); } } diff --git a/src/main/java/com/r3944realms/leashedplayer/network/LeashedPlayerNetwork.java b/src/main/java/com/r3944realms/leashedplayer/network/LeashedPlayerNetwork.java index 344c529..aecbff2 100644 --- a/src/main/java/com/r3944realms/leashedplayer/network/LeashedPlayerNetwork.java +++ b/src/main/java/com/r3944realms/leashedplayer/network/LeashedPlayerNetwork.java @@ -1,6 +1,7 @@ package com.r3944realms.leashedplayer.network; import com.r3944realms.leashedplayer.LeashedPlayer; +import com.r3944realms.leashedplayer.network.client.BooleanGameRuleValueChangeData; import com.r3944realms.leashedplayer.network.client.UpdatePlayerMovement; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; @@ -18,6 +19,11 @@ public class LeashedPlayerNetwork { UpdatePlayerMovement.STREAM_CODEC, UpdatePlayerMovement::handle ); + registrar.playToClient( + BooleanGameRuleValueChangeData.TYPE, + BooleanGameRuleValueChangeData.STREAM_CODEC, + BooleanGameRuleValueChangeData::handle + ); } } diff --git a/src/main/java/com/r3944realms/leashedplayer/network/client/BooleanGameRuleValueChangeData.java b/src/main/java/com/r3944realms/leashedplayer/network/client/BooleanGameRuleValueChangeData.java new file mode 100644 index 0000000..9785a58 --- /dev/null +++ b/src/main/java/com/r3944realms/leashedplayer/network/client/BooleanGameRuleValueChangeData.java @@ -0,0 +1,31 @@ +package com.r3944realms.leashedplayer.network.client; + +import com.r3944realms.leashedplayer.LeashedPlayer; +import com.r3944realms.leashedplayer.content.gamerules.Gamerules; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; +import net.neoforged.neoforge.network.handling.IPayloadContext; +import org.jetbrains.annotations.NotNull; + +public record BooleanGameRuleValueChangeData(String gamerule_id, boolean value) implements IGameRuleValueChangeData { + public static CustomPacketPayload.Type TYPE = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID,"bool_gamerule_value_change")); + public static final StreamCodec STREAM_CODEC = + StreamCodec.composite( + ByteBufCodecs.STRING_UTF8, BooleanGameRuleValueChangeData::gamerule_id, + ByteBufCodecs.BOOL, BooleanGameRuleValueChangeData::value, + BooleanGameRuleValueChangeData::new + ); + + public void handle(IPayloadContext context) { + context.enqueueWork(() -> { + Gamerules.gamerulesBooleanValuesClient.put(gamerule_id, value); + }); + } + @Override + public @NotNull Type type() { + return TYPE; + } +} diff --git a/src/main/java/com/r3944realms/leashedplayer/network/client/IGameRuleValueChangeData.java b/src/main/java/com/r3944realms/leashedplayer/network/client/IGameRuleValueChangeData.java new file mode 100644 index 0000000..77a8f59 --- /dev/null +++ b/src/main/java/com/r3944realms/leashedplayer/network/client/IGameRuleValueChangeData.java @@ -0,0 +1,11 @@ +package com.r3944realms.leashedplayer.network.client; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import org.jetbrains.annotations.NotNull; + +public interface IGameRuleValueChangeData extends CustomPacketPayload { + @Override + @NotNull + Type type(); +} diff --git a/src/main/java/com/r3944realms/leashedplayer/utils/Util.java b/src/main/java/com/r3944realms/leashedplayer/utils/Util.java index daeced5..60e5733 100644 --- a/src/main/java/com/r3944realms/leashedplayer/utils/Util.java +++ b/src/main/java/com/r3944realms/leashedplayer/utils/Util.java @@ -34,7 +34,7 @@ public class Util { if (!file.exists()) { boolean mkdirChildrenSuccess = file.mkdirs(); if (!mkdirChildrenSuccess) { - logger.error("failed to create " + child + " directory for +" + LeashedPlayer.MOD_ID); + logger.error("failed to create {} directory for +" + LeashedPlayer.MOD_ID, child); throw new RuntimeException("failed to create " + child + " directory for" +LeashedPlayer.MOD_ID); } }