aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core')
-rw-r--r--src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java2
-rw-r--r--src/Java/gtPlusPlus/core/block/general/HellFire.java2
-rw-r--r--src/Java/gtPlusPlus/core/client/renderer/RenderPlasmaBolt.java2
-rw-r--r--src/Java/gtPlusPlus/core/commands/CommandMath.java110
-rw-r--r--src/Java/gtPlusPlus/core/common/CommonProxy.java2
-rw-r--r--src/Java/gtPlusPlus/core/entity/EntityTeslaTowerLightning.java2
-rw-r--r--src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java2
-rw-r--r--src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java2
-rw-r--r--src/Java/gtPlusPlus/core/handler/BurnableFuelHandler.java2
-rw-r--r--src/Java/gtPlusPlus/core/handler/analytics/AnalyticsLoggingPlugin.java39
-rw-r--r--src/Java/gtPlusPlus/core/handler/analytics/BlockingFlush.java67
-rw-r--r--src/Java/gtPlusPlus/core/handler/analytics/SegmentAnalytics.java271
-rw-r--r--src/Java/gtPlusPlus/core/handler/analytics/SegmentHelper.java81
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java4
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/LoginEventHandler.java4
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/ZombieBackupSpawnEventHandler.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/base/BaseEuItem.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/base/BaseItemBurnable.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/tool/staballoy/MultiPickaxeBase.java2
-rw-r--r--src/Java/gtPlusPlus/core/lib/CORE.java6
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java4
-rw-r--r--src/Java/gtPlusPlus/core/slots/SlotModularBaubleUpgrades.java2
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/base/TilePoweredGT.java2
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/machines/TileEntityModularityTable.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/Utils.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/array/AutoMap.java77
-rw-r--r--src/Java/gtPlusPlus/core/util/array/BlockPos.java28
-rw-r--r--src/Java/gtPlusPlus/core/util/array/Pair.java27
-rw-r--r--src/Java/gtPlusPlus/core/util/array/Quad.java33
-rw-r--r--src/Java/gtPlusPlus/core/util/array/Triplet.java27
-rw-r--r--src/Java/gtPlusPlus/core/util/entity/EntityUtils.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/item/ItemUtils.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/math/MathUtils.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/nbt/ModularArmourUtils.java2
-rw-r--r--src/Java/gtPlusPlus/core/util/uuid/UUIDGenerator.java2
-rw-r--r--src/Java/gtPlusPlus/core/world/damage/BaseCustomDamageSource.java22
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java2
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_Ores.java4
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/object/BoxedQuad.java2
-rw-r--r--src/Java/gtPlusPlus/core/world/explosions/MiningExplosion.java2
42 files changed, 581 insertions, 275 deletions
diff --git a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java
index ea55a9177d..56ba60a5f3 100644
--- a/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java
+++ b/src/Java/gtPlusPlus/core/block/general/BlockTankXpConverter.java
@@ -9,12 +9,12 @@ import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.common.items.GT_MetaGenerated_Tool_01;
+import gtPlusPlus.api.objects.data.Triplet;
import gtPlusPlus.core.creative.AddToCreativeTab;
import gtPlusPlus.core.item.base.itemblock.ItemBlockEntityBase;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.tileentities.general.TileEntityXpConverter;
import gtPlusPlus.core.util.Utils;
-import gtPlusPlus.core.util.array.Triplet;
import gtPlusPlus.core.util.enchanting.EnchantingUtils;
import gtPlusPlus.core.util.player.PlayerUtils;
import net.minecraft.block.BlockContainer;
diff --git a/src/Java/gtPlusPlus/core/block/general/HellFire.java b/src/Java/gtPlusPlus/core/block/general/HellFire.java
index a682a0d98d..ef15f373ae 100644
--- a/src/Java/gtPlusPlus/core/block/general/HellFire.java
+++ b/src/Java/gtPlusPlus/core/block/general/HellFire.java
@@ -17,7 +17,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-import gtPlusPlus.api.objects.XSTR;
+import gtPlusPlus.api.objects.random.XSTR;
import gtPlusPlus.core.creative.AddToCreativeTab;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.math.MathUtils;
diff --git a/src/Java/gtPlusPlus/core/client/renderer/RenderPlasmaBolt.java b/src/Java/gtPlusPlus/core/client/renderer/RenderPlasmaBolt.java
index f505824bc9..cb17793c59 100644
--- a/src/Java/gtPlusPlus/core/client/renderer/RenderPlasmaBolt.java
+++ b/src/Java/gtPlusPlus/core/client/renderer/RenderPlasmaBolt.java
@@ -3,7 +3,7 @@ package gtPlusPlus.core.client.renderer;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.api.objects.XSTR;
+import gtPlusPlus.api.objects.random.XSTR;
import gtPlusPlus.core.entity.EntityTeslaTowerLightning;
import java.util.Random;
diff --git a/src/Java/gtPlusPlus/core/commands/CommandMath.java b/src/Java/gtPlusPlus/core/commands/CommandMath.java
index 27c963bf81..8e8dfbc36c 100644
--- a/src/Java/gtPlusPlus/core/commands/CommandMath.java
+++ b/src/Java/gtPlusPlus/core/commands/CommandMath.java
@@ -4,10 +4,13 @@ import java.util.ArrayList;
import java.util.List;
import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.util.item.ItemUtils;
import gtPlusPlus.core.util.player.PlayerUtils;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChunkCoordinates;
@@ -21,61 +24,82 @@ public class CommandMath implements ICommand
protected String fullEntityName;
protected Entity conjuredEntity;
- public CommandMath()
- {
+ public CommandMath(){
this.aliases = new ArrayList<>();
-
- this.aliases.add("hometele");
-
- this.aliases.add("warphome");
-
+ //this.aliases.add("hometele");
+ //this.aliases.add("warphome");
}
@Override
- public int compareTo(final Object o)
- {
+ public int compareTo(final Object o){
return 0;
}
@Override
- public String getCommandName()
- {
- return "bed";
+ public String getCommandName(){
+ return "alkalus";
}
@Override
- public String getCommandUsage(final ICommandSender var1)
- {
- return "/bed [Teleports you to your bed for XP]";
+ public String getCommandUsage(final ICommandSender var1){
+ return "/alkalus [Dev Command]";
}
@Override
- public List<String> getCommandAliases()
- {
+ public List<String> getCommandAliases(){
return this.aliases;
}
@Override
- public void processCommand(final ICommandSender S, final String[] argString)
- {
+ public void processCommand(final ICommandSender S, final String[] argString){
final World W = S.getEntityWorld();
- final CommandUtils C = new CommandUtils();
- final EntityPlayer P = C.getPlayer(S);
- //System.out.println(P.getCommandSenderName());
- //System.out.println(P.getDisplayName());
- if (W.isRemote)
-
- {
-
- System.out.println("Not processing on Client side");
-
+ final EntityPlayer P = CommandUtils.getPlayer(S);
+ if (!W.isRemote){
+ if (P.getDisplayName().toLowerCase().equals("draknyte1") || P.getCommandSenderName().toLowerCase().equals("draknyte1")) {
+ String[] prefixes = new String[] {
+ "ingot",
+ "plate",
+ "dust",
+ "gearGt",
+ "block",
+ "ore"
+ };
+ String[] loots = new String[] {
+ "Iron",
+ "Iron",
+ "Iron",
+ "Copper",
+ "Copper",
+ "Copper",
+ "Tin",
+ "Mica",
+ "Steel",
+ "Steel",
+ "Steel",
+ "Invar",
+ "Titanium",
+ "Gold",
+ "Silver",
+ "Lead",
+ "Aluminium"
+ };
+ AutoMap<EntityItem> itemEntities = new AutoMap<EntityItem>();
+ for (String g : prefixes) {
+ for (String s : loots) {
+ itemEntities.put(new EntityItem(W, P.posX, P.posY, P.posZ, ItemUtils.getItemStackOfAmountFromOreDictNoBroken(g+s, 64)));
+ }}
+ for (EntityItem e : itemEntities.values()) {
+ e.lifespan = 30000;
+ }
+
+ }
}
- else
+ /*else
{
@@ -167,36 +191,30 @@ public class CommandMath implements ICommand
gregtech.api.util.GT_Utility.sendChatToPlayer(P, "You don't feel you're able to do this yet.");
}
- }
+ }*/
}
@Override
- public boolean canCommandSenderUseCommand(final ICommandSender var1)
- {
- return true;
-
+ public boolean canCommandSenderUseCommand(final ICommandSender var1){
+ final EntityPlayer P = CommandUtils.getPlayer(var1);
+ if (P.getDisplayName().toLowerCase().equals("draknyte1") || P.getCommandSenderName().toLowerCase().equals("draknyte1")) {
+ return true;
+ }
+ return false;
}
@Override
- public List<?> addTabCompletionOptions(final ICommandSender var1, final String[] var2)
- {
- // TODO Auto-generated method stub
-
+ public List<?> addTabCompletionOptions(final ICommandSender var1, final String[] var2){
return null;
-
}
@Override
- public boolean isUsernameIndex(final String[] var1, final int var2)
- {
+ public boolean isUsernameIndex(final String[] var1, final int var2){
// TODO Auto-generated method stub
-
return false;
-
}
- public boolean playerUsesCommand(final World W, final EntityPlayer P, final int cost)
- {
+ public boolean playerUsesCommand(final World W, final EntityPlayer P, final int cost){
return true;
diff --git a/src/Java/gtPlusPlus/core/common/CommonProxy.java b/src/Java/gtPlusPlus/core/common/CommonProxy.java
index d5f4d95aef..421a522945 100644
--- a/src/Java/gtPlusPlus/core/common/CommonProxy.java
+++ b/src/Java/gtPlusPlus/core/common/CommonProxy.java
@@ -5,8 +5,8 @@ import static gtPlusPlus.core.lib.CORE.DEBUG;
import cpw.mods.fml.common.event.*;
import cpw.mods.fml.common.registry.GameRegistry;
import gtPlusPlus.GTplusplus;
-import gtPlusPlus.api.objects.ChunkManager;
import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.minecraft.ChunkManager;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.creative.AddToCreativeTab;
import gtPlusPlus.core.entity.InternalEntityRegistry;
diff --git a/src/Java/gtPlusPlus/core/entity/EntityTeslaTowerLightning.java b/src/Java/gtPlusPlus/core/entity/EntityTeslaTowerLightning.java
index 0cd5bd85bf..d1528747a1 100644
--- a/src/Java/gtPlusPlus/core/entity/EntityTeslaTowerLightning.java
+++ b/src/Java/gtPlusPlus/core/entity/EntityTeslaTowerLightning.java
@@ -5,7 +5,7 @@ import java.util.UUID;
import gtPlusPlus.api.damage.DamageTeslaTower;
import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.api.objects.XSTR;
+import gtPlusPlus.api.objects.random.XSTR;
import gtPlusPlus.core.util.entity.EntityUtils;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
diff --git a/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java b/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java
index c935409650..7517011673 100644
--- a/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java
+++ b/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java
@@ -1,7 +1,7 @@
package gtPlusPlus.core.entity.projectile;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.core.util.array.BlockPos;
+import gtPlusPlus.api.objects.minecraft.BlockPos;
import gtPlusPlus.core.util.entity.EntityUtils;
import gtPlusPlus.core.util.math.MathUtils;
import net.minecraft.block.Block;
diff --git a/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java b/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java
index cd4bec52bf..dfab6fa8ec 100644
--- a/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java
+++ b/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java
@@ -1,7 +1,7 @@
package gtPlusPlus.core.entity.projectile;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.core.util.array.BlockPos;
+import gtPlusPlus.api.objects.minecraft.BlockPos;
import gtPlusPlus.core.util.entity.EntityUtils;
import gtPlusPlus.core.util.math.MathUtils;
import net.minecraft.block.Block;
diff --git a/src/Java/gtPlusPlus/core/handler/BurnableFuelHandler.java b/src/Java/gtPlusPlus/core/handler/BurnableFuelHandler.java
index 79ca0ad174..8bcdaca6a8 100644
--- a/src/Java/gtPlusPlus/core/handler/BurnableFuelHandler.java
+++ b/src/Java/gtPlusPlus/core/handler/BurnableFuelHandler.java
@@ -1,8 +1,8 @@
package gtPlusPlus.core.handler;
import cpw.mods.fml.common.IFuelHandler;
+import gtPlusPlus.api.objects.data.Pair;
import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.core.util.array.Pair;
import gtPlusPlus.core.util.item.ItemUtils;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
diff --git a/src/Java/gtPlusPlus/core/handler/analytics/AnalyticsLoggingPlugin.java b/src/Java/gtPlusPlus/core/handler/analytics/AnalyticsLoggingPlugin.java
new file mode 100644
index 0000000000..808c62d7aa
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/handler/analytics/AnalyticsLoggingPlugin.java
@@ -0,0 +1,39 @@
+package gtPlusPlus.core.handler.analytics;
+
+import com.segment.analytics.Analytics;
+import com.segment.analytics.Callback;
+import com.segment.analytics.Log;
+import com.segment.analytics.Plugin;
+import com.segment.analytics.messages.Message;
+
+import gtPlusPlus.api.objects.Logger;
+
+/**
+ * A {@link Plugin} implementation that redirects client logs to standard output and logs callback
+ * events.
+ */
+public class AnalyticsLoggingPlugin implements Plugin {
+ @Override public void configure(Analytics.Builder builder) {
+ builder.log(new Log() {
+ @Override public void print(Level level, String format, Object... args) {
+ Logger.WARNING(level + ":\t" + String.format(format, args));
+ }
+
+ @Override public void print(Level level, Throwable error, String format, Object... args) {
+ Logger.WARNING(level + ":\t" + String.format(format, args));
+ //Utils.LOG_WARNING(error);
+ }
+ });
+
+ builder.callback(new Callback() {
+ @Override public void success(Message message) {
+ Logger.WARNING("Uploaded " + message);
+ }
+
+ @Override public void failure(Message message, Throwable throwable) {
+ Logger.WARNING("Could not upload " + message);
+ //Utils.LOG_WARNING(throwable);
+ }
+ });
+ }
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/handler/analytics/BlockingFlush.java b/src/Java/gtPlusPlus/core/handler/analytics/BlockingFlush.java
new file mode 100644
index 0000000000..09d1cd5104
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/handler/analytics/BlockingFlush.java
@@ -0,0 +1,67 @@
+package gtPlusPlus.core.handler.analytics;
+
+import com.segment.analytics.Analytics;
+import com.segment.analytics.Callback;
+import com.segment.analytics.MessageTransformer;
+import com.segment.analytics.Plugin;
+import com.segment.analytics.messages.Message;
+import com.segment.analytics.messages.MessageBuilder;
+import java.util.concurrent.Phaser;
+
+/**
+ * The {@link Analytics} class doesn't come with a blocking {@link Analytics#flush()} implementation
+ * out of the box. It's trivial to build one using a {@link Phaser} that monitors requests and is
+ * able to block until they're uploaded.
+ *
+ * <pre><code>
+ * BlockingFlush mBlockingFlush = BlockingFlush.create();
+ * Analytics mHelper = Analytics.builder(writeKey)
+ * .plugin(mBlockingFlush)
+ * .build();
+ *
+ * // Do some work.
+ *
+ * mHelper.flush(); // Trigger a flush.
+ * mBlockingFlush.block(); // Block until the flush completes.
+ * mHelper.shutdown(); // Shut down after the flush is complete.
+ * </code></pre>
+ */
+public class BlockingFlush {
+
+ public static BlockingFlush create() {
+ return new BlockingFlush();
+ }
+
+ BlockingFlush() {
+ this.phaser = new Phaser(1);
+ }
+
+ final Phaser phaser;
+
+ public Plugin plugin() {
+ return new Plugin() {
+ @Override public void configure(Analytics.Builder builder) {
+ builder.messageTransformer(new MessageTransformer() {
+ @Override public boolean transform(MessageBuilder builder) {
+ phaser.register();
+ return true;
+ }
+ });
+
+ builder.callback(new Callback() {
+ @Override public void success(Message message) {
+ phaser.arrive();
+ }
+
+ @Override public void failure(Message message, Throwable throwable) {
+ phaser.arrive();
+ }
+ });
+ }
+ };
+ }
+
+ public void block() {
+ phaser.arriveAndAwaitAdvance();
+ }
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/handler/analytics/SegmentAnalytics.java b/src/Java/gtPlusPlus/core/handler/analytics/SegmentAnalytics.java
new file mode 100644
index 0000000000..a217f896cf
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/handler/analytics/SegmentAnalytics.java
@@ -0,0 +1,271 @@
+package gtPlusPlus.core.handler.analytics;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Phaser;
+
+import com.mojang.authlib.GameProfile;
+import com.segment.analytics.Analytics;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.player.PlayerUtils;
+import gtPlusPlus.core.util.uuid.UUIDGenerator;
+import gtPlusPlus.core.util.uuid.UUIDUtils;
+import ic2.core.IC2;
+import net.minecraft.entity.player.EntityPlayer;
+
+public class SegmentAnalytics {
+
+ //Globally Enabled
+ public static boolean isEnabled = true;
+
+ //Analytics Map with IDs
+ public static final Map<Integer, SegmentAnalytics> sAnalyticsMasterList = new ConcurrentHashMap<Integer, SegmentAnalytics>();
+ //ID count
+ private static int sAnalyticsMapID = 0;
+
+ //Analytics Player Mapping
+ public static final Map<UUID, Integer> sAnalyticsToPlayermap = new ConcurrentHashMap<UUID, Integer>();
+
+ //Set some Vars
+ final BlockingFlush mBlockingFlush;
+ final SegmentHelper mHelper;
+ final UUIDGenerator mUuidGenerator;
+
+ public final GameProfile mLocalProfile;
+ public final String mLocalName;
+ public final UUID mUUID;
+ public final String mUserName;
+ public final String mAnonymousId;
+ protected Map<String, Object> mProperties = new LinkedHashMap<>();
+ final protected Phaser mPhaser;
+
+ //Build a new instance of this class
+ public SegmentAnalytics(EntityPlayer mPlayer){
+ LOG("Initializing Segment for "+mPlayer.getDisplayName());
+
+ //Give this Object an ID
+ int currentID = sAnalyticsMapID;
+ sAnalyticsMapID++;
+
+ //Map this Object to it's ID and a Player UUID.
+ sAnalyticsMasterList.put(currentID, this);
+ sAnalyticsToPlayermap.put(mPlayer.getUniqueID(), currentID);
+
+ //Create a Phaser
+ this.mPhaser = new Phaser(1);
+
+ //Set vars for player
+ this.mLocalProfile = mPlayer.getGameProfile();
+ this.mLocalName = mLocalProfile.getName();
+ this.mUUID = PlayerUtils.getPlayersUUIDByName(mLocalName);
+ this.mUserName = mUUID.toString();
+ this.mAnonymousId = getStringForm(generateIdForSession());
+
+ //Create a new UUID generator.
+ this.mUuidGenerator = new UUIDGenerator();
+
+ //Use Segment Analytics instead of plain Google Analytics.
+ this.mBlockingFlush = BlockingFlush.create();
+ this.mHelper = SegmentHelper.getInstance();
+ initTimer(mPlayer);
+ }
+
+ //Sets vars and stops Analytics running if the player profile is invalid.
+ private boolean canProcess(){
+ //Invalid Player Profile
+ if (mLocalProfile == null || !isEnabled){
+ return false;
+ }
+ if (mLocalName == null || mUUID == null || mUserName == null || mAnonymousId == null){
+ //LOG("One player var remained null, returning false.");
+ return false;
+ }
+ if (mLocalName != null && mUUID != null && mUserName != null && mAnonymousId != null){
+ //LOG("All player vars are ok, returning true.");
+ return true;
+ }
+ LOG("Something went wrong, returning false.");
+ return false;
+ }
+
+
+ public void submitInitData(EntityPlayer mPlayer){
+ if (!canProcess()){
+ return;
+ }
+ mProperties = new LinkedHashMap<>();
+ mProperties.put("username", mLocalName);
+ mProperties.put("gt_version", Utils.getGregtechVersionAsString());
+ if (LoadedMods.IndustrialCraft2){
+ mProperties.put("ic2_version", IC2.VERSION);
+ }
+ mProperties.put("country_code", CORE.USER_COUNTRY);
+ mProperties.put("gtnh", CORE.GTNH);
+
+ LOG("Created new Data packet, queued for submission.");
+
+ //Old Code, now passed to Helper Class
+ /*mHelper.enqueue(IdentifyMessage.builder()
+ .userId(mUserName) //Save Username as UUID, for future sessions to attach to.
+ .traits(mProperties)
+ //.anonymousId(mAnonymousId) //Save Random Session UUID
+ );*/
+
+ mHelper.addUser(this.mUserName, mProperties);
+
+ if (CORE.GTNH){
+ mHelper.groupUser("GT:NewHorizons", this.mUserName);
+ }
+ else {
+ mHelper.groupUser("GT:Vanilla", this.mUserName);
+ }
+
+ }
+
+ public void submitTrackingData(String aActionPerformed){
+ submitTrackingData(aActionPerformed, null);
+ }
+
+ public void submitTrackingData(String aActionPerformed, Object aObject){
+ if (!canProcess()){
+ return;
+ }
+
+ Map<String, Object> properties = new LinkedHashMap<>();
+ properties.put("blockType", aObject);
+ String mObjectAsString = "Unknown";
+
+ if (aObject != null){
+ mObjectAsString = aObject.toString();
+ }
+
+ LOG("Queued submission of data for event "+aActionPerformed+". This was performed on "+mObjectAsString+".");
+
+ mHelper.trackUser(this.mUserName, aActionPerformed, properties);
+
+ //Old Code, now passed to Helper Class
+ /*mHelper.enqueue(TrackMessage.builder(aActionPerformed) //
+ .userId(mUserName) // Save Username as UUID, for future sessions to attach to.
+ .properties(mProperties) //Save Stats
+ //.anonymousId(mAnonymousId) //Save Random Session UUID
+ );
+ flushData();
+ */
+ }
+
+ public void flushData(){
+ getAnalyticObject().flush();
+ }
+
+ public void flushDataFinal(){
+ LOG("Flushing all data from Queue to Segment Analytics database.");
+ getAnalyticObject().flush();
+ mBlockingFlush.block();
+ mPhaser.arriveAndAwaitAdvance();
+ getAnalyticObject().shutdown();
+ /*try {
+ this.finalize();
+ }
+ catch (Throwable e) {
+ Utils.LOG_INFO("Could not finalize Analytics Object.");
+ }*/
+ }
+
+ public UUID generateIdForSession(){
+ return UUIDUtils.getUUIDFromBytes(generateUUID());
+ }
+
+ private final byte[] generateUUID(){
+ byte[] mUUID;
+
+ if (this.mUuidGenerator != null){
+ try {
+ if ((mUUID = mUuidGenerator.next(4)) != null){
+ LOG("Generated Type 4 UUID for Session ID.");
+ return mUUID;
+ }
+ else if ((mUUID = mUuidGenerator.next(1)) != null){
+ LOG("Generated Type 1 UUID for Session ID.");
+ return mUUID;
+ }
+ }
+ catch (Throwable t){
+ t.printStackTrace();
+ }
+ }
+
+ LOG("Generated Type 3 UUID for Session ID.");
+ return UUIDUtils.getBytesFromUUID(UUID.randomUUID());
+
+ }
+
+ public final String getStringForm(UUID mID){
+ return mID.toString();
+ }
+
+ // Non-Dev Comments
+ public static void LOG(final String s) {
+ if (CORE.DEBUG){
+ Logger.getLogger().info("[Analytics] "+s);
+ }
+ }
+
+ public static SegmentAnalytics getAnalyticsForPlayer(EntityPlayer mPlayer){
+ try {
+ if (mPlayer != null){
+ if (SegmentAnalytics.sAnalyticsToPlayermap.containsKey(mPlayer.getUniqueID())){
+ int ID = sAnalyticsToPlayermap.get(mPlayer.getUniqueID());
+ return SegmentAnalytics.sAnalyticsMasterList.get(ID);
+ }
+ else {
+ LOG("Map does not contain Player.");
+ }
+ }
+ else {
+ LOG("Invalid Player.");
+ }
+ }
+ catch (Throwable t){
+ t.printStackTrace();
+ }
+ return null;
+ }
+
+ public final Analytics getAnalyticObject() {
+ return mHelper.getAnalyticsClient();
+ }
+
+ public final Map<String, Object> getPlayerProperties(){
+ return this.mProperties;
+ }
+
+
+ public Timer initTimer(EntityPlayer mPlayer) {
+ Timer timer;
+ timer = new Timer();
+ timer.schedule(new initPlayer(mPlayer), 2 * 1000);
+ return timer;
+ }
+
+ //Timer Task for notifying the player.
+ class initPlayer extends TimerTask {
+ final EntityPlayer aPlayer;
+ public initPlayer(EntityPlayer mPlayer) {
+ this.aPlayer = mPlayer;
+ }
+ @Override
+ public void run() {
+ //Let us submit a doorknock to Segmen