mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Make fallout perimeters more interesting
This commit is contained in:
parent
ab4c14e3f4
commit
787549f9d7
@ -1,13 +1,5 @@
|
|||||||
package com.hbm.config;
|
package com.hbm.config;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileReader;
|
|
||||||
import java.io.FileWriter;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import com.google.common.collect.HashBiMap;
|
import com.google.common.collect.HashBiMap;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
@ -19,12 +11,19 @@ import com.hbm.inventory.RecipesCommon.MetaBlock;
|
|||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.util.Compat;
|
import com.hbm.util.Compat;
|
||||||
import com.hbm.util.Tuple.Triplet;
|
import com.hbm.util.Tuple.Triplet;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
public class FalloutConfigJSON {
|
public class FalloutConfigJSON {
|
||||||
|
|
||||||
public static final List<FalloutEntry> entries = new ArrayList();
|
public static final List<FalloutEntry> entries = new ArrayList();
|
||||||
@ -166,6 +165,7 @@ public class FalloutConfigJSON {
|
|||||||
private double primaryChance = 1.0D;
|
private double primaryChance = 1.0D;
|
||||||
private double minDist = 0.0D;
|
private double minDist = 0.0D;
|
||||||
private double maxDist = 100.0D;
|
private double maxDist = 100.0D;
|
||||||
|
private double falloffStart = 0.9D;
|
||||||
|
|
||||||
/** Whether the depth value should be decremented when this block is converted */
|
/** Whether the depth value should be decremented when this block is converted */
|
||||||
private boolean isSolid = false;
|
private boolean isSolid = false;
|
||||||
@ -180,6 +180,7 @@ public class FalloutConfigJSON {
|
|||||||
entry.sec(secondaryBlocks);
|
entry.sec(secondaryBlocks);
|
||||||
entry.min(minDist);
|
entry.min(minDist);
|
||||||
entry.max(maxDist);
|
entry.max(maxDist);
|
||||||
|
entry.fo(falloffStart);
|
||||||
entry.sol(isSolid);
|
entry.sol(isSolid);
|
||||||
|
|
||||||
return entry;
|
return entry;
|
||||||
@ -195,15 +196,17 @@ public class FalloutConfigJSON {
|
|||||||
public FalloutEntry c(double chance) { this.primaryChance = chance; return this; }
|
public FalloutEntry c(double chance) { this.primaryChance = chance; return this; }
|
||||||
public FalloutEntry min(double min) { this.minDist = min; return this; }
|
public FalloutEntry min(double min) { this.minDist = min; return this; }
|
||||||
public FalloutEntry max(double max) { this.maxDist = max; return this; }
|
public FalloutEntry max(double max) { this.maxDist = max; return this; }
|
||||||
|
public FalloutEntry fo(double falloffStart) { this.falloffStart = falloffStart; return this; }
|
||||||
public FalloutEntry sol(boolean solid) { this.isSolid = solid; return this; }
|
public FalloutEntry sol(boolean solid) { this.isSolid = solid; return this; }
|
||||||
|
|
||||||
public boolean eval(World world, int x, int y, int z, Block b, int meta, double dist, Block originalBlock, int originalMeta) {
|
public boolean eval(World world, int x, int y, int z, Block b, int meta, double dist, Block originalBlock, int originalMeta) {
|
||||||
|
|
||||||
|
if(dist > maxDist || dist < minDist) return false;
|
||||||
if(matchesBlock != null && b != matchesBlock) return false;
|
if(matchesBlock != null && b != matchesBlock) return false;
|
||||||
if(matchesMaterial != null && b.getMaterial() != matchesMaterial) return false;
|
if(matchesMaterial != null && b.getMaterial() != matchesMaterial) return false;
|
||||||
if(matchesMeta != -1 && meta != matchesMeta) return false;
|
if(matchesMeta != -1 && meta != matchesMeta) return false;
|
||||||
if(matchesOpaque && !b.isOpaqueCube()) return false;
|
if(matchesOpaque && !b.isOpaqueCube()) return false;
|
||||||
if(dist > maxDist || dist < minDist) return false;
|
if(dist > maxDist * falloffStart && Math.abs(world.rand.nextGaussian()) < Math.pow((dist - maxDist * falloffStart) / (maxDist - maxDist * falloffStart), 2D) * 3D) return false;
|
||||||
|
|
||||||
if(primaryChance == 1D || rand.nextDouble() < primaryChance) {
|
if(primaryChance == 1D || rand.nextDouble() < primaryChance) {
|
||||||
|
|
||||||
@ -274,7 +277,7 @@ public class FalloutConfigJSON {
|
|||||||
|
|
||||||
if(minDist != 0.0D) writer.name("minimumDistancePercent").value(minDist);
|
if(minDist != 0.0D) writer.name("minimumDistancePercent").value(minDist);
|
||||||
if(maxDist != 100.0D) writer.name("maximumDistancePercent").value(maxDist);
|
if(maxDist != 100.0D) writer.name("maximumDistancePercent").value(maxDist);
|
||||||
|
if(falloffStart != 0.9D) writer.name("falloffStartFactor").value(falloffStart);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static FalloutEntry readEntry(JsonElement recipe) {
|
private static FalloutEntry readEntry(JsonElement recipe) {
|
||||||
@ -296,6 +299,7 @@ public class FalloutConfigJSON {
|
|||||||
|
|
||||||
if(obj.has("minimumDistancePercent")) entry.min(obj.get("minimumDistancePercent").getAsDouble());
|
if(obj.has("minimumDistancePercent")) entry.min(obj.get("minimumDistancePercent").getAsDouble());
|
||||||
if(obj.has("maximumDistancePercent")) entry.max(obj.get("maximumDistancePercent").getAsDouble());
|
if(obj.has("maximumDistancePercent")) entry.max(obj.get("maximumDistancePercent").getAsDouble());
|
||||||
|
if(obj.has("falloffStartFactor")) entry.fo(obj.get("falloffStartFactor").getAsDouble());
|
||||||
|
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user