Added basic mod structure

This commit is contained in:
Jonas_Jones 2022-06-21 01:02:20 +02:00
parent 746af8d251
commit 9e7c20ef07
179 changed files with 1528 additions and 0 deletions

View file

@ -0,0 +1,27 @@
package me.jonasjones.arduinoctrls;
import me.jonasjones.arduinoctrls.debug.LedBlink;
import net.fabricmc.api.ModInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ArduinoControls implements ModInitializer {
// This logger is used to write text to the console and the log file.
// It is considered best practice to use your mod id as the logger's name.
// That way, it's clear which mod wrote info, warnings, and errors.
public static final Logger LOGGER = LoggerFactory.getLogger("arduinoctrls");
@Override
public void onInitialize() {
// This code runs as soon as Minecraft is in a mod-load-ready state.
// However, some things (like resources) may still be uninitialized.
// Proceed with mild caution.
LOGGER.info("UwU from Arduino Controls!");
try {
LedBlink.initialisation();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}

View file

@ -0,0 +1,48 @@
package me.jonasjones.arduinoctrls.debug;
import arduino.Arduino;
import me.jonasjones.arduinoctrls.ArduinoControls;
public class LedBlink {
public static void initialisation() throws InterruptedException {
//do portscan
//String port = (new SPortScan()).getActivePort();
String port = "/dev/ttyUSB0";
//establish connection to Ardiuno
Arduino ArduinoCon = new Arduino(port, 9600);
boolean isOn = true; //Led state off
String[] commands = {"turnOff", "turnOn"}; //commands for Arduino
ArduinoCon.openConnection();
Thread.sleep(4000);
ArduinoCon.serialWrite(commands[1]);
Thread.sleep(1000);
ArduinoCon.serialWrite(commands[0]);
Thread.sleep(1000);
ArduinoCon.serialWrite(commands[1]);
Thread.sleep(1000);
ArduinoCon.serialWrite(commands[0]);
ArduinoCon.closeConnection();
}
public static boolean blink(Arduino ArduinoCon, String[] commands, boolean isOn) throws InterruptedException {
ArduinoCon.openConnection();
Thread.sleep(4000);
isOn = !isOn;
if (isOn) {
ArduinoCon.serialWrite(commands[1]);
} else {
ArduinoCon.serialWrite(commands[0]);
}
ArduinoCon.closeConnection();
return isOn;
}
}

View file

@ -0,0 +1,35 @@
package me.jonasjones.arduinoctrls.debug;
import java.util.Enumeration;
import gnu.io.*;
import me.jonasjones.arduinoctrls.ArduinoControls;
public class SPortScan {
private String activePort;
public SPortScan(){
CommPortIdentifier serialPortId;
Enumeration enumComm;
enumComm = CommPortIdentifier.getPortIdentifiers(); // get active ports
ArduinoControls.LOGGER.info("Found Ports: " + enumComm.toString());
/*
go throught ports and identify the serial
*/
while(enumComm.hasMoreElements())
{
serialPortId = (CommPortIdentifier) enumComm.nextElement(); // get next one
if(serialPortId.getPortType() == CommPortIdentifier.PORT_SERIAL) // check if is serial type
{
this.activePort = (String) serialPortId.getName();
}
}
}
public String getActivePort(){
return this.activePort;
}
}

View file

@ -0,0 +1,30 @@
package me.jonasjones.arduinoctrls.mixin;
import me.jonasjones.arduinoctrls.ArduinoControls;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.TitleScreen;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.text.Text;
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;
@Mixin(TitleScreen.class)
public abstract class ArduinoMixin extends Screen {
protected ArduinoMixin(Text title) {
super(title);
}
@Inject(at = @At("HEAD"), method = "init()V")
private void init(CallbackInfo info) {
ArduinoControls.LOGGER.info("This line is printed by an example mod mixin!");
}
@Inject(at = @At("RETURN"), method = "initWidgetsNormal")
private void ledToggleButton(int y, int spacingY, CallbackInfo ci) {
this.addDrawableChild(new ButtonWidget(50, 50, 20, 20,Text.of("LED"), (button) -> {
this.client.scheduleStop();
}));
}
}