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

Версия 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())));
           
            }
}
}
 
Последнее редактирование:
Решение
3,005
192
592
516
11
39
А ничего, что у тебя лишние пробелы?
Спасибо помог,не увидел элементарного ,Капа сохраняется ,и на экран выводится ,но после перезахода капа сохранилась но на экране 0,пока не обновишь капу
 
3,005
192
592

Eifel

Модератор
1,623
78
608
Ловишь ивент захода игрока и отсылаешь пакет, но там есть некоторые подводные камни, которые не сразу вылазят(лучше с клиента при заходе в мир слать запрос о надобности синхронизации на сервер и тогда он отправляет тебе инфу**).
 
516
11
39
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
Вот такой краш вылазит ,почему?
 

Eifel

Модератор
1,623
78
608
Пишет ведь в краше
MKkbS9k.png

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