aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/commands/dungeon/MapCommand.java
diff options
context:
space:
mode:
authorMoulberry <jjenour@student.unimelb.edu.au>2022-03-03 11:03:58 +0800
committerGitHub <noreply@github.com>2022-03-03 11:03:58 +0800
commit7c6d37b2eb758a13b342b906f0aef88b940bc52a (patch)
tree9602a014425b859e3aba98f31f93d6de04521356 /src/main/java/io/github/moulberry/notenoughupdates/commands/dungeon/MapCommand.java
parentb11742988dec635b5c5da7c2363803cbfafb37b1 (diff)
parentdb59eba3fd9121c7c0a88363994876c5b582c08c (diff)
downloadnotenoughupdates-7c6d37b2eb758a13b342b906f0aef88b940bc52a.tar.gz
notenoughupdates-7c6d37b2eb758a13b342b906f0aef88b940bc52a.tar.bz2
notenoughupdates-7c6d37b2eb758a13b342b906f0aef88b940bc52a.zip
Merge pull request #248 from NotEnoughUpdates/master
NEU 2.1 🙂
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/commands/dungeon/MapCommand.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/commands/dungeon/MapCommand.java142
1 files changed, 142 insertions, 0 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/commands/dungeon/MapCommand.java b/src/main/java/io/github/moulberry/notenoughupdates/commands/dungeon/MapCommand.java
new file mode 100644
index 00000000..ae06a346
--- /dev/null
+++ b/src/main/java/io/github/moulberry/notenoughupdates/commands/dungeon/MapCommand.java
@@ -0,0 +1,142 @@
+package io.github.moulberry.notenoughupdates.commands.dungeon;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
+import io.github.moulberry.notenoughupdates.commands.ClientCommandBase;
+import io.github.moulberry.notenoughupdates.dungeons.GuiDungeonMapEditor;
+import net.minecraft.block.material.MapColor;
+import net.minecraft.client.Minecraft;
+import net.minecraft.command.CommandException;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.item.ItemMap;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.storage.MapData;
+
+import java.awt.*;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+
+public class MapCommand extends ClientCommandBase {
+
+ public MapCommand() {
+ super("neumap");
+ }
+
+ @Override
+ public void processCommand(ICommandSender sender, String[] args) throws CommandException {
+ if (NotEnoughUpdates.INSTANCE.colourMap == null) {
+ try (
+ BufferedReader reader = new BufferedReader(new InputStreamReader(Minecraft
+ .getMinecraft()
+ .getResourceManager()
+ .getResource(
+ new ResourceLocation("notenoughupdates:maps/F1Full.json"))
+ .getInputStream(), StandardCharsets.UTF_8))
+ ) {
+ JsonObject json = NotEnoughUpdates.INSTANCE.manager.gson.fromJson(reader, JsonObject.class);
+
+ NotEnoughUpdates.INSTANCE.colourMap = new Color[128][128];
+ for (int x = 0; x < 128; x++) {
+ for (int y = 0; y < 128; y++) {
+ NotEnoughUpdates.INSTANCE.colourMap[x][y] = new Color(0, 0, 0, 0);
+ }
+ }
+ for (Map.Entry<String, JsonElement> entry : json.entrySet()) {
+ int x = Integer.parseInt(entry.getKey().split(":")[0]);
+ int y = Integer.parseInt(entry.getKey().split(":")[1]);
+
+ NotEnoughUpdates.INSTANCE.colourMap[x][y] = new Color(entry.getValue().getAsInt(), true);
+ }
+ } catch (Exception ignored) {
+ }
+ }
+
+ if (!NotEnoughUpdates.INSTANCE.config.hidden.dev) {
+ NotEnoughUpdates.INSTANCE.openGui = new GuiDungeonMapEditor();
+ return;
+ }
+
+ if (args.length == 1 && args[0].equals("reset")) {
+ NotEnoughUpdates.INSTANCE.colourMap = null;
+ return;
+ }
+
+ if (args.length != 2) {
+ NotEnoughUpdates.INSTANCE.openGui = new GuiDungeonMapEditor();
+ return;
+ }
+
+ if (args[0].equals("save")) {
+ ItemStack stack = Minecraft.getMinecraft().thePlayer.getHeldItem();
+ if (stack != null && stack.getItem() instanceof ItemMap) {
+ ItemMap map = (ItemMap) stack.getItem();
+ MapData mapData = map.getMapData(stack, Minecraft.getMinecraft().theWorld);
+
+ if (mapData == null) return;
+
+ JsonObject json = new JsonObject();
+ for (int i = 0; i < 16384; ++i) {
+ int x = i % 128;
+ int y = i / 128;
+
+ int j = mapData.colors[i] & 255;
+
+ Color c;
+ if (j / 4 == 0) {
+ c = new Color((i + i / 128 & 1) * 8 + 16 << 24, true);
+ } else {
+ c = new Color(MapColor.mapColorArray[j / 4].getMapColor(j & 3), true);
+ }
+
+ json.addProperty(x + ":" + y, c.getRGB());
+ }
+
+ try {
+ new File(NotEnoughUpdates.INSTANCE.manager.configLocation, "maps").mkdirs();
+ NotEnoughUpdates.INSTANCE.manager.writeJson(
+ json,
+ new File(NotEnoughUpdates.INSTANCE.manager.configLocation, "maps/" + args[1] + ".json")
+ );
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN +
+ "Saved to file."));
+ }
+
+ return;
+ }
+
+ if (args[0].equals("load")) {
+ JsonObject json = NotEnoughUpdates.INSTANCE.manager.getJsonFromFile(new File(
+ NotEnoughUpdates.INSTANCE.manager.configLocation,
+ "maps/" + args[1] + ".json"
+ ));
+
+ NotEnoughUpdates.INSTANCE.colourMap = new Color[128][128];
+ for (int x = 0; x < 128; x++) {
+ for (int y = 0; y < 128; y++) {
+ NotEnoughUpdates.INSTANCE.colourMap[x][y] = new Color(0, 0, 0, 0);
+ }
+ }
+ for (Map.Entry<String, JsonElement> entry : json.entrySet()) {
+ int x = Integer.parseInt(entry.getKey().split(":")[0]);
+ int y = Integer.parseInt(entry.getKey().split(":")[1]);
+
+ NotEnoughUpdates.INSTANCE.colourMap[x][y] = new Color(entry.getValue().getAsInt(), true);
+ }
+
+ return;
+ }
+
+ NotEnoughUpdates.INSTANCE.openGui = new GuiDungeonMapEditor();
+ }
+}