aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/loaders/item
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 /src/main/java/kubatech/loaders/item
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
Diffstat (limited to 'src/main/java/kubatech/loaders/item')
-rw-r--r--src/main/java/kubatech/loaders/item/items/TeaCollection.java30
-rw-r--r--src/main/java/kubatech/loaders/item/items/TeaUltimate.java79
2 files changed, 71 insertions, 38 deletions
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; } }
+ */
}
}
}