Один из моих первых плагинов. Настройка в конфиге.
Также есть плагины на мистики и хорошую авторизацию, все на Nukkit
Покупка в вк Nikita Okurkov | VK
Прикрепил зипку, внутри нее плагин
NeoBuyer.zip (6,2 КБ)
Один из моих первых плагинов. Настройка в конфиге.
Также есть плагины на мистики и хорошую авторизацию, все на Nukkit
Покупка в вк Nikita Okurkov | VK
Прикрепил зипку, внутри нее плагин
NeoBuyer.zip (6,2 КБ)
забыл добавить, зависимости:
MEFRREEX/FormConstructor: Library for easy creating and handling of forms (github.com)
EconomyS/EconomyAPI: Core of economy system for Nukkit (github.com)
Респект за использование моего FormConstructor
единственная для меня удобная библиотека) спс за то, что ты делаешь
А исходники
package ru.SocialMoods;
import cn.nukkit.plugin.PluginBase;
import cn.nukkit.utils.Config;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import ru.SocialMoods.command.BuyerCommand;
import ru.SocialMoods.model.ShopItem;
public class Buyer extends PluginBase {
private Map<Integer, ShopItem> shopItems = new HashMap();
private Config config;
public void onEnable() {
this.saveDefaultConfig();
this.config = new Config(new File(this.getDataFolder(), "config.yml"), 2);
this.loadShopItems();
this.getServer().getCommandMap().register("buyer", new BuyerCommand(this));
}
public Map<Integer, ShopItem> getShopItems() {
return this.shopItems;
}
private void loadShopItems() {
this.shopItems.clear();
Iterator var1 = this.config.getKeys(false).iterator();
while(var1.hasNext()) {
Object keyObj = var1.next();
String key = String.valueOf(keyObj);
int itemId = this.config.getInt(key + ".itemId");
int count = this.config.getInt(key + ".count");
int price = this.config.getInt(key + ".price");
int slot;
try {
slot = Integer.parseInt(key);
} catch (NumberFormatException var9) {
this.getLogger().warning("Ключ конфигурации не является числом: " + key);
continue;
}
ShopItem shopItem = new ShopItem(itemId, count, price);
this.shopItems.put(slot, shopItem);
}
}
}
package ru.SocialMoods.model;
import cn.nukkit.item.Item;
public class ShopItem {
private int itemId;
private int count;
private int price;
public ShopItem(int itemId, int count, int price) {
this.itemId = itemId;
this.count = count;
this.price = price;
}
public Item getItem() {
return Item.get(this.itemId, 0, this.count);
}
public int getPrice() {
return this.price;
}
public int getCount() {
return this.count;
}
public String getItemName() {
return Item.get(this.itemId).getName();
}
}
package ru.SocialMoods.form;
import cn.nukkit.Player;
import cn.nukkit.item.Item;
import com.formconstructor.form.SimpleForm;
import com.formconstructor.form.element.simple.Button;
import java.util.Iterator;
import java.util.Map.Entry;
import me.onebone.economyapi.EconomyAPI;
import ru.SocialMoods.Buyer;
import ru.SocialMoods.model.ShopItem;
public class BuyerForm {
public static void openBuyerForm(Player player, Buyer plugin) {
SimpleForm form = new SimpleForm("§l§aСкупщик");
EconomyAPI economy = EconomyAPI.getInstance();
Iterator var4 = plugin.getShopItems().entrySet().iterator();
while(var4.hasNext()) {
Entry<Integer, ShopItem> entry = (Entry)var4.next();
ShopItem shopItem = (ShopItem)entry.getValue();
String itemName = shopItem.getItemName();
String buttonText = itemName + " (" + shopItem.getCount() + " шт.) за §a" + shopItem.getPrice() + " монет";
Button button = new Button(buttonText);
button.onClick((pl, b) -> {
if (pl.getInventory().getItemInHand().getCount() < shopItem.getCount()) {
player.sendMessage("§fLost§aGolem§r§f | У вас недостаточно предметов для продажи!");
} else {
Item itemInHand = pl.getInventory().getItemInHand();
if (itemInHand.getName().equals(shopItem.getItemName())) {
itemInHand.setCount(itemInHand.getCount() - shopItem.getCount());
pl.getInventory().setItemInHand(itemInHand);
economy.addMoney(player, (double)shopItem.getPrice());
player.sendMessage("§fLost§aGolem§r§f | Вы успешно продали предметы!");
} else {
player.sendMessage("§fLost§aGolem§r§f | Вы взяли не тот предмет в руку!");
}
}
});
form.addButton(button);
}
form.addContent("Возьмите в руку предмет, который хотите §aпродать!");
form.setNoneHandler((pl) -> {
});
form.send(player);
}
}
package ru.SocialMoods.command;
import cn.nukkit.Player;
import cn.nukkit.command.Command;
import cn.nukkit.command.CommandSender;
import ru.SocialMoods.Buyer;
import ru.SocialMoods.form.BuyerForm;
public class BuyerCommand extends Command {
private Buyer plugin;
public BuyerCommand(Buyer plugin) {
super("buyer", "Открыть меню скупщика", "/buyer");
this.plugin = plugin;
}
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
if (sender instanceof Player) {
Player player = (Player)sender;
BuyerForm.openBuyerForm(player, this.plugin);
return true;
} else {
return false;
}
}
}
почему нельзя было вынести сообщения в конфиг?
"0":
itemId: 265 # Железный слиток
count: 15
price: 100
"1":
itemId: 266 # Золотой слиток
count: 10
price: 200
"2":
itemId: 264 # Алмаз
count: 5
price: 500
можно было просто все в массиве хранить, удобнее было бы
плагин писался для сервера и не планировался к сливу. В своих новых планах все сообщения в конфиге находятся.
сверху афамьев говорит про настройку сообщений в конфиге, далее про то, что настройку вещей лучше сделать в массиве
не ну ![]()
![]()
массив в конфиге, что не так, бедников?
меня на месяц откинули, когда провокатор украинец обозленный на обычных жителей россии)
ой афамьев ущемился флажков накидал
а где я агресирую? ты пришел, похрюкал, и сейчас начинаешь срачь)
пойди поплачь, бедняжка
как раз таки ты хрюкаешь
не пиши на русском, если ты его НЕ ЗНАЕШЬ
та плевать мне на твое мнение, могу на Украинском писать, но ты ведь бедняга понимать не будешь(((
и слава богу что я не буду тебя понимать совсем
ну тогда уйди отсюда, надоел уже вечно лезть, внимания бедняжке не уделяют
кидает флажки лишь бы не увидели как его опускают публично