mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
126 lines
3.0 KiB
Java
126 lines
3.0 KiB
Java
package com.hbm.saveddata;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.world.World;
|
|
import net.minecraft.world.WorldSavedData;
|
|
import net.minecraft.world.chunk.Chunk;
|
|
|
|
public class RadEntitySavedData extends WorldSavedData {
|
|
|
|
public List<RadEntry> contaminated = new ArrayList();
|
|
|
|
public World worldObj;
|
|
|
|
public RadEntitySavedData(String p_i2141_1_) {
|
|
super(p_i2141_1_);
|
|
}
|
|
|
|
public RadEntitySavedData(World p_i1678_1_)
|
|
{
|
|
super("radentity");
|
|
this.worldObj = p_i1678_1_;
|
|
this.markDirty();
|
|
}
|
|
|
|
public float getRadFromEntity(Entity e) {
|
|
|
|
for(int i = 0; i < contaminated.size(); i++) {
|
|
if(new UUID(contaminated.get(i).hID, contaminated.get(i).lID).equals(e.getUniqueID()))
|
|
return contaminated.get(i).rad;
|
|
}
|
|
|
|
return 0F;
|
|
}
|
|
|
|
public void setRadForEntity(Entity e, float rad) {
|
|
|
|
if(!(e instanceof EntityLivingBase))
|
|
return;
|
|
|
|
for(int i = 0; i < contaminated.size(); i++) {
|
|
if(new UUID(contaminated.get(i).hID, contaminated.get(i).lID).equals(e.getUniqueID())) {
|
|
contaminated.get(i).rad = rad;
|
|
|
|
if(contaminated.get(i).rad > 2500)
|
|
contaminated.get(i).rad = 2500;
|
|
|
|
this.markDirty();
|
|
return;
|
|
}
|
|
}
|
|
|
|
contaminated.add(new RadEntry(e.getUniqueID().getMostSignificantBits(), e.getUniqueID().getLeastSignificantBits(), rad));
|
|
|
|
this.markDirty();
|
|
}
|
|
|
|
public void increaseRad(Entity e, float rad) {
|
|
|
|
setRadForEntity(e, getRadFromEntity(e) + rad);
|
|
}
|
|
|
|
@Override
|
|
public void readFromNBT(NBTTagCompound nbt) {
|
|
int count = nbt.getInteger("contCount");
|
|
|
|
for(int i = 0; i < count; i++) {
|
|
|
|
contaminated.add(new RadEntry(
|
|
nbt.getLong("uH_" + i),
|
|
nbt.getLong("uL_" + i),
|
|
nbt.getFloat("cont_" + i)));
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void writeToNBT(NBTTagCompound nbt) {
|
|
nbt.setInteger("contCount", contaminated.size());
|
|
|
|
int i = 0;
|
|
|
|
for (RadEntry entry : contaminated) {
|
|
|
|
nbt.setLong("uH_" + i, entry.hID);
|
|
nbt.setLong("uL_" + i, entry.lID);
|
|
nbt.setFloat("cont_" + i, entry.rad);
|
|
|
|
i++;
|
|
}
|
|
}
|
|
|
|
public static RadEntitySavedData getData(World worldObj) {
|
|
|
|
RadEntitySavedData data = (RadEntitySavedData)worldObj.perWorldStorage.loadData(RadEntitySavedData.class, "radentity");
|
|
if(data == null) {
|
|
worldObj.perWorldStorage.setData("radentity", new RadEntitySavedData(worldObj));
|
|
|
|
data = (RadEntitySavedData)worldObj.perWorldStorage.loadData(RadEntitySavedData.class, "radentity");
|
|
}
|
|
|
|
return data;
|
|
}
|
|
|
|
public class RadEntry {
|
|
|
|
long hID;
|
|
long lID;
|
|
float rad;
|
|
|
|
public RadEntry(long hID, long lID, float rad) {
|
|
this.hID = hID;
|
|
this.lID = lID;
|
|
this.rad = rad;
|
|
}
|
|
}
|
|
}
|