diff options
Diffstat (limited to 'src/main/java/kubatech/api')
| -rw-r--r-- | src/main/java/kubatech/api/Variables.java | 6 | ||||
| -rw-r--r-- | src/main/java/kubatech/api/enums/ItemList.java | 1 | ||||
| -rw-r--r-- | src/main/java/kubatech/api/helpers/UUIDFinder.java | 23 | ||||
| -rw-r--r-- | src/main/java/kubatech/api/tea/TeaNetwork.java | 92 |
4 files changed, 122 insertions, 0 deletions
diff --git a/src/main/java/kubatech/api/Variables.java b/src/main/java/kubatech/api/Variables.java index fd1c8564d5..74312d6fb7 100644 --- a/src/main/java/kubatech/api/Variables.java +++ b/src/main/java/kubatech/api/Variables.java @@ -10,6 +10,9 @@ package kubatech.api; +import java.text.DecimalFormat; +import java.text.NumberFormat; + import kubatech.api.utils.StringUtils; import net.minecraft.util.EnumChatFormatting; @@ -41,4 +44,7 @@ public class Variables { public static final double ln4 = Math.log(4d); public static final double ln2 = Math.log(2d); + + public static final NumberFormat numberFormatScientific = new DecimalFormat("0.00E0"); + public static final NumberFormat numberFormat = NumberFormat.getInstance(); } diff --git a/src/main/java/kubatech/api/enums/ItemList.java b/src/main/java/kubatech/api/enums/ItemList.java index 55621888ee..9176c6b207 100644 --- a/src/main/java/kubatech/api/enums/ItemList.java +++ b/src/main/java/kubatech/api/enums/ItemList.java @@ -58,6 +58,7 @@ public enum ItemList implements IItemContainer { PartiallyOxidizedTeaLeaf, TeaAcceptorResearchNote, TeaAcceptor, + TeaStorage, Beeeeee; private ItemStack mStack; diff --git a/src/main/java/kubatech/api/helpers/UUIDFinder.java b/src/main/java/kubatech/api/helpers/UUIDFinder.java new file mode 100644 index 0000000000..737080ef80 --- /dev/null +++ b/src/main/java/kubatech/api/helpers/UUIDFinder.java @@ -0,0 +1,23 @@ +package kubatech.api.helpers; + +import java.util.HashMap; +import java.util.UUID; + +public class UUIDFinder { + + private static final HashMap<UUID, String> UUIDToUsernameMap = new HashMap<>(); + private static final HashMap<String, UUID> UsernameToUUIDMap = new HashMap<>(); + + public static UUID getUUID(String username) { + return UsernameToUUIDMap.get(username); + } + + public static String getUsername(UUID player) { + return UUIDToUsernameMap.get(player); + } + + public static void updateMapping(String username, UUID player) { + UUIDToUsernameMap.put(player, username); + UsernameToUUIDMap.put(username, player); + } +} diff --git a/src/main/java/kubatech/api/tea/TeaNetwork.java b/src/main/java/kubatech/api/tea/TeaNetwork.java new file mode 100644 index 0000000000..298982ce9d --- /dev/null +++ b/src/main/java/kubatech/api/tea/TeaNetwork.java @@ -0,0 +1,92 @@ +package kubatech.api.tea; + +import java.math.BigInteger; +import java.util.HashSet; +import java.util.UUID; + +import kubatech.savedata.PlayerData; +import kubatech.savedata.PlayerDataManager; +import kubatech.tileentity.TeaStorageTile; + +import net.minecraft.nbt.NBTTagCompound; + +public class TeaNetwork { + + // TODO: Optimize later :P + public BigInteger teaAmount = BigInteger.ZERO; + public BigInteger teaLimit = BigInteger.valueOf(Long.MAX_VALUE); + PlayerData owner; + private HashSet<TeaStorageTile> teaStorageExtenders = new HashSet<>(); + + public static TeaNetwork getNetwork(UUID player) { + PlayerData p = PlayerDataManager.getPlayer(player); + if (p == null) return null; + TeaNetwork n = p.teaNetwork; + if (n == null) { + p.teaNetwork = new TeaNetwork(); + p.teaNetwork.owner = p; + return p.teaNetwork; + } + n.owner = p; + return n; + } + + public boolean canAfford(long price, boolean take) { + return canAfford(BigInteger.valueOf(price), take); + } + + public boolean canAfford(BigInteger price, boolean take) { + if (teaAmount.compareTo(price) >= 0) { + if (take) { + teaAmount = teaAmount.subtract(price); + markDirty(); + } + return true; + } + return false; + } + + public boolean addTea(long toAdd) { + return addTea(BigInteger.valueOf(toAdd)); + } + + public boolean addTea(BigInteger toAdd) { + BigInteger newValue = teaAmount.add(toAdd); + if (newValue.compareTo(teaLimit) > 0) return false; + teaAmount = teaAmount.add(toAdd); + markDirty(); + return true; + } + + public boolean canAdd(long toAdd) { + return canAdd(BigInteger.valueOf(toAdd)); + } + + public boolean canAdd(BigInteger toAdd) { + return teaAmount.add(toAdd).compareTo(teaLimit) <= 0; + } + + public void registerTeaStorageExtender(TeaStorageTile storageTile) { + if (teaStorageExtenders.add(storageTile)) teaLimit = teaLimit.add(storageTile.teaExtendAmount()); + } + + public void unregisterTeaStorageExtender(TeaStorageTile storageTile) { + if (teaStorageExtenders.remove(storageTile)) teaLimit = teaLimit.subtract(storageTile.teaExtendAmount()); + } + + public void markDirty() { + owner.markDirty(); + } + + public NBTTagCompound toNBT() { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setByteArray("teaAmount", teaAmount.toByteArray()); + return nbt; + } + + public static TeaNetwork fromNBT(NBTTagCompound nbt) { + TeaNetwork teaNetwork = new TeaNetwork(); + teaNetwork.teaAmount = new BigInteger(nbt.getByteArray("teaAmount")); + return teaNetwork; + } +} |
