16bit items

This commit is contained in:
Anuken
2020-08-25 20:54:54 -04:00
parent 6a23439fce
commit 58182fe040
10 changed files with 62 additions and 35 deletions

View File

@@ -5,5 +5,12 @@ import arc.util.io.*;
/** A class that represents compartmentalized tile entity state. */
public abstract class BlockModule{
public abstract void write(Writes write);
public abstract void read(Reads read);
public void read(Reads read, boolean legacy){
read(read);
}
public void read(Reads read){
read(read, false);
}
}

View File

@@ -276,30 +276,30 @@ public class ItemModule extends BlockModule{
@Override
public void write(Writes write){
byte amount = 0;
int amount = 0;
for(int item : items){
if(item > 0) amount++;
}
write.b(amount); //amount of items
write.s(amount); //amount of items
for(int i = 0; i < items.length; i++){
if(items[i] > 0){
write.b(i); //item ID
write.s(i); //item ID
write.i(items[i]); //item amount
}
}
}
@Override
public void read(Reads read){
public void read(Reads read, boolean legacy){
//just in case, reset items
Arrays.fill(items, 0);
int count = read.ub();
int count = legacy ? read.ub() : read.s();
total = 0;
for(int j = 0; j < count; j++){
int itemid = read.ub();
int itemid = legacy ? read.ub() : read.s();
int itemamount = read.i();
items[content.item(itemid).id] = itemamount;
total += itemamount;

View File

@@ -114,29 +114,29 @@ public class LiquidModule extends BlockModule{
@Override
public void write(Writes write){
byte amount = 0;
int amount = 0;
for(float liquid : liquids){
if(liquid > 0) amount++;
}
write.b(amount); //amount of liquids
write.s(amount); //amount of liquids
for(int i = 0; i < liquids.length; i++){
if(liquids[i] > 0){
write.b(i); //liquid ID
write.f(liquids[i]); //item amount
write.s(i); //liquid ID
write.f(liquids[i]); //liquid amount
}
}
}
@Override
public void read(Reads read){
public void read(Reads read, boolean legacy){
Arrays.fill(liquids, 0);
total = 0f;
int count = read.ub();
int count = legacy ? read.ub() : read.s();
for(int j = 0; j < count; j++){
int liquidid = read.ub();
int liquidid = legacy ? read.ub() : read.s();
float amount = read.f();
liquids[liquidid] = amount;
if(amount > 0){