[1.7.10]onBlockActived и NBT

Статус
В этой теме нельзя размещать новые ответы.
13
0
При клике по блоку рукой - краш. Любым предметом кроме нужного - краш. Нужным предметом с нужным NBT тэгом - ничего не происходит.
Код блока:
Код:
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int int1, float float1, float float2, float float3){
        ItemStack ItemInHand = player.getCurrentEquippedItem();
        int NBTint = ItemInHand.stackTagCompound.getInteger("Numbers");
        if (ItemInHand != null && ItemInHand.getItem() == BaseMyMod.lotteryticket && ItemInHand.stackTagCompound != null && NBTint == 0 && NBTint == 111){
            for (int i = 0; i < 5; i--){
            player.entityDropItem(BlockWithRewards.putDrops(), 0.0F);}
            ItemInHand.stackSize--;
            return true;}
        else if (NBTint == 777){
            return true;
        }else{
            return false;
        }
    }
    
Сам краш:
Код:
---- Minecraft Crash Report ----
// Oops.

Time: 25.05.15 12:41
Description: Unexpected error

java.lang.NullPointerException: Unexpected error
    at com.sashaf.mymod.BlockWithRewards.onBlockActivated(BlockWithRewards.java:73)
    at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
    at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1518)
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:2033)
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028)
    at net.minecraft.client.Minecraft.run(Minecraft.java:951)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
    at com.sashaf.mymod.BlockWithRewards.onBlockActivated(BlockWithRewards.java:73)
    at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:376)
    at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1518)

-- Affected level --
Details:
    Level name: MpServer
    All players: 1 total; [EntityClientPlayerMP['Player612'/381, l='MpServer', x=46,24, y=11,62, z=-734,45]]
    Chunk stats: MultiplayerChunkCache: 169, 169
    Level seed: 0
    Level generator: ID 01 - flat, ver 0. Features enabled: false
    Level generator options: 
    Level spawn location: World: (91,4,-677), Chunk: (at 11,0,11 in 5,-43; contains blocks 80,0,-688 to 95,255,-673), Region: (0,-2; contains chunks 0,-64 to 31,-33, blocks 0,0,-1024 to 511,255,-513)
    Level time: 13323 game time, 13323 day time
    Level dimension: 0
    Level storage version: 0x00000 - Unknown?
    Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
    Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
    Forced entities: 55 total; [EntitySkeleton['Skeleton'/83715, l='MpServer', x=91,50, y=4,00, z=-734,50], EntitySkeleton['Skeleton'/83714, l='MpServer', x=93,50, y=4,00, z=-734,50], EntityChicken['Chicken'/260, l='MpServer', x=-14,34, y=4,00, z=-814,75], EntitySlime['Slime'/265, l='MpServer', x=29,72, y=4,85, z=-767,22], EntityZombie['Zombie'/83720, l='MpServer', x=99,50, y=4,00, z=-736,50], EntitySlime['Slime'/273, l='MpServer', x=6,59, y=4,00, z=-740,38], EntitySlime['Slime'/280, l='MpServer', x=24,01, y=4,85, z=-771,22], EntitySlime['Slime'/281, l='MpServer', x=28,96, y=4,00, z=-729,88], EntitySlime['Slime'/10653, l='MpServer', x=110,44, y=5,08, z=-706,51], EntityPig['Pig'/288, l='MpServer', x=54,84, y=4,00, z=-797,16], EntitySheep['Sheep'/289, l='MpServer', x=63,94, y=4,00, z=-813,94], EntitySheep['Sheep'/290, l='MpServer', x=53,22, y=4,00, z=-792,63], EntityPig['Pig'/292, l='MpServer', x=62,56, y=4,00, z=-779,16], EntitySlime['Slime'/293, l='MpServer', x=52,25, y=4,00, z=-753,69], EntitySlime['Slime'/294, l='MpServer', x=80,29, y=4,90, z=-759,03], EntitySlime['Slime'/295, l='MpServer', x=40,74, y=4,02, z=-702,44], EntityCreeper['Creeper'/83750, l='MpServer', x=67,50, y=4,00, z=-780,50], EntitySlime['Slime'/80169, l='MpServer', x=58,59, y=4,99, z=-737,19], EntityClientPlayerMP['Player612'/381, l='MpServer', x=46,24, y=11,62, z=-734,45], EntitySlime['Slime'/75694, l='MpServer', x=73,50, y=4,00, z=-749,84], EntitySlime['Slime'/43568, l='MpServer', x=102,79, y=4,32, z=-737,98], EntitySheep['Sheep'/309, l='MpServer', x=63,09, y=4,00, z=-799,97], EntitySlime['Slime'/40246, l='MpServer', x=58,76, y=4,69, z=-708,13], EntityPig['Pig'/310, l='MpServer', x=65,81, y=4,00, z=-789,38], EntityPig['Pig'/311, l='MpServer', x=69,13, y=4,00, z=-784,91], EntitySheep['Sheep'/312, l='MpServer', x=68,28, y=4,00, z=-787,22], EntitySlime['Slime'/313, l='MpServer', x=66,78, y=4,00, z=-772,47], EntitySheep['Sheep'/314, l='MpServer', x=63,78, y=4,00, z=-788,88], EntitySheep['Sheep'/315, l='MpServer', x=70,75, y=4,00, z=-780,94], EntitySheep['Sheep'/316, l='MpServer', x=79,47, y=4,00, z=-778,22], EntitySheep['Sheep'/317, l='MpServer', x=70,09, y=4,00, z=-772,50], EntitySlime['Slime'/318, l='MpServer', x=55,48, y=4,00, z=-748,14], EntitySlime['Slime'/319, l='MpServer', x=87,97, y=4,00, z=-742,94], EntityPig['Pig'/328, l='MpServer', x=87,19, y=4,00, z=-801,31], EntitySheep['Sheep'/330, l='MpServer', x=81,50, y=4,00, z=-779,81], EntityPig['Pig'/331, l='MpServer', x=80,88, y=4,00, z=-778,69], EntitySlime['Slime'/332, l='MpServer', x=81,39, y=4,00, z=-759,97], EntityPig['Pig'/333, l='MpServer', x=92,91, y=4,00, z=-665,06], EntitySlime['Slime'/341, l='MpServer', x=120,41, y=4,00, z=-756,50], EntitySlime['Slime'/342, l='MpServer', x=110,30, y=5,08, z=-758,92], EntitySlime['Slime'/343, l='MpServer', x=103,52, y=4,33, z=-729,73], EntitySlime['Slime'/345, l='MpServer', x=101,48, y=4,00, z=-788,70], EntitySlime['Slime'/31963, l='MpServer', x=107,99, y=4,00, z=-758,74], EntitySlime['Slime'/65499, l='MpServer', x=84,02, y=5,01, z=-790,69], EntitySlime['Slime'/45533, l='MpServer', x=34,93, y=4,00, z=-742,47], EntityHorse['Donkey'/225, l='MpServer', x=-33,75, y=4,00, z=-762,84], EntityHorse['Donkey'/230, l='MpServer', x=-32,28, y=4,00, z=-764,72], EntityChicken['Chicken'/236, l='MpServer', x=-32,25, y=4,00, z=-673,28], EntitySheep['Sheep'/237, l='MpServer', x=-32,81, y=4,00, z=-674,44], EntityChicken['Chicken'/245, l='MpServer', x=-23,47, y=4,00, z=-763,47], EntityHorse['Donkey'/246, l='MpServer', x=-30,06, y=4,00, z=-762,06], EntityChicken['Chicken'/247, l='MpServer', x=-29,63, y=4,00, z=-764,91], EntityCow['Cow'/248, l='MpServer', x=-28,03, y=4,00, z=-738,03], EntityCow['Cow'/249, l='MpServer', x=-22,59, y=4,00, z=-760,72], EntitySlime['Slime'/50813, l='MpServer', x=52,59, y=4,85, z=-756,81]]
    Retry entities: 0 total; []
    Server brand: fml,forge
    Server type: Integrated singleplayer server
