cinsiian Posted September 12, 2019 Author Share Posted September 12, 2019 Ok, I dont get the crash anymore when I join. Everything seems working right now, I returned LazyOptional.of(() -> INSTANCE).cast(); https://github.com/cinsiian/mod/tree/master/java/cinsiian/urtima/common/capability/mana Thats the full package related to mana, everything should be ok. Now I will start working on the Bar in the RenderGameOverlayEvent. Is RenderGameOverlayEvent executed every tick? I will check every tick: if the mana is 20 I render a thing, if its 19 render another thing ecc... Quote Link to comment Share on other sites More sharing options...
Draco18s Posted September 12, 2019 Share Posted September 12, 2019 What part of "create it ONCE" did you not understand? Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given. Link to comment Share on other sites More sharing options...
cinsiian Posted September 12, 2019 Author Share Posted September 12, 2019 I dont have another instance of it Quote Link to comment Share on other sites More sharing options...
Draco18s Posted September 12, 2019 Share Posted September 12, 2019 (edited) 13 minutes ago, cinsiian said: I dont have another instance of it ....so create one? Like, how hard is it to do this:https://github.com/Draco18s/ReasonableRealism/blob/1.14.4/src/main/java/com/draco18s/harderores/entity/AxelTileEntity.java#L28 and https://github.com/Draco18s/ReasonableRealism/blob/1.14.4/src/main/java/com/draco18s/harderores/entity/AxelTileEntity.java#L79 Edited September 12, 2019 by Draco18s Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given. Link to comment Share on other sites More sharing options...
cinsiian Posted September 12, 2019 Author Share Posted September 12, 2019 Oh ok ill' do it but whats the difference? Quote Link to comment Share on other sites More sharing options...
cinsiian Posted September 13, 2019 Author Share Posted September 13, 2019 (edited) Ok so I managed to get the event work but the texture is not rendering correctly: public final ResourceLocation TEXTURE = new ResourceLocation(Reference.MODID, "textures/gui/mana_hud.png"); @SubscribeEvent public void renderOverlay(RenderGameOverlayEvent event) { if(event.getType() == ElementType.AIR) { Minecraft mc = Minecraft.getInstance(); int x = event.getWindow().getScaledWidth() / 2 + 10; int y = event.getWindow().getScaledHeight() - 48; if(!(mc.player.isSpectator() || mc.player.isCreative())) { mc.getTextureManager().bindTexture(TEXTURE); drawBackground(x, y); } } } private void drawBackground(int x, int y) { drawTexturedModalRect(x, y, 0, 0, 89, 9); } private void drawTexturedModalRect(int x, int y, int textureX, int textureY, int width, int height) { Minecraft mc = Minecraft.getInstance(); mc.ingameGUI.blit(x, y, textureX, textureY, width, height); } The texture: https://ibb.co/ct9XNRy In-game: https://ibb.co/PzyTqkP Edited September 13, 2019 by cinsiian Quote Link to comment Share on other sites More sharing options...
cinsiian Posted September 13, 2019 Author Share Posted September 13, 2019 What are the RenderGameOverlayEvent.Pre and RenderGameOverlayEvent.Post ? Quote Link to comment Share on other sites More sharing options...
cinsiian Posted September 13, 2019 Author Share Posted September 13, 2019 Is that event executed every tick? Quote Link to comment Share on other sites More sharing options...
Animefan8888 Posted September 13, 2019 Share Posted September 13, 2019 5 hours ago, cinsiian said: the texture is not rendering correctly: I think Gui#blit expects the texture to be 256x256 1 Quote VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator. Link to comment Share on other sites More sharing options...
cinsiian Posted September 14, 2019 Author Share Posted September 14, 2019 (edited) Thank you guys, now textures work perfectly but I have few last things to ask. 1) How can I see if the air bubble bar is rendered(so i can move the mana bar up so it does not contrast)? 2) What is the correct way to get/set the capability?, I used: player.getCapability(ManaProvider.MANA, null).orElseThrow(null).get() player.getCapability(ManaProvider.MANA, null).orElseThrow(null).set() It's really buggy, sometimes it doesnt even do anything Edited September 14, 2019 by cinsiian Quote Link to comment Share on other sites More sharing options...
eatthenight Posted September 14, 2019 Share Posted September 14, 2019 47 minutes ago, cinsiian said: Thank you guys, now textures work perfectly but I have few last things to ask. 1) How can I see if the air bubble bar is rendered(so i can move the mana bar up so it does not contrast)? 2) What is the correct way to get/set the capability?, I used: player.getCapability(ManaProvider.MANA, null).orElseThrow(null).get() player.getCapability(ManaProvider.MANA, null).orElseThrow(null).set() It's really buggy, sometimes it doesnt even do anything you could check if the player is inside water i think there was a way to get if the player is underwater Quote Link to comment Share on other sites More sharing options...
cinsiian Posted September 14, 2019 Author Share Posted September 14, 2019 there is Player.isSwimming but I also need if the player is underwater even without swimming Quote Link to comment Share on other sites More sharing options...
eatthenight Posted September 14, 2019 Share Posted September 14, 2019 3 hours ago, cinsiian said: there is Player.isSwimming but I also need if the player is underwater even without swimming try EntityPlayer#isInsideOfMaterial and use Material.WATER as parameter thats the dirty way to do it but should work i think.. Quote Link to comment Share on other sites More sharing options...
Animefan8888 Posted September 14, 2019 Share Posted September 14, 2019 8 hours ago, cinsiian said: there is Player.isSwimming but I also need if the player is underwater even without swimming Use PlayerEntity#areEyesInFluid(FluidTags.WATER) 1 Quote VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator. Link to comment Share on other sites More sharing options...
cinsiian Posted September 15, 2019 Author Share Posted September 15, 2019 Ok, it did work but i have few issues setting up the capability adding/setting the value. https://github.com/cinsiian/mod/blob/master/java/cinsiian/urtima/util/ManaUtils.java The hud displays the correct amount of mana but when I try consuming it for some reason it return that the player does not have the correct mana amount Quote Link to comment Share on other sites More sharing options...
Animefan8888 Posted September 15, 2019 Share Posted September 15, 2019 9 hours ago, cinsiian said: player does not have the correct mana amount You need a packet to sync the data you can read up about packets on the forge documentation. Quote VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator. Link to comment Share on other sites More sharing options...
cinsiian Posted September 16, 2019 Author Share Posted September 16, 2019 So basically what I did is this and seems that its working. public static void updateMana(PlayerEntity player) { IMana oldMana = ManaUtils.getMana(Minecraft.getInstance().player); IMana newMana = ManaUtils.getMana(player); if(oldMana != null && newMana != null) { oldMana.set(newMana.get()); } } Quote Link to comment Share on other sites More sharing options...
cinsiian Posted September 16, 2019 Author Share Posted September 16, 2019 Basically if its the same player, it will take the data from the server(ManaUtils methods) and update them to the client player(Minecraft.getInstance().player). I tried to do that... Quote Link to comment Share on other sites More sharing options...
cinsiian Posted September 17, 2019 Author Share Posted September 17, 2019 Can someone explain how to use the network system? I tried to get it work with the documentation as a reference without success. Quote Link to comment Share on other sites More sharing options...
Draco18s Posted September 17, 2019 Share Posted September 17, 2019 45 minutes ago, cinsiian said: Can someone explain how to use the network system? I tried to get it work with the documentation as a reference without success. https://github.com/Draco18s/ReasonableRealism/blob/1.14.4/src/main/java/com/draco18s/harderores/network/PacketHandler.java#L12 Namely you just say "here's my packet class's constructor, toBytes, fromBytes, etc." You can call those methods whatever you want as long as they have the right signature. Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given. Link to comment Share on other sites More sharing options...
cinsiian Posted September 17, 2019 Author Share Posted September 17, 2019 ok but how do i actually set the client mana? In the packet's Handler? https://github.com/Draco18s/ReasonableRealism/blob/1.14.4/src/main/java/com/draco18s/harderores/network/ToClientMessageOreParticles.java#L54 Like here? And how can I get the serverplayer? Do I have to save it in the packet as well? Quote Link to comment Share on other sites More sharing options...
loordgek Posted September 17, 2019 Share Posted September 17, 2019 you can get the player from the context Supplier<NetworkEvent.Context> ctx https://github.com/MinecraftForge/MinecraftForge/blob/1.14.x/src/main/java/net/minecraftforge/fml/network/NetworkEvent.java#L194 1 Quote Link to comment Share on other sites More sharing options...
cinsiian Posted September 18, 2019 Author Share Posted September 18, 2019 14 hours ago, cinsiian said: ok but how do i actually set the client mana? In the packet's Handler? https://github.com/Draco18s/ReasonableRealism/blob/1.14.4/src/main/java/com/draco18s/harderores/network/ToClientMessageOreParticles.java#L54 Like here? ? Quote Link to comment Share on other sites More sharing options...
cinsiian Posted September 18, 2019 Author Share Posted September 18, 2019 What handler? The handler of the actual packet or the handler of the network? Quote Link to comment Share on other sites More sharing options...
cinsiian Posted September 18, 2019 Author Share Posted September 18, 2019 So the packet will be(Server-ToClient): public class ManaPacket { public int mana; public ManaPacket() {} public ManaPacket(int mana) { this.mana = mana; } public static void writeIn(ManaPacket packet, PacketBuffer buffer) { buffer.writeInt(packet.mana); } public static ManaPacket readIn(PacketBuffer buffer) { return new ManaPacket(buffer.readInt()); } public static class PacketHandler { public static void run(final ManaPacket packet, Supplier<NetworkEvent.Context> context) { context.get().enqueueWork(() -> { int i = context.get().getSender().getCapability(ManaProvider.MANA, null).orElseThrow(null).get(); packet.mana = i; }); } } } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.