mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-23 05:36:45 +01:00
Add getBlockArray() method
This commit is contained in:
parent
1021c6f2b0
commit
f4140ae728
@ -23,7 +23,8 @@ import java.util.Map.Entry;
|
|||||||
private final Map<Range, PlotBlock> ranges = new HashMap<>();
|
private final Map<Range, PlotBlock> ranges = new HashMap<>();
|
||||||
private final Map<PlotBlock, Integer> blocks;
|
private final Map<PlotBlock, Integer> blocks;
|
||||||
private final BucketIterator bucketIterator = new BucketIterator();
|
private final BucketIterator bucketIterator = new BucketIterator();
|
||||||
private boolean compiled;
|
private boolean compiled, singleItem;
|
||||||
|
private PlotBlock head;
|
||||||
|
|
||||||
public BlockBucket() {
|
public BlockBucket() {
|
||||||
this.blocks = new HashMap<>();
|
this.blocks = new HashMap<>();
|
||||||
@ -49,6 +50,9 @@ import java.util.Map.Entry;
|
|||||||
public void addBlock(@NonNull final PlotBlock block, final int chance) {
|
public void addBlock(@NonNull final PlotBlock block, final int chance) {
|
||||||
this.blocks.put(block, chance);
|
this.blocks.put(block, chance);
|
||||||
this.compiled = false;
|
this.compiled = false;
|
||||||
|
if (head == null) {
|
||||||
|
head = block;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
@ -85,6 +89,28 @@ import java.util.Map.Entry;
|
|||||||
return Collections.unmodifiableCollection(blocks);
|
return Collections.unmodifiableCollection(blocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get an array containing a specified amount of randomly selected blocks
|
||||||
|
*
|
||||||
|
* @param count Number of blocks
|
||||||
|
* @return Immutable collection containing randomly selected blocks
|
||||||
|
*/
|
||||||
|
public PlotBlock[] getBlockArray(final int count) {
|
||||||
|
final PlotBlock[] blocks = new PlotBlock[count];
|
||||||
|
if (this.singleItem) {
|
||||||
|
Arrays.fill(blocks, 0, count, getBlock());
|
||||||
|
} else {
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
blocks[i] = getBlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return blocks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasSingleItem() {
|
||||||
|
return this.singleItem;
|
||||||
|
}
|
||||||
|
|
||||||
public void compile() {
|
public void compile() {
|
||||||
if (isCompiled()) {
|
if (isCompiled()) {
|
||||||
return;
|
return;
|
||||||
@ -98,6 +124,7 @@ import java.util.Map.Entry;
|
|||||||
if (blocks.size() == 1) {
|
if (blocks.size() == 1) {
|
||||||
this.ranges.put(new Range(0, 100, true), blocks.keySet().toArray(new PlotBlock[1])[0]);
|
this.ranges.put(new Range(0, 100, true), blocks.keySet().toArray(new PlotBlock[1])[0]);
|
||||||
this.compiled = true;
|
this.compiled = true;
|
||||||
|
this.singleItem = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,6 +205,8 @@ import java.util.Map.Entry;
|
|||||||
}
|
}
|
||||||
if (this.isEmpty()) {
|
if (this.isEmpty()) {
|
||||||
return StringPlotBlock.EVERYTHING;
|
return StringPlotBlock.EVERYTHING;
|
||||||
|
} else if (this.hasSingleItem()) {
|
||||||
|
return this.head;
|
||||||
}
|
}
|
||||||
final int number = random.nextInt(101);
|
final int number = random.nextInt(101);
|
||||||
for (final Map.Entry<Range, PlotBlock> entry : ranges.entrySet()) {
|
for (final Map.Entry<Range, PlotBlock> entry : ranges.entrySet()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user