Stage 12: Data storage system

This commit is contained in:
loki5512344 2026-05-31 20:47:02 +02:00
parent 82ed455cd2
commit 4fd7955d56
62 changed files with 5613 additions and 0 deletions

View file

@ -0,0 +1,77 @@
package dev.loki.item;
import org.bukkit.inventory.ItemStack;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
public class ChestLoot {
private final Random random;
public ChestLoot() {
this.random = ThreadLocalRandom.current();
}
public ItemStack rollLoot() {
int roll = random.nextInt(100);
int currentWeight = 0;
currentWeight += 30;
if (roll < currentWeight) {
return createMedkit();
}
currentWeight += 25;
if (roll < currentWeight) {
return createFlashlight();
}
currentWeight += 25;
if (roll < currentWeight) {
return createToolbox();
}
currentWeight += 12;
if (roll < currentWeight) {
return createKey();
}
return createMap();
}
private ItemStack createMedkit() {
int charges = 12 + random.nextInt(8);
return new ItemMedkit(charges).createItemStack();
}
private ItemStack createFlashlight() {
int charges = 6 + random.nextInt(6);
return new ItemFlashlight(charges).createItemStack();
}
private ItemStack createToolbox() {
int charges = 10 + random.nextInt(10);
return new ItemToolbox(charges).createItemStack();
}
private ItemStack createKey() {
int charges = 24 + random.nextInt(16);
return new ItemKey(charges).createItemStack();
}
private ItemStack createMap() {
int charges = 8 + random.nextInt(12);
return new ItemMap(charges).createItemStack();
}
public int getRarity(ItemType type) {
return switch (type) {
case MEDKIT -> 30;
case FLASHLIGHT -> 25;
case TOOLBOX -> 25;
case KEY -> 12;
case MAP -> 8;
};
}
}