.
This commit is contained in:
parent
670eba418c
commit
13ced30434
122 changed files with 223 additions and 12 deletions
0
minigame/BUILD
Normal file
0
minigame/BUILD
Normal file
22
minigame/crowwars/BUILD
Normal file
22
minigame/crowwars/BUILD
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
load("@rules_jvm_external//:defs.bzl", "artifact")
|
||||
load("@rules_java//java:java_binary.bzl", "java_binary")
|
||||
|
||||
java_binary(
|
||||
name = "_plugin",
|
||||
srcs = glob(["main/java/**/*.java"]),
|
||||
create_executable = False,
|
||||
resources = glob(["main/resources/**"]),
|
||||
resource_strip_prefix = "minigame/crowwars/main/resources",
|
||||
deps = [
|
||||
"//core/bukkit:api",
|
||||
artifact("io.papermc.paper:paper-api"),
|
||||
],
|
||||
)
|
||||
|
||||
genrule(
|
||||
name = "plugin",
|
||||
srcs = [":_plugin_deploy.jar"],
|
||||
outs = ["plugin.jar"],
|
||||
cmd = "cp $< $@",
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
20
minigame/crowwars/README.md
Normal file
20
minigame/crowwars/README.md
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# phases
|
||||
|
||||
## Lobby
|
||||
|
||||
players can select a kit
|
||||
|
||||
## teleport phase
|
||||
|
||||
player's are teleported to the arena
|
||||
wait 3s to not overwhelm players.
|
||||
|
||||
## no-pvp
|
||||
|
||||
for 10s, pvp is disabled.
|
||||
players can loot chests etc.
|
||||
|
||||
## pvp
|
||||
|
||||
players die until only one is left.
|
||||
the last wins.
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package site.lab0x13.scrow.crowwars;
|
||||
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public final class CrowWarsPlugin extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package site.lab0x13.scrow.crowwars.config;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import site.lab0x13.scrow.crowwars.loot.Pool;
|
||||
|
||||
public record Config(
|
||||
Pool<ItemStack> rareLootPool,
|
||||
Pool<ItemStack> commonLootPool
|
||||
) {
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package site.lab0x13.scrow.crowwars.jumppad;
|
||||
|
||||
import de.kentoj.scrow.bukkit.region.Region;
|
||||
|
||||
public record JumpPad(
|
||||
Region region
|
||||
) {
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package site.lab0x13.scrow.crowwars.jumppad;
|
||||
|
||||
import com.destroystokyo.paper.event.player.PlayerJumpEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public class JumpPadListener implements Listener {
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onPlayerJump(PlayerJumpEvent event) {
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package site.lab0x13.scrow.crowwars.jumppad;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class JumpPadRegistry {
|
||||
|
||||
private final List<JumpPad> jumppads;
|
||||
|
||||
public JumpPadRegistry(List<JumpPad> jumppads) {
|
||||
this.jumppads = jumppads;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package site.lab0x13.scrow.crowwars.loot;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.random.RandomGenerator;
|
||||
|
||||
public class LootTable {
|
||||
|
||||
private final Pool<Pool<ItemStack>> poolPool;
|
||||
|
||||
public LootTable(Weighted<Pool<ItemStack>>[] pools) {
|
||||
this.poolPool = new Pool<>(pools);
|
||||
}
|
||||
|
||||
public List<ItemStack> generate(RandomGenerator random, int size) {
|
||||
var result = new ArrayList<ItemStack>();
|
||||
for (int i = 0; i < size; i++) {
|
||||
var pool = poolPool.pick(random);
|
||||
var selectedItem = pool.value().pick(random).value();
|
||||
result.add(selectedItem);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package site.lab0x13.scrow.crowwars.loot;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.random.RandomGenerator;
|
||||
|
||||
public class Pool<T> {
|
||||
|
||||
private final Weighted<T>[] entries;
|
||||
|
||||
public Pool(Weighted<T>[] entries) {
|
||||
this.entries = entries;
|
||||
}
|
||||
|
||||
public Weighted<T> pick(RandomGenerator random) {
|
||||
/*
|
||||
* weighted random algorithm.
|
||||
* https://dev.to/jacktt/understanding-the-weighted-random-algorithm-581p
|
||||
*/
|
||||
int totalWeight = Arrays.stream(entries)
|
||||
.mapToInt(Weighted::weight)
|
||||
.sum();
|
||||
int cursor = 0;
|
||||
var rand = random.nextInt(totalWeight);
|
||||
for (Weighted<T> ent : entries) {
|
||||
cursor += ent.weight();
|
||||
if (rand < cursor)
|
||||
return ent;
|
||||
}
|
||||
|
||||
throw new RuntimeException("this should not be reached");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package site.lab0x13.scrow.crowwars.loot;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.random.RandomGenerator;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
public final class PoolEntry {
|
||||
|
||||
private final ItemStack itemStack;
|
||||
private final int weight;
|
||||
private final int minAmount, maxAmount;
|
||||
|
||||
public PoolEntry(ItemStack itemStack, int weight, int minAmount, int maxAmount) {
|
||||
checkArgument(weight > 0, "weight must be > 0");
|
||||
checkArgument(minAmount <= 0, "minAmount must be > 0");
|
||||
checkArgument(maxAmount > minAmount, "maxAmount must be >= minAmount");
|
||||
this.itemStack = itemStack.clone();
|
||||
this.weight = weight;
|
||||
this.minAmount = minAmount;
|
||||
this.maxAmount = maxAmount;
|
||||
}
|
||||
|
||||
public int weight() {
|
||||
return weight;
|
||||
}
|
||||
|
||||
public ItemStack create(RandomGenerator random) {
|
||||
var i = itemStack.clone();
|
||||
i.setAmount(random.nextInt(minAmount, maxAmount + 1));
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package site.lab0x13.scrow.crowwars.loot;
|
||||
|
||||
public interface Weighted<T> {
|
||||
|
||||
int weight();
|
||||
|
||||
T value();
|
||||
}
|
||||
6
minigame/crowwars/main/resources/plugin.yml
Normal file
6
minigame/crowwars/main/resources/plugin.yml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
name: "CrowWars"
|
||||
version: "0"
|
||||
depend: [ "CoreBukkit" ]
|
||||
main: "site.lab0x13.scrow.crowwars.CrowWarsPlugin"
|
||||
api-version: "1.21"
|
||||
author: "Kento2"
|
||||
Loading…
Add table
Add a link
Reference in a new issue