new: start update

This commit is contained in:
ZtereoHYPE 2023-06-25 22:06:38 +02:00
parent ab68da2070
commit 483a4a96fc
18 changed files with 95 additions and 128 deletions

View file

@ -1,6 +1,6 @@
plugins {
id 'fabric-loom' version '0.12-SNAPSHOT'
id 'maven-publish'
id 'fabric-loom' version '1.0-SNAPSHOT'
id 'io.github.juuxel.loom-quiltflower' version '1.8.0' // to use genSourcesWithQuiltflower
}
sourceCompatibility = JavaVersion.VERSION_17
@ -11,33 +11,31 @@ version = project.mod_version
group = project.maven_group
repositories {
// Add repositories to retrieve artifacts from in here.
// You should only use this when depending on other mods because
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
// for more information about repositories.
mavenCentral()
maven { url "https://maven.parchmentmc.org" } // parchment mappings
}
dependencies {
implementation 'org.projectlombok:lombok:1.18.22'
implementation 'org.projectlombok:lombok:1.18.22'
implementation 'org.projectlombok:lombok:1.18.22'
// To change the versions see the gradle.properties file
// mc & mappings
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
mappings loom.layered {
it.officialMojangMappings()
it.parchment("org.parchmentmc.data:${project.parchment_version}@zip")
}
// Fabric API. This is technically optional, but you probably want it anyway.
// apis & libraries
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
// Uncomment the following line to enable the deprecated Fabric API modules.
// These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time.
implementation 'com.fazecast:jSerialComm:2.9.2'
implementation 'com.github.cliftonlabs:json-simple:4.0.1'
// modImplementation "net.fabricmc.fabric-api:fabric-api-deprecated:${project.fabric_version}"
implementation 'org.projectlombok:lombok:1.18.22'
implementation 'org.projectlombok:lombok:1.18.22'
implementation 'org.projectlombok:lombok:1.18.22'
implementation files('libs/jSerialComm-2.9.2.jar')
implementation files('libs/json-simple-1.1.jar')
// mods & other deps
// none
}
processResources {
@ -49,14 +47,10 @@ processResources {
}
tasks.withType(JavaCompile).configureEach {
// Minecraft 1.18 (1.18-pre2) upwards uses Java 17.
it.options.release = 17
}
java {
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()
}
@ -65,20 +59,3 @@ jar {
rename { "${it}_${project.archivesBaseName}"}
}
}
// configure the maven publication
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
repositories {
// Add repositories to publish to here.
// Notice: This block does NOT have the same function as the block in the top level.
// The repositories here will be used for publishing your artifact, not for
// retrieving dependencies.
}
}

View file

@ -2,15 +2,14 @@
org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.19.3
yarn_mappings=1.19.3+build.1
loader_version=0.14.11
# Mod Properties
mod_version = v0.0.1alpha01
mod_version = 0.0.1+alpha1
maven_group = me.jonasjones
archives_base_name = microcraft-fabric-quilt
# Dependencies
fabric_version=0.68.1+1.19.3
parchment_version=parchment-1.19.3:2023.06.25

View file

@ -2,7 +2,6 @@ package me.jonasjones.microcraft;
import me.jonasjones.microcraft.config.ModConfigs;
import me.jonasjones.microcraft.config.ProfileConfig;
import me.jonasjones.microcraft.util.boardmanager.SerialNumberScanner;
import net.fabricmc.api.ClientModInitializer;
import org.json.simple.parser.ParseException;
import org.slf4j.Logger;
@ -44,9 +43,6 @@ public class Microcraft implements ClientModInitializer {
} catch (IOException e) {
LOGGER.error("AHHHHHHHHHHHHHHHHHHHHH IO");
System.out.print(e);
} catch (ParseException e) {
LOGGER.error("AHHHHHHHHHHHHHHHHHHHHH PARSE");
System.out.print(e);
}
}
}

View file

