- Баллы
- 103
Это был сарказм про старую версию.Основной код на свежаке можно, а классы под версии отдельно, так все делают.
Ну тут все зависит от того, остался ли депрекадед код в новом апи или нет.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Это был сарказм про старую версию.Основной код на свежаке можно, а классы под версии отдельно, так все делают.
Ну тут все зависит от того, остался ли депрекадед код в новом апи или нет.
У меня есть плагин с овербеты, и представь себе, он работает до самой 1.10.Это был сарказм про старую версию.
Эт да. Были и такие приколы.Пишу за деньги на 1.7.10. Косяк реализации, который нашел - ItemFlag в API есть, а в реализации нет.
Не пытайся засунуть всё в один класс. Сделай один класс с тем, что будет работать в любом случае на всех версиях сервера. Дальше подгружай другие классы по младшинству версии.Я делаю типо проверки на креат, флай, год и тд. Тоесть в 1.5.2-1.8 можно чекать токо взрывное зелье и стрелу. А дальше появилась ещё одна стрела и зелье. И как их чекать я хз чтобы была поддержка старых версий.
Ну у меня есть такое.
HashMap<String, Boolean> bol = new HashMap<String, Boolean>();
//Использую мапу, т.к у меня ~10 boolean значений которые не меняются после запуска сервера. И чтобы не загрязнять класс.
String version = this.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
bol.put("use19", (version.equals("v1_10_R1") || version.equals("v1_9_R2") || version.equals("v1_9_R1")));
---
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onLaunch(ProjectileLaunchEvent e){
if (e.getEntity().getShooter() instanceof Player) { // Ругается на эту строку. Если подключить ядро 1.5.2 без 1.10, то строку не подчеркивает.
Player player = (Player) e.getEntity().getShooter();
// if true then return - Приятно для чтения
if (player.hasPermission("antirelog.bypass")) {
return;
}
//if true then if true then logic - Плохо для чтения
if (bol.get("use19")) {
//Слишком много типов? Прикола ради можно создать лист с типами и проверять наличие n в ней.
if (e.getEntity().getType() == EntityType.TIPPED_ARROW || e.getEntity().getType() == EntityType.ARROW || e.getEntity().getType() == EntityType.LINGERING_POTION || e.getEntity().getType() == EntityType.SPLASH_POTION ){
if (checkPlayer(player)) e.setCancelled(true);
}
} else {
if (e.getEntity().getType() == EntityType.ARROW || e.getEntity().getType() == EntityType.SPLASH_POTION ){
if (checkPlayer(player)) e.setCancelled(true);
}
}
}
}
Почему 'Ent' когда 'Ench'?Вот жуйте, дописывайте, улучшайте https://github.com/alexandrage/EntFix
Там проблема оказывается была в том что getShooter () в 152 берется из Projectile. А в 1.10 из ProjectileSource.Эт да. Были и такие приколы.
Не пытайся засунуть всё в один класс. Сделай один класс с тем, что будет работать в любом случае на всех версиях сервера. Дальше подгружай другие классы по младшинству версии.
Java:HashMap<String, Boolean> bol = new HashMap<String, Boolean>(); //Использую мапу, т.к у меня ~10 boolean значений которые не меняются после запуска сервера. И чтобы не загрязнять класс. String version = this.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3]; bol.put("use19", (version.equals("v1_10_R1") || version.equals("v1_9_R2") || version.equals("v1_9_R1"))); --- @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onLaunch(ProjectileLaunchEvent e){ if (e.getEntity().getShooter() instanceof Player) { // Ругается на эту строку. Если подключить ядро 1.5.2 без 1.10, то строку не подчеркивает. Player player = (Player) e.getEntity().getShooter(); // if true then return - Приятно для чтения if (player.hasPermission("antirelog.bypass")) { return; } //if true then if true then logic - Плохо для чтения if (bol.get("use19")) { //Слишком много типов? Прикола ради можно создать лист с типами и проверять наличие n в ней. if (e.getEntity().getType() == EntityType.TIPPED_ARROW || e.getEntity().getType() == EntityType.ARROW || e.getEntity().getType() == EntityType.LINGERING_POTION || e.getEntity().getType() == EntityType.SPLASH_POTION ){ if (checkPlayer(player)) e.setCancelled(true); } } else { if (e.getEntity().getType() == EntityType.ARROW || e.getEntity().getType() == EntityType.SPLASH_POTION ){ if (checkPlayer(player)) e.setCancelled(true); } } } }
Отсюда понимаем, что это у нас выходит в не универсальные классы.getShooter () в 152 берется из Projectile. А в 1.10 из ProjectileSource.
Вот жуйте, дописывайте, улучшайте https://github.com/alexandrage/EntFix
boolean b = item.getType() == Material.AIR;
if (!b) {
en<-chan->tПочему 'Ent' когда 'Ench'?
if (true) { return; } . И читать приятнее, и матрёшки нету.
А зачем нужен класс scheduler если можно сразу запустить Runs через onEnable?Вот жуйте, дописывайте, улучшайте https://github.com/alexandrage/EntFix
Ну, это старая история. Шедулер на рефлексии был, вызывал разные классы и методы, которые передавались ему.А зачем нужен класс scheduler если можно сразу запустить Runs через onEnable?
Java:Object CheckClass(Object o) { try { Class.forName("ЧТО ТО ТАМ1"); return this.news.Functions(o); } catch (ClassNotFoundException e1) { try { Class.forName("ЧТО ТО ТАМ2"); return this.old.Functions(o); } catch (ClassNotFoundException e2) { return this.dinozavr.Functions(o); } } }
Как то так.
Object shooter = Class.forName("org.bukkit.entity.Projectile").getMethod("getShooter");
if (shooter instanceof Player) {
Player player = (Player) shooter;
В голосинуЗАЩООООО?!Java:boolean b = item.getType() == Material.AIR; if (!b) {
гж. Табы пофикси плез.@Dereku Чтото я смог накалякать. Глянь
https://github.com/Dimatert9/ItemFixer/tree/master/src/ru/xtime
всёгж. Табы пофикси плез.
Ну пока тестирую новую версию. Сейчас там токо проверка инвентаря. В новой версии используется удаление тегов, а предметы остаются.1) Зачем регулярно проверять все инвентари, если конкретные предметы проверяются при использовании, выбрасывании и подбирании? Или этого уже нет?
Онли креатив.2) Игрок может редактировать зачарования и NBT предметов в лишь том случае, если у него есть креатив? Или, может, на это и permission ядра какой влияет?
Токо сообщения в консоль, о том что есть новая версия.3) Что там с системой обновления? Удалена/работает?
Да я не об этом, а о таймере, который раз в 15 секунд проверяет все предметы всех игроков. Нагрузочка же...Ну пока тестирую новую версию. Сейчас там токо проверка инвентаря. В новой версии используется удаление тегов, а предметы остаются.