redacted

  • Автор темы Автор темы MrTerf
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

MrTerf

Активный участник
Баллы
66
redacted
 
Последнее редактирование:
А чем 1.12 баганая?
Как минимум всем давно известный дюп с книжкой, который тебе придется фиксить плагином или каким нибуть сторонним патчем, плюс можешь загуглить, какие баги исправили в 1.12.1 и 1.12.2.
 
[12:22:06 WARN]: [trafficlight] Task #1704 for trafficlight v0.1 generated an exception
java.lang.NullPointerException: null
at trafficlights.main$TrafficLights.copySkull(main.java:73) ~[?:?]
at trafficlights.main$TrafficLights.setType(main.java:60) ~[?:?]
at trafficlights.main$TrafficLights.run(main.java:183) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot.jar:git-Spigot-596221b-9a1fc1e]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353) [spigot.jar:git-Spigot-596221b-9a1fc1e]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:738) [spigot.jar:git-Spigot-596221b-9a1fc1e]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:405) [spigot.jar:git-Spigot-596221b-9a1fc1e]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot.jar:git-Spigot-596221b-9a1fc1e]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot.jar:git-Spigot-596221b-9a1fc1e]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_181]
Скинь строку под номером 73 и 60 из класса main.
 
[12:22:06 WARN]: [trafficlight] Task #1704 for trafficlight v0.1 generated an exception
java.lang.NullPointerException: null
at trafficlights.main$TrafficLights.copySkull(main.java:73) ~[?:?]
at trafficlights.main$TrafficLights.setType(main.java:60) ~[?:?]
at trafficlights.main$TrafficLights.run(main.java:183) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot.jar:git-Spigot-596221b-9a1fc1e]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353) [spigot.jar:git-Spigot-596221b-9a1fc1e]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:738) [spigot.jar:git-Spigot-596221b-9a1fc1e]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:405) [spigot.jar:git-Spigot-596221b-9a1fc1e]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot.jar:git-Spigot-596221b-9a1fc1e]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot.jar:git-Spigot-596221b-9a1fc1e]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_181]
Скинь участок кода, и укажи строчки 60 и 73
 
Впервые вижу что 3 человека так и лезут помочь.
Мне казалось что Bukkit умеет копировать головы со скинами, там же всё в CraftBukkit делается, а он с NMS напрямую работает. Только за компом я буду позже, сейчас не могу проверить.
 
60: }
73: TileEntity fromTileEntity = cw.getTileEntityAt(fromX, fromY, fromZ);
Ошибка здесь: (toTileEntity).load(toNBT);
Возможно у тебя cw = null или нет головы на указанной координате (не знаю как так может быть). У меня так всё работает. Ты наверное где-то накосячил))
 
cw равно нулю, поскольку игрок - null. Опробую сделать Bukkit.getWorlds().get(0)
Держи код без игрока.
PHP:
import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
import net.minecraft.server.v1_12_R1.NBTTagCompound;
import net.minecraft.server.v1_12_R1.TileEntity;

public void copyBlock(Block from, Block to) {
    to.setType(from.getType());
    BlockState state = from.getState();
    BlockState targetState = to.getState();
    targetState.setData(state.getData());
    targetState.update(true);
    if (from.getType() == Material.SKULL) copySkull( from, to);
}

public void copySkull(Block from, Block to) {
    Location fromLoc = from.getLocation();
    Location toLoc = to.getLocation();
    int fromX = fromLoc.getBlockX();
    int fromY = fromLoc.getBlockY();
    int fromZ = fromLoc.getBlockZ();
    int toX = toLoc.getBlockX();
    int toY = toLoc.getBlockY();
    int toZ = toLoc.getBlockZ();
 
    CraftWorld cw = (CraftWorld) from.getWorld();
    TileEntity fromTileEntity = cw.getTileEntityAt(fromX, fromY, fromZ);
    TileEntity toTileEntity = cw.getTileEntityAt(toX, toY, toZ);
    NBTTagCompound fromNBT = new NBTTagCompound();
    fromTileEntity.save(fromNBT);
 
    NBTTagCompound toNBT = (NBTTagCompound) fromNBT.clone();
    toNBT.setInt("x", toX);
    toNBT.setInt("y", toY);
    toNBT.setInt("z", toZ);
    toTileEntity.load(toNBT);
    toTileEntity.update();
}
 
load - компилятор требует установки скобок перед toTileEntity, внутри них требует Configuration -
((FileConfiguration) toTileEntity).load(toNBT);
А после этого нужно изменять весь код.
Импорты заново правильно поставь, удали все и заново каждый импорт проверь при Ctrl Shift O
 
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.Configuration;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import net.minecraft.server.v1_12_R1.NBTTagCompound;
import net.minecraft.server.v1_12_R1.TileEntity;

Все импорты плагина
Все правильно.
Скрин кода с текстом ошибки кинь.
 
Попробуй метод load заменить методом save или a (не уверен что поможет). Но попробовать стоит. Возможно его в 1.12.1 - 1.12.2 деобфусцировали, а ты юзаешь 1.12.
 
Попробуй метод load заменить методом save или a (не уверен что поможет). Но попробовать стоит. Возможно его в 1.12.1 - 1.12.2 деобфусцировали, а ты юзаешь 1.12.
Нет, заменять не надо, это явно просто в 1.12.2 добавили.
Попробуй b(...) метод, вроде.
А лучше перейди на 1.12.2, как видишь, они уже сделали более человеческий метод.

Как бы нет смысла сидеть на 1.12 если есть 1.12.2.
Это то же самое что сидеть там на 1.5, когда есть 1.5.2 и т.п.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх