Spigot Plugin

SlotSignPlugin

Minecraft Paper 1.26.2用のプラグインを作成してください。 機能 * 看板をスロットにできるプラグイン。 * 看板の1行目に (slot100) と書くと、その看板は100円で遊べるスロットになる。 * (slot500) と書けば500円、(slot1000) と書けば1000円など、数字がそのままプレイ料金になる。 * プレイ時はVault対応の経済プラグインから料金を引く。 当たり * ハズレ * 小当たり * 当たり * 大当たり * ジャックポット(超大当たり) 配当 倍率は看板の料金から自動で計算する。 例 * 小当たり:2倍 * 当たり:5倍 * 大当たり:10倍 * ジャックポット:50倍 例 * (slot100)なら * 小当たり 200円 * 当たり 500円 * 大当たり 1000円 * ジャックポット 5000円 * (slot1000)なら * 小当たり 2000円 * 当たり 5000円 * 大当たり 10000円 * ジャックポット 50000円 演出 * 数字や絵柄が回転する演出を入れる。 * 最後に結果が止まる。 * 当たりごとに違う音を鳴らす。 * 大当たり・ジャックポットでは花火を出す。 メッセージ * 「100円支払いました!」

Read the full description

* 「小当たり!200円獲得!」 * 「当たり!500円獲得!」 * 「大当たり!1000円獲得!」 * 「ジャックポット!5000円獲得!」 管理機能 * 権限がある人だけスロット看板を作れる。 * 管理者はコマンドで当選確率を変更できる。 * 設定ファイル(config.yml)で倍率・確率・音・メッセージを変更できる。 対応 * Paper 1.26.2 * Vault対応 * Java版とGeyser経由の統合版プレイヤーでも使えるようにする。

src/main/java/eu/codexe/slotsignplugin/SlotSignPlugin.java
package eu.codexe.slotsignplugin;

import eu.codexe.slotsignplugin.commands.SlotSignCommand;
import eu.codexe.slotsignplugin.listeners.SignInteractListener;
import eu.codexe.slotsignplugin.listeners.SignPlaceListener;
import eu.codexe.slotsignplugin.managers.AnimationManager;
import eu.codexe.slotsignplugin.managers.EconomyManager;
import eu.codexe.slotsignplugin.managers.MessageManager;
import eu.codexe.slotsignplugin.managers.SlotMachineManager;
import eu.codexe.slotsignplugin.storage.StorageManager;
import eu.codexe.slotsignplugin.storage.YamlStorage;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;

public final class SlotSignPlugin extends JavaPlugin {

    private PluginSettings settings;
    private MessageManager messageManager;
    private StorageManager storageManager;
    private EconomyManager economyManager;
    private SlotMachineManager slotMachineManager;
    private AnimationManager animationManager;

    @Override
    public void onEnable() {
        saveDefaultConfig();
        this.settings = new PluginSettings(this);
        this.messageManager = new MessageManager(this);
        this.storageManager = new YamlStorage(this);
        this.economyManager = new EconomyManager(this);
        this.slotMachineManager = new SlotMachineManager(this, settings, messageManager, storageManager, economyManager);
        this.animationManager = new AnimationManager(this, settings);

        if (!economyManager.setupVault()) {
            getLogger().severe("Vault economy provider was not found.");
            Bukkit.getPluginManager().disablePlugin(this);
            return;
        }

        storageManager.load();
        animationManager.start();
        registerListeners();
        registerCommands();

        new Metrics(this, 26964);
        getLogger().info("SlotSignPlugin has been enabled.");
    }

    @Override
    public void onDisable() {
        if (animationManager != null) {
            animationManager.stop();
        }
        if (storageManager != null) {
            storageManager.saveAll();
        }
    }