Ошибка с капой

Версия Minecraft
1.12.2
516
11
39
Всем привет.Сделал капу,зарегал ,сделал пакет но капа не сохраняется после перезахода.
Помогите решить

Java:
public class DefaultExpHandler implements IExpHandler {

    private int expfish;
    private int levelfish;
    @Override
    public int getExpFishing() {
        return this.expfish;
    }
    @Override
    public void setExpFishing(int expfish) {
        this.expfish = expfish;
       
    }
    @Override
    public void addExpFishing(int expfish) {
        this.expfish += expfish;
       
       
    }
    @Override
    public int getLevelFishing() {
        return this.levelfish;
    }
    @Override
    public void setLevelFishing(int levelfish) {
        this.levelfish = levelfish;
       
    }
    @Override
    public void addLevelFishing(int levelfish) {
        this.levelfish += levelfish;
          if (this.levelfish < 0)
            {
                this.levelfish = 0;
                this.expfish = 0;

            }
    }

Java:
public class ExpDataHandler {
   
     @CapabilityInject(IExpHandler.class)
        public static final Capability<IExpHandler> CAPABILITY_EXP = null;
       
        // Handles all of the required registration for the capability.
        public static void register() {
           
            CapabilityManager.INSTANCE.register(IExpHandler.class, new StorageExp(), DefaultExpHandler.class);
            MinecraftForge.EVENT_BUS.register(new ExpDataHandler());
        }
       
        // Allows the provider to be attatched to a target entity.
        @SubscribeEvent
        public void attachCapabilities(AttachCapabilitiesEvent<Entity> event) {
           
            if (event.getObject() instanceof EntityPlayer)
                event.addCapability(new ResourceLocation("Elterion", "Skills"), new Provider());
        }
       
        // Allows for the capability to persist after death.
        @SubscribeEvent
        public void clonePlayer(PlayerEvent.Clone event) {
           
            final IExpHandler original = getHandler(event.getOriginal());
            final IExpHandler clone = getHandler(event.getEntity());
            clone.setExpFishing(original.getExpFishing());
            clone.setLevelFishing(original.getLevelFishing());
        }

        // Simple wrapper to get the handler from an entity.
        public static IExpHandler getHandler(Entity entity) {

            if (entity.hasCapability(CAPABILITY_EXP, EnumFacing.DOWN))
                return entity.getCapability(CAPABILITY_EXP, EnumFacing.DOWN);
           
            return null;
        }
}
Java:
public class ExpSkillsMessage implements IMessage{

    private int expfish,levelfish;
   
    public ExpSkillsMessage() {}
    public ExpSkillsMessage(int expfish, int levelfish) {
        this.expfish = expfish;
        this.levelfish = levelfish;
    }
   
    @Override
    public void fromBytes(ByteBuf buf) {

            this.expfish = buf.readInt();
            this.levelfish = buf.readInt();
    }

    @Override
    public void toBytes(ByteBuf buf) {
         buf.writeInt(this.expfish);
         buf.writeInt(this.levelfish);
    }
    public static class Handler implements IMessageHandler<ExpSkillsMessage, IMessage> {


        @Override
        public IMessage onMessage(ExpSkillsMessage message, MessageContext ctx) {
            Minecraft mc = Minecraft.getMinecraft();
            EntityPlayer player = mc.getMinecraft().player;
            IExpHandler capa = player.getCapability(Provider.CAPABILITY_EXP, null);
            capa.setExpFishing(message.expfish);
            capa.setLevelFishing(message.levelfish);      
            return null;
        }
    }
}
Java:
public interface IExpHandler {
        int getExpFishing();
        void setExpFishing(int expfish);
        void addExpFishing(int expfish);
   
        int getLevelFishing();
        void setLevelFishing(int levelfish);
        void addLevelFishing(int levelfish);

}
Java:
public class Provider implements ICapabilitySerializable<NBTTagCompound> {

