added additional random parameters for robot, #1732

This commit is contained in:
SpaceToad 2014-06-07 11:25:32 +02:00
parent da32818bad
commit 1a74389a5c
4 changed files with 28 additions and 10 deletions

View file

@ -25,6 +25,8 @@ import net.minecraftforge.common.util.Constants;
public abstract class RedstoneBoardNBT {
private static Random rand = new Random();
public abstract String getID();
public abstract void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advanced);
@ -37,7 +39,7 @@ public abstract class RedstoneBoardNBT {
@SideOnly(Side.CLIENT)
public abstract IIcon getIcon(NBTTagCompound nbt);
public abstract void createRandomBoard(NBTTagCompound nbt, Random rand);
public abstract void createRandomBoard(NBTTagCompound nbt);
public IBoardParameter[] getParameters(NBTTagCompound nbt) {
NBTTagList paramsNBT = nbt.getTagList("parameters", Constants.NBT.TAG_COMPOUND);
@ -74,4 +76,7 @@ public abstract class RedstoneBoardNBT {
}
}
public float nextFloat(int difficulty) {
return 1F - (float) Math.pow(rand.nextFloat(), 1F / difficulty);
}
}

View file

@ -1,7 +1,8 @@
# Master language file
buildcraft.boardRobotPicker=Picker Program
buildcraft.boardDetail.oneParameter=One Parameter
buildcraft.boardDetail.parameters=Parameters
buildcraft.boardDetail.range=Range
chat.pipe.power.iron.mode=Switched to %d MJ/t limit
chat.pipe.power.energyConverter=Energy conversion: %s

View file

@ -9,7 +9,6 @@
package buildcraft.core.robots.boards;
import java.util.List;
import java.util.Random;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
@ -47,9 +46,13 @@ public final class BoardRobotPickerNBT extends RedstoneBoardRobotNBT {
NBTTagCompound nbt = NBTUtils.getItemData(stack);
if (getParameterNumber(nbt) > 0) {
list.add(StringUtils.localize("buildcraft.boardDetail.oneParameter"));
int parameterNumber = getParameterNumber(nbt);
if (parameterNumber > 0) {
list.add(parameterNumber + " " + StringUtils.localize("buildcraft.boardDetail.parameters"));
}
list.add(StringUtils.localize("buildcraft.boardDetail.range") + ": " + nbt.getInteger("range"));
}
@Override
@ -68,12 +71,21 @@ public final class BoardRobotPickerNBT extends RedstoneBoardRobotNBT {
}
@Override
public void createRandomBoard(NBTTagCompound nbt, Random rand) {
float value = rand.nextFloat();
public void createRandomBoard(NBTTagCompound nbt) {
int parameterNumber = (int) Math.floor(nextFloat(3) * 5);
int range = (int) Math.floor(nextFloat(10) * 500) + 10;
if (value > 0.5) {
setParameters(nbt, new IBoardParameter[] {RedstoneBoardRegistry.instance.createParameterStack()});
if (parameterNumber > 0) {
IBoardParameter[] parameters = new IBoardParameter[parameterNumber];
for (int i = 0; i < parameterNumber; ++i) {
parameters[i] = RedstoneBoardRegistry.instance.createParameterStack();
}
setParameters(nbt, parameters);
}
nbt.setInteger("range", range);
}
@Override

View file

@ -53,7 +53,7 @@ public class ImplRedstoneBoardRegistry extends RedstoneBoardRegistry {
if (accumulatedSearch > value) {
nbt.setString("id", f.boardNBT.getID());
f.boardNBT.createRandomBoard(nbt, rand);
f.boardNBT.createRandomBoard(nbt);
return;
}
}