Tanri09YT
Пользователь
- Сообщения
- 31
Разрешается выкладывание кода, файлов конфигураций, логов и т.д. только под BB-код CODE
У меня плагин на изменения времени роста семян и деревьев.
Кто знает как сделать так, что бы значения в cfg файле изменялись (например если есть "speed: 7d", то был рост растений семян пшеницы в 7 дней, а если изменить на 1d, то 1 день, так же с другими значениями делать все под конфиг)
config.yml:
Plant_growth.class:
Кто знает как сделать так, что бы значения в cfg файле изменялись (например если есть "speed: 7d", то был рост растений семян пшеницы в 7 дней, а если изменить на 1d, то 1 день, так же с другими значениями делать все под конфиг)
config.yml:
Код:
# Значения, для конфига:
# id - Айди растения
# Все существующие id растений и семян: 295 (пшеница), 361 (тыква),
# Названия растений и семян на английском: wheat_seeds (пшеница), melon_seeds (тыква),
# speed - Скорость его роста
# droping - Это категория, в которой пишем что выпадает с собирания растений.
# remove - То, что вы хотите убрать при выпадении, когда растение вырастит
# add - То, что вы хотите добавить при выпадении, когда растение вырастит
Wheat_Seeds:
id: 295
speed: 7d
droping:
remove: wheat_seeds
Melon_Seeds:
id: 362
speed: 7d
droping:
remove: melon_seeds
Plant_growth.class:
Код:
package yt.tanr1.plant_growth;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockGrowEvent;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashMap;
import java.util.Map;
public class Plant_growth extends JavaPlugin implements Listener {
// Храним время роста для конкретного ID растения
private Map<Integer, Long> growthTimes = new HashMap<>();
// Константы
private final int WHEAT_ID = Material.WHEAT.getId(); // ID блоков пшеницы
private final long WHEAT_GROWTH_TIME = 16800; // Время роста в тиках (7 дней)
@Override
public void onEnable() {
getLogger().info(Color.ORANGE + "Plugin Enabled");
getServer().getPluginManager().registerEvents(this, this);
// Инициализируем время роста прямо в коде
growthTimes.put(WHEAT_ID, WHEAT_GROWTH_TIME);
}
@EventHandler
public void onPlantGrow(BlockGrowEvent event) {
int id = event.getBlock().getType().getId();
if (growthTimes.containsKey(id)) {
event.setCancelled(true); // Отменяем обычный рост
getServer().getScheduler().runTaskLater(this, () -> {
// Здесь логика для нового роста через заданный таймаут
// Например, чтобы пшеница выросла:
event.getBlock().setType(Material.WHEAT); // Убедитесь, что в этом месте вы используете правильный тип блока
}, growthTimes.get(id));
}
}
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
int id = event.getBlock().getType().getId();
// Проверяем, является ли блок пшеницей
if (id == WHEAT_ID) {
event.setDropItems(false); // Отменить выпадение предметов при сборе пшеницы
}
}
}
Последнее редактирование модератором: