aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech/api')
-rw-r--r--src/main/java/kubatech/api/Variables.java6
-rw-r--r--src/main/java/kubatech/api/enums/ItemList.java1
-rw-r--r--src/main/java/kubatech/api/helpers/UUIDFinder.java23
-rw-r--r--src/main/java/kubatech/api/tea/TeaNetwork.java92
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;
+ }
+}