diff options
| author | Jakub <53441451+kuba6000@users.noreply.github.com> | 2023-04-10 21:02:49 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-10 21:02:49 +0200 |
| commit | 0ecb697d75b25206daf921ecec1c910d6ab77491 (patch) | |
| tree | 1200eb0151e16c9b21187a0f764dced1d9fd9e91 /src/main/java/kubatech/loaders/item | |
| parent | e0c9332c12847e4705ea29aa0ed15dcb3806dca4 (diff) | |
| download | GT5-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.java | 30 | ||||
| -rw-r--r-- | src/main/java/kubatech/loaders/item/items/TeaUltimate.java | 79 |
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; } } + */ } } } |
