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
|
@ -25,6 +25,8 @@ import net.minecraftforge.common.util.Constants;
|
||||||
|
|
||||||
public abstract class RedstoneBoardNBT {
|
public abstract class RedstoneBoardNBT {
|
||||||
|
|
||||||
|
private static Random rand = new Random();
|
||||||
|
|
||||||
public abstract String getID();
|
public abstract String getID();
|
||||||
|
|
||||||
public abstract void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advanced);
|
public abstract void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advanced);
|
||||||
|
@ -37,7 +39,7 @@ public abstract class RedstoneBoardNBT {
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public abstract IIcon getIcon(NBTTagCompound nbt);
|
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) {
|
public IBoardParameter[] getParameters(NBTTagCompound nbt) {
|
||||||
NBTTagList paramsNBT = nbt.getTagList("parameters", Constants.NBT.TAG_COMPOUND);
|
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
|
# Master language file
|
||||||
|
|
||||||
buildcraft.boardRobotPicker=Picker Program
|
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.iron.mode=Switched to %d MJ/t limit
|
||||||
chat.pipe.power.energyConverter=Energy conversion: %s
|
chat.pipe.power.energyConverter=Energy conversion: %s
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
package buildcraft.core.robots.boards;
|
package buildcraft.core.robots.boards;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
@ -47,9 +46,13 @@ public final class BoardRobotPickerNBT extends RedstoneBoardRobotNBT {
|
||||||
|
|
||||||
NBTTagCompound nbt = NBTUtils.getItemData(stack);
|
NBTTagCompound nbt = NBTUtils.getItemData(stack);
|
||||||
|
|
||||||
if (getParameterNumber(nbt) > 0) {
|
int parameterNumber = getParameterNumber(nbt);
|
||||||
list.add(StringUtils.localize("buildcraft.boardDetail.oneParameter"));
|
|
||||||
|
if (parameterNumber > 0) {
|
||||||
|
list.add(parameterNumber + " " + StringUtils.localize("buildcraft.boardDetail.parameters"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
list.add(StringUtils.localize("buildcraft.boardDetail.range") + ": " + nbt.getInteger("range"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -68,12 +71,21 @@ public final class BoardRobotPickerNBT extends RedstoneBoardRobotNBT {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createRandomBoard(NBTTagCompound nbt, Random rand) {
|
public void createRandomBoard(NBTTagCompound nbt) {
|
||||||
float value = rand.nextFloat();
|
int parameterNumber = (int) Math.floor(nextFloat(3) * 5);
|
||||||
|
int range = (int) Math.floor(nextFloat(10) * 500) + 10;
|
||||||
|
|
||||||
if (value > 0.5) {
|
if (parameterNumber > 0) {
|
||||||
setParameters(nbt, new IBoardParameter[] {RedstoneBoardRegistry.instance.createParameterStack()});
|
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
|
@Override
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class ImplRedstoneBoardRegistry extends RedstoneBoardRegistry {
|
||||||
|
|
||||||
if (accumulatedSearch > value) {
|
if (accumulatedSearch > value) {
|
||||||
nbt.setString("id", f.boardNBT.getID());
|
nbt.setString("id", f.boardNBT.getID());
|
||||||
f.boardNBT.createRandomBoard(nbt, rand);
|
f.boardNBT.createRandomBoard(nbt);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue