- 30
- 3
- 2
Добрый день. Пишу код который при нажатии кнопки и определённом NBT теге выводит GUI добавил команду для установки этого NBT тега но когда я в InputEvents читаю этот тег то его нет хоть комманда data выводит правильное значение этого тега.
Команда:
public class SetBreathCommand{
LiteralArgumentBuilder command = Commands.literal("setbreath").
then(Commands.argument("target", EntityArgument.player()).
then(Commands.argument("breath", StringArgumentType.string()).
executes(context -> run(context))));
public SetBreathCommand(CommandDispatcher<CommandSource> dispatcher)
{
dispatcher.register(command);
}
public int run(CommandContext<CommandSource> context) throws CommandSyntaxException {
ServerPlayerEntity player = EntityArgument.getPlayer(context,"target");
context.getSource().sendSuccess(new StringTextComponent("Succes"),true);
String breath = StringArgumentType.getString(context, "breath");
player.getPersistentData().putString(DemonSlayer.MOD_ID + ".breath",breath);
return 0;
}
}
Класс регистрации команды:
@Mod.EventBusSubscriber(modid = DemonSlayer.MOD_ID)
public class RegisterCommandsEvent {
@SubscribeEvent
public static void registerCommands(net.minecraftforge.event.RegisterCommandsEvent event)
{
new SetBreathCommand(event.getDispatcher());
ConfigCommand.register(event.getDispatcher());
}
@SubscribeEvent
public static void onPlayerCloneEvent(PlayerEvent.Clone event)
{
if (!event.getOriginal().level.isClientSide())
{
event.getPlayer().getPersistentData().putString(DemonSlayer.MOD_ID + ".breath", event.getOriginal().getPersistentData().getString(DemonSlayer.MOD_ID + ".breath"));
}
}
}
InputEvent:
@SubscribeEvent
public static void onKeyPress(InputEvent.KeyInputEvent event)
{
System.out.println(getInstance().player.getPersistentData().getString(DemonSlayer.MOD_ID + ".breath"));//Выводит пустую строку
if (getInstance().screen == null) {if (RadialMenuKeybind.isDown() && getInstance().player.getMainHandItem().getItem() instanceof Nichirn && ((Nichirn) getInstance().player.getMainHandItem().getItem()).getBreath() == getInstance().player.getPersistentData().getString(DemonSlayer.MOD_ID + "breath")) {RadialMenuScreen.activate();}}
else if (getInstance().screen == RadialMenuScreen.INSTANCE) {
if (event.getAction() == 0 && event.getKey() == RadialMenuKeybind.getKey().getValue() && RadialMenuScreen.active) {
RadialMenuScreen.deactivate();
}
}
}
}
Последнее редактирование: