Make swimming in oil a lot harder
This commit is contained in:
parent
be1d1f2fc9
commit
1efa254037
2 changed files with 26 additions and 1 deletions
|
@ -103,6 +103,7 @@ public class BuildCraftEnergy extends BuildCraftMod {
|
|||
public static Item fuel;
|
||||
|
||||
public static boolean canOilBurn;
|
||||
public static boolean isOilDense;
|
||||
public static boolean canEnginesExplode;
|
||||
public static double oilWellScalar = 1.0;
|
||||
public static ITriggerExternal triggerBlueEngineHeat = new TriggerEngineHeat(EnergyStage.BLUE);
|
||||
|
@ -121,6 +122,7 @@ public class BuildCraftEnergy extends BuildCraftMod {
|
|||
int oilDesertBiomeId = BuildCraftCore.mainConfiguration.get("biomes", "biomeOilDesert", DefaultProps.BIOME_OIL_DESERT).getInt(DefaultProps.BIOME_OIL_DESERT);
|
||||
int oilOceanBiomeId = BuildCraftCore.mainConfiguration.get("biomes", "biomeOilOcean", DefaultProps.BIOME_OIL_OCEAN).getInt(DefaultProps.BIOME_OIL_OCEAN);
|
||||
canOilBurn = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "burnOil", true, "Can oil burn?").getBoolean(true);
|
||||
isOilDense = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "denseOil", true, "Should it be hard to swim in oil?").getBoolean(true);
|
||||
oilWellScalar = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "oilWellGenerationRate", 1.0, "Probability of oil well generation").getDouble(1.0);
|
||||
canEnginesExplode = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "enginesExplode", false, "Do engines explode upon overheat?").getBoolean(false);
|
||||
|
||||
|
@ -192,7 +194,7 @@ public class BuildCraftEnergy extends BuildCraftMod {
|
|||
fluidRedPlasma = FluidRegistry.getFluid("redplasma");
|
||||
|
||||
if (fluidOil.getBlock() == null) {
|
||||
blockOil = new BlockBuildcraftFluid(fluidOil, Material.water, MapColor.blackColor).setFlammable(canOilBurn).setFlammability(0);
|
||||
blockOil = new BlockBuildcraftFluid(fluidOil, Material.water, MapColor.blackColor).setFlammable(canOilBurn).setFlammability(0).setDense(isOilDense);
|
||||
blockOil.setBlockName("blockOil").setLightOpacity(8);
|
||||
CoreProxy.proxy.registerBlock(blockOil);
|
||||
fluidOil.setBlock(blockOil);
|
||||
|
|
|
@ -15,6 +15,7 @@ import net.minecraft.block.material.MapColor;
|
|||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.particle.EntityFX;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -37,6 +38,7 @@ public class BlockBuildcraftFluid extends BlockFluidClassic {
|
|||
@SideOnly(Side.CLIENT)
|
||||
protected IIcon[] theIcon;
|
||||
protected boolean flammable;
|
||||
protected boolean dense = false;
|
||||
protected int flammability = 0;
|
||||
private MapColor mapColor;
|
||||
|
||||
|
@ -67,6 +69,27 @@ public class BlockBuildcraftFluid extends BlockFluidClassic {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) {
|
||||
|
||||
if(!dense || entity == null) return;
|
||||
|
||||
entity.motionY = Math.min(0.0, entity.motionY);
|
||||
|
||||
if (entity.motionY < -0.05) {
|
||||
entity.motionY *= 0.05;
|
||||
}
|
||||
|
||||
entity.motionX = Math.max(-0.05, Math.min(0.05, entity.motionX * 0.05));
|
||||
entity.motionY -= 0.05;
|
||||
entity.motionZ = Math.max(-0.05, Math.min(0.05, entity.motionZ * 0.05));
|
||||
}
|
||||
|
||||
public BlockBuildcraftFluid setDense(boolean dense) {
|
||||
this.dense = dense;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BlockBuildcraftFluid setFlammable(boolean flammable) {
|
||||
this.flammable = flammable;
|
||||
return this;
|
||||
|
|
Loading…
Reference in a new issue