aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub <53441451+kuba6000@users.noreply.github.com>2023-04-10 21:02:49 +0200
committerGitHub <noreply@github.com>2023-04-10 21:02:49 +0200
commit0ecb697d75b25206daf921ecec1c910d6ab77491 (patch)
tree1200eb0151e16c9b21187a0f764dced1d9fd9e91
parente0c9332c12847e4705ea29aa0ed15dcb3806dca4 (diff)
downloadGT5-Unofficial-0ecb697d75b25206daf921ecec1c910d6ab77491.tar.gz
GT5-Unofficial-0ecb697d75b25206daf921ecec1c910d6ab77491.tar.bz2
GT5-Unofficial-0ecb697d75b25206daf921ecec1c910d6ab77491.zip
Tea Network update: still alpha (#69)
* Move to UUID checking and BigInteger tea count * Research category * Start working on tea limit * Maybe * Update en_US.lang * Fix * Save UUID mapping * Mark dirty * Fixes
-rw-r--r--dependencies.gradle1
-rw-r--r--src/main/java/kubatech/CommonProxy.java2
-rw-r--r--src/main/java/kubatech/FMLEventHandler.java4
-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
-rw-r--r--src/main/java/kubatech/commands/CommandTea.java33
-rw-r--r--src/main/java/kubatech/kubatech.java1
-rw-r--r--src/main/java/kubatech/loaders/BlockLoader.java4
-rw-r--r--src/main/java/kubatech/loaders/MTLoader.java2
-rw-r--r--src/main/java/kubatech/loaders/TCLoader.java12
-rw-r--r--src/main/java/kubatech/loaders/block/BlockProxy.java21
-rw-r--r--src/main/java/kubatech/loaders/block/KubaBlock.java5
-rw-r--r--src/main/java/kubatech/loaders/block/KubaItemBlock.java12
-rw-r--r--src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java4
-rw-r--r--src/main/java/kubatech/loaders/block/blocks/TeaStorage.java46
-rw-r--r--src/main/java/kubatech/loaders/item/items/TeaCollection.java30
-rw-r--r--src/main/java/kubatech/loaders/item/items/TeaUltimate.java79
-rw-r--r--src/main/java/kubatech/savedata/PlayerData.java14
-rw-r--r--src/main/java/kubatech/savedata/PlayerDataManager.java32
-rw-r--r--src/main/java/kubatech/tileentity/TeaAcceptorTile.java67
-rw-r--r--src/main/java/kubatech/tileentity/TeaStorageTile.java63
-rw-r--r--src/main/resources/assets/kubatech/lang/en_US.lang2
-rw-r--r--src/main/resources/assets/kubatech/textures/blocks/blank.pngbin0 -> 599 bytes
-rw-r--r--src/main/resources/assets/kubatech/textures/blocks/tea_acceptor.pngbin9957 -> 6837 bytes
-rw-r--r--src/main/resources/assets/kubatech/textures/blocks/tea_acceptor.png.mcmeta5
-rw-r--r--src/main/resources/assets/kubatech/textures/blocks/tea_storage.pngbin0 -> 935 bytes
-rw-r--r--src/main/resources/assets/kubatech/textures/gui/green_tea.pngbin0 -> 6557 bytes
29 files changed, 450 insertions, 111 deletions
diff --git a/dependencies.gradle b/dependencies.gradle
index 4904e0d78c..46afe773bb 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -58,6 +58,7 @@ dependencies {
//api("com.github.GTNewHorizons:SpecialMobs:3.3.13:dev")
//api("com.github.GTNewHorizons:twilightforest:2.3.8.17:dev")
//api("com.github.GTNewHorizons:EnderZoo:1.0.23:dev")
+ //runtimeOnly("com.github.GTNewHorizons:Draconic-Evolution:1.1.15-GTNH:dev")
//runtimeOnly("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev")
//runtimeOnly("com.github.GTNewHorizons:BloodMagic:1.3.25:dev")
//api("curse.maven:witchery-69673:2234410")
diff --git a/src/main/java/kubatech/CommonProxy.java b/src/main/java/kubatech/CommonProxy.java
index a93d5991c1..37bd924579 100644
--- a/src/main/java/kubatech/CommonProxy.java
+++ b/src/main/java/kubatech/CommonProxy.java
@@ -37,11 +37,11 @@ public class CommonProxy {
MinecraftForge.EVENT_BUS.register(new PlayerDataManager());
registerItems();
registerBlocks();
- if (LoaderReference.Thaumcraft) TCLoader.load();
}
public void init(FMLInitializationEvent event) {
if (LoaderReference.MineTweaker) MTLoader.init();
+ if (LoaderReference.Thaumcraft) TCLoader.init();
}
public void postInit(FMLPostInitializationEvent event) {
diff --git a/src/main/java/kubatech/FMLEventHandler.java b/src/main/java/kubatech/FMLEventHandler.java
index b096c7bb11..f1aa845ebd 100644
--- a/src/main/java/kubatech/FMLEventHandler.java
+++ b/src/main/java/kubatech/FMLEventHandler.java
@@ -10,7 +10,9 @@
package kubatech;
+import kubatech.api.helpers.UUIDFinder;
import kubatech.api.network.LoadConfigPacket;
+import kubatech.savedata.PlayerDataManager;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -23,6 +25,8 @@ public class FMLEventHandler {
@SubscribeEvent
public void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
if (!(event.player instanceof EntityPlayerMP)) return;
+ UUIDFinder.updateMapping(event.player.getCommandSenderName(), event.player.getPersistentID());
+ PlayerDataManager.initializePlayer((EntityPlayerMP) event.player);
kubatech.info("Sending config to " + event.player.getDisplayName());
kubatech.NETWORK.sendTo(LoadConfigPacket.instance, (EntityPlayerMP) event.player);
}
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;
+ }
+}
diff --git a/src/main/java/kubatech/commands/CommandTea.java b/src/main/java/kubatech/commands/CommandTea.java
index 726b8ce799..4fff7f0a40 100644
--- a/src/main/java/kubatech/commands/CommandTea.java
+++ b/src/main/java/kubatech/commands/CommandTea.java
@@ -12,8 +12,11 @@ package kubatech.commands;
import static kubatech.commands.CommandTea.Translations.*;
-import kubatech.savedata.PlayerData;
-import kubatech.savedata.PlayerDataManager;
+import java.math.BigInteger;
+import java.util.UUID;
+
+import kubatech.api.helpers.UUIDFinder;
+import kubatech.api.tea.TeaNetwork;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
@@ -76,43 +79,43 @@ public class CommandTea extends CommandBase {
p_71515_1_.addChatMessage(new ChatComponentText(INVALID_OPTION.get()));
return;
}
- PlayerData playerData = PlayerDataManager.getPlayer(p_71515_2_[0]);
- if (playerData == null) {
+ UUID player = UUIDFinder.getUUID(p_71515_2_[0]);
+ if (player == null) {
p_71515_1_.addChatMessage(new ChatComponentText(PLAYER_NOT_FOUND.get()));
return;
}
+ TeaNetwork teaNetwork = TeaNetwork.getNetwork(player);
if (!p_71515_2_[1].equalsIgnoreCase("get") && p_71515_2_.length < 3) {
p_71515_1_.addChatMessage(new ChatComponentText(INVALID_OPTION.get()));
return;
}
switch (p_71515_2_[1].toLowerCase()) {
case "get":
- p_71515_1_.addChatMessage(new ChatComponentText(SUCCESS_GET.get(p_71515_2_[0], playerData.teaAmount)));
+ p_71515_1_.addChatMessage(new ChatComponentText(SUCCESS_GET.get(p_71515_2_[0], teaNetwork.teaAmount)));
break;
case "set": {
- long tea;
+ BigInteger tea;
try {
- tea = Long.parseLong(p_71515_2_[2]);
+ tea = new BigInteger(p_71515_2_[2]);
} catch (NumberFormatException ex) {
p_71515_1_.addChatMessage(new ChatComponentText(INVALID_OPTION.get()));
return;
}
- playerData.teaAmount = tea;
- playerData.markDirty();
- p_71515_1_.addChatMessage(new ChatComponentText(SUCCESS_SET.get(p_71515_2_[0], playerData.teaAmount)));
+ teaNetwork.teaAmount = tea;
+ teaNetwork.markDirty();
+ p_71515_1_.addChatMessage(new ChatComponentText(SUCCESS_SET.get(p_71515_2_[0], teaNetwork.teaAmount)));
break;
}
case "add": {
- long tea;
+ BigInteger tea;
try {
- tea = Long.parseLong(p_71515_2_[2]);
+ tea = new BigInteger(p_71515_2_[2]);
} catch (NumberFormatException ex) {
p_71515_1_.addChatMessage(new ChatComponentText(INVALID_OPTION.get()));
return;
}
- playerData.teaAmount += tea;
- playerData.markDirty();
- p_71515_1_.addChatMessage(new ChatComponentText(SUCCESS_ADD.get(p_71515_2_[0], playerData.teaAmount)));
+ teaNetwork.addTea(tea);
+ p_71515_1_.addChatMessage(new ChatComponentText(SUCCESS_ADD.get(p_71515_2_[0], teaNetwork.teaAmount)));
break;
}
default:
diff --git a/src/main/java/kubatech/kubatech.java b/src/main/java/kubatech/kubatech.java
index b0868a3f30..2ec2da2e7b 100644
--- a/src/main/java/kubatech/kubatech.java
+++ b/src/main/java/kubatech/kubatech.java
@@ -81,6 +81,7 @@ public class kubatech {
super.displayAllReleventItems(p_78018_1_);
p_78018_1_.add(ItemList.ExtremeExterminationChamber.get(1));
p_78018_1_.add(ItemList.ExtremeIndustrialApiary.get(1));
+ p_78018_1_.add(ItemList.ExtremeIndustrialGreenhouse.get(1));
}
};
diff --git a/src/main/java/kubatech/loaders/BlockLoader.java b/src/main/java/kubatech/loaders/BlockLoader.java
index feed715fa7..b16fd55b4e 100644
--- a/src/main/java/kubatech/loaders/BlockLoader.java
+++ b/src/main/java/kubatech/loaders/BlockLoader.java
@@ -14,7 +14,9 @@ import kubatech.api.enums.ItemList;
import kubatech.loaders.block.KubaBlock;
import kubatech.loaders.block.KubaItemBlock;
import kubatech.loaders.block.blocks.TeaAcceptor;
+import kubatech.loaders.block.blocks.TeaStorage;
import kubatech.tileentity.TeaAcceptorTile;
+import kubatech.tileentity.TeaStorageTile;
import net.minecraft.block.material.Material;
import net.minecraft.item.ItemBlock;
@@ -28,9 +30,11 @@ public class BlockLoader {
public static void registerBlocks() {
GameRegistry.registerTileEntity(TeaAcceptorTile.class, "KT_TeaAcceptor");
+ GameRegistry.registerTileEntity(TeaStorageTile.class, "KT_TeaStorage");
GameRegistry.registerBlock(kubaBlock, null, "kubablocks");
GameRegistry.registerItem(kubaItemBlock, "kubablocks");
ItemList.TeaAcceptor.set(kubaBlock.registerProxyBlock(new TeaAcceptor()));
+ ItemList.TeaStorage.set(kubaBlock.registerProxyBlock(new TeaStorage()));
}
}
diff --git a/src/main/java/kubatech/loaders/MTLoader.java b/src/main/java/kubatech/loaders/MTLoader.java
index d223e83951..b39c99e795 100644
--- a/src/main/java/kubatech/loaders/MTLoader.java
+++ b/src/main/java/kubatech/loaders/MTLoader.java
@@ -11,7 +11,6 @@
package kubatech.loaders;
import kubatech.Tags;
-import kubatech.api.LoaderReference;
import minetweaker.MineTweakerImplementationAPI;
import org.apache.logging.log4j.LogManager;
@@ -31,6 +30,5 @@ public class MTLoader {
public void MTOnPostReload(MineTweakerImplementationAPI.ReloadEvent reloadEvent) {
LOG.info("MT Recipes Loaded!");
- if (LoaderReference.Thaumcraft) TCLoader.register();
}
}
diff --git a/src/main/java/kubatech/loaders/TCLoader.java b/src/main/java/kubatech/loaders/TCLoader.java
index a4141d4ba5..37aed521cc 100644
--- a/src/main/java/kubatech/loaders/TCLoader.java
+++ b/src/main/java/kubatech/loaders/TCLoader.java
@@ -15,6 +15,7 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.stream.Collectors;
+import kubatech.Tags;
import kubatech.api.LoaderReference;
import kubatech.api.enums.ItemList;
import kubatech.api.utils.ItemID;
@@ -22,6 +23,7 @@ import kubatech.loaders.item.items.TeaUltimate;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import thaumcraft.api.ThaumcraftApi;
@@ -36,9 +38,13 @@ import cpw.mods.fml.common.registry.GameRegistry;
public class TCLoader {
- public static void load() {}
+ public static final String TCCategoryKey = "KUBATECH";
- public static void register() {
+ public static void init() {
+ ResearchCategories.registerCategory(
+ TCCategoryKey,
+ new ResourceLocation(Tags.MODID, "textures/gui/green_tea.png"),
+ new ResourceLocation("thaumcraft", "textures/gui/gui_researchback.png"));
if (!LoaderReference.GTNHCoreMod || !LoaderReference.DraconicEvolution) return;
registerRecipe();
registerResearch();
@@ -102,7 +108,7 @@ public class TCLoader {
if (ultimateTeaResearch == null) {
ultimateTeaResearch = new ResearchItem(
"KT_UltimateTea",
- "NEWHORIZONS",
+ TCCategoryKey,
new AspectList().add(Aspect.MAGIC, 1).add(Aspect.HEAL, 1).add(Aspect.PLANT, 1)
.add(Aspect.EXCHANGE, 1),
-2,
diff --git a/src/main/java/kubatech/loaders/block/BlockProxy.java b/src/main/java/kubatech/loaders/block/BlockProxy.java
index 4ce6aa820d..a546aa80d8 100644
--- a/src/main/java/kubatech/loaders/block/BlockProxy.java
+++ b/src/main/java/kubatech/loaders/block/BlockProxy.java
@@ -31,12 +31,20 @@ import com.gtnewhorizons.modularui.api.screen.ITileWithModularUI;
public class BlockProxy {
private final String unlocalizedName;
- private final String texturepath;
- private IIcon icon;
+ private final String sideTexturePath;
+ private final String topBottomTexturePath;
+ private IIcon sideIcon;
+ private IIcon topBottomIcon;
public BlockProxy(String unlocalizedName, String texture) {
this.unlocalizedName = "kubablock." + unlocalizedName;
- texturepath = Tags.MODID + ":" + texture;
+ sideTexturePath = topBottomTexturePath = Tags.MODID + ":" + texture;
+ }
+
+ public BlockProxy(String unlocalizedName, String sideTexture, String topBottomTexture) {
+ this.unlocalizedName = "kubablock." + unlocalizedName;
+ sideTexturePath = Tags.MODID + ":" + sideTexture;
+ topBottomTexturePath = Tags.MODID + ":" + topBottomTexture;
}
public void itemInit(int ID) {}
@@ -58,11 +66,14 @@ public class BlockProxy {
public void onBlockPlaced(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {}
public void registerIcon(IIconRegister iconRegister) {
- icon = iconRegister.registerIcon(texturepath);
+ sideIcon = iconRegister.registerIcon(sideTexturePath);
+ if (sideTexturePath.equals(topBottomTexturePath)) topBottomIcon = sideIcon;
+ else topBottomIcon = iconRegister.registerIcon(topBottomTexturePath);
}
public IIcon getIcon(int side) {
- return icon;
+ if (side <= 1) return topBottomIcon;
+ else return sideIcon;
}
public String getUnlocalizedName() {
diff --git a/src/main/java/kubatech/loaders/block/KubaBlock.java b/src/main/java/kubatech/loaders/block/KubaBlock.java
index 92481c3f8a..52b378dbf5 100644
--- a/src/main/java/kubatech/loaders/block/KubaBlock.java
+++ b/src/main/java/kubatech/loaders/block/KubaBlock.java
@@ -107,6 +107,11 @@ public class KubaBlock extends Block {
}
@Override
+ public int damageDropped(int meta) {
+ return meta;
+ }
+
+ @Override
public void registerBlockIcons(IIconRegister p_149651_1_) {
blocks.values().forEach(b -> b.registerIcon(p_149651_1_));
}
diff --git a/src/main/java/kubatech/loaders/block/KubaItemBlock.java b/src/main/java/kubatech/loaders/block/KubaItemBlock.java
index 8d497a6a0f..bdd0c6eecd 100644
--- a/src/main/java/kubatech/loaders/block/KubaItemBlock.java
+++ b/src/main/java/kubatech/loaders/block/KubaItemBlock.java
@@ -17,6 +17,7 @@ import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
public class KubaItemBlock extends ItemBlock {
@@ -26,6 +27,12 @@ public class KubaItemBlock extends ItemBlock {
}
@Override
+ public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side,
+ float hitX, float hitY, float hitZ, int metadata) {
+ return super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata);
+ }
+
+ @Override
public void registerIcons(IIconRegister p_94581_1_) {
super.registerIcons(p_94581_1_);
}
@@ -45,4 +52,9 @@ public class KubaItemBlock extends ItemBlock {
public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) {
KubaBlock.blocks.get(p_77624_1_.getItemDamage()).addInformation(p_77624_1_, p_77624_2_, p_77624_3_, p_77624_4_);
}
+
+ @Override
+ public int getMetadata(int p_77647_1_) {
+ return p_77647_1_;
+ }
}
diff --git a/src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java b/src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java
index 2f4f36db53..9eba767376 100644
--- a/src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java
+++ b/src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java
@@ -26,7 +26,7 @@ import net.minecraft.world.World;
public class TeaAcceptor extends BlockProxy implements IProxyTileEntityProvider {
public TeaAcceptor() {
- super("tea_acceptor", "tea_acceptor");
+ super("tea_acceptor", "tea_acceptor", "blank");
}
@Override
@@ -38,7 +38,7 @@ public class TeaAcceptor extends BlockProxy implements IProxyTileEntityProvider
public void onBlockPlaced(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {
if (world.isRemote) return;
if (!(player instanceof EntityPlayerMP)) return;
- ((TeaAcceptorTile) world.getTileEntity(x, y, z)).setTeaOwner(player.getCommandSenderName());
+ ((TeaAcceptorTile) world.getTileEntity(x, y, z)).setTeaOwner(player.getPersistentID());
}
@Override
diff --git a/src/main/java/kubatech/loaders/block/blocks/TeaStorage.java b/src/main/java/kubatech/loaders/block/blocks/TeaStorage.java
new file mode 100644
index 0000000000..a80b73fce0
--- /dev/null
+++ b/src/main/java/kubatech/loaders/block/blocks/TeaStorage.java
@@ -0,0 +1,46 @@
+package kubatech.loaders.block.blocks;
+
+import static kubatech.api.Variables.numberFormat;
+
+import java.util.List;
+
+import kubatech.loaders.block.BlockProxy;
+import kubatech.loaders.block.IProxyTileEntityProvider;
+import kubatech.tileentity.TeaStorageTile;
+
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.world.World;
+
+public class TeaStorage extends BlockProxy implements IProxyTileEntityProvider {
+
+ public TeaStorage() {
+ super("tea_storage", "tea_storage");
+ }
+
+ @Override
+ public TileEntity createTileEntity(World world) {
+ return new TeaStorageTile();
+ }
+
+ @Override
+ public void onBlockPlaced(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {
+ if (world.isRemote) return;
+ if (!(player instanceof EntityPlayerMP)) return;
+ ((TeaStorageTile) world.getTileEntity(x, y, z)).setTeaOwner(player.getPersistentID());
+ }
+
+ @Override
+ public void addInformation(ItemStack stack, EntityPlayer entity, List<String> tooltipList, boolean showDebugInfo) {
+ tooltipList.add("Extends Tea Storage by " + EnumChatFormatting.RED + numberFormat.format(Long.MAX_VALUE));
+ }
+
+ @Override
+ public float getResistance() {
+ return 999999999999.f;
+ }
+}
diff --git a/src/main/java/kubatech/loaders/item/items/TeaCollection.java b/src/main/java/kubatech/loaders/item/items/TeaCollection.java
index 5ef3995301..46c13a0032 100644
--- a/src/main/java/kubatech/loaders/item/items/TeaCollection.java
+++ b/src/main/java/kubatech/loaders/item/items/TeaCollection.java
@@ -12,13 +12,13 @@ package kubatech.loaders.item.items;
import java.util.LinkedList;
import java.util.List;
+import java.util.UUID;
import kubatech.api.utils.ModUtils;
import kubatech.loaders.ItemLoader;
import kubatech.loaders.item.ItemProxy;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -48,19 +48,29 @@ public class TeaCollection extends ItemProxy {
private static final int[][] achievement_poses = new int[][] { { 0, 0 }, { 2, 0 }, { 3, 1 }, { 4, 2 }, { 4, 4 },
{ 3, 5 }, { 2, 6 }, { 0, 6 }, { -1, 5 }, { -2, 4 }, { -2, 2 }, { -1, 1 }, { 1, 3 } };
- boolean checkTeaOwner(ItemStack stack, String username) {
+ boolean checkTeaOwner(ItemStack stack, UUID player) {
+ NBTTagCompound tag = stack.stackTagCompound;
+ if (tag == null || !stack.stackTagCompound.hasKey("TeaOwnerUUID")) return true;
+ return stack.stackTagCompound.getString("TeaOwnerUUID").equals(player.toString());
+ }
+
+ boolean checkTeaOwner(ItemStack stack, String player) {
NBTTagCompound tag = stack.stackTagCompound;
if (tag == null || !stack.stackTagCompound.hasKey("TeaOwner")) return true;
- return stack.stackTagCompound.getString("TeaOwner").equals(username);
+ return stack.stackTagCompound.getString("TeaOwner").equals(player);
}
- private boolean checkOrSetTeaOwner(ItemStack stack, String username) {
+ private boolean checkOrSetTeaOwner(ItemStack stack, EntityPlayer player) {
NBTTagCompound tag = stack.stackTagCompound;
- if (tag == null || !stack.stackTagCompound.hasKey("TeaOwner")) {
- stack.setTagInfo("TeaOwner", new NBTTagString(username));
+ if (tag == null || !stack.stackTagCompound.hasKey("TeaOwnerUUID")) {
+ stack.setTagInfo("TeaOwnerUUID", new NBTTagString(player.getPersistentID().toString()));
+ stack.setTagInfo("TeaOwner", new NBTTagString(player.getCommandSenderName()));
return true;
}
- return stack.stackTagCompound.getString("TeaOwner").equals(username);
+ if (stack.stackTagCompound.getString("TeaOwnerUUID").equals(player.getPersistentID().toString())) {
+ stack.setTagInfo("TeaOwner", new NBTTagString(player.getCommandSenderName()));
+ return true;
+ } else return false;
}
@Override
@@ -136,6 +146,7 @@ public class TeaCollection extends ItemProxy {
if (!ModUtils.isClientSided || Minecraft.getMinecraft().thePlayer == null) {
return super.getDisplayName(stack);
}
+ // UUID is different on client if in offline mode I think
if (checkTeaOwner(stack, Minecraft.getMinecraft().thePlayer.getCommandSenderName())) {
return super.getDisplayName(stack);
}
@@ -146,7 +157,7 @@ public class TeaCollection extends ItemProxy {
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrentItem) {
if (world.isRemote) return;
if (!(entity instanceof EntityPlayerMP)) return;
- checkOrSetTeaOwner(stack, entity.getCommandSenderName());
+ checkOrSetTeaOwner(stack, (EntityPlayer) entity);
NBTTagCompound tag = stack.stackTagCompound;
if (tag.hasKey("display")) tag.removeTag("display");
}
@@ -166,10 +177,9 @@ public class TeaCollection extends ItemProxy {
if (new Throwable().getStackTrace()[1].getMethodName().equals("isAchievementInPages"))
return super.getAchievements(); // 5HEAD FIX
- EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
unlockedAchievements.clear();
for (Achievement achievement : achievements)
- if (player.getStatFileWriter().hasAchievementUnlocked(achievement))
+ if (Minecraft.getMinecraft().thePlayer.getStatFileWriter().hasAchievementUnlocked(achievement))
unlockedAchievements.add(achievement);
return unlockedAchievements;
}
diff --git a/src/main/java/kubatech/loaders/item/items/TeaUltimate.java b/src/main/java/kubatech/loaders/item/items/TeaUltimate.java
index 35b4ae28f1..ec7da06b2d 100644
--- a/src/main/java/kubatech/loaders/item/items/TeaUltimate.java
+++ b/src/main/java/kubatech/loaders/item/items/TeaUltimate.java
@@ -10,14 +10,18 @@
package kubatech.loaders.item.items;
+import static kubatech.api.Variables.numberFormat;
+import static kubatech.api.Variables.numberFormatScientific;
+
+import java.math.BigInteger;
import java.text.NumberFormat;
+import java.util.concurrent.atomic.AtomicReference;
import kubatech.api.enums.ItemList;
+import kubatech.api.tea.TeaNetwork;
import kubatech.api.utils.ModUtils;
import kubatech.api.utils.StringUtils;
import kubatech.loaders.item.IItemProxyGUI;
-import kubatech.savedata.PlayerData;
-import kubatech.savedata.PlayerDataManager;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
@@ -26,11 +30,11 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
-import net.minecraft.potion.Potion;
-import net.minecraft.potion.PotionEffect;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
+import codechicken.nei.NEIClientUtils;
+
import com.gtnewhorizons.modularui.api.ModularUITextures;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
import com.gtnewhorizons.modularui.api.drawable.ItemDrawable;
@@ -64,7 +68,7 @@ public class TeaUltimate extends TeaCollection implements IItemProxyGUI {
@Override
public String getDisplayName(ItemStack stack) {
- if (!ModUtils.isClientSided) return super.getDisplayName(stack);
+ if (!ModUtils.isClientSided || Minecraft.getMinecraft().thePlayer == null) return super.getDisplayName(stack);
if (checkTeaOwner(stack, Minecraft.getMinecraft().thePlayer.getCommandSenderName())) {
return getUltimateTeaDisplayName(super.getDisplayName(stack));
}
@@ -75,10 +79,12 @@ public class TeaUltimate extends TeaCollection implements IItemProxyGUI {
public ModularWindow createWindow(ItemStack stack, EntityPlayer player) {
ModularWindow.Builder builder = ModularWindow.builder(200, 150);
builder.setBackground(ModularUITextures.VANILLA_BACKGROUND);
- final PlayerData playerData = PlayerDataManager.getPlayer(player.getCommandSenderName());
+ final TeaNetwork teaNetwork = TeaNetwork.getNetwork(player.getPersistentID());
IDrawable tab1 = new ItemDrawable(ItemList.LegendaryUltimateTea.get(1)).withFixedSize(18, 18, 4, 6);
IDrawable tab2 = new ItemDrawable(new ItemStack(Blocks.crafting_table)).withFixedSize(18, 18, 4, 6);
IDrawable tab3 = new ItemDrawable(new ItemStack(Items.golden_apple)).withFixedSize(18, 18, 4, 6);
+ AtomicReference<BigInteger> teaAmount = new AtomicReference<>(BigInteger.ZERO);
+ AtomicReference<BigInteger> teaLimit = new AtomicReference<>(BigInteger.ZERO);
builder.widget(
new TabContainer()
.setButtonSize(
@@ -127,11 +133,33 @@ public class TeaUltimate extends TeaCollection implements IItemProxyGUI {
.addChild(
new DynamicTextWidget(
() -> new Text(
- "Tea: " + (playerData == null ? "ERROR"
- : NumberFormat.getInstance()
- .format(playerData.teaAmount)))
- .color(Color.GREEN.normal))
- .setPos(20, 20)))
+ "Tea: " + (NEIClientUtils.shiftKey()
+ ? numberFormat.format(teaAmount.get())
+ : numberFormatScientific
+ .format(teaAmount.get())))
+ .color(Color.GREEN.dark(3)))
+ .setSynced(false)
+ .setPos(20, 20)
+ .attachSyncer(
+ new FakeSyncWidget.BigIntegerSyncer(
+ () -> teaNetwork.teaAmount,
+ teaAmount::set),
+ builder))
+ .addChild(
+ new DynamicTextWidget(
+ () -> new Text(
+ "Tea limit: " + (NEIClientUtils.shiftKey()
+ ? numberFormat.format(teaLimit.get())
+ : numberFormatScientific
+ .format(teaLimit.get())))
+ .color(Color.GREEN.dark(3)))
+ .setSynced(false)
+ .setPos(20, 30)
+ .attachSyncer(
+ new FakeSyncWidget.BigIntegerSyncer(
+ () -> teaNetwork.teaLimit,
+ teaLimit::set),
+ builder)))
.addPage(
new MultiChildWidget()
.addChild(
@@ -143,10 +171,7 @@ public class TeaUltimate extends TeaCollection implements IItemProxyGUI {
new ButtonWidget()
.setOnClick((Widget.ClickData clickData, Widget widget) -> {
if (!(player instanceof EntityPlayerMP)) return;
- if (playerData == null || playerData.teaAmount < 50_000L)
- return;
- playerData.teaAmount -= 50_000L;
- playerData.markDirty();
+ if (!teaNetwork.canAfford(50_000, true)) return;
if (player.inventory.addItemStackToInventory(
ItemList.TeaAcceptorResearchNote.get(1)))
return;
@@ -187,7 +212,7 @@ public class TeaUltimate extends TeaCollection implements IItemProxyGUI {
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer entity) {
if (world.isRemote) return stack;
if (!(entity instanceof EntityPlayerMP)) return stack;
- if (!checkTeaOwner(stack, entity.getCommandSenderName())) return stack;
+ if (!checkTeaOwner(stack, entity.getPersistentID())) return stack;
openHeldItemGUI(entity);
return stack;
}
@@ -197,18 +222,16 @@ public class TeaUltimate extends TeaCollection implements IItemProxyGUI {
if (world.isRemote) return;
if (!(entity instanceof EntityPlayerMP)) return;
super.onUpdate(stack, world, entity, slot, isCurrentItem);
- if (checkTeaOwner(stack, entity.getCommandSenderName())) {
- PlayerData playerData = PlayerDataManager.getPlayer(entity.getCommandSenderName());
- if (playerData == null) return;
- playerData.teaAmount++;
- playerData.markDirty();
-
- if (playerData.autoRegen && playerData.teaAmount > 75_000) {
- if (((EntityPlayerMP) entity).getActivePotionEffect(Potion.regeneration) == null) {
- ((EntityPlayerMP) entity).addPotionEffect(new PotionEffect(Potion.regeneration.id, 1200, 0, true));
- playerData.teaAmount -= 75_000;
- }
- }
+ if (checkTeaOwner(stack, entity.getPersistentID())) {
+ TeaNetwork teaNetwork = TeaNetwork.getNetwork(entity.getPersistentID());
+ teaNetwork.addTea(1);
+
+ /*
+ * if (playerData.autoRegen && playerData.teaAmount > 75_000) { if (((EntityPlayerMP)
+ * entity).getActivePotionEffect(Potion.regeneration) == null) { ((EntityPlayerMP)
+ * entity).addPotionEffect(new PotionEffect(Potion.regeneration.id, 1200, 0, true)); playerData.teaAmount -=
+ * 75_000; } }
+ */
}
}
}
diff --git a/src/main/java/kubatech/savedata/PlayerData.java b/src/main/java/kubatech/savedata/PlayerData.java
index a00b7fd0fa..3cf33bab2d 100644
--- a/src/main/java/kubatech/savedata/PlayerData.java
+++ b/src/main/java/kubatech/savedata/PlayerData.java
@@ -10,24 +10,26 @@
package kubatech.savedata;
+import kubatech.api.tea.TeaNetwork;
+
import net.minecraft.nbt.NBTTagCompound;
public class PlayerData {
- public long teaAmount = 0L;
- public boolean autoRegen = false;
+ public String username = "";
+ public TeaNetwork teaNetwork;
PlayerData(NBTTagCompound NBTData) {
- teaAmount = NBTData.getLong("teaAmount");
- autoRegen = NBTData.getBoolean("autoRegen");
+ username = NBTData.getString("username");
+ if (NBTData.hasKey("teaNetwork")) teaNetwork = TeaNetwork.fromNBT(NBTData.getCompoundTag("teaNetwork"));
}
PlayerData() {}
public NBTTagCompound toNBTData() {
NBTTagCompound NBTData = new NBTTagCompound();
- NBTData.setLong("teaAmount", teaAmount);
- NBTData.setBoolean("autoRegen", autoRegen);
+ NBTData.setString("username", username);
+ if (teaNetwork != null) NBTData.setTag("teaNetwork", teaNetwork.toNBT());
return NBTData;
}
diff --git a/src/main/java/kubatech/savedata/PlayerDataManager.java b/src/main/java/kubatech/savedata/PlayerDataManager.java
index d14a261542..ba894504e3 100644
--- a/src/main/java/kubatech/savedata/PlayerDataManager.java
+++ b/src/main/java/kubatech/savedata/PlayerDataManager.java
@@ -12,7 +12,11 @@ package kubatech.savedata;
import java.util.HashMap;
import java.util.Map;
+import java.util.UUID;
+import kubatech.api.helpers.UUIDFinder;
+
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraft.world.WorldSavedData;
@@ -24,7 +28,7 @@ public class PlayerDataManager extends WorldSavedData {
private static final String playerDataName = "KubaTech_PlayerData";
static PlayerDataManager Instance = null;
- private final HashMap<String, PlayerData> players = new HashMap<>();
+ private final HashMap<UUID, PlayerData> players = new HashMap<>();
public static void Initialize(World world) {
if (Instance != null) {
@@ -53,7 +57,11 @@ public class PlayerDataManager extends WorldSavedData {
players.clear();
for (int i = 0, imax = NBTData.getInteger("size"); i < imax; i++) {
NBTTagCompound playerNBTData = NBTData.getCompoundTag("Player." + i);
- players.put(playerNBTData.getString("username"), new PlayerData(playerNBTData.getCompoundTag("data")));
+ if (!playerNBTData.hasKey("uuid")) continue;
+ UUID uuid = UUID.fromString(playerNBTData.getString("uuid"));
+ PlayerData pData = new PlayerData(playerNBTData.getCompoundTag("data"));
+ players.put(uuid, pData);
+ if (!pData.username.isEmpty()) UUIDFinder.updateMapping(pData.username, uuid);
}
}
@@ -61,17 +69,27 @@ public class PlayerDataManager extends WorldSavedData {
public void writeToNBT(NBTTagCompound NBTData) {
NBTData.setInteger("size", players.size());
int i = 0;
- for (Map.Entry<String, PlayerData> playerDataEntry : players.entrySet()) {
+ for (Map.Entry<UUID, PlayerData> playerDataEntry : players.entrySet()) {
NBTTagCompound playerNBTData = new NBTTagCompound();
- playerNBTData.setString("username", playerDataEntry.getKey());
+ playerNBTData.setString("uuid", playerDataEntry.getKey().toString());
playerNBTData.setTag("data", playerDataEntry.getValue().toNBTData());
NBTData.setTag("Player." + (i++), playerNBTData);
}
}
- public static PlayerData getPlayer(String username) {
- if (Instance == null) return null;
- return Instance.players.computeIfAbsent(username, s -> new PlayerData());
+ public static PlayerData getPlayer(UUID player) {
+ if (Instance == null) return null; // probably client side
+ return Instance.players.computeIfAbsent(player, s -> new PlayerData());
+ }
+
+ public static void initializePlayer(EntityPlayerMP player) {
+ if (Instance == null) return;
+ if (!Instance.players.containsKey(player.getPersistentID())) {
+ PlayerData pData = new PlayerData();
+ pData.username = player.getCommandSenderName();
+ Instance.players.put(player.getPersistentID(), pData);
+ Instance.markDirty();
+ }
}
@SuppressWarnings("unused")
diff --git a/src/main/java/kubatech/tileentity/TeaAcceptorTile.java b/src/main/java/kubatech/tileentity/TeaAcceptorTile.java
index 20b101e70d..73bfd46d65 100644
--- a/src/main/java/kubatech/tileentity/TeaAcceptorTile.java
+++ b/src/main/java/kubatech/tileentity/TeaAcceptorTile.java
@@ -10,15 +10,19 @@
package kubatech.tileentity;
-import java.text.NumberFormat;
+import static kubatech.api.Variables.numberFormat;
+import static kubatech.api.Variables.numberFormatScientific;
+
+import java.math.BigInteger;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.function.BiFunction;
import kubatech.api.enums.ItemList;
+import kubatech.api.tea.TeaNetwork;
import kubatech.api.utils.StringUtils;
import kubatech.loaders.ItemLoader;
import kubatech.loaders.block.KubaBlock;
-import kubatech.savedata.PlayerData;
-import kubatech.savedata.PlayerDataManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
@@ -27,6 +31,8 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
+import codechicken.nei.NEIClientUtils;
+
import com.gtnewhorizons.modularui.api.ModularUITextures;
import com.gtnewhorizons.modularui.api.drawable.Text;
import com.gtnewhorizons.modularui.api.math.Color;
@@ -36,6 +42,7 @@ import com.gtnewhorizons.modularui.api.widget.Widget;
import com.gtnewhorizons.modularui.common.builder.UIInfo;
import com.gtnewhorizons.modularui.common.internal.wrapper.ModularUIContainer;
import com.gtnewhorizons.modularui.common.widget.DynamicTextWidget;
+import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
public class TeaAcceptorTile extends TileEntity
@@ -45,16 +52,16 @@ public class TeaAcceptorTile extends TileEntity
super();
}
- private String tileOwner = null;
- private PlayerData playerData = null;
+ private UUID tileOwner = null;
+ private TeaNetwork teaNetwork = null;
private long averageInput = 0L;
private long inAmount = 0L;
private int ticker = 0;
- public void setTeaOwner(String teaOwner) {
- if (tileOwner == null || tileOwner.isEmpty()) {
+ public void setTeaOwner(UUID teaOwner) {
+ if (tileOwner == null) {
tileOwner = teaOwner;
- playerData = PlayerDataManager.getPlayer(tileOwner);
+ teaNetwork = TeaNetwork.getNetwork(tileOwner);
markDirty();
}
}
@@ -62,20 +69,21 @@ public class TeaAcceptorTile extends TileEntity
@Override
public void readFromNBT(NBTTagCompound NBTData) {
super.readFromNBT(NBTData);
- tileOwner = NBTData.getString("tileOwner");
- if (!tileOwner.isEmpty()) {
- playerData = PlayerDataManager.getPlayer(tileOwner);
- }
+ try {
+ tileOwner = UUID.fromString(NBTData.getString("tileOwner"));
+ teaNetwork = TeaNetwork.getNetwork(tileOwner);
+ } catch (Exception ignored) {}
}
@Override
public void writeToNBT(NBTTagCompound NBTData) {
super.writeToNBT(NBTData);
- NBTData.setString("tileOwner", tileOwner);
+ NBTData.setString("tileOwner", tileOwner.toString());
}
@Override
public void updateEntity() {
+ if (this.worldObj.isRemote) return;
if (++ticker % 100 == 0) {
averageInput = inAmount / 100;
inAmount = 0;
@@ -104,10 +112,9 @@ public class TeaAcceptorTile extends TileEntity
@Override
public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) {
- if (playerData != null) {
- playerData.teaAmount += p_70299_2_.stackSize;
- playerData.markDirty();
+ if (teaNetwork != null) {
inAmount += p_70299_2_.stackSize;
+ teaNetwork.addTea(p_70299_2_.stackSize);
}
}
@@ -128,7 +135,7 @@ public class TeaAcceptorTile extends TileEntity
@Override
public boolean isUseableByPlayer(EntityPlayer p_70300_1_) {
- return p_70300_1_.getCommandSenderName().equals(tileOwner);
+ return p_70300_1_.getPersistentID().equals(tileOwner);
}
@Override
@@ -142,6 +149,8 @@ public class TeaAcceptorTile extends TileEntity
@Override
public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
+ if (teaNetwork == null) return false;
+ if (!teaNetwork.canAdd(p_94041_2_.stackSize)) return false;
return p_94041_2_.getItem() == ItemLoader.kubaitems && p_94041_2_.getItemDamage() >= minDamage
&& p_94041_2_.getItemDamage() <= maxDamage;
}
@@ -166,7 +175,7 @@ public class TeaAcceptorTile extends TileEntity
ModularWindow.Builder builder = ModularWindow.builder(170, 70);
builder.setBackground(ModularUITextures.VANILLA_BACKGROUND);
EntityPlayer player = buildContext.getPlayer();
-
+ AtomicReference<BigInteger> teaAmount = new AtomicReference<>(BigInteger.ZERO);
builder.widgets(
posCenteredHorizontally(
10,
@@ -174,20 +183,24 @@ public class TeaAcceptorTile extends TileEntity
new Text("Tea Acceptor").format(EnumChatFormatting.BOLD)
.format(EnumChatFormatting.DARK_RED))),
posCenteredHorizontally(30, new DynamicTextWidget(() -> {
- if (player.getCommandSenderName().equals(tileOwner))
- return new Text("[Tea]").color(Color.GREEN.normal);
+ if (player.getPersistentID().equals(tileOwner)) return new Text("[Tea]").color(Color.GREEN.normal);
else return new Text("This is not your block").color(Color.RED.normal);
})),
posCenteredHorizontally(
40,
- new DynamicTextWidget(
+ (TextWidget) new DynamicTextWidget(
() -> new Text(
- (playerData == null ? "ERROR"
- : StringUtils.applyRainbow(
- NumberFormat.getInstance().format(playerData.teaAmount),
- (int) ((playerData.teaAmount / Math.max(1, averageInput * 10))
- % Integer.MAX_VALUE),
- EnumChatFormatting.BOLD.toString()))).shadow())),
+ StringUtils.applyRainbow(
+ NEIClientUtils.shiftKey() ? numberFormat.format(teaAmount.get())
+ : numberFormatScientific.format(teaAmount.get()),
+ (int) ((teaAmount.get().longValue() / Math.max(1, averageInput * 10))
+ % Integer.MAX_VALUE),
+ EnumChatFormatting.BOLD.toString())).shadow()).setSynced(false)
+ .attachSyncer(
+ new FakeSyncWidget.BigIntegerSyncer(
+ () -> teaNetwork.teaAmount,
+ teaAmount::set),
+ builder)),
posCenteredHorizontally(
50,
new DynamicTextWidget(() -> new Text("IN: " + averageInput + "/t").color(Color.BLACK.normal)))
diff --git a/src/main/java/kubatech/tileentity/TeaStorageTile.java b/src/main/java/kubatech/tileentity/TeaStorageTile.java
new file mode 100644
index 0000000000..4a3837e3c6
--- /dev/null
+++ b/src/main/java/kubatech/tileentity/TeaStorageTile.java
@@ -0,0 +1,63 @@
+package kubatech.tileentity;
+
+import java.math.BigInteger;
+import java.util.UUID;
+
+import kubatech.api.tea.TeaNetwork;
+
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+
+public class TeaStorageTile extends TileEntity {
+
+ public TeaStorageTile() {
+ super();
+ }
+
+ private UUID tileOwner = null;
+ private TeaNetwork teaNetwork = null;
+
+ public void setTeaOwner(UUID teaOwner) {
+ if (tileOwner == null) {
+ tileOwner = teaOwner;
+ teaNetwork = TeaNetwork.getNetwork(tileOwner);
+ markDirty();
+ teaNetwork.registerTeaStorageExtender(this);
+ }
+ }
+
+ @Override
+ public void readFromNBT(NBTTagCompound NBTData) {
+ super.readFromNBT(NBTData);
+ try {
+ tileOwner = UUID.fromString(NBTData.getString("tileOwner"));
+ teaNetwork = TeaNetwork.getNetwork(tileOwner);
+ teaNetwork.registerTeaStorageExtender(this);
+ } catch (Exception ignored) {}
+ }
+
+ @Override
+ public void writeToNBT(NBTTagCompound NBTData) {
+ super.writeToNBT(NBTData);
+ NBTData.setString("tileOwner", tileOwner.toString());
+ }
+
+ @Override
+ public boolean canUpdate() {
+ return false;
+ }
+
+ public BigInteger teaExtendAmount() {
+ return BigInteger.valueOf(Long.MAX_VALUE);
+ }
+
+ @Override
+ public void onChunkUnload() {
+ if (teaNetwork != null) teaNetwork.unregisterTeaStorageExtender(this);
+ }
+
+ @Override
+ public void invalidate() {
+ if (teaNetwork != null) teaNetwork.unregisterTeaStorageExtender(this);
+ }
+}
diff --git a/src/main/resources/assets/kubatech/lang/en_US.lang b/src/main/resources/assets/kubatech/lang/en_US.lang
index de090859be..43e35261be 100644
--- a/src/main/resources/assets/kubatech/lang/en_US.lang
+++ b/src/main/resources/assets/kubatech/lang/en_US.lang
@@ -39,6 +39,7 @@ command.tea.usage=<username> get/set/add (<amount>)
#Blocks
kubablock.tea_acceptor.name=§4§lTea Acceptor
+kubablock.tea_storage.name=§4§lTea Storage Extender
#Items
kubaitem.fromcollection=This item is from
@@ -118,6 +119,7 @@ achievement.teacollection.yellow_tea.desc=§6Green Tea with more grassy flavour
achievement.teacollection.ultimate_tea.desc=§4§lOne Tea to drink them all
#Thaumcraft
+tc.research_category.KUBATECH=§4§lTEA
tc.research_name.KT_UltimateTea=%s §6§lTea
tc.research_text.KT_UltimateTea=§4§lPure power
KT.research.ultimatetea=You have found a way to convert all this Tea into pure power creating the %s §6§lTea
diff --git a/src/main/resources/assets/kubatech/textures/blocks/blank.png b/src/main/resources/assets/kubatech/textures/blocks/blank.png
new file mode 100644
index 0000000000..b343d809c4
--- /dev/null
+++ b/src/main/resources/assets/kubatech/textures/blocks/blank.png
Binary files differ
diff --git a/src/main/resources/assets/kubatech/textures/blocks/tea_acceptor.png b/src/main/resources/assets/kubatech/textures/blocks/tea_acceptor.png
index 11766b0b7c..6f582fe9e7 100644
--- a/src/main/resources/assets/kubatech/textures/blocks/tea_acceptor.png
+++ b/src/main/resources/assets/kubatech/textures/blocks/tea_acceptor.png
Binary files differ
diff --git a/src/main/resources/assets/kubatech/textures/blocks/tea_acceptor.png.mcmeta b/src/main/resources/assets/kubatech/textures/blocks/tea_acceptor.png.mcmeta
deleted file mode 100644
index 60af678259..0000000000
--- a/src/main/resources/assets/kubatech/textures/blocks/tea_acceptor.png.mcmeta
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "animation":{
- "frametime":4
- }
-} \ No newline at end of file
diff --git a/src/main/resources/assets/kubatech/textures/blocks/tea_storage.png b/src/main/resources/assets/kubatech/textures/blocks/tea_storage.png
new file mode 100644
index 0000000000..88d78cda08
--- /dev/null
+++ b/src/main/resources/assets/kubatech/textures/blocks/tea_storage.png
Binary files differ
diff --git a/src/main/resources/assets/kubatech/textures/gui/green_tea.png b/src/main/resources/assets/kubatech/textures/gui/green_tea.png
new file mode 100644
index 0000000000..7b8f46029d
--- /dev/null
+++ b/src/main/resources/assets/kubatech/textures/gui/green_tea.png
Binary files differ