@ -1,7 +1,5 @@
package me.jonasjones.microcraft.board;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.minecraft.util.Identifier;
public record MicrocontrollerBoardIcon(Identifier boardTextureHorizontal, Identifier boardTextureVertical, int width, int height) {}

View file

@ -1,5 +1,8 @@
package me.jonasjones.microcraft.config;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@ -7,10 +10,6 @@ import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class BoardsConfig {

View file

@ -1,7 +1,6 @@
package me.jonasjones.microcraft.config;
import com.mojang.datafixers.util.Pair;
import me.jonasjones.microcraft.config.SimpleConfig.DefaultConfig;
import java.util.ArrayList;

View file

@ -1,7 +1,6 @@
package me.jonasjones.microcraft.config;
import com.mojang.datafixers.util.Pair;
import me.jonasjones.microcraft.Microcraft;
import me.jonasjones.microcraft.util.VerboseLogger;

View file

@ -1,10 +1,10 @@
package me.jonasjones.microcraft.config;
import me.jonasjones.microcraft.object.BoardData;
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
//import org.json.simple.JSONArray;
//import org.json.simple.JSONObject;
//import org.json.simple.parser.JSONParser;
//import org.json.simple.parser.ParseException;
import java.io.FileWriter;
import java.io.IOException;
@ -12,8 +12,9 @@ import java.nio.file.Files;
import java.nio.file.Path;
public class ProfileConfig {
public static void uwu() throws IOException, ParseException {
JSONObject jsonObject = new JSONObject();
public static void uwu() throws IOException {
/* JSONObject jsonObject = new JSONObject();
JSONArray jsonArray = new JSONArray();
JSONObject defaultBoardProfile = new JSONObject();
JSONArray defaultBoardProfilePinMaps = new JSONArray();
@ -40,7 +41,7 @@ public class ProfileConfig {
JSONParser jsonParser = new JSONParser();
JSONObject uwu = (JSONObject) jsonParser.parse(str);
JSONObject uwu = (JSONObject) jsonParser.parse(str);*/
/*System.out.print(uwu.toJSONString());*/
}
}

View file

@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.screen.ScreenTexts;
import net.minecraft.text.Text;
import net.minecraft.client.util.math.MatrixStack;
@Environment(EnvType.CLIENT)
public class BoardScreen extends Screen {

View file

@ -2,11 +2,11 @@ package me.jonasjones.microcraft.gui.screens;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.screen.ScreenTexts;
import net.minecraft.text.Text;
import net.minecraft.client.util.math.MatrixStack;
@Environment(EnvType.CLIENT)
public class GuiHome extends Screen {

View file

@ -5,16 +5,12 @@ import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screen.ConfirmLinkScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.GridWidget;
import net.minecraft.client.gui.widget.SimplePositioningWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.screen.ScreenTexts;
import net.minecraft.text.Text;
import net.minecraft.util.Util;
import java.util.Iterator;
@Environment(EnvType.CLIENT)
public class ModCreditsScreen extends Screen {

View file

@ -1,6 +1,6 @@
package me.jonasjones.microcraft.gui.screens;
import java.awt.*;
import java.awt.List;
public class ObjectSelectionList {
public static void display(int x, int y, int width, int height, List objects) {}

View file

@ -3,6 +3,7 @@ package me.jonasjones.microcraft.gui.screens.board;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;

View file

@ -6,9 +6,9 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.screen.ScreenTexts;
import net.minecraft.text.Text;
import net.minecraft.client.util.math.MatrixStack;
@Environment(EnvType.CLIENT)
public class TextureSelectScreen extends Screen {

View file

@ -7,20 +7,25 @@ package me.jonasjones.microcraft.gui.widget;
import me.jonasjones.microcraft.Microcraft;
import me.jonasjones.microcraft.board.MicrocontrollerBoardIcon;
import me.jonasjones.microcraft.gui.screens.ModCreditsScreen;
import me.jonasjones.microcraft.gui.screens.ModSettings;
import me.jonasjones.microcraft.gui.screens.board.AdvancedPinMappingScreen;
import me.jonasjones.microcraft.gui.screens.board.AdvancedSettingsScreen;
import me.jonasjones.microcraft.gui.screens.board.BoardIconSelectionScreen;
import me.jonasjones.microcraft.gui.screens.board.ProfileSelectionScreen;
import me.jonasjones.microcraft.gui.screens.ModCreditsScreen;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.ImageButton;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TexturedButtonWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.client.gui.widget.TexturedButtonWidget;
import net.minecraft.client.gui.widget.ButtonWidget;
@Environment(EnvType.CLIENT)
public class BoardConfigwidget extends Screen {
@ -29,38 +34,38 @@ public class BoardConfigwidget extends Screen {
//public static Identifier BOARD_TEXTURE = new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-nano.png");
public static MicrocontrollerBoardIcon BOARD_TEXTURE = new MicrocontrollerBoardIcon(new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-nano-sideways.png"), new Identifier(Microcraft.MOD_ID, "textures/boards/arduino-nano.png"), 128, 52);
public static MicrocontrollerBoardIcon BOARD_TEXTURE = new MicrocontrollerBoardIcon(new ResourceLocation(Microcraft.MOD_ID, "textures/boards/arduino-nano-sideways.png"), new ResourceLocation(Microcraft.MOD_ID, "textures/boards/arduino-nano.png"), 128, 52);
public BoardConfigwidget(Screen parent) {
super(Text.of("Microcraft Configuration"));
super(Component.literal("Microcraft Configuration"));
this.parent = parent;
}
protected void init() {
//TODO: get current profile
addDrawableChild(ButtonWidget.builder(Text.of("[Profile]"), (buttonWidget) -> this.client.setScreen(new ProfileSelectionScreen(this))).dimensions(this.width / 2 - 50, this.height - 52, 100, 20).build());
addRenderableWidget(new Button.Builder(Component.literal("[Profile]"), (buttonWidget) -> this.minecraft.setScreen(new ProfileSelectionScreen(this))).bounds(this.width / 2 - 50, this.height - 52, 100, 20).build());
//TODO: make Board texture clickable to select different texture.
this.addDrawableChild(new TexturedButtonWidget(this.width / 2 - (BOARD_TEXTURE.height() / 2), this.height / 2 - (BOARD_TEXTURE.height() / 2) - 45, BOARD_TEXTURE.height(), BOARD_TEXTURE.width(), 0, 0, 0, BOARD_TEXTURE.boardTextureVertical(), BOARD_TEXTURE.height(), BOARD_TEXTURE.width(), (buttonWidget) -> this.client.setScreen(new BoardIconSelectionScreen(this))));
this.addRenderableWidget(new ImageButton(this.width / 2 - (BOARD_TEXTURE.height() / 2), this.height / 2 - (BOARD_TEXTURE.height() / 2) - 45, BOARD_TEXTURE.height(), BOARD_TEXTURE.width(), 0, 0, 0, BOARD_TEXTURE.boardTextureVertical(), BOARD_TEXTURE.height(), BOARD_TEXTURE.width(), (buttonWidget) -> this.minecraft.setScreen(new BoardIconSelectionScreen(this))));
/*this.addDrawableChild(ButtonWidget.builder(Text.of("About Microcraft"), (buttonWidget) -> this.client.setScreen(new ModCreditsScreen(this))).dimensions(10, this.height - 30, 200, 20).build());
this.addDrawableChild(ButtonWidget.builder(Text.of("Advanced Pin Mapping"), (buttonWidget) -> this.client.setScreen(new AdvancedPinMappingScreen(this))).dimensions(this.width / 2 - 100, this.height - 55, 200, 20).build());
this.addDrawableChild(ButtonWidget.builder(Text.of("Advanced Board Settings"), (buttonWidget) -> this.client.setScreen(new AdvancedSettingsScreen(this))).dimensions(this.width / 2 - 100, this.height - 80, 200, 20).build());
this.addDrawableChild(ButtonWidget.builder(Text.of("Done"), (buttonWidget) -> this.client.setScreen(this.parent)).dimensions(this.width - 60, this.height - 30, 50, 20).build());
this.addDrawableChild(ButtonWidget.builder(Text.of("Write to Board and Quit"), (buttonWidget) -> this.client.setScreen(this.parent)).dimensions(this.width - 210, this.height - 30, 140, 20).build());
this.addDrawableChild(ButtonWidget.builder(Text.of("Microcraft Settings"), (buttonWidget) -> this.client.setScreen(new ModSettings(this))).dimensions(this.width - 210, this.height - 55, 200, 20).build());*/
/*this.addRenderableWidget(ButtonWidget.builder(Component.literal("About Microcraft"), (buttonWidget) -> this.minecraft.setScreen(new ModCreditsScreen(this))).dimensions(10, this.height - 30, 200, 20).build());
this.addRenderableWidget(ButtonWidget.builder(Component.literal("Advanced Pin Mapping"), (buttonWidget) -> this.minecraft.setScreen(new AdvancedPinMappingScreen(this))).dimensions(this.width / 2 - 100, this.height - 55, 200, 20).build());
this.addRenderableWidget(ButtonWidget.builder(Component.literal("Advanced Board Settings"), (buttonWidget) -> this.minecraft.setScreen(new AdvancedSettingsScreen(this))).dimensions(this.width / 2 - 100, this.height - 80, 200, 20).build());
this.addRenderableWidget(ButtonWidget.builder(Component.literal("Done"), (buttonWidget) -> this.minecraft.setScreen(this.parent)).dimensions(this.width - 60, this.height - 30, 50, 20).build());
this.addRenderableWidget(ButtonWidget.builder(Component.literal("Write to Board and Quit"), (buttonWidget) -> this.minecraft.setScreen(this.parent)).dimensions(this.width - 210, this.height - 30, 140, 20).build());
this.addRenderableWidget(ButtonWidget.builder(Component.literal("Microcraft Settings"), (buttonWidget) -> this.minecraft.setScreen(new ModSettings(this))).dimensions(this.width - 210, this.height - 55, 200, 20).build());*/
this.addDrawableChild(ButtonWidget.builder(Text.of("About"), (buttonWidget) -> this.client.setScreen(new ModCreditsScreen(this)))
this.addRenderableWidget(new Button.Builder(Component.literal("About"), (buttonWidget) -> this.minecraft.setScreen(new ModCreditsScreen(this)))
.dimensions(this.width / 2 - 154, this.height - 28, 75, 20).build());
this.addDrawableChild(ButtonWidget.builder(Text.of("Pin Mapping"), (buttonWidget) -> this.client.setScreen(new AdvancedPinMappingScreen(this)))
this.addRenderableWidget(new Button.Builder(Component.literal("Pin Mapping"), (buttonWidget) -> this.minecraft.setScreen(new AdvancedPinMappingScreen(this)))
.dimensions(this.width / 2 + 4 + 50, this.height - 52, 100, 20).build());
this.addDrawableChild(ButtonWidget.builder(Text.of("Board Settings"), (buttonWidget) -> this.client.setScreen(new AdvancedSettingsScreen(this)))
this.addRenderableWidget(new Button.Builder(Component.literal("Board Settings"), (buttonWidget) -> this.minecraft.setScreen(new AdvancedSettingsScreen(this)))
.dimensions(this.width / 2 - 154, this.height - 52, 100, 20).build());
this.addDrawableChild(ButtonWidget.builder(Text.of("Done"), (buttonWidget) -> this.client.setScreen(this.parent))
this.addRenderableWidget(new Button.Builder(Component.literal("Done"), (buttonWidget) -> this.minecraft.setScreen(this.parent))
.dimensions(this.width / 2 + 4 + 76, this.height - 28, 75, 20).build());
ButtonWidget upload = this.addDrawableChild(ButtonWidget.builder(Text.of("Upload"), (buttonWidget) -> this.client.setScreen(this.parent))
ButtonWidget upload = this.addRenderableWidget(new Button.Builder(Component.literal("Upload"), (buttonWidget) -> this.minecraft.setScreen(this.parent))
.dimensions(this.width / 2, this.height - 28, 75, 20).build());
upload.active = false;
this.addDrawableChild(ButtonWidget.builder(Text.of("Settings"), (buttonWidget) -> this.client.setScreen(new ModSettings(this)))
this.addRenderableWidget(new Button.Builder(Component.literal("Settings"), (buttonWidget) -> this.minecraft.setScreen(new ModSettings(this)))
.dimensions(this.width / 2 - 75, this.height - 28, 70, 20).build());

View file

@ -1,36 +1,35 @@
package me.jonasjones.microcraft.mixin;
import me.jonasjones.microcraft.gui.screens.BoardScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.TitleScreen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TexturedButtonWidget;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//import me.jonasjones.microcraft.gui.screens.BoardScreen;
//import net.minecraft.client.gui.screen.Screen;
//import net.minecraft.client.gui.screen.TitleScreen;
//import net.minecraft.client.gui.widget.ButtonWidget;
//import net.minecraft.client.gui.widget.TexturedButtonWidget;
//import net.minecraft.text.Text;
//import net.minecraft.util.Identifier;
//import org.spongepowered.asm.mixin.Mixin;
//import org.spongepowered.asm.mixin.injection.At;
//import org.spongepowered.asm.mixin.injection.Inject;
//import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import static me.jonasjones.microcraft.Microcraft.MOD_ID;
@Mixin(TitleScreen.class)
public abstract class TitleScreenButtonMixin extends Screen {
protected TitleScreenButtonMixin(Text title) {
super(title);
}
@Inject(at = @At("RETURN"), method = "initWidgetsNormal")
private void titleScreenButton(int y, int spacingY, CallbackInfo ci) {
final Identifier ICON_TEXTURE = new Identifier(MOD_ID, "textures/gui/button_icon.png");
int buttonX = this.width / 2 + 104;
int buttonY = y + spacingY * 2;
this.addDrawableChild(ButtonWidget.builder( Text.of(""), (button) -> {
this.client.setScreen(new BoardScreen(this));
}).dimensions(buttonX, buttonY, 20, 20).build());
this.addDrawableChild( new TexturedButtonWidget(buttonX, buttonY, 20, 20, 0, 0, 0, ICON_TEXTURE, 20, 20, (buttonWidget) -> this.client.setScreen(new BoardScreen(this))));
}
}
//
//@Mixin(TitleScreen.class)
//public abstract class TitleScreenButtonMixin extends Screen {
// protected TitleScreenButtonMixin(Text title) {
// super(title);
// }
//
// @Inject(at = @At("RETURN"), method = "initWidgetsNormal")
// private void titleScreenButton(int y, int spacingY, CallbackInfo ci) {
//
// final Identifier ICON_TEXTURE = new Identifier(MOD_ID, "textures/gui/button_icon.png");
//
// int buttonX = this.width / 2 + 104;
// int buttonY = y + spacingY * 2;
//
// this.addDrawableChild(ButtonWidget.builder( Text.of(""), (button) -> {
// this.client.setScreen(new BoardScreen(this));
// }).dimensions(buttonX, buttonY, 20, 20).build());
// this.addDrawableChild( new TexturedButtonWidget(buttonX, buttonY, 20, 20, 0, 0, 0, ICON_TEXTURE, 20, 20, (buttonWidget) -> this.client.setScreen(new BoardScreen(this))));
// }
//}

View file

@ -3,7 +3,6 @@ package me.jonasjones.microcraft.util.boardmanager;
import com.fazecast.jSerialComm.SerialPort;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

View file

@ -6,8 +6,7 @@
"mixins": [
],
"client": [
"TitleScreenButtonMixin",
"GameMenuScreenMixin"
"TitleScreenMixin"
],
"injectors": {
"defaultRequire": 1