     @CapabilityInject(IExpHandler.class)
        public static final Capability<IExpHandler> CAPABILITY_EXP = null;
   
    IExpHandler instance = CAPABILITY_EXP.getDefaultInstance();

    @Override
    public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
       
        return capability == CAPABILITY_EXP;
    }

    @Override
    public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
       
        return hasCapability(capability, facing) ? CAPABILITY_EXP.<T>cast(instance) : null;
    }

    @Override
    public NBTTagCompound serializeNBT() {
       
        return (NBTTagCompound) CAPABILITY_EXP.getStorage().writeNBT(CAPABILITY_EXP, instance, null);
    }

    @Override
    public void deserializeNBT(NBTTagCompound nbt) {
       
        CAPABILITY_EXP.getStorage().readNBT(CAPABILITY_EXP, instance, null, nbt);
    }
}
Java:
public class StorageExp  implements Capability.IStorage<IExpHandler> {

    @Override
    public NBTBase writeNBT (Capability<IExpHandler> capability, IExpHandler instance, EnumFacing side) {
       
        final NBTTagCompound tag = new NBTTagCompound();          
        tag.setInteger("expfish    ", instance.getExpFishing());        
        tag.setInteger("levelfish    ", instance.getLevelFishing());
        return tag;
    }

    @Override
    public void readNBT (Capability<IExpHandler> capability, IExpHandler instance, EnumFacing side, NBTBase nbt) {
       
        final NBTTagCompound tag = (NBTTagCompound) nbt;
        instance.setExpFishing(tag.getInteger("expfish"));
        instance.setLevelFishing(tag.getInteger("levelfish"));
    }
}
Java:
@Mod.EventBusSubscriber
public class fishexp extends SimplePacket{
           
   
     @SubscribeEvent
        public static void onfishg(ItemFishedEvent event)
        {
        if( event.getEntity() instanceof EntityPlayerMP) {
       
            IExpHandler capa = event.getEntity().getCapability(Provider.CAPABILITY_EXP, null);
            capa.addExpFishing(1);

            NetworkHandler.network.sendTo(new ExpSkillsMessage(capa.getExpFishing(), capa.getLevelFishing()), (EntityPlayerMP) event.getEntity());
           
            event.getEntityPlayer().sendMessage(new TextComponentString(String.valueOf(capa.getExpFishing())));
           
            }
}
}
 
Последнее редактирование:
Решение
А ничего, что у тебя лишние пробелы?
Спасибо помог,не увидел элементарного ,Капа сохраняется ,и на экран выводится ,но после перезахода капа сохранилась но на экране 0,пока не обновишь капу
 
Ловишь ивент захода игрока и отсылаешь пакет, но там есть некоторые подводные камни, которые не сразу вылазят(лучше с клиента при заходе в мир слать запрос о надобности синхронизации на сервер и тогда он отправляет тебе инфу**).
 
