Jump to content

TheZombie1999

Members
  • Posts

    5
  • Joined

  • Last visited

Everything posted by TheZombie1999

  1. This is a small guide for people how want to Speed up their development by swapping changed code during run time, which eliminates the need to constantly restart the Minecraft-Client. To reach our goal we need to install Hotswap and DCEVM. To install DCEVM you first need to download the newest release for java 8 form this link: https://github.com/dcevm/dcevm/releases Before you continue installing DCEVM you need to first install the right java version that matches your download. Most likely this will be the version 1.8.0_181. The download list can be found here: https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html To now install DCEVM run java -jar "path_to_the_installer/DCEVM-8u181-installer.jar" as Administrator in your console. In the UI that pops up you need to select the java version you just installed and click on Install DCEVM as altjvm. You probably need to do this for the jdk and jre. Next download the hotswap-agent and place the jar file in an appropriate folder. https://github.com/HotswapProjects/HotswapAgent/releases Now the Basic setup is finished, our next step is too setup Intellij and gradle two run correctly. First thing you need to do is to install the HotswapAgent plugin for Intellij. Plugins can be install under: Settings -> Plugins -> Marketplace Search for hotswapagent. Now under Tools -> HotswapAgent select Enable HotswapAgent in all configurations Under Keymap search for "Reload Changed Classes" and assign a Keyboard shortcut. Now press double shift and search for "Registry..." and enable compiler.automake.allow.when.app.running Finally to run the Minecraft client create a new gradle configuration with task = "runClient" and VM options = "-Xmx3G -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5010 -XXaltjvm=dcevm -XX:+UnlockExperimentalVMOptions -javaagent:path_to_your\hotswap-agent-1.4.0.jar" Now your good to go. If you have any questions or suggestions feel free to comment below this is my first tutorial so if you have any advise it would be more than welocome. I hope this is helpful for you have a nice Day.
  2. Create a class public class ModPaintingTypes { public static DeferredRegister<PaintingType> PAINTING_TYPES = new DeferredRegister<>(ForgeRegistries.PAINTING_TYPES,example_mod.MODID); public static RegistryObject<PaintingType> THE_SCREEM = PAINTING_TYPES.register("painting_name",()-> new PaintingType(16,32)); } And then in your mod constuctor call: ModPaintingTypes.PAINTING_TYPES.register(modEventBus); The image that you want to be displayed needs to be in /textures/painting/painting_name.png
  3. thanks mate now it works. But how did you realize that i didn't register the defferdRegister, because i could figure it out form the log. May be you could give me some insight so i can figure it out my self the next time. and Thanks again for your time and great advise.
  4. Thank you for your quick reply. i included my log files because i don't understand what my mistake is. my code is as follows: public class ModContainerTypes { public static final DeferredRegister<ContainerType<?>> CONTAINER_TYPES = new DeferredRegister<>(ForgeRegistries.CONTAINERS, NovusTechnica.MODID); public static final RegistryObject<ContainerType<SolarPanelContainer>> SOLAR_PANEL = CONTAINER_TYPES.register("solar_panel",() -> (IForgeContainerType.create(SolarPanelContainer::new))); } public class SolarPanelScreen extends ContainerScreen<SolarPanelContainer> { private static final ResourceLocation BACKGROUND_TEXTURE = new ResourceLocation(NovusTechnica.MODID,"/textures/gui/solar_panle_container.png"); public SolarPanelScreen(SolarPanelContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) { super(screenContainer, inv, titleIn); } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); getMinecraft().getTextureManager().bindTexture(BACKGROUND_TEXTURE); int startX = this.guiLeft; int startY = this.guiTop; this.blit(startX,startY, 0,0,this.xSize,this.ySize); final SolarPanelTileEntity tileEntity = container.tileEntity; final SettableEnergyStorage settableStorage = tileEntity.energy; final int energyStored = settableStorage.getEnergyStored(); if (energyStored > 0) { // Draw energy bar //this.blit(); // ToDo set blit } } @Override public void render(int mouseX, int mouseY, float partickelTicks) { this.renderBackground(); super.render(mouseX, mouseY, partickelTicks); this.renderHoveredToolTip(mouseX,mouseY); // TODO zahlen werte anpassen int relMouseX = mouseX - this.guiLeft; int relMouseY = mouseY - this.guiTop; boolean energyBarHovered = relMouseX > 151 && relMouseX < 166 && relMouseY > 10 && relMouseY < 76; if (energyBarHovered) { String tooltip = new TranslationTextComponent( "gui." + NovusTechnica.MODID + ".energy", this.container.tileEntity.energy.getEnergyStored() ).getFormattedText(); this.renderTooltip(tooltip, mouseX, mouseY); } } } I have absolutly no idea whats wrong so i really need your help Thank you very much for your support !!!! latest.log
  5. Dear Fellow Minecraft Modders, i am currently trying to register an Screen Object in the FmlClientSetup event. To do this many tutorial use the DefferdWorkQueue.runLater Method, but in my current minecraft forge version [1.15.2- 31.1.0] this class is deprecated and doesn't work. So my question is what do is use instead to achieve the same goal. The documentation recomends to use the IThreadListener but i cant find out how to use it over even where the Interface or class should be located. When i launch the mod using the DefferdWorkQueue following error Message appears: encounterd an errror processing defferd work java.lang.NullPointerException: Registry Object not present Source: @SubscribeEvent public static void clientSetupEvent (final FMLClientSetupEvent event){ DeferredWorkQueue.runLater(()->ScreenManager.registerFactory(ModContainerTypes.SOLAR_PANEL.get(),SolarPanelScreen::new)); } if you need more information in a happy to provide more.
×
×
  • Create New...

Important Information

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