Merge remote-tracking branch 'origin/master'
Conflicts: src/main/java/techreborn/compat/recipes/RecipesIC2.java
This commit is contained in:
commit
1774848aed
13 changed files with 641 additions and 429 deletions
75
src/main/java/techreborn/blocks/OreDrop.java
Normal file
75
src/main/java/techreborn/blocks/OreDrop.java
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
package techreborn.blocks;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
|
import techreborn.init.ModBlocks;
|
||||||
|
import techreborn.config.ConfigTechReborn;
|
||||||
|
|
||||||
|
public class OreDrop
|
||||||
|
{
|
||||||
|
public OreDrop(ItemStack drop)
|
||||||
|
{
|
||||||
|
this.drop = drop;
|
||||||
|
this.count = drop.stackSize;
|
||||||
|
this.baseChance = 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OreDrop(ItemStack drop, Integer baseChance)
|
||||||
|
{
|
||||||
|
this.drop = drop;
|
||||||
|
this.count = drop.stackSize;
|
||||||
|
this.baseChance = baseChance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getDrops(int fortuneLevel, Random random)
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
if (baseChance == 100) //This always drops. Use vanilla fortune rules.
|
||||||
|
{
|
||||||
|
count = calculateFortuneMulti(fortuneLevel, random);
|
||||||
|
} else if (calculateFortuneSingle(fortuneLevel, random)) //This has a chance to drop. Increase that chance with fortune.
|
||||||
|
{
|
||||||
|
count = this.count;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
return new ItemStack(drop.getItem(), count, drop.getItemDamage());
|
||||||
|
}
|
||||||
|
|
||||||
|
//Refer to http://minecraft.gamepedia.com/Enchanting#Fortune
|
||||||
|
private int calculateFortuneMulti(int level, Random random)
|
||||||
|
{
|
||||||
|
int chanceOfEachBonus = 100 / (level + 2);
|
||||||
|
int roll = random.nextInt(100);
|
||||||
|
|
||||||
|
if (roll <= chanceOfEachBonus * level) //If level = 0, this is always false
|
||||||
|
{
|
||||||
|
return (roll / chanceOfEachBonus) + 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Each fortune level increases probability by 50% of base, up to a limit of 100%.
|
||||||
|
//So, if base is 5% and we have Fortune III, chance is 5% + (3 * 2.5%) = 12.5%
|
||||||
|
private boolean calculateFortuneSingle(int level, Random random)
|
||||||
|
{
|
||||||
|
double modifier = ConfigTechReborn.FortuneSecondaryOreMultiplierPerLevel * level;
|
||||||
|
double total = baseChance + (baseChance * modifier);
|
||||||
|
int roll = random.nextInt(100);
|
||||||
|
return roll <= total;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack drop;
|
||||||
|
public Integer baseChance;
|
||||||
|
public Integer count;
|
||||||
|
}
|
37
src/main/java/techreborn/blocks/OreDropSet.java
Normal file
37
src/main/java/techreborn/blocks/OreDropSet.java
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
package techreborn.blocks;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
|
import techreborn.init.ModBlocks;
|
||||||
|
import techreborn.config.ConfigTechReborn;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
|
||||||
|
public class OreDropSet
|
||||||
|
{
|
||||||
|
public OreDropSet(OreDrop primary, OreDrop... secondaries)
|
||||||
|
{
|
||||||
|
this.primary = primary;
|
||||||
|
this.secondaries = secondaries;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<ItemStack> drop(int fortune, Random random)
|
||||||
|
{
|
||||||
|
ArrayList<ItemStack> drops = new ArrayList<ItemStack>();
|
||||||
|
|
||||||
|
for (OreDrop drop : secondaries)
|
||||||
|
{
|
||||||
|
drops.add(drop.getDrops(fortune, random));
|
||||||
|
}
|
||||||
|
|
||||||
|
drops.add(primary.getDrops(fortune, random));
|
||||||
|
return drops;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OreDrop primary;
|
||||||
|
public OreDrop[] secondaries;
|
||||||
|
}
|
File diff suppressed because it is too large
Load diff
|
@ -61,6 +61,8 @@ public class ConfigTechReborn {
|
||||||
public static boolean SodaliteOreTrue;
|
public static boolean SodaliteOreTrue;
|
||||||
public static int SodaliteOreRare;
|
public static int SodaliteOreRare;
|
||||||
|
|
||||||
|
public static double FortuneSecondaryOreMultiplierPerLevel;
|
||||||
|
|
||||||
// Power
|
// Power
|
||||||
public static int ThermalGenertaorOutput;
|
public static int ThermalGenertaorOutput;
|
||||||
public static int CentrifugeInputTick;
|
public static int CentrifugeInputTick;
|
||||||
|
@ -438,6 +440,15 @@ public class ConfigTechReborn {
|
||||||
.translateToLocal("config.techreborn.silverOre.rare.tooltip"))
|
.translateToLocal("config.techreborn.silverOre.rare.tooltip"))
|
||||||
.getInt();
|
.getInt();
|
||||||
|
|
||||||
|
FortuneSecondaryOreMultiplierPerLevel = config
|
||||||
|
.get(CATEGORY_WORLD,
|
||||||
|
StatCollector
|
||||||
|
.translateToLocal("config.techreborn.fortuneSecondaryOreMultiplierPerLevel"),
|
||||||
|
0.5,
|
||||||
|
StatCollector
|
||||||
|
.translateToLocal("config.techreborn.fortuneSecondaryOreMultiplierPerLevel.tooltip"))
|
||||||
|
.getDouble();
|
||||||
|
|
||||||
// Power
|
// Power
|
||||||
ThermalGenertaorOutput = config
|
ThermalGenertaorOutput = config
|
||||||
.get(CATEGORY_POWER,
|
.get(CATEGORY_POWER,
|
||||||
|
|
|
@ -105,14 +105,14 @@ public class TileAlloySmelter extends TileMachineBase implements IWrenchable, IE
|
||||||
super.onChunkUnload();
|
super.onChunkUnload();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void addWailaInfo(List<String> info){
|
// public void addWailaInfo(List<String> info){
|
||||||
super.addWailaInfo(info);
|
// super.addWailaInfo(info);
|
||||||
info.add("Power Stored " + energy.getEnergyStored() + "/" + energy.getCapacity() +" EU");
|
// info.add("Power Stored " + energy.getEnergyStored() + "/" + energy.getCapacity() +" EU");
|
||||||
if(crafter.currentRecipe !=null){
|
// if(crafter.currentRecipe !=null){
|
||||||
info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
// info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSizeInventory() {
|
public int getSizeInventory() {
|
||||||
|
|
|
@ -115,14 +115,14 @@ public class TileAssemblingMachine extends TileMachineBase implements IWrenchabl
|
||||||
super.onChunkUnload();
|
super.onChunkUnload();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void addWailaInfo(List<String> info)
|
// public void addWailaInfo(List<String> info)
|
||||||
{
|
// {
|
||||||
super.addWailaInfo(info);
|
// super.addWailaInfo(info);
|
||||||
info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
// info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
||||||
if(crafter.currentRecipe !=null){
|
// if(crafter.currentRecipe !=null){
|
||||||
info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
// info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,10 +127,10 @@ public class TileCentrifuge extends TileMachineBase implements IWrenchable, IEn
|
||||||
public void addWailaInfo(List<String> info)
|
public void addWailaInfo(List<String> info)
|
||||||
{
|
{
|
||||||
super.addWailaInfo(info);
|
super.addWailaInfo(info);
|
||||||
info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
// info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
||||||
if(crafter.currentRecipe !=null){
|
// if(crafter.currentRecipe !=null){
|
||||||
info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
// info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
||||||
}
|
// }
|
||||||
info.add("Round and round it goes");
|
info.add("Round and round it goes");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,14 +115,14 @@ public class TileChemicalReactor extends TileMachineBase implements IWrenchable,
|
||||||
super.onChunkUnload();
|
super.onChunkUnload();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void addWailaInfo(List<String> info)
|
// public void addWailaInfo(List<String> info)
|
||||||
{
|
// {
|
||||||
super.addWailaInfo(info);
|
// super.addWailaInfo(info);
|
||||||
info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
// info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
||||||
if(crafter.currentRecipe !=null){
|
// if(crafter.currentRecipe !=null){
|
||||||
info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
// info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,12 +125,12 @@ public class TileHeatGenerator extends TileMachineBase implements IWrenchable, I
|
||||||
energy.writeToNBT(tagCompound);
|
energy.writeToNBT(tagCompound);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void addWailaInfo(List<String> info)
|
// public void addWailaInfo(List<String> info)
|
||||||
{
|
// {
|
||||||
super.addWailaInfo(info);
|
// super.addWailaInfo(info);
|
||||||
info.add("Power Generarating " + euTick +" EU/t");
|
// info.add("Power Generarating " + euTick +" EU/t");
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,15 +96,15 @@ public class TileImplosionCompressor extends TileMachineBase implements IWrencha
|
||||||
crafter.writeToNBT(tagCompound);
|
crafter.writeToNBT(tagCompound);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void addWailaInfo(List<String> info)
|
// public void addWailaInfo(List<String> info)
|
||||||
{
|
// {
|
||||||
super.addWailaInfo(info);
|
// super.addWailaInfo(info);
|
||||||
info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
// info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
||||||
if(crafter.currentRecipe !=null){
|
// if(crafter.currentRecipe !=null){
|
||||||
info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
// info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void invalidate()
|
public void invalidate()
|
||||||
|
|
|
@ -114,14 +114,14 @@ public class TileLathe extends TileMachineBase implements IWrenchable, IEnergyTi
|
||||||
super.onChunkUnload();
|
super.onChunkUnload();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void addWailaInfo(List<String> info)
|
// public void addWailaInfo(List<String> info)
|
||||||
{
|
// {
|
||||||
super.addWailaInfo(info);
|
// super.addWailaInfo(info);
|
||||||
info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
// info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
||||||
if(crafter.currentRecipe !=null){
|
// if(crafter.currentRecipe !=null){
|
||||||
info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
// info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,15 +101,15 @@ public class TilePlateCuttingMachine extends TileMachineBase implements IWrencha
|
||||||
crafter.writeToNBT(tagCompound);
|
crafter.writeToNBT(tagCompound);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void addWailaInfo(List<String> info)
|
// public void addWailaInfo(List<String> info)
|
||||||
{
|
// {
|
||||||
super.addWailaInfo(info);
|
// super.addWailaInfo(info);
|
||||||
info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
// info.add("Power Stored " + energy.getEnergyStored() +" EU");
|
||||||
if(crafter.currentRecipe !=null){
|
// if(crafter.currentRecipe !=null){
|
||||||
info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
// info.add("Power Usage " + crafter.currentRecipe.euPerTick() + " EU/t");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void invalidate()
|
public void invalidate()
|
||||||
|
|
|
@ -710,6 +710,9 @@ config.techreborn.allow.olivineOre.tooltip=Decide whether Olivine Ore spawns or
|
||||||
config.techreborn.allow.sodaliteOre=Allow Sodalite Ore
|
config.techreborn.allow.sodaliteOre=Allow Sodalite Ore
|
||||||
config.techreborn.allow.sodaliteOre.tooltip=Decide whether Sodalite Ore spawns or not
|
config.techreborn.allow.sodaliteOre.tooltip=Decide whether Sodalite Ore spawns or not
|
||||||
|
|
||||||
|
config.techreborn.fortuneSecondaryOreMultiplierPerLevel=Fortune's Effect on Secondaries
|
||||||
|
config.techreborn.fortuneSecondaryOreMultiplierPerLevel.tooltip=How much of an increase should each level of fortune have on secondary ore drops?
|
||||||
|
|
||||||
config.techreborn.allowExpensiveMacerator=Allow Expensive Macerator
|
config.techreborn.allowExpensiveMacerator=Allow Expensive Macerator
|
||||||
config.techreborn.allowExpensiveMacerator.tooltip=
|
config.techreborn.allowExpensiveMacerator.tooltip=
|
||||||
config.techreborn.allowExpensiveDrill=Allow Expensive Drill
|
config.techreborn.allowExpensiveDrill=Allow Expensive Drill
|
||||||
|
|
Loading…
Reference in a new issue