Jump to content

Dijkstra

Forge Modder
  • Posts

    89
  • Joined

  • Last visited

Posts posted by Dijkstra

  1. Well it works, but after the player is in their new spot the can't break anything think it must be syncing cause reloging and dying fixes it

     

     

    Edit:

    Don't know if it only being on the server side makes a difference

  2. Is there way on some first joins the server to tp them random pos with a given range of chunks from 0,0 like the spread player command i am cruelty thinking is on ent joined world see if its a player and then see if got an nbt tag if it does not have tp and random x and random z cord set their spawn there give them the tag. The only issue is i am sure how to get surface y

  3. I working on a server startup script and there be a big upset over curse not allowing pack to have minecraft jar in so now my start script downloads by wget or curl if it not found, was wondering if i could do the same with the forge jar and it libs just for overkill. 

  4. Looking up package management, trying to send a string later to be some XML from the server to the player when they join only found 1.10.2/1.9 tutorials, would though it has not changed that much any most where from client to server so had to change a little, so the encoding is working, but when it get around sending it, i get this from the log a disconnect from the world as if it was server.

     

     

    io.netty.handler.codec.DecoderException: java.lang.InstantiationException: dijkstra.testingMod.handlers.pckates.Message
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:4.0.23.Final]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:4.0.23.Final]
    at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:111) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:156) [NetworkManager.class:?]
    at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:51) [NetworkManager.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [simpleChannelInboundHandler.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:413) [NetworkDispatcher.class:?]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:278) [NetworkDispatcher.class:?]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:73) [NetworkDispatcher.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [simpleChannelInboundHandler.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
    at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:326) [LocalChannel.class:4.0.23.Final]
    at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:45) [LocalChannel.class:4.0.23.Final]
    at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:312) [LocalChannel$5.class:4.0.23.Final]
    at io.netty.channel.local.LocalEventLoop.run(LocalEventLoop.java:33) [LocalEventLoop.class:4.0.23.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [singleThreadEventExecutor$2.class:4.0.23.Final]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_74]
    Caused by: java.lang.InstantiationException: dijkstra.testingMod.handlers.pckates.Message
    at java.lang.Class.newInstance(Class.java:427) ~[?:1.8.0_74]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:101) ~[FMLIndexedMessageToMessageCodec.class:?]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:40) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:4.0.23.Final]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:4.0.23.Final]
    ... 24 more
    Caused by: java.lang.NoSuchMethodException: dijkstra.testingMod.handlers.pckates.Message.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082) ~[?:1.8.0_74]
    at java.lang.Class.newInstance(Class.java:412) ~[?:1.8.0_74]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:101) ~[FMLIndexedMessageToMessageCodec.class:?]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:40) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:4.0.23.Final]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:4.0.23.Final]
    ... 24 more
    [18:20:56] [Netty Local Client IO #0/ERROR]: SimpleChannelHandlerWrapper exception
    io.netty.handler.codec.DecoderException: java.lang.InstantiationException: dijkstra.testingMod.handlers.pckates.Message
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:4.0.23.Final]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:4.0.23.Final]
    at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:111) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:156) [NetworkManager.class:?]
    at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:51) [NetworkManager.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [simpleChannelInboundHandler.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:413) [NetworkDispatcher.class:?]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:278) [NetworkDispatcher.class:?]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:73) [NetworkDispatcher.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [simpleChannelInboundHandler.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
    at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:326) [LocalChannel.class:4.0.23.Final]
    at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:45) [LocalChannel.class:4.0.23.Final]
    at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:312) [LocalChannel$5.class:4.0.23.Final]
    at io.netty.channel.local.LocalEventLoop.run(LocalEventLoop.java:33) [LocalEventLoop.class:4.0.23.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [singleThreadEventExecutor$2.class:4.0.23.Final]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_74]
    Caused by: java.lang.InstantiationException: dijkstra.testingMod.handlers.pckates.Message
    at java.lang.Class.newInstance(Class.java:427) ~[?:1.8.0_74]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:101) ~[FMLIndexedMessageToMessageCodec.class:?]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:40) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:4.0.23.Final]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:4.0.23.Final]
    ... 24 more
    Caused by: java.lang.NoSuchMethodException: dijkstra.testingMod.handlers.pckates.Message.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082) ~[?:1.8.0_74]
    at java.lang.Class.newInstance(Class.java:412) ~[?:1.8.0_74]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:101) ~[FMLIndexedMessageToMessageCodec.class:?]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:40) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:4.0.23.Final]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:4.0.23.Final]
    ... 24 more
    [18:20:56] [Netty Local Client IO #0/ERROR]: There was a critical exception handling a packet on channel testing_mod
    io.netty.handler.codec.DecoderException: java.lang.InstantiationException: dijkstra.testingMod.handlers.pckates.Message
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:4.0.23.Final]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) ~[DefaultChannelPipeline.class:4.0.23.Final]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:4.0.23.Final]
    at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:111) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:156) [NetworkManager.class:?]
    at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:51) [NetworkManager.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [simpleChannelInboundHandler.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:413) [NetworkDispatcher.class:?]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:278) [NetworkDispatcher.class:?]
    at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:73) [NetworkDispatcher.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [simpleChannelInboundHandler.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:4.0.23.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:4.0.23.Final]
    at io.netty.channel.local.LocalChannel.finishPeerRead(LocalChannel.java:326) [LocalChannel.class:4.0.23.Final]
    at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:45) [LocalChannel.class:4.0.23.Final]
    at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:312) [LocalChannel$5.class:4.0.23.Final]
    at io.netty.channel.local.LocalEventLoop.run(LocalEventLoop.java:33) [LocalEventLoop.class:4.0.23.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [singleThreadEventExecutor$2.class:4.0.23.Final]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_74]
    Caused by: java.lang.InstantiationException: dijkstra.testingMod.handlers.pckates.Message
    at java.lang.Class.newInstance(Class.java:427) ~[?:1.8.0_74]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:101) ~[FMLIndexedMessageToMessageCodec.class:?]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:40) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:4.0.23.Final]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:4.0.23.Final]
    ... 24 more
    Caused by: java.lang.NoSuchMethodException: dijkstra.testingMod.handlers.pckates.Message.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082) ~[?:1.8.0_74]
    at java.lang.Class.newInstance(Class.java:412) ~[?:1.8.0_74]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:101) ~[FMLIndexedMessageToMessageCodec.class:?]
    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:40) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:4.0.23.Final]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:4.0.23.Final]
    ... 24 more
    [18:20:56] [Netty Local Client IO #0/ERROR]: Network Disconnect: A fatal error has occurred, this connection is terminated
    

     

     

    My code:

     

    public class PacketHandler {
        private static int packetId = 0;
    
        public static SimpleNetworkWrapper INSTANCE = null;
    
        public PacketHandler() {
        }
    
        public static int nextID() {
            return packetId++;
        }
    
        public static void init() {
            INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel(MOD_ID);
            registerMessages();
        }
    
        public static void registerMessages() {
            INSTANCE.registerMessage(Message.Handler.class, Message.class, nextID(), Side.CLIENT);
        }
    }
    
    public class Message implements IMessage {
        private String xml;
    
        public Message(String xml){
            this.xml = xml;
        }
    
        @Override
        public void fromBytes(ByteBuf buf) {
            Log.info("Decoding...");
            xml = ByteBufUtils.readUTF8String(buf);
            Log.info("Decoded");
        }
    
        @Override
        public void toBytes(ByteBuf buf) {
            Log.info("Encoding...");
            ByteBufUtils.writeUTF8String(buf,xml);
            Log.info(buf);
            Log.info("Encoded");
        }
    
        public static class Handler implements IMessageHandler<Message, IMessage>{
    
            @Override
            public IMessage onMessage(Message message, MessageContext ctx) {
                FMLCommonHandler.instance().getWorldThread(ctx.netHandler).addScheduledTask(()-> handler(message, ctx));
                return null;
            }
    
            private void handler(Message message, MessageContext ctx){
                Log.info(message.xml);
            }
        }
    }
    
    
    @SubscribeEvent
        public void playerJoined(EntityJoinWorldEvent e){
            Entity entity = e.getEntity();
            if(entity instanceof EntityPlayerMP){
                EntityPlayerMP player = ((EntityPlayerMP) entity);
                PacketHandler.INSTANCE.sendTo(new Message("test"), player);
            }
        }
    

     

     

    Clearly, I have done something wrong along the way but do not know now where

  5. So got this and it works

    if (player.inventory.addItemStackToInventory(rewrad)){
                                player.inventoryContainer.detectAndSendChanges();
                            }
                            else{
                                playerMP.worldObj.spawnEntityInWorld(new EntityItem(playerMP.worldObj, playerMP.posX, playerMP.posY, playerMP.posZ, rewrad));
                            }
    

     

    but will look into ItemHandlerHelper.giveItemToPlayer when i get an chance.

  6. So i am guessing

    player.inventory.addItemStackToInventory(item)
    player.inventory.detectAndSendChanges()

     

    not being at my development environment although it end yo being something more like this 

    if (player.inventory.addItemStackToInventory(item)) {
        player.inventory.detectAndSendChanges()
    }
    else{
        playerMP.worldObj.spawnEntityInWorld(new EntityItem(playerMP.worldObj, playerMP.posX, playerMP.posY, playerMP.posZ, item));
                            }
    

  7. this is what the method getReward does

    public ItemStack getReward() {
            return reward.copy();
        }
    

     

    This is in my ModdedAchievement class, item stacks are set in the constructor

     

    Is it fine having copying the item stack there

     

    or should i do

    public ItemStack getReward() {
            return reward;
        }
    

    ItemStack rewrad = moddedAchievement.getReward().copy();

    To me it does not seem to make much different

  8. So this is all guess work bu i have up with this for NBT

    NBTTagCompound nbt = new NBTTagCompound();
                            nbt.setString("modle", "blockDiamond");
                            nbt.setString("owner",player.getDisplayNameString());
                            nbt.setString("date", String.format("%1$td/%1$tm/%1$tY", System.currentTimeMillis()));
                            ItemStack item= moddedAchievement.item();
                            item= new ItemStack(item.getItem(), item.stackSize, iem.getMetadata(), nbt);
    

    This is obviously wrong but this is my first attempt of giving a item stack NBT

     

    I have also tire the write to nbt method with no luck

     

    away the item stack is added to player like this

    player.inventory.addItemStackToInventory(item)

    if it is important all this is only happening server side

     

  9. I have method that is called on only the server side that result

    player.inventory.addItemStackToInventory(item)

    be called if all conditions are meet, but because it is only called on the server side the client does not update util you click in the slot it put in. If there away to invoke this update, right after

    player.inventory.addItemStackToInventory(item)

    is called.

  10. I got something that works!, Draco18s hope the method parameters are more to your liking, I do not know if there is any way to make this more efficient, if there is I would be more than happy to find out.

     

    private void checkAchivment(Achievement achievement, ItemStack item, EntityPlayer player) {
            if (!player.worldObj.isRemote && player instanceof EntityPlayerMP && achievement instanceof ModdedAchievement) {
                EntityPlayerMP playerMP = ((EntityPlayerMP) player);
                StatisticsManagerServer file = playerMP.getStatFile();
    
                if (!file.hasAchievementUnlocked(achievement) && file.canUnlockAchievement(achievement)) {
                    ModdedAchievement moddedAchievement = ((ModdedAchievement) achievement);
                    if (moddedAchievement.getTarget().getItem().equals(item.getItem())) {
                        if(moddedAchievement.getReward() != null){
                            ItemStack rewrad = moddedAchievement.getReward();
                            if (!player.inventory.addItemStackToInventory(rewrad)) {
                                playerMP.worldObj.spawnEntityInWorld(new EntityItem(playerMP.worldObj, playerMP.posX, playerMP.posY, playerMP.posZ, rewrad));
                            }
                        }
                        playerMP.addStat(achievement);
                    }
                }
            }
    
    
        }

    diesieben07 for my how are my achievements  initialized

     

    public class ModdedAchievement extends Achievement {
    
        private static AchievementPage moddedAchievements;
    
        public static final Achievement[] achievments = new Achievement[]{
                new ModdedAchievement("blockDiamond", 0, 0, Blocks.DIAMOND_BLOCK, null, itemStack(Blocks.DIRT, 2).copy(), itemStack(Blocks.DIAMOND_BLOCK))
        };
    
        public static void init(){
            moddedAchievements =  new AchievementPage(MOD_NAME, achievments);
            AchievementPage.registerAchievementPage(moddedAchievements);
        }
    
    }

     

    At the moment I have just the one test one that gives you reward of of 2 dirt for making a diamond block

     

  11. Why call hasAchievement, in single player i always get false, do not know if i am meant to target the method at the integrated server as before my method was like this and do stuff was always being called even after getting the achievement.

    private void checkAchivment(Achievement achievement, ItemStack item, ItemStack item1, ItemStack item2,  EntityPlayer player){
            Logging.info("Checking...");
            if(item1.getItem().equals(item2.getItem())){
                Logging.info("Items Match");               
               if(!player.hasachievement(achievement)){
                        //do stuff 
                }
            }
        }
    

     

    P.S. Thanks TheMasterGabriel that looks like it should work on both sides

  12. In the crafted item event i get and player and item and there is method on the player that I can run called hasAchievement, but looking into that it always returns false, in single player, looked in to how entity player mp does and came up with this

     

    !Minecraft.getMinecraft().getIntegratedServer().getPlayerList().getPlayerStatsFile(player).hasAchievementUnlocked(achievement)

     

    works in singles player but crashes the client on a server

     

    Full method

     

    private void checkAchivment(Achievement achievement, ItemStack item, ItemStack item1, ItemStack item2,  EntityPlayer player){
            Logging.info("Checking...");
            if(item1.getItem().equals(item2.getItem())){
                Logging.info("Items Match");
                if(Minecraft.getMinecraft().isIntegratedServerRunning()){
                    Logging.info("I am single player");
                    if(!Minecraft.getMinecraft().getIntegratedServer().getPlayerList().getPlayerStatsFile(player).hasAchievementUnlocked(achievement)){
                        //do stuff                }
                }
                else {
                    Logging.info("I am a server");
                    if(!player.hasAchievement(achievement)){
                        //do stuff 
                    }
                }
    
            }
        }

     

     

    I am not happy was this part of the method and fell there should be better way of checking if the player has an achievement also

    if(Minecraft.getMinecraft().isIntegratedServerRunning()){
                    Logging.info("I am single player");
                    if(!Minecraft.getMinecraft().getIntegratedServer().getPlayerList().getPlayerStatsFile(player).hasAchievementUnlocked(achievement)){
                        //do stuff                }
                }
                else {
                    Logging.info("I am a server");
                    if(!player.hasAchievement(achievement)){
                        //do stuff 
                    }
                }

    Edit:

    Working method for give a reward with an achievement:

    https://gist.github.com/Dijkstra1/30eb97f26aacfd3a1af3258f9a37f2e3

  13. I been looking in to how JSON models, and the about the only useful thing i found out is the scale has been from 1.8 to 1.9, but nothing on to make blocks curved faces, would like for some of blocks to have curved do not know to much about json have a model creator, but it does allow curved faces.

  14. I have implemented layer render, and I was happy to see layer being render, but it seem to want move by self when it should sticking the player i.e selves, have the players coming in and out of them when they move, the park that goes over the hand, seems spin or be hang down, I have looked the armor layer class has help me lot but can not help with this.

  15. My IResourcePack ask for mcmeta files, instead of images, have done something wrong it is definitely requesting files from my IResourcePack so it wired up right.

     

    IResourcePack Class:

     

    package dijkstra.wardrobe.client;
    
    import com.google.common.collect.ImmutableSet;
    import dijkstra.wardrobe.Logging;
    import net.minecraft.client.resources.IResourcePack;
    import net.minecraft.client.resources.data.IMetadataSection;
    import net.minecraft.client.resources.data.MetadataSerializer;
    import net.minecraft.util.ResourceLocation;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Set;
    
    public class ResourceLoader implements IResourcePack {
    
        public static final Set<String> RESOURCE_DOMAINS = ImmutableSet.<String>of("wardrobe");
    
        @Override
        public InputStream getInputStream(ResourceLocation location) throws IOException {
            File path = new File("resources/wardrobe/textuers/");
            if(!path.exists()){
                path.mkdirs();
            }
            if(resourceExists(location)){
                String name = location.getResourcePath();
                if(name.contains(".mc"))
                    name = name.substring(0, name.indexOf('.'));
                Logging.info(name);
                File file  = new File(String.format("resources/wardrobe/textuers/%s.png", name));
                Logging.info(file.toString());
                return new FileInputStream(file);
            }
            return null;
        }
    
        @Override
        public boolean resourceExists(ResourceLocation location) {
            return true;
            //return new File(String.format("/resources/wardrobe/textuers/%s.png", location.getResourcePath())).exists();
        }
    
        @Override
        public Set<String> getResourceDomains() {
            return RESOURCE_DOMAINS;
        }
    
        @Override
        public <T extends IMetadataSection> T getPackMetadata(MetadataSerializer metadataSerializer, String metadataSectionName) throws IOException {
            return null;
        }
    
        @Override
        public BufferedImage getPackImage() throws IOException {
            return null;
        }
    
        @Override
        public String getPackName() {
            return "Wardrobe";
        }
    }
    

     

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.