Posted August 7, 20223 yr Good morning, Firstly, I wanted to implement a new function to the nether_star so it give me an approximation of ln(2) in maths. Therefore, I coded a common event which detects the right click. However, I don't know how or where to store the variable "n" (int) and "result" (double) such that I get a better and better approximation when I click. Currently, when I right click on a nether_star, it shows me alternatively "1.0", "0.0", "1.0" ... whereas it should tends to 0.6931 Theoricaly, the code should do 1/1 -1/2 +1/3 -1/4 + ... I sure that the problem comes from the static variables Here is my code if it can help. Vat1n @Mod.EventBusSubscriber(modid = MyMod.MODID, bus = Bus.FORGE) public class CommonEvents { static int n = 1; static double result = 0; @SubscribeEvent public static void getApproxOfLnTwo(PlayerInteractEvent.RightClickItem event){ if(!event.getPlayer().level.isClientSide){ if (event.getPlayer().getMainHandItem().getItem() == Items.NETHER_STAR) { for (int i = 0; i < n; i++) { if(n%2 == 0){result = result - (1.0 / (double) n);} else{result = result + (1.0 / (double) n);} } event.getPlayer().sendMessage(new TextComponent("The result is : " + result), Util.NIL_UUID); n++; } } } }
August 7, 20223 yr You can not store data like this in your EventHandler class, if you want to store data it's recommended to use a Capability. see: https://forge.gemwire.uk/wiki/Capabilities https://forge.gemwire.uk/wiki/Capabilities/Attaching
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.