Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
public class ConfigManager {
private Main instance;
public ConfigManager(Main instance) {
this.instance = instance;
}
public void registerConfiguration() {
Type.CONFIG = instance.getConfig();
}
public void unregisterConfiguration() {
saveConfig("config.yml", Type.CONFIG);
}
public static class Type {
public static FileConfiguration CONFIG;
}
public static void saveConfig(String file, FileConfiguration config) {
try {
config.save(new File(Main.instance.getDataFolder(), file));
} catch (IOException e) {
e.printStackTrace();
}
}
private FileConfiguration loadConfiguration(String fileName) {
File f = new File(instance.getDataFolder(), fileName);
if(!f.exists()) {
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return YamlConfiguration.loadConfiguration(f);
}
}
Совсем больной?) Зачем релизовывать то, что и так есть в ведроапи? Еще и таким ужасным костылем.Код:public class ConfigManager { private Main instance; public ConfigManager(Main instance) { this.instance = instance; } public void registerConfiguration() { Type.CONFIG = instance.getConfig(); } public void unregisterConfiguration() { saveConfig("config.yml", Type.CONFIG); } public static class Type { public static FileConfiguration CONFIG; } public static void saveConfig(String file, FileConfiguration config) { try { config.save(new File(Main.instance.getDataFolder(), file)); } catch (IOException e) { e.printStackTrace(); } } private FileConfiguration loadConfiguration(String fileName) { File f = new File(instance.getDataFolder(), fileName); if(!f.exists()) { try { f.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } return YamlConfiguration.loadConfiguration(f); } }
Смотри у меня есть такой кодКод:public class ConfigManager { private Main instance; public ConfigManager(Main instance) { this.instance = instance; } public void registerConfiguration() { Type.CONFIG = instance.getConfig(); } public void unregisterConfiguration() { saveConfig("config.yml", Type.CONFIG); } public static class Type { public static FileConfiguration CONFIG; } public static void saveConfig(String file, FileConfiguration config) { try { config.save(new File(Main.instance.getDataFolder(), file)); } catch (IOException e) { e.printStackTrace(); } } private FileConfiguration loadConfiguration(String fileName) { File f = new File(instance.getDataFolder(), fileName); if(!f.exists()) { try { f.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } return YamlConfiguration.loadConfiguration(f); } }
package org.rb.guide;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;
public class Handler implements Listener {
public Handler(MinerBlock plugin) {
this.plugin = plugin;
}
private MinerBlock plugin = (MinerBlock)MinerBlock.getPlugin(MinerBlock.class);
public static ItemStack coal = new ItemStack(Material.COAL);
public static ItemStack iron_ingot = new ItemStack(Material.IRON_INGOT);
public static ItemStack gold_ingot = new ItemStack(Material.GOLD_INGOT);
public static ItemStack diamond = new ItemStack(Material.DIAMOND);
public static ItemStack emerald = new ItemStack(Material.EMERALD);
@EventHandler
public void Break(BlockBreakEvent e)
{
Player p = e.getPlayer();
Block b = e.getBlock();
Material ore = b.getType();
if(ore == Material.COAL_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), coal);
b.setType(Material.BEDROCK);
p.setExp(0.1F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.COAL_ORE);
}
}, 140);
}
if(ore == Material.IRON_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), iron_ingot);
b.setType(Material.BEDROCK);
p.setExp(0.15F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.IRON_ORE);
}
}, 200);
}
if(ore == Material.GOLD_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), gold_ingot);
b.setType(Material.BEDROCK);
p.setExp(0.2F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.GOLD_INGOT);
}
}, 260);
}
if(ore == Material.DIAMOND_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), diamond);
b.setType(Material.BEDROCK);
p.setExp(0.25F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.DIAMOND);
}
}, 340);
}
if(ore == Material.EMERALD_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), emerald);
b.setType(Material.BEDROCK);
p.setExp(0.3F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.EMERALD);
}
}, 400);
}
}
}
public FileConfiguration config;
public void onEnable(){
config = getConfig(); // Передаешь конфиг в переменную
saveDefaultConfig(); // Если конфиг не существует создаст его
}
public void onDisable() {
saveConfig(); //Сохраняешь конфиг
}
config.set("Time", 100);
int time = config.getInt("Time");
Главное работаетСовсем больной?) Зачем релизовывать то, что и так есть в ведроапи? Еще и таким ужасным костылем.
Всё что есть в этом классе, есть и в бакките, имеет смысл создавать такие менеджеры, когда нужен кастомный конфиг, или пихать туда свои методы для работы с конфигомГлавное работает![]()
Ну так я и выложил, чтобы он ещё мог свои туда конфиги добавлять.Всё что есть в этом классе, есть и в бакките, имеет смысл создавать такие менеджеры, когда нужен кастомный конфиг, или пихать туда свои методы для работы с конфигом
в src нужно создать config.yml , в мейне должно быть следующее
Дальше где угодно передаешь переменную конфига и вписываешь путь:значениеКод:public FileConfiguration config; public void onEnable(){ config = getConfig(); // Передаешь конфиг в переменную saveDefaultConfig(); // Если конфиг не существует создаст его } public void onDisable() { saveConfig(); //Сохраняешь конфиг }
Дальше когда тебе нужно получить значениеКод:config.set("Time", 100);
[/QUOTEКод:int time = config.getInt("Time");
Слушай я не очень понял смотри у меня два файла с классами
Первый класс MinerBlock
А второй класс Handler
Так вот MinerBlock.java
прописаны значения
onEnable
и
onDisable
а в классе Handler.java
Он вообще обработчик событий, там прописываются главные события.
Я прописал этот код в MinerBlock.java:
Код:public FileConfiguration config; public void onEnable(){ config = getConfig(); // Передаешь конфиг в переменную saveDefaultConfig(); // Если конфиг не существует создаст его } public void onDisable() { saveConfig(); //Сохраняешь конфиг }
а вот эти оба кода не знаю где прописывать, можешь подробно написать:
Код:config.set("Time", 100);Код:int time = config.getInt("Time");
package org.rb.guide;
import java.io.File;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
public class MinerBlock extends JavaPlugin {
public FileConfiguration config;
@Override
public void onEnable(){
File config = new File(getDataFolder() + File.separator + "config.yml");
if(!config.exists()){
getLogger().info("Creating new config file...");
getConfig().options().copyDefaults(true);
saveDefaultConfig();
}
getLogger().info("Plugin Enabled!");
Bukkit.getPluginManager().registerEvents(new Handler(this), this);
}
@Override
public void onDisable(){
getLogger().info("Plugin Enabled!");
saveConfig();
}
}
package org.rb.guide;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;
public class Handler implements Listener {
public Handler(MinerBlock plugin) {
this.plugin = plugin;
}
private MinerBlock plugin = (MinerBlock)MinerBlock.getPlugin(MinerBlock.class);
public static ItemStack coal = new ItemStack(Material.COAL);
public static ItemStack iron_ingot = new ItemStack(Material.IRON_INGOT);
public static ItemStack gold_ingot = new ItemStack(Material.GOLD_INGOT);
public static ItemStack diamond = new ItemStack(Material.DIAMOND);
public static ItemStack emerald = new ItemStack(Material.EMERALD);
@EventHandler
public void Break(BlockBreakEvent e)
{
Player p = e.getPlayer();
Block b = e.getBlock();
Material ore = b.getType();
if(ore == Material.COAL_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), coal);
b.setType(Material.BEDROCK);
p.setExp(0.1F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.COAL_ORE);
}
}, 140);
}
if(ore == Material.IRON_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), iron_ingot);
b.setType(Material.BEDROCK);
p.setExp(0.15F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.IRON_ORE);
}
}, 200);
}
if(ore == Material.GOLD_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), gold_ingot);
b.setType(Material.BEDROCK);
p.setExp(0.2F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.GOLD_INGOT);
}
}, 260);
}
if(ore == Material.DIAMOND_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), diamond);
b.setType(Material.BEDROCK);
p.setExp(0.25F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.DIAMOND);
}
}, 340);
}
if(ore == Material.EMERALD_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), emerald);
b.setType(Material.BEDROCK);
p.setExp(0.3F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.EMERALD);
}
}, 400);
}
}
}
Coal:
cooldown: 140
От душиВместо 140 - plugin.getConfig().getInt("Coal.cooldown");
А как мне сделать так чтоб допустим угольная руда нпходилась не по всему мируВместо 140 - plugin.getConfig().getInt("Coal.cooldown");
Создаешь регион ворлдагуарла, под названием, mine, для примера. Помещаешь в этот рг угольную руду.А как мне сделать так чтоб допустим угольная руда нпходилась не по всему миру
А в указанных координатах?
Тип с моим кодом по всему миру ломаешь руду и она превращается в бедрок.
А мне надо чтоб только в указанных координатах.
@EventHandler
public void Break(BlockBreakEvent e)
{
Player p = e.getPlayer();
Block b = e.getBlock();
Material ore = b.getType();
RegionManager rgm = plugin.wg.getRegionManager(p.getWorld());
ApplicableRegionSet ars = rgm.getApplicableRegions(p.getLocation());
ars.getRegions();
boolean isRightRegion = false;
for (ProtectedRegion prg : ars){
if (prg.getId().equalsIgnoreCase("mine")) {
isRightRegion = true;
}
}
if(!isRightRegion) {
return;
}
if(ore == Material.COAL_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), coal);
b.setType(Material.BEDROCK);
p.setExp(0.1F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.COAL_ORE);
}
}, 140);
}
if(ore == Material.IRON_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), iron_ingot);
b.setType(Material.BEDROCK);
p.setExp(0.15F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.IRON_ORE);
}
}, 200);
}
if(ore == Material.GOLD_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), gold_ingot);
b.setType(Material.BEDROCK);
p.setExp(0.2F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.GOLD_INGOT);
}
}, 260);
}
if(ore == Material.DIAMOND_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), diamond);
b.setType(Material.BEDROCK);
p.setExp(0.25F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.DIAMOND);
}
}, 340);
}
if(ore == Material.EMERALD_ORE)
{
e.setCancelled(true);
b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), emerald);
b.setType(Material.BEDROCK);
p.setExp(0.3F);
Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
b.setType(Material.EMERALD);
}
}, 400);
}
}
Все отлично но ошибки в RegionManagerСоздаешь регион ворлдагуарла, под названием, mine, для примера. Помещаешь в этот рг угольную руду.
Далее, делаешь вот так:
PHP:@EventHandler public void Break(BlockBreakEvent e) { Player p = e.getPlayer(); Block b = e.getBlock(); Material ore = b.getType(); RegionManager rgm = plugin.wg.getRegionManager(p.getWorld()); ApplicableRegionSet ars = rgm.getApplicableRegions(p.getLocation()); ars.getRegions(); boolean isRightRegion = false; for (ProtectedRegion prg : ars){ if (prg.getId().equalsIgnoreCase("mine")) { isRightRegion = true; } } if(!isRightRegion) { return; } if(ore == Material.COAL_ORE) { e.setCancelled(true); b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), coal); b.setType(Material.BEDROCK); p.setExp(0.1F); Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() { @Override public void run() { b.setType(Material.COAL_ORE); } }, 140); } if(ore == Material.IRON_ORE) { e.setCancelled(true); b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), iron_ingot); b.setType(Material.BEDROCK); p.setExp(0.15F); Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() { @Override public void run() { b.setType(Material.IRON_ORE); } }, 200); } if(ore == Material.GOLD_ORE) { e.setCancelled(true); b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), gold_ingot); b.setType(Material.BEDROCK); p.setExp(0.2F); Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() { @Override public void run() { b.setType(Material.GOLD_INGOT); } }, 260); } if(ore == Material.DIAMOND_ORE) { e.setCancelled(true); b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), diamond); b.setType(Material.BEDROCK); p.setExp(0.25F); Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() { @Override public void run() { b.setType(Material.DIAMOND); } }, 340); } if(ore == Material.EMERALD_ORE) { e.setCancelled(true); b.getLocation().add(0.5, 0.5, 0.5).getWorld().dropItemNaturally(b.getLocation(), emerald); b.setType(Material.BEDROCK); p.setExp(0.3F); Bukkit.getServer().getScheduler().runTaskLater(plugin, new Runnable() { @Override public void run() { b.setType(Material.EMERALD); } }, 400); } }
Не подскажешь что у меня за ошибки?Теперь если игрок сломает любой блок из представленных тобою в регионе mine, то он замениться на бедрок.
Если игрок находится за пределами - ничего не произойдет.
Импортировал и ВорлдЕдит и ВорлдГуард?Не подскажешь что у меня за ошибки?
У меня импорт не выходил...Импортировал и ВорлдЕдит и ВорлдГуард?