mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
80 lines
2.3 KiB
Java
80 lines
2.3 KiB
Java
package com.hbm.handler;
|
|
|
|
import java.util.Map.Entry;
|
|
|
|
import com.hbm.blocks.ModBlocks;
|
|
import com.hbm.config.RadiationConfig;
|
|
import com.hbm.handler.radiation.ChunkRadiationManager;
|
|
import com.hbm.saveddata.RadiationSavedData;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.network.play.server.S21PacketChunkData;
|
|
import net.minecraft.network.play.server.S23PacketBlockChange;
|
|
import net.minecraft.world.ChunkCoordIntPair;
|
|
import net.minecraft.world.World;
|
|
import net.minecraft.world.WorldServer;
|
|
import net.minecraft.world.biome.BiomeGenBase;
|
|
import net.minecraft.world.gen.ChunkProviderServer;
|
|
|
|
public class RadiationWorldHandler {
|
|
|
|
public static void handleWorldDestruction(World world) {
|
|
|
|
if(!(world instanceof WorldServer))
|
|
return;
|
|
|
|
if(!RadiationConfig.worldRadEffects)
|
|
return;
|
|
|
|
WorldServer serv = (WorldServer) world;
|
|
|
|
RadiationSavedData data = RadiationSavedData.getData(serv);
|
|
ChunkProviderServer provider = (ChunkProviderServer) serv.getChunkProvider();
|
|
|
|
int count = 50;// MainRegistry.worldRad;
|
|
int threshold = 5;// MainRegistry.worldRadThreshold;
|
|
|
|
Object[] entries = data.contamination.entrySet().toArray();
|
|
|
|
if(entries.length == 0)
|
|
return;
|
|
|
|
Entry<ChunkCoordIntPair, Float> randEnt = (Entry<ChunkCoordIntPair, Float>) entries[world.rand.nextInt(entries.length)];
|
|
|
|
ChunkCoordIntPair coords = randEnt.getKey();
|
|
|
|
for(int i = 0; i < 1; i++) {
|
|
|
|
if(randEnt == null || randEnt.getValue() < threshold)
|
|
continue;
|
|
|
|
if(provider.chunkExists(coords.chunkXPos, coords.chunkZPos)) {
|
|
|
|
for(int a = 0; a < 16; a++) {
|
|
for(int b = 0; b < 16; b++) {
|
|
|
|
if(world.rand.nextInt(3) != 0)
|
|
continue;
|
|
|
|
int x = coords.getCenterXPos() - 8 + a;
|
|
int z = coords.getCenterZPosition() - 8 + b;
|
|
int y = world.getHeightValue(x, z) - world.rand.nextInt(2);
|
|
|
|
if(world.getBlock(x, y, z) == Blocks.grass) {
|
|
world.setBlock(x, y, z, ModBlocks.waste_earth);
|
|
} else if(world.getBlock(x, y, z) == Blocks.tallgrass) {
|
|
world.setBlock(x, y, z, Blocks.air);
|
|
} else if(world.getBlock(x, y, z) == Blocks.leaves) {
|
|
world.setBlock(x, y, z, Blocks.air);
|
|
} else if(world.getBlock(x, y, z) == Blocks.leaves2) {
|
|
world.setBlock(x, y, z, Blocks.air);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|