Added DeathTracker and Removed PlayerTracker

Added DeathTracker - a class for tracking the deaths of players on the
server while in pocket dimensions. It'll be used for generating skulls
for grave chests. Also removed PlayerTracker since it wasn't being used
for anything at all. I'm guessing it was supposed to be used for
something later. We can restore it if it's ever needed.
This commit is contained in:
SenseiKiwi
2014-03-05 20:24:07 -04:00
parent 8cb651030a
commit cd7cf4e7ca
3 changed files with 112 additions and 46 deletions

View File

@@ -0,0 +1,102 @@
package StevenDimDoors.mod_pocketDim;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Random;
public class DeathTracker
{
private ArrayList<String> usernameList;
private HashSet<String> usernameSet;
private String filePath;
private boolean modified;
public DeathTracker(String filePath)
{
this.usernameList = new ArrayList<String>();
this.usernameSet = new HashSet<String>();
this.filePath = filePath;
this.modified = false;
readFromFile();
}
private void readFromFile()
{
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath)));
for (String line = reader.readLine(); line != null; line = reader.readLine())
{
line = line.trim();
if (!line.isEmpty())
{
usernameSet.add(line);
}
}
reader.close();
}
catch (FileNotFoundException e) { }
catch (IOException e)
{
System.err.println("An unexpected exception occurred while trying to read DeathTracker data:");
System.err.println(e.toString());
}
usernameList.addAll(usernameSet);
}
public void writeToFile()
{
try
{
PrintWriter writer = new PrintWriter(filePath);
for (String username : usernameList)
{
writer.println(username);
}
writer.close();
modified = false;
}
catch (FileNotFoundException e)
{
System.err.println("An unexpected exception occurred while trying to read DeathTracker data:");
System.err.println(e.toString());
}
}
public boolean isModified()
{
return modified;
}
public boolean isEmpty()
{
return usernameList.isEmpty();
}
public String getRandomUsername(Random random)
{
if (usernameList.isEmpty())
{
throw new IllegalStateException("Cannot retrieve a random username from an empty list.");
}
return usernameList.get(random.nextInt(usernameList.size()));
}
public boolean addUsername(String username)
{
if (usernameSet.add(username))
{
usernameList.add(username);
modified = true;
return true;
}
return false;
}
}

View File

@@ -1,39 +0,0 @@
package StevenDimDoors.mod_pocketDim;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.network.ForgePacket;
import net.minecraftforge.common.network.packet.DimensionRegisterPacket;
import cpw.mods.fml.common.IPlayerTracker;
public class PlayerTracker implements IPlayerTracker
{
@Override
public void onPlayerLogin(EntityPlayer player)
{
}
@Override
public void onPlayerLogout(EntityPlayer player) {
// TODO Auto-generated method stub
}
@Override
public void onPlayerChangedDimension(EntityPlayer player) {
// TODO Auto-generated method stub
}
@Override
public void onPlayerRespawn(EntityPlayer player)
{
}
}

View File

@@ -134,9 +134,9 @@ public class mod_pocketDim
public static DDProperties properties; public static DDProperties properties;
public static CustomLimboPopulator spawner; //Added this field temporarily. Will be refactored out later. public static CustomLimboPopulator spawner; //Added this field temporarily. Will be refactored out later.
public FastRiftRegenerator fastRiftRegenerator; public static FastRiftRegenerator fastRiftRegenerator;
public static GatewayGenerator gatewayGenerator; public static GatewayGenerator gatewayGenerator;
public static PlayerTracker tracker; public static DeathTracker deathTracker;
public static CreativeTabs dimDoorsCreativeTab = new CreativeTabs("dimDoorsCreativeTab") public static CreativeTabs dimDoorsCreativeTab = new CreativeTabs("dimDoorsCreativeTab")
{ {
@@ -207,13 +207,10 @@ public class mod_pocketDim
itemStabilizedLinkSignature = (new ItemStabilizedRiftSignature(properties.StabilizedRiftSignatureItemID)).setUnlocalizedName("itemStabilizedRiftSig"); itemStabilizedLinkSignature = (new ItemStabilizedRiftSignature(properties.StabilizedRiftSignatureItemID)).setUnlocalizedName("itemStabilizedRiftSig");
itemWorldThread = (new ItemWorldThread(properties.WorldThreadItemID)).setUnlocalizedName("itemWorldThread"); itemWorldThread = (new ItemWorldThread(properties.WorldThreadItemID)).setUnlocalizedName("itemWorldThread");
mod_pocketDim.limboBiome = (new BiomeGenLimbo(properties.LimboBiomeID)); mod_pocketDim.limboBiome = (new BiomeGenLimbo(properties.LimboBiomeID));
mod_pocketDim.pocketBiome = (new BiomeGenPocket(properties.PocketBiomeID)); mod_pocketDim.pocketBiome = (new BiomeGenPocket(properties.PocketBiomeID));
GameRegistry.registerWorldGenerator(mod_pocketDim.gatewayGenerator); GameRegistry.registerWorldGenerator(mod_pocketDim.gatewayGenerator);
tracker = new PlayerTracker();
GameRegistry.registerPlayerTracker(tracker);
GameRegistry.registerBlock(goldenDoor, "Golden Door"); GameRegistry.registerBlock(goldenDoor, "Golden Door");
GameRegistry.registerBlock(goldenDimensionalDoor, "Golden Dimensional Door"); GameRegistry.registerBlock(goldenDimensionalDoor, "Golden Dimensional Door");
@@ -298,6 +295,8 @@ public class mod_pocketDim
try try
{ {
PocketManager.unload(); PocketManager.unload();
deathTracker.writeToFile();
deathTracker = null;
} }
catch (Exception e) catch (Exception e)
{ {
@@ -308,9 +307,9 @@ public class mod_pocketDim
@EventHandler @EventHandler
public void onServerStarting(FMLServerStartingEvent event) public void onServerStarting(FMLServerStartingEvent event)
{ {
//TODO- load dims with forced chunks on server startup here //TODO- load dims with forced chunks on server startup here
// Register commands with the server
CommandResetDungeons.instance().register(event); CommandResetDungeons.instance().register(event);
CommandCreateDungeonRift.instance().register(event); CommandCreateDungeonRift.instance().register(event);
CommandDeleteAllLinks.instance().register(event); CommandDeleteAllLinks.instance().register(event);
@@ -322,6 +321,10 @@ public class mod_pocketDim
CommandCreatePocket.instance().register(event); CommandCreatePocket.instance().register(event);
CommandTeleportPlayer.instance().register(event); CommandTeleportPlayer.instance().register(event);
// Initialize a new DeathTracker
String deathTrackerFile = DimensionManager.getCurrentSaveRootDirectory() + "/DimensionalDoors/data/deaths.txt";
deathTracker = new DeathTracker(deathTrackerFile);
try try
{ {
ChunkLoaderHelper.loadChunkForcedWorlds(event); ChunkLoaderHelper.loadChunkForcedWorlds(event);