added additional random parameters for robot, #1732
This commit is contained in:
parent
da32818bad
commit
1a74389a5c
4 changed files with 28 additions and 10 deletions
api/buildcraft/api/boards
buildcraft_resources/assets/buildcraft/lang
common/buildcraft
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue