diff --git a/assets/hbm/textures/items/key_gold.png b/assets/hbm/textures/items/key_gold.png new file mode 100644 index 000000000..1ae7094bf Binary files /dev/null and b/assets/hbm/textures/items/key_gold.png differ diff --git a/assets/hbm/textures/items/key_pair.png b/assets/hbm/textures/items/key_pair.png new file mode 100644 index 000000000..6f3785b88 Binary files /dev/null and b/assets/hbm/textures/items/key_pair.png differ diff --git a/com/hbm/blocks/generic/BlockOre.java b/com/hbm/blocks/generic/BlockOre.java index b774d57c0..925067e2d 100644 --- a/com/hbm/blocks/generic/BlockOre.java +++ b/com/hbm/blocks/generic/BlockOre.java @@ -8,6 +8,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.lib.ModDamageSource; import com.hbm.potion.HbmPotion; +import com.hbm.saveddata.RadiationSavedData; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -278,11 +279,55 @@ public class BlockOre extends Block { @Override public void updateTick(World world, int x, int y, int z, Random rand) { - if(this == ModBlocks.block_meteor_molten && rand.nextInt(3) == 0) { + if(this == ModBlocks.block_meteor_molten) { if(!world.isRemote) world.setBlock(x, y, z, ModBlocks.block_meteor_cobble); world.playSoundEffect((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); } + + if(this == ModBlocks.waste_trinitite || this == ModBlocks.waste_trinitite_red) { + RadiationSavedData.incrementRad(world, x, z, 2, 20); + + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + } + + if(this == ModBlocks.block_waste) { + RadiationSavedData.incrementRad(world, x, z, 5, 50); + + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + } + + if(this == ModBlocks.block_trinitite) { + RadiationSavedData.incrementRad(world, x, z, 3, 35); + + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + } + } + + @Override + public int tickRate(World world) { + + if(this == ModBlocks.block_meteor_molten) + return 30; + + if(this == ModBlocks.waste_trinitite + || this == ModBlocks.waste_trinitite_red + || this == ModBlocks.block_waste + || this == ModBlocks.block_trinitite) + return 20; + + return 100; + } + + public void onBlockAdded(World world, int x, int y, int z) + { + super.onBlockAdded(world, x, y, z); + + if(this == ModBlocks.waste_trinitite + || this == ModBlocks.waste_trinitite_red + || this == ModBlocks.block_waste + || this == ModBlocks.block_trinitite) + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); } @Override diff --git a/com/hbm/blocks/test/TestEventTester.java b/com/hbm/blocks/test/TestEventTester.java index 5e74f0d4f..559a317f5 100644 --- a/com/hbm/blocks/test/TestEventTester.java +++ b/com/hbm/blocks/test/TestEventTester.java @@ -205,7 +205,7 @@ public class TestEventTester extends Block { Chunk chunk = worldObj.getChunkFromBlockCoords(x1, z1); - data.setRadForCoord(chunk.xPosition, chunk.zPosition, 100); + data.setRadForCoord(chunk.xPosition, chunk.zPosition, 1000); System.out.println(data.getRadNumFromCoord(chunk.xPosition, chunk.zPosition)); } diff --git a/com/hbm/saveddata/RadEntitySavedData.java b/com/hbm/saveddata/RadEntitySavedData.java index 0a251615c..03b2eaaa6 100644 --- a/com/hbm/saveddata/RadEntitySavedData.java +++ b/com/hbm/saveddata/RadEntitySavedData.java @@ -14,7 +14,7 @@ import net.minecraft.world.chunk.Chunk; public class RadEntitySavedData extends WorldSavedData { - public HashMap contaminated = new HashMap(); + public List contaminated = new ArrayList(); private World worldObj; @@ -31,37 +31,25 @@ public class RadEntitySavedData extends WorldSavedData { public float getRadFromEntity(Entity e) { - Iterator it = contaminated.entrySet().iterator(); - - while(it.hasNext()) { - - Map.Entry pair = (Map.Entry)it.next(); - - if(((Integer)pair.getKey()).intValue() == e.getEntityId()) { - return (Float)pair.getValue(); - } + for(int i = 0; i < contaminated.size(); i++) { + if(contaminated.get(i).entID == e.getEntityId()) + return contaminated.get(i).rad; } return 0F; } public void setRadForEntity(Entity e, float rad) { - - Iterator it = contaminated.entrySet().iterator(); - while(it.hasNext()) { - - Map.Entry pair = (Map.Entry)it.next(); - - if(((Integer)pair.getKey()).intValue() == e.getEntityId()) { - pair.setValue(rad); - - this.markDirty(); + for(int i = 0; i < contaminated.size(); i++) { + if(contaminated.get(i).entID == e.getEntityId()) { + contaminated.get(i).rad = rad; + this.markDirty(); return; } } - contaminated.put(e.getEntityId(), rad); + contaminated.add(new RadEntry(e.getEntityId(), rad)); this.markDirty(); } @@ -72,20 +60,20 @@ public class RadEntitySavedData extends WorldSavedData { for(int i = 0; i < count; i++) { - contaminated.put(nbt.getInteger("entID_" + i), nbt.getFloat("cont_" + i)); + contaminated.add(new RadEntry(nbt.getInteger("entID_" + i), nbt.getFloat("cont_" + i))); } } @Override public void writeToNBT(NBTTagCompound nbt) { - nbt.setInteger("contCount", contaminated.entrySet().size()); + nbt.setInteger("contCount", contaminated.size()); int i = 0; - for (Map.Entry entry : contaminated.entrySet()) { + for (RadEntry entry : contaminated) { - nbt.setInteger("entID_" + i, entry.getKey()); - nbt.setFloat("cont_" + i, entry.getValue()); + nbt.setInteger("entID_" + i, entry.entID); + nbt.setFloat("cont_" + i, entry.rad); i++; } @@ -102,5 +90,16 @@ public class RadEntitySavedData extends WorldSavedData { return data; } + + public class RadEntry { + + int entID; + float rad; + + public RadEntry(int id, float rad) { + this.entID = id; + this.rad = rad; + } + } }