Added ability to change width and height for the visual image
Change indentation to 2 spaces instead of 4 Added ImageHandler.java for basic Image related things Added 2 new speedometer images for scaling purposes Updated to version 3 Gave gradle more ram Added the new translatable texts to en_us.json
This commit is contained in:
@@ -11,7 +11,7 @@ import static me.zacharias.speedometer.Speedometer.MOD_ID;
|
||||
|
||||
public class Config {
|
||||
private static JSONObject Config;
|
||||
public static final int configVersion = 2;
|
||||
public static final float configVersion = 2.1f;
|
||||
|
||||
public static void initialize(){
|
||||
if(Config != null) throw new RuntimeException("Already Initialized");
|
||||
@@ -36,12 +36,12 @@ public class Config {
|
||||
}
|
||||
Config = new JSONObject(builder.toString());
|
||||
if(Config.has("version")){
|
||||
if(Config.getInt("version")!=configVersion){
|
||||
if(Config.getInt("version") > configVersion){
|
||||
if(Config.getFloat("version")!=configVersion){
|
||||
if(Config.getFloat("version") > configVersion){
|
||||
defualt();
|
||||
|
||||
save();
|
||||
}else if(Config.getInt("version") < configVersion){
|
||||
}else if(Config.getFloat("version") < configVersion){
|
||||
Config = new JSONObject();
|
||||
|
||||
defualt();
|
||||
@@ -77,10 +77,10 @@ public class Config {
|
||||
Config.put("visualSpeedometer", false);
|
||||
}
|
||||
if(!Config.has("xPositionVisual")) {
|
||||
Config.put("xPositionVisual", "W-23");
|
||||
Config.put("xPositionVisual", "W-3");
|
||||
}
|
||||
if(!Config.has("yPositionVisual")) {
|
||||
Config.put("yPositionVisual", "H-23");
|
||||
Config.put("yPositionVisual", "H-3");
|
||||
}
|
||||
if(!Config.has("xPositionText")) {
|
||||
Config.put("xPositionText", "W-70");
|
||||
@@ -93,6 +93,10 @@ public class Config {
|
||||
Config.put("debug", false);
|
||||
}
|
||||
|
||||
if(!Config.has("imagSize")) {
|
||||
Config.put("imageSize", 19);
|
||||
}
|
||||
|
||||
if(!Config.has("version")) {
|
||||
Config.put("version", configVersion);
|
||||
}
|
||||
@@ -194,6 +198,14 @@ public class Config {
|
||||
}
|
||||
}
|
||||
|
||||
public static int getImageSize(){
|
||||
if(Config.has("imageSize")){
|
||||
return Config.getInt("imageSize");
|
||||
}else {
|
||||
return 19;
|
||||
}
|
||||
}
|
||||
|
||||
public static void setColor(Color color){
|
||||
Config.put("color", new JSONObject()
|
||||
.put("r", color.getRed())
|
||||
@@ -233,4 +245,8 @@ public class Config {
|
||||
public static void setDebug(boolean debug){
|
||||
Config.put("debug", debug);
|
||||
}
|
||||
|
||||
public static void setImageSize(int imageSize){
|
||||
Config.put("imageSize", imageSize);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package me.zacharias.speedometer;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
public class ImageHandler {
|
||||
public static BufferedImage scale(BufferedImage img, int width, int height) {
|
||||
Image img1 = img.getScaledInstance(width,height, Image.SCALE_DEFAULT);
|
||||
BufferedImage out = new BufferedImage(width, height,BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D g2d = out.createGraphics();
|
||||
g2d.drawImage(img1,0,0,null);
|
||||
return out;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package me.zacharias.speedometer;
|
||||
|
||||
import net.minecraft.network.chat.Component;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
public enum MeterImages {
|
||||
LARGE(Component.translatable("speedometer.meter.large"), () -> {
|
||||
try {
|
||||
return ImageIO.read(Objects.requireNonNull(Speedometer.class.getResourceAsStream("/assets/speedometer/meter/meter-115.png")));
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}, 115),
|
||||
SMALL(Component.translatable("speedometer.meter.small"), () -> {
|
||||
try {
|
||||
return ImageIO.read(Objects.requireNonNull(Speedometer.class.getResourceAsStream("/assets/speedometer/meter/meter-19.png")));
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}, 19),
|
||||
MEDIUM(Component.translatable("speedometer.meter.small"), () -> {
|
||||
try {
|
||||
return ImageIO.read(Objects.requireNonNull(Speedometer.class.getResourceAsStream("/assets/speedometer/meter/meter-67.png")));
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}, 67)
|
||||
|
||||
;
|
||||
|
||||
private final Component name;
|
||||
private final BufferedImage image;
|
||||
private final int size;
|
||||
|
||||
MeterImages(Component name, Loader icon, int size) {
|
||||
this.name = name;
|
||||
this.image = icon.load();
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public BufferedImage getImage() {
|
||||
return image;
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
public Component getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
private interface Loader{
|
||||
BufferedImage load();
|
||||
}
|
||||
}
|
||||
@@ -80,12 +80,16 @@ public class Speedometer
|
||||
ClientGuiEvent.RENDER_HUD.register(Speedometer::render);
|
||||
|
||||
try {
|
||||
img = ImageIO.read(Objects.requireNonNull(Speedometer.class.getResourceAsStream("/assets/speedometer/meter/meter.png")));
|
||||
img = ImageIO.read(Objects.requireNonNull(Speedometer.class.getResourceAsStream("/assets/speedometer/meter/meter-19.png")));
|
||||
}catch (NullPointerException | IOException e){
|
||||
LOGGER.warn("Can't load speedometer icon. speedometer visual display is disabled");
|
||||
speedometerVisualDisplayFailed = true;
|
||||
}
|
||||
|
||||
if(img == null){
|
||||
speedometerVisualDisplayFailed = true;
|
||||
}
|
||||
|
||||
LOGGER.info("Finished loading speedometer");
|
||||
}
|
||||
|
||||
@@ -151,20 +155,31 @@ public class Speedometer
|
||||
|
||||
//double v = speedTypeSpeed / speedType.gatMaxVisual();
|
||||
|
||||
int x3 = (int) Math.round(7*Math.cos(Math.toRadians(i+90)))+(img.getWidth()/2);
|
||||
int y3 = (int) Math.round(7*Math.sin(Math.toRadians(i+90)))+(img.getWidth()/2);
|
||||
MeterImages meterImage = null;
|
||||
int minDiff = 10000;
|
||||
|
||||
BufferedImage img = new BufferedImage(Speedometer.img.getWidth(), Speedometer.img.getHeight(), Speedometer.img.getType());
|
||||
for(MeterImages meterImage1 : MeterImages.values()){
|
||||
int diff = Math.abs(meterImage1.getSize()-Config.getImageSize());
|
||||
if(minDiff > diff && meterImage1.getImage() != null){
|
||||
minDiff = diff;
|
||||
meterImage = meterImage1;
|
||||
}
|
||||
}
|
||||
|
||||
img = meterImage.getImage();
|
||||
|
||||
int radius = Config.getImageSize()/2-4;
|
||||
|
||||
int x3 = (int) Math.round(radius*Math.cos(Math.toRadians(i+90)))+(Config.getImageSize()/2);
|
||||
int y3 = (int) Math.round(radius*Math.sin(Math.toRadians(i+90)))+(Config.getImageSize()/2);
|
||||
|
||||
BufferedImage img = ImageHandler.scale(Speedometer.img, Config.getImageSize(), Config.getImageSize());
|
||||
Graphics2D g2d = img.createGraphics();
|
||||
for(int x1 = 0; x1 < img.getWidth(); x1++) {
|
||||
for (int y1 = 0; y1 < img.getHeight(); y1++) {
|
||||
g2d.setColor(new Color(Speedometer.img.getRGB(x1,y1)));
|
||||
g2d.fillRect(x1,y1,1,1);
|
||||
}
|
||||
}
|
||||
|
||||
g2d.setColor(new Color(138, 0, 0));
|
||||
|
||||
g2d.setStroke(new BasicStroke(2));
|
||||
|
||||
g2d.drawLine(x3,y3,img.getWidth()/2,img.getHeight()/2);
|
||||
|
||||
int xPos = getPos(graphics, Config.getXPositionVisual(), 0, false, img.getWidth());
|
||||
@@ -172,8 +187,8 @@ public class Speedometer
|
||||
|
||||
for(int x1 = 0; x1 < img.getWidth(); x1++){
|
||||
for(int y1 = 0; y1 < img.getHeight(); y1++){
|
||||
int x2 = x1 + xPos;
|
||||
int y2 = y1 + yPos;
|
||||
int x2 = x1 + xPos - img.getWidth();
|
||||
int y2 = y1 + yPos - img.getHeight();
|
||||
|
||||
int rgb = img.getRGB(x1, y1);
|
||||
|
||||
@@ -189,7 +204,7 @@ public class Speedometer
|
||||
Minecraft.getInstance().font,
|
||||
string,
|
||||
xPos-Minecraft.getInstance().font.width(string),
|
||||
yPos+6,
|
||||
(int)(yPos-4.5-(Config.getImageSize()/2)),
|
||||
new Color(138, 0, 0).getRGB()
|
||||
);
|
||||
}
|
||||
@@ -462,6 +477,14 @@ public class Speedometer
|
||||
.build()
|
||||
);
|
||||
|
||||
// Size of visual image
|
||||
|
||||
category.addEntry(entryBuilder.startIntField(Component.translatable("speedometer.config.imageWidth"), Config.getImageSize())
|
||||
.setSaveConsumer(Config::setImageSize)
|
||||
.setTooltip(Component.translatable("speedometer.config.tooltip.imageWidth"))
|
||||
.build()
|
||||
);
|
||||
|
||||
builder.setSavingRunnable(me.zacharias.speedometer.Config::save);
|
||||
|
||||
return builder;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
"speedometer.config.xPosition.text": "X Position for Text Meter",
|
||||
"speedometer.config.yPosition.text": "Y Position for Text Meter",
|
||||
"speedometer.config.debug": "Debug",
|
||||
"speedometer.config.imageWidth": "Image Width",
|
||||
|
||||
"speedometer.key.configKey": "Config Key",
|
||||
"speedometer.key.debugKey": "Debug Key",
|
||||
@@ -22,6 +23,9 @@
|
||||
"speedometer.speed.knot": "Knot",
|
||||
"speedometer.speed.error": "Unknown Speed Type",
|
||||
|
||||
"speedometer.meter.large": "Large",
|
||||
"speedometer.meter.small": "Small",
|
||||
|
||||
"speedometer.visualSpeedometer.true": "Visual",
|
||||
"speedometer.visualSpeedometer.false": "Text",
|
||||
|
||||
@@ -41,5 +45,7 @@
|
||||
|
||||
"speedometer.config.tooltip.debug": "Debug Information",
|
||||
|
||||
"speedometer.config.tooltip.imageWidth": "Image width",
|
||||
|
||||
"speedometer.invalid": "Invalid String"
|
||||
}
|
||||
BIN
common/src/main/resources/assets/speedometer/meter/meter-115.png
Normal file
BIN
common/src/main/resources/assets/speedometer/meter/meter-115.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 316 B After Width: | Height: | Size: 316 B |
BIN
common/src/main/resources/assets/speedometer/meter/meter-67.png
Normal file
BIN
common/src/main/resources/assets/speedometer/meter/meter-67.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
@@ -17,8 +17,7 @@ public class Config implements ModMenuApi {
|
||||
public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
||||
return parent -> {
|
||||
ConfigBuilder builder = Speedometer.getConfig(parent);
|
||||
|
||||
return builder.build();
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
org.gradle.jvmargs=-Xmx1G
|
||||
org.gradle.jvmargs=-Xmx8G
|
||||
|
||||
minecraft_version=1.20.1
|
||||
|
||||
archives_base_name=speedometer
|
||||
mod_version=2.0
|
||||
mod_version=3.0
|
||||
maven_group=me.zacharias
|
||||
|
||||
architectury_version=9.0.8
|
||||
|
||||
Reference in New Issue
Block a user