aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-01-26 13:54:10 +0100
committerLinnea Gräf <nea@nea.moe>2024-01-26 13:54:10 +0100
commit4eb2056f2f20366ea49a7cf54d892bd3f25bdb16 (patch)
tree3268f0ea22a395365502556a115ec3580dee565c
parentd449a6860bdfd4994caddf6b37e0792e439a52d3 (diff)
downloadforge1.8.9template-4eb2056f2f20366ea49a7cf54d892bd3f25bdb16.tar.gz
forge1.8.9template-4eb2056f2f20366ea49a7cf54d892bd3f25bdb16.tar.bz2
forge1.8.9template-4eb2056f2f20366ea49a7cf54d892bd3f25bdb16.zip
Tutorial stuff
-rw-r--r--src/main/java/com/example/CheeseEvent.java14
-rw-r--r--src/main/java/com/example/CrashCommand.java27
-rw-r--r--src/main/java/com/example/ExampleMod.java27
-rw-r--r--src/main/java/com/example/MyGuiScreen.java82
-rw-r--r--src/main/resources/assets/examplemod/textures/gui/background.pngbin0 -> 467 bytes
5 files changed, 147 insertions, 3 deletions
diff --git a/src/main/java/com/example/CheeseEvent.java b/src/main/java/com/example/CheeseEvent.java
new file mode 100644
index 0000000..4b8ddbe
--- /dev/null
+++ b/src/main/java/com/example/CheeseEvent.java
@@ -0,0 +1,14 @@
+package com.example;
+
+import net.minecraftforge.fml.common.eventhandler.Cancelable;
+import net.minecraftforge.fml.common.eventhandler.Event;
+
+// If you don't want your event to be cancellable, remove this annotation
+@Cancelable
+public class CheeseEvent extends Event {
+ public final int totalCheeseCount;
+
+ public CheeseEvent(int totalCheeseCount) {
+ this.totalCheeseCount = totalCheeseCount;
+ }
+}
diff --git a/src/main/java/com/example/CrashCommand.java b/src/main/java/com/example/CrashCommand.java
new file mode 100644
index 0000000..516708d
--- /dev/null
+++ b/src/main/java/com/example/CrashCommand.java
@@ -0,0 +1,27 @@
+package com.example;
+
+import net.minecraft.command.CommandBase;
+import net.minecraft.command.CommandException;
+import net.minecraft.command.ICommandSender;
+
+public class CrashCommand extends CommandBase {
+ @Override
+ public String getCommandName() {
+ return "crashme";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender sender) {
+ return "";
+ }
+
+ @Override
+ public void processCommand(ICommandSender sender, String[] args) throws CommandException {
+ ExampleMod.screenToOpenNextTick = new MyGuiScreen();
+ }
+
+ @Override
+ public boolean canCommandSenderUseCommand(ICommandSender sender) {
+ return true;
+ }
+}
diff --git a/src/main/java/com/example/ExampleMod.java b/src/main/java/com/example/ExampleMod.java
index c18b591..166c371 100644
--- a/src/main/java/com/example/ExampleMod.java
+++ b/src/main/java/com/example/ExampleMod.java
@@ -1,13 +1,34 @@
package com.example;
-import net.minecraft.init.Blocks;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraftforge.client.ClientCommandHandler;
+import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
-@Mod(modid = "examplemod", useMetadata=true)
+@Mod(modid = "examplemod", useMetadata = true)
public class ExampleMod {
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
- System.out.println("Dirt: " + Blocks.dirt.getUnlocalizedName());
+ MinecraftForge.EVENT_BUS.register(this);
+ ClientCommandHandler.instance.registerCommand(new CrashCommand());
+ }
+
+ public static GuiScreen screenToOpenNextTick = null;
+
+ public static final int MOUSE_LEFT = 0;
+ public static final int MOUSE_RIGHT = 1;
+ public static final int MOUSE_MIDDLE = 2;
+ public static final int MOUSE_BACKWARD = 3;
+ public static final int MOUSE_FORWARD = 4;
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (screenToOpenNextTick != null) {
+ Minecraft.getMinecraft().displayGuiScreen(screenToOpenNextTick);
+ screenToOpenNextTick = null;
+ }
}
}
diff --git a/src/main/java/com/example/MyGuiScreen.java b/src/main/java/com/example/MyGuiScreen.java
new file mode 100644
index 0000000..331e21d
--- /dev/null
+++ b/src/main/java/com/example/MyGuiScreen.java
@@ -0,0 +1,82 @@
+package com.example;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.util.ResourceLocation;
+import org.lwjgl.opengl.GL11;
+
+import java.io.IOException;
+
+public class MyGuiScreen extends GuiScreen {
+
+ int lastClickedButton = 0;
+
+ @Override
+ public void initGui() {
+ super.initGui();
+ this.buttonList.add(new GuiButton(0, width / 2 - 55, height / 2 - 10, 30, 20, "§cRED"));
+ this.buttonList.add(new GuiButton(1, width / 2 - 15, height / 2 - 10, 30, 20, "§9BLUE"));
+ this.buttonList.add(new GuiButton(2, width / 2 + 25, height / 2 - 10, 30, 20, "§2GREEN"));
+ }
+
+ @Override
+ protected void actionPerformed(GuiButton button) throws IOException {
+ lastClickedButton = button.id;
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ // Draw tinted background
+ drawDefaultBackground();
+
+ Minecraft minecraft = Minecraft.getMinecraft();
+
+ // First we need to bind the texture
+ minecraft.getTextureManager().bindTexture(new ResourceLocation("examplemod"/* or your modid */, "textures/gui/background.png"));
+
+ // Render from your texture.
+ drawModalRectWithCustomSizedTexture(
+ // The first two arguments are the position on the screen
+ width / 2 - 100, height / 2 - 20,
+ // The next arguments are the starting u and v
+ 0, 0,
+ // The next arguments are the size on the screen
+ 200, 40,
+ // The last two arguments are the size of the texture
+ 200, 40
+ );
+
+ FontRenderer fr = minecraft.fontRendererObj;
+ String text = "Hello, World!";
+ int textWidth = fr.getStringWidth(text);
+
+ // Draw a string left aligned
+ fr.drawString(text, width / 2 - 95, height / 2 - 15, 0xFF000000);
+
+ // Draw a string center aligned
+ GlStateManager.pushMatrix();
+ GlStateManager.translate(width / 2, height / 2 - 5 + fr.FONT_HEIGHT / 2, 0);
+ GlStateManager.rotate((float) ((System.currentTimeMillis() / 200.0) % (360)), 0, 0, 1);
+ fr.drawString(text, -textWidth / 2, -fr.FONT_HEIGHT / 2, 0xFF000000);
+ GlStateManager.popMatrix();
+
+ // Draw a string right aligned
+ fr.drawString(text, width / 2 + 95 - textWidth, height / 2 + 5, 0xFF000000);
+ }
+
+ @Override
+ protected void keyTyped(char typedChar, int keyCode) throws IOException {
+ super.keyTyped(typedChar, keyCode);
+ }
+
+ int lastMouseButton = -1;
+
+ @Override
+ protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
+ super.mouseClicked(mouseX, mouseY, mouseButton);
+ lastMouseButton = mouseButton;
+ }
+}
diff --git a/src/main/resources/assets/examplemod/textures/gui/background.png b/src/main/resources/assets/examplemod/textures/gui/background.png
new file mode 100644
index 0000000..ca51491
--- /dev/null
+++ b/src/main/resources/assets/examplemod/textures/gui/background.png
Binary files differ