display mode long changed to shorten number boolean

This commit is contained in:
DaSH 2026-04-30 11:56:00 +02:00
parent 70e1f48de0
commit 58ef5583b2
2 changed files with 21 additions and 28 deletions

View File

@ -56,26 +56,20 @@ public class RenderRBMKNumitron extends TileEntitySpecialRenderer {
double yOffset = 0.5625D; double yOffset = 0.5625D;
String value = ""; String value = "";
switch((int)unit.display_mode) { if (unit.shorten_number) {
case 0: // Normal value = BobMathUtil.getShortNumber(unit.value);
value = BobMathUtil.getShortNumber(unit.value); } else {
// Overflow handling
if (unit.value > 9999999) {
value = "9999999";
break; break;
case 1: // Integer display }
// Overflow handling // Underflow handling
if (unit.value > 9999999) { if (unit.value < -999999) {
value = "9999999"; value = "-999999";
break;
}
// Underflow handling
if (unit.value < -999999) {
value = "-999999";
break;
}
value = Long.toString(unit.value);
break;
default:
value = BobMathUtil.getShortNumber(unit.value);
break; break;
}
value = Long.toString(unit.value);
} }
//** Fill up to 7 characters */ //** Fill up to 7 characters */

View File

@ -93,11 +93,12 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
/** Which digits are activated (bit mask, msb ignored) */ /** Which digits are activated (bit mask, msb ignored) */
public long active_digits; public long active_digits;
/** Display mode 0=normal, 1=integer */ /** Display mode 0=normal, 1=integer */
public long display_mode; public boolean shorten_number;
public DisplayUnit(int initialIndex) { public DisplayUnit(int initialIndex) {
label = "Display " + (initialIndex + 1); label = "Display " + (initialIndex + 1);
active_digits = 0b01111111; active_digits = 0b01111111;
shorten_number = true;
} }
public void update() { public void update() {
@ -120,7 +121,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
} }
public void serialize(ByteBuf buf) { public void serialize(ByteBuf buf) {
buf.writeLong(display_mode); buf.writeBoolean(shorten_number);
buf.writeLong(active_digits); buf.writeLong(active_digits);
buf.writeBoolean(no_leading_zeroes); buf.writeBoolean(no_leading_zeroes);
buf.writeBoolean(active); buf.writeBoolean(active);
@ -131,7 +132,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
} }
public void deserialize(ByteBuf buf) { public void deserialize(ByteBuf buf) {
display_mode = buf.readLong(); shorten_number = buf.readBoolean();
active_digits = buf.readLong(); active_digits = buf.readLong();
no_leading_zeroes = buf.readBoolean(); no_leading_zeroes = buf.readBoolean();
active = buf.readBoolean(); active = buf.readBoolean();
@ -142,7 +143,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
} }
public void readFromNBT(NBTTagCompound nbt, int index) { public void readFromNBT(NBTTagCompound nbt, int index) {
this.display_mode = nbt.getLong("display_mode" + index); this.shorten_number = nbt.getBoolean("shorten_number" + index);
this.active_digits = nbt.getLong("active_digits" + index); this.active_digits = nbt.getLong("active_digits" + index);
this.no_leading_zeroes = nbt.getBoolean("no_leading_zeroes" + index); this.no_leading_zeroes = nbt.getBoolean("no_leading_zeroes" + index);
this.active = nbt.getBoolean("active" + index); this.active = nbt.getBoolean("active" + index);
@ -153,7 +154,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
} }
public void writeToNBT(NBTTagCompound nbt, int index) { public void writeToNBT(NBTTagCompound nbt, int index) {
nbt.setLong("display_mode" + index, display_mode); nbt.setBoolean("shorten_number" + index, shorten_number);
nbt.setLong("active_digits" + index, active_digits); nbt.setLong("active_digits" + index, active_digits);
nbt.setBoolean("no_leading_zeroes" + index, no_leading_zeroes); nbt.setBoolean("no_leading_zeroes" + index, no_leading_zeroes);
nbt.setBoolean("active" + index, active); nbt.setBoolean("active" + index, active);
@ -202,7 +203,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
int idx = args.checkInteger(0) - 1; int idx = args.checkInteger(0) - 1;
if(idx < 0 || idx >= 2) return new Object[] {null, "Invalid index (1-2)"}; if(idx < 0 || idx >= 2) return new Object[] {null, "Invalid index (1-2)"};
java.util.LinkedHashMap<String, Object> map = new java.util.LinkedHashMap<>(); java.util.LinkedHashMap<String, Object> map = new java.util.LinkedHashMap<>();
map.put("display_mode", displays[idx].display_mode + 1); map.put("shorten_number", displays[idx].shorten_number);
map.put("active_digits", displays[idx].active_digits); map.put("active_digits", displays[idx].active_digits);
map.put("no_leading_zeroes", displays[idx].no_leading_zeroes); map.put("no_leading_zeroes", displays[idx].no_leading_zeroes);
map.put("active", displays[idx].active); map.put("active", displays[idx].active);
@ -288,12 +289,10 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
@Callback(direct = true, limit = 2) @Callback(direct = true, limit = 2)
@Optional.Method(modid = "OpenComputers") @Optional.Method(modid = "OpenComputers")
public Object[] setDisplayMode(Context context, Arguments args) { public Object[] setDisplayShortenNumber(Context context, Arguments args) {
int idx = args.checkInteger(0) - 1; int idx = args.checkInteger(0) - 1;
if(idx < 0 || idx >= 2) return new Object[] {false, "Invalid index (1-2)"}; if(idx < 0 || idx >= 2) return new Object[] {false, "Invalid index (1-2)"};
long val = (long) args.checkInteger(1) - 1; displays[idx].shorten_number = args.checkBoolean(1);
if(val < 0 || val >= 2) throw new IllegalArgumentException("Invalid value (1-2)");
displays[idx].display_mode = val;
markDirty(); markDirty();
return new Object[] {true}; return new Object[] {true};
} }