Jump to content

BusyBeever

Members
  • Posts

    201
  • Joined

  • Last visited

Posts posted by BusyBeever

  1. Hey everyone,

    first of all I know a lot of people will be complaining that 1.7 is ancient, but I cant update until mods I depent on do.

     

    I got an GUIOverlay that is supposed to render text to the screen. It works fince in 1.10 (with some minor adjustments to the newer version) but in 1.7 there is no text showing, and I have no idea why.

    The code is getting called, I see my sysout on the console

     

    @SubscribeEvent
    public void onRenderExperienceBar(RenderGameOverlayEvent event) {
    
    	if(holder==null) holder = QuestHolder.get();
    	if(event.isCancelable() && (event.type==ElementType.ALL)) {
    		mc.getTextureManager().bindTexture(texture);
    		ScaledResolution sr = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
    
    		int i=0;
    		int height = 30; 
    		mc.fontRenderer.drawStringWithShadow("Test", sr.getScaledWidth()/2, sr.getScaledHeight()/2, 0xFFFFFF);
    		for (Quest quest : holder.getQuests()) {
    			System.out.println(holder.getQuests().size());
    			if(!quest.isFollowed()) {
    				mc.fontRenderer.drawString(quest.getName(), 100, height, WHITE);
    
    				for(Condition condition:quest.getConditions()) {
    					i+=1;
    
    					mc.fontRenderer.drawString(condition.getDescription(), 30, height+10*i, condition.isFinished()? GREEN: RED);
    				}
    				i=0;
    
    				height+=50;
    
    			}
    		}
    	}
    }
    

     

     

  2. This should be everything that is problem related..

    I found one solution but that one sucks seriously

     

    EventHandler

    @SubscribeEvent
    public void playerJoined(final PlayerLoggedInEvent event) {
    	final QuestHolder holder =event.player.getCapability(CapabilityQuestHolder.CAPABILITY_QUEST_HANDLER, null);
    
    	/*
    	 *Dirty workaround ..
    	new Thread(new Runnable() {
    
    		@Override
    		public void run() {
    			try {
    				Thread.sleep(1000);
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    			for (Quest quest : holder.getQuests()) {
    				Questmod.network.sendTo(new PacketAddQuest(quest), (EntityPlayerMP) event.player);
    
    			}
    
    		}
    	}).start();
    	*/
    	for (Quest quest : holder.getQuests()) {
    		Questmod.network.sendTo(new PacketAddQuest(quest), (EntityPlayerMP) event.player);
    	}
    
    }
    

     

    PacketHandler

    @Override
    	public IMessage onMessage(final PacketAddQuest message, MessageContext ctx) {
    		Minecraft.getMinecraft().addScheduledTask(new Runnable() {
    
    			@Override
    			public void run() {
    				QuestHolder holder = QuestHolderHandler.get();
    				holder.addQuest(message.quest);
    				System.out.println(holder.getQuests().size());
    
    			}
    		});
    
    
    		return null;
    	}
    

     

    QuestHolderHandler#get

    @SideOnly(Side.CLIENT)
    public static QuestHolder get() {
                    System.out.println(Minecraft.getMinecraft().thePlayer); //Prints null
    	return Minecraft.getMinecraft().thePlayer.getCapability(CapabilityQuestHolder.CAPABILITY_QUEST_HANDLER, null); //Crash happens here (obvious reasons)
    }
    

     

     

    Crashlog

     

     

    Caused by: java.lang.NullPointerException

    at de.busybeever.questmod.questholder.QuestHolderHandler.get(QuestHolderHandler.java:83) ~[QuestHolderHandler.class:?]

    at de.busybeever.questmod.network.PacketAddQuest.fromBytes(PacketAddQuest.java:35) ~[PacketAddQuest.class:?]

    at net.minecraftforge.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:36) ~[simpleIndexedCodec.class:?]

    at net.minecraftforge.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:26) ~[simpleIndexedCodec.class:?]

    at net.minecraftforge.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:103) ~[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

     

     

  3. Hey everyone,

    I need to send data from server to client whenever the client joins (some quests)

    My problem is that I cant find the correct event for it.

     

    I felt like PlayerLoggedInEvent should do the job, but sometimes the packet is "so fast" it reaches before Minecraft.getMinecraft.thePlayer is populated, which I need.

    So what event do I use, what am I missing?

     

    SideNote: Yes I know I should replace the PacketAddQuest with one Packet to sync allquests when the player joins, but thats a task for later

     

    EventHandler

    @SubscribeEvent
    public void playerJoined(PlayerLoggedInEvent event) {
    	QuestHolder holder =event.player.getCapability(CapabilityQuestHolder.CAPABILITY_QUEST_HANDLER, null);
    	for (Quest quest : holder.getQuests()) {
    		Questmod.network.sendTo(new PacketAddQuest(quest), (EntityPlayerMP) event.player);
    
    	}
    }
    

     

    PacketAddQuestHandler

     

    @Override
    	public IMessage onMessage(PacketAddQuest message, MessageContext ctx) {
    		QuestHolder holder = QuestHolderHandler.get();
    		holder.addQuest(message.quest);
    
    		return null;
    	}
    

     

    QuestHolder#get

     

    @SideOnly(Side.CLIENT)
    public static QuestHolder get() {
    	System.out.println(Minecraft.getMinecraft().thePlayer); //null sometimes
    	return Minecraft.getMinecraft().thePlayer.getCapability(CapabilityQuestHolder.CAPABILITY_QUEST_HANDLER, null);
    }
    

  4. Hey everyone,

     

    I was out of modding for a while and missed the jump to 1.10.

    So I want to catch back up and ask for a good guide of changes to 1.10.

    Things that went deprecated, things we should use now, new nifty stuff the forge modding team gave us etc

     

    Greetz BusyBeever

×
×
  • Create New...

Important Information

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