Java:
[15:10:42] [Netty Local Client IO #1/ERROR] [FML]: SimpleChannelHandlerWrapper exception
java.lang.NullPointerException: null
    at ru.lnti.ElterionRPG.Skills.ExpSkillsMessage$Handler.onMessage(ExpSkillsMessage.java:46) ~[ExpSkillsMessage$Handler.class:?]
    at ru.lnti.ElterionRPG.Skills.ExpSkillsMessage$Handler.onMessage(ExpSkillsMessage.java:1) ~[ExpSkillsMessage$Handler.class:?]
    at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:56) ~[SimpleChannelHandlerWrapper.class:?]
    at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:36) ~[SimpleChannelHandlerWrapper.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) [MessageToMessageDecoder.class:4.1.9.Final]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [DefaultChannelPipeline$HeadContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [DefaultChannelPipeline.class:4.1.9.Final]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:274) [EmbeddedChannel.class:4.1.9.Final]
    at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:108) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:155) [NetworkManager.class:?]
    at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:49) [NetworkManager.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:385) [NetworkDispatcher.class:?]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:271) [NetworkDispatcher.class:?]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:72) [NetworkDispatcher.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [DefaultChannelPipeline$HeadContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [DefaultChannelPipeline.class:4.1.9.Final]
    at io.netty.channel.local.LocalChannel.finishPeerRead0(LocalChannel.java:443) [LocalChannel.class:4.1.9.Final]
    at io.netty.channel.local.LocalChannel.access$500(LocalChannel.java:49) [LocalChannel.class:4.1.9.Final]
    at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:397) [LocalChannel$5.class:4.1.9.Final]
    at io.netty.channel.DefaultEventLoop.run(DefaultEventLoop.java:54) [DefaultEventLoop.class:4.1.9.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [SingleThreadEventExecutor$5.class:4.1.9.Final]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
[15:10:42] [Netty Local Client IO #1/ERROR] [FML]: There was a critical exception handling a packet on channel elterionrpg
java.lang.NullPointerException: null
    at ru.lnti.ElterionRPG.Skills.ExpSkillsMessage$Handler.onMessage(ExpSkillsMessage.java:46) ~[ExpSkillsMessage$Handler.class:?]
    at ru.lnti.ElterionRPG.Skills.ExpSkillsMessage$Handler.onMessage(ExpSkillsMessage.java:1) ~[ExpSkillsMessage$Handler.class:?]
    at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:56) ~[SimpleChannelHandlerWrapper.class:?]
    at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:36) ~[SimpleChannelHandlerWrapper.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) ~[MessageToMessageDecoder.class:4.1.9.Final]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) ~[DefaultChannelPipeline$HeadContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) ~[DefaultChannelPipeline.class:4.1.9.Final]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:274) ~[EmbeddedChannel.class:4.1.9.Final]
    at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:108) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:155) [NetworkManager.class:?]
    at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:49) [NetworkManager.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:385) [NetworkDispatcher.class:?]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:271) [NetworkDispatcher.class:?]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:72) [NetworkDispatcher.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [DefaultChannelPipeline$HeadContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [DefaultChannelPipeline.class:4.1.9.Final]
    at io.netty.channel.local.LocalChannel.finishPeerRead0(LocalChannel.java:443) [LocalChannel.class:4.1.9.Final]
    at io.netty.channel.local.LocalChannel.access$500(LocalChannel.java:49) [LocalChannel.class:4.1.9.Final]
    at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:397) [LocalChannel$5.class:4.1.9.Final]
    at io.netty.channel.DefaultEventLoop.run(DefaultEventLoop.java:54) [DefaultEventLoop.class:4.1.9.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [SingleThreadEventExecutor$5.class:4.1.9.Final]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
[15:10:42] [Netty Local Client IO #1/ERROR] [FML]: Network Disconnect: A fatal error has occurred, this connection is terminated
[15:10:42] [Server thread/INFO] [minecraft/NetHandlerPlayServer]: Player566 lost connection: Отключение
[15:10:42] [Server thread/INFO] [minecraft/MinecraftServer]: Player566 покинул игру
[15:10:43] [Server thread/INFO] [minecraft/NetHandlerPlayServer]: Stopping singleplayer server as player logged out
[15:10:43] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping server
[15:10:43] [Server thread/INFO] [minecraft/MinecraftServer]: Saving players
[15:10:43] [Server thread/INFO] [minecraft/MinecraftServer]: Saving worlds
[15:10:43] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'Новый мир'/overworld
[15:10:44] [Server thread/INFO] [FML]: Unloading dimension 0
[15:10:45] [Server thread/INFO] [FML]: Applying holder lookups
[15:10:45] [Server thread/INFO] [FML]: Holder lookups applied
Вот такой краш вылазит ,почему?
 
Пишет ведь в краше
MKkbS9k.png

Поищи, что там не так. Ну и еще зависит от того, как ты это все реализовали и не забыл ли чего
 
Назад
Сверху