2024/11/23

进一步完善了一下
This commit is contained in:
叁玖领域 2024-11-23 19:30:26 +08:00
parent f81569bde3
commit c80f53d5c9
15 changed files with 119 additions and 42 deletions

View File

@ -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

View File

@ -0,0 +1,5 @@
{
"values": [
"leashedplayer:amethyst_shears"
]
}

View File

@ -0,0 +1,5 @@
{
"values": [
"leashedplayer:amethyst_shears"
]
}

View File

@ -0,0 +1,5 @@
{
"values": [
"leashedplayer:amethyst_shears"
]
}

View File

@ -0,0 +1,5 @@
{
"values": [
"leashedplayer:amethyst_shears"
]
}

View File

@ -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 {

View File

@ -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) {

View File

@ -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) {
}
}

View File

@ -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<RecipeHolder<CraftingRecipe>> createRecipes(IJeiHelpers jeiHelpers) {
String group = "jei.tipped.arrow";
ItemStack arrowStack = new ItemStack(Items.ARROW);
Ingredient arrowIngredient = Ingredient.of(arrowStack);
HolderLookup.RegistryLookup<Potion> potionRegistry = CommonHooks.resolveLookup(Registries.POTION);
return null;
}
private TippedLeashRopeArrowRecipeMaker() {
}
}

View File

@ -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()));
});
}
}

View File

@ -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());
}
}

View File

@ -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
);
}
}

View File

@ -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<BooleanGameRuleValueChangeData> TYPE = new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID,"bool_gamerule_value_change"));
public static final StreamCodec<FriendlyByteBuf, BooleanGameRuleValueChangeData> 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<? extends CustomPacketPayload> type() {
return TYPE;
}
}

View File

@ -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<? extends CustomPacketPayload> type();
}

View File

@ -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);
}
}