Ricky_Kim f8e47150bfe44d8695eca6ad48f4e552
이해도 | 1.16 |
---|---|
게임버전 (JE) | 스피곳 |
게임버전 (BE) | Skript |
스크립트 애드온 | 2.5.3 |
스크립트 들을 정리해서 인벤토리 겹침이나 다른 모든 현상은 수정 완료했습니다. 다만 오늘 서버 베타 테스트 도중 "허스크 던전 이동 주문서" 및 이동에 관련된 아이템들을 사용시에 서버 버킷이 강제로 종료되는 현상이 발생했습니다. 초반에 테스트 할때는 멀쩡히 잘 작동하였는데 무슨 영문인지 모르겠습니다.. 도와주세요ㅠ..
밑은 버킷에 올라온 오류 입니다.
[03:27:25] [Server thread/ERROR]: Encountered an unexpected exception
java.lang.AssertionError: TRAP
at net.minecraft.server.v1_16_R3.ItemStack.checkEmpty(ItemStack.java:99) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.ItemStack.setCount(ItemStack.java:890) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.PlayerInteractManager.a(PlayerInteractManager.java:407) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1425) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:28) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(SourceFile:144) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(SourceFile:118) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:942) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:935) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:919) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:851) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot-1.16.5.jar:3016-Spigot-73fb609-ea050e6]
at java.lang.Thread.run(Thread.java:832) [?:?]
[03:27:25] [Server thread/ERROR]: This crash report has been saved to: C:\Users\RICKY\Desktop\두견\1.16.5대규모 전용 - 복사본\.\crash-reports\crash-2021-03-12_03.27.25-server.txt
[03:27:25] [Server thread/INFO]: Stopping server
이 밑은 스크립트에 사용한 구문입니다.
command /husk1:
trigger:
if player is op:
give diamond named "&b&l[허스크 던전 이동 주문서]" to player
on rightclick:
if name of player's tool is "&b&l[허스크 던전 이동 주문서]":
teleport player to location at 504.21, 32, -234.93 in world "world"
remove 1 of player's tool from player's tool
stop
command /야생주문서5:
trigger:
if player is op:
give paper named "&b&l[5분 야생 이용권]" to player
on rightclick:
if name of player's tool is "&b&l[5분 야생 이용권]":
execute player command "tp @s 0 66 0"
remove 1 of player's tool from player's tool
stop
command /야생주문서10:
trigger:
if player is op:
give paper named "&b&l[10분 야생 이용권]" to player
on rightclick:
if name of player's tool is "&b&l[10분 야생 이용권]":
execute player command "tp @s 0 66 0"
remove 1 of player's tool from player's tool
stop
command /야생주문서15:
trigger:
if player is op:
give paper named "&b&l[15분 야생 이용권]" to player
on rightclick:
if name of player's tool is "&b&l[15분 야생 이용권]":
execute player command "tp @s 0 66 0"
remove 1 of player's tool from player's tool
stop
혹시나 하여 크래쉬 리포트 또한 첨부합니다..
crash-2021-03-12_03.27.25-server.txt
도와주실수 있는분들 꼭 도와주세요 ㅠㅜ
무슨 문제인지 모르겠습니다..
이하님
2021.03.12on rightclick Event에 Cancel Event 를 넣어보세요.
준너
2021.03.12cancel event 가 맞는것 같습니다!! 혹시 cancel event 라는 구문이 정확히 무슨 일을 하는 친구인지 알려주실수 있을까요??
도와주셔서 정말 감사합니다!!
10thousandoo
2021.03.13cancel event란 그 동작을 취소하는 행위입니다
준너
2021.03.14네..그건 압니다만...ㅎㅎ 어쨋든 감사합니다~
스크립터브혼
2021.03.12이 오류는 블록이 변경될 때 공기로 변경되는 경우에 발생합니다.
공기는 블록과 달리 설치하거나 부수거나 할 수 없기 때문에 블록을 공기로 바꾸려하면 오류가 발생합니다.
정확히 따지면 블록을 공기로 바꾸는 것이 아니라 블록을 제거하거나 부수는 것이죠.
이 오류를 정확히 이해하기 위해서는 이벤트의 동작순서에 대한 이해가 필요합니다.
먼저 on click 이벤트는 모든 상호작용에 있어서 가장 먼저 동작하는 이벤트입니다.
예를들어, 먹기, 쏘기, 설치하기 등의 행위는 on eat, on shoot, on place 등의 이벤트와 매칭되는데
모두 클릭을 해서 동작하기 때문에 on click 이벤트가 먼저 동작하고 그 뒤에 행위에 따른 이벤트가 동작합니다.
on click 이벤트에서 손에 든 아이템을 공기(빈 슬롯)으로 만들어버린다면
후에 동작하는 on place 이벤트에서 공기를 설치하는 행위를 하게 되므로 오류가 발생하게 됩니다.
> remove 1 of player's tool from player's tool
이 코드로 인해 손이 비워지게 되면 오류가 발생하는 것이죠.
오류 내용을 보시면 설명해드린 내용을 유추하실 수 있습니다.
> PacketPlayInBlockPlace : 설치 행위가 일어남
> ItemStack.checkEmpty : 아이템이 비었는지 확인함
준너
2021.03.14아하 그러면 행위/행동을 특정한 다음에는 cancel event 를 사용해서 그 행위를 지운 상태로 만들어야하는거군요??