Stacktrace:
    at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
    at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2555)
    at net.minecraft.client.Minecraft.run(Minecraft.java:980)
    at net.minecraft.client.main.Main.main(Main.java:164)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)

-- System Details --
Details:
    Minecraft Version: 1.7.10
    Operating System: Windows 7 (x86) version 6.1
    Java Version: 1.8.0_45, Oracle Corporation
    Java VM Version: Java HotSpot(TM) Client VM (mixed mode), Oracle Corporation
    Memory: 963982920 bytes (919 MB) / 1060372480 bytes (1011 MB) up to 1060372480 bytes (1011 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP v9.05 FML v7.10.85.1291 Minecraft Forge 10.13.2.1291 4 mods loaded, 4 mods active
    mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available->Available->Available->Available->Available
    FML{7.10.85.1291} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available->Available->Available->Available->Available
    Forge{10.13.2.1291} [Minecraft Forge] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available->Available->Available->Available->Available
    mymod{1.0} [My Mod] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available->Available->Available->Available->Available
    Launched Version: 1.7.10
    LWJGL: 2.9.1
    OpenGL: ATI Mobility Radeon HD 4570         GL version 2.1.8787, ATI Technologies Inc.
    GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because ARB_framebuffer_object is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

    Is Modded: Definitely; Client brand changed to 'fml,forge'
    Type: Client (map_client.txt)
    Resource Packs: []
    Current Language: English (US)
    Profiler Position: N/A (disabled)
    Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    Anisotropic Filtering: Off (1)
 
Хей, хо, лалалей, я твой код фейспалмей. Как можно писать такую чушь вообще?

Держи критику:
1) Причина твоего краша.
kiss_3kb.1432547369.png

Так делать нельзя вообще. Иди читай основы. Если объект stackTagCompound будет отсутствовать в itemStack'е - тебе выдаст как раз краш, ибо ты далее обращаешься к полям НЕСУЩЕСТВУЮЩЕГО объекта. Всё максимум логично.
Решение: надо добавлять проверку на нулл.

2) Кто такие условия пишет вообще? С логикой проблемы. Атата.
kiss_4kb.1432547467.png

Читаю: если есть предмет в руке И его тип - билет И его НБТ существует И число из НБТ равно 0, в это же время оно равно 111, 222, 333, 444, 555, 666, 888, 999.
Ты там комплексные числа используешь? Нет. А ни одно число на множестве действительных не может удовлетворять твоему условию.

3) Твой цикл НИКОГДА не закончится.
kiss_2kb.1432547694.png

Сначала i будет 0, потом -1, потом -2... и так далее, оно всегда будет удовлетворять условию и цикл уйдет в ебеня далекие края, пока не дойдет до INTEGER_MIN, а это очень далеко.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху