From 1a74389a5caeb58cddbfae680b27a9ad4b7f5794 Mon Sep 17 00:00:00 2001 From: SpaceToad Date: Sat, 7 Jun 2014 11:25:32 +0200 Subject: [PATCH] added additional random parameters for robot, #1732 --- .../api/boards/RedstoneBoardNBT.java | 7 ++++- .../assets/buildcraft/lang/en_US.lang | 3 ++- .../robots/boards/BoardRobotPickerNBT.java | 26 ++++++++++++++----- .../boards/ImplRedstoneBoardRegistry.java | 2 +- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/api/buildcraft/api/boards/RedstoneBoardNBT.java b/api/buildcraft/api/boards/RedstoneBoardNBT.java index acd2b3bd..cfbcdd60 100755 --- a/api/buildcraft/api/boards/RedstoneBoardNBT.java +++ b/api/buildcraft/api/boards/RedstoneBoardNBT.java @@ -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); + } } diff --git a/buildcraft_resources/assets/buildcraft/lang/en_US.lang b/buildcraft_resources/assets/buildcraft/lang/en_US.lang index 9f387ced..cd3b9c82 100755 --- a/buildcraft_resources/assets/buildcraft/lang/en_US.lang +++ b/buildcraft_resources/assets/buildcraft/lang/en_US.lang @@ -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 diff --git a/common/buildcraft/core/robots/boards/BoardRobotPickerNBT.java b/common/buildcraft/core/robots/boards/BoardRobotPickerNBT.java index 2d988a8f..028c91a0 100755 --- a/common/buildcraft/core/robots/boards/BoardRobotPickerNBT.java +++ b/common/buildcraft/core/robots/boards/BoardRobotPickerNBT.java @@ -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 diff --git a/common/buildcraft/silicon/boards/ImplRedstoneBoardRegistry.java b/common/buildcraft/silicon/boards/ImplRedstoneBoardRegistry.java index f5ed34de..614adbc2 100755 --- a/common/buildcraft/silicon/boards/ImplRedstoneBoardRegistry.java +++ b/common/buildcraft/silicon/boards/ImplRedstoneBoardRegistry.java @@ -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; } }