Решено CreativeControl (серъёзный баг)

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

Uran

Старожил
Баллы
103
Имя в Minecraft
Uran
Всем доброго времени суток! Думаю, что многие знают такой плагин как CreativeControl (CC). Плагин действительно хорош и при грамотной настройке позволяет полностью исключить возможность вытаскивания вещи из креатива, но это только на классическом сервере, то есть без каких-либо модов. Я конечно понимаю, что разработчик никак не планировал сделать этот плагин для модов, но тем не менее, я хочу попытаться исправить один серьёзный баг. В общем, как вы знаете в режиме креатив нельзя окрывать верстаки, печи, сундуки и т. д.., чтобы нельзя было открыть вещи из модов (к примеру приборы из IndustrialCraft), то достаточно прописывать их id'шники в world.yml, в "ItemUse:". Но вот недавно я нашёл способ, с помощью которого конечно нельзя вытащить предметы из креатива, но зато с помощью него можно клонировать (дюпить) вещи/предметы/блоки. Фишка в том, что игрок открывая какой-либо предмет (верстак, печь, сундук, воронку и т.д..) не может ввести команду и само-собой не сможет ввести: /gamemode 1, но вот в таком моде как TMI (TooManyItems) или NEI (NotEnoughItems), есть кнопка включения креатива и естественно игрок залезая в какой-либо предмет сможет включить креатив. По началу кажется, что всё нормально, т.к. если даже игрок залезет в печь, сундук, воронку, вагонетку с сундуком, сундук Края, воронку и т. д.., то при включении креатива - предмет автоматически закроется, но ни тут то было, если залезть в какой-либо предмет из мода (к примеру: прибор из IndustrialCraft, сейф из IndustrialCraft и т.д..), то данный предмет не закроется, а так, как инвентарь выживания парой переходит в креатив инвентарь (не всегда, но часто), то допустим у вас в инвентаре в режиме выживания было 4 алмазных блока, естественно вы заходите в предмет из мода и включаете креатив через кнопку в TMI или NEI, предмет не закрывается и вы эти 4 алмазных блока перекидываете в предмет. после закрываете его, выключаете креатив, естественно у вас вас отстаются эти 4 алмазных блока и в добавок вы берёте те, которые выложили из креатива в предмет, в итоге у вас 8 алмазных блоков. Ктсати, когда игрок заходит в предмет из мода и включает креатив через кнопку, то есть находясь в этом предмете, то в консоли появляется следующая ошибка:
2013-09-13 14:54:52 [INFO] PlayerOne issued server command: /gamemode 1 PlayerOne
2013-09-13 14:54:52 [SEVERE] Could not pass event PlayerGameModeChangeEvent to CreativeControl v6.3
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:363)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:31)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:464)
at org.bukkit.craftbukkit.v1_5_R3.entity.CraftPlayer.setGameMode(CraftPlayer.java:558)
at com.earth2me.essentials.PlayerExtension.setGameMode(PlayerExtension.java)
at com.earth2me.essentials.commands.Commandgamemode.run(Commandgamemode.java:75)
at com.earth2me.essentials.commands.EssentialsCommand.run(EssentialsCommand.java:96)
at com.earth2me.essentials.Essentials.onCommandEssentials(Essentials.java:423)
at com.earth2me.essentials.Essentials.onCommand(Essentials.java:319)
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchCommand(CraftServer.java:568)
at net.minecraft.network.NetServerHandler.func_72566_d(NetServerHandler.java:1389)
at net.minecraft.network.NetServerHandler.chat(NetServerHandler.java:1249)
at net.minecraft.network.NetServerHandler.func_72481_a(NetServerHandler.java:1175)
at net.minecraft.network.packet.Packet3Chat.func_73279_a(Packet3Chat.java:60)
at net.minecraft.network.TcpConnection.func_74428_b(TcpConnection.java:442)
at net.minecraft.network.NetServerHandler.func_72570_d(NetServerHandler.java:222)
at net.minecraft.network.NetworkListenThread.func_71747_b(NetworkListenThread.java:53)
at net.minecraft.server.dedicated.DedicatedServerListenThread.func_71747_b(SourceFile:30)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:847)
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:320)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:716)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:600)
at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573)
Caused by: java.lang.NullPointerException
at me.FurH.CreativeControl.listener.CreativePlayerListener.onPlayerGameModeChange(CreativePlayerListener.java:114)
at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:361)
... 26 more

С одной стороны, можно удалить TooManyItems или NotEnoughItems, но это не рационально, т.к. игроки сами будут устанавливать.
В общем, как это исправить?

P.S Полазил по этому форуму - в итоге ничего не нашёл, полазил по иностранным форумам, также ничего не нашёл, в оф. теме - тоже нет никаких упоминаний об этом.
P.S.S Если что, версия сервера 1.5.2, ядро MCPC+ (Recommended), версия CreativeControl 6.3 (самая последняя для 1.5.2, пробовал и другие, но толку нет).
 
Переписывать не надо, достаточно найти исходники CreativeControl, либо декомпилировать и кое-что подправить в коде. Вопрос только что?

Вот, нашёл исходники (source).
Нужно править н только плагин но и моды, чтобы они для инвентаря блок овнер возвращали.
 
По крайней мере как для Industrial Craft 2 if 1.117?
Ищещь класс который отвечает за инвентарь и правишь его, точнее сказать не могу, я с модами не работаю.
И поставь ваулт, на его отсутствие он тоже ругается.
 
Как то вы не правильно юзаете этот плагин. Там когда предмет запрещен его даже не открыть. А на счет смены креатива, юзайте таблички esentials и все.
 
Как то вы не правильно юзаете этот плагин. Там когда предмет запрещен его даже не открыть. А на счет смены креатива, юзайте таблички esentials и все.
Внимательнее читайте, я всё подробно описал.


Самое лёгкое решние: нафиг моды! даёшь споуткрафт!
Spout использовать не собирался и не собираюсь.

Так и не нашёл в IC2 .class, который отвечает за инвентарь.
 
@Uran, Я юзал этот плагин, у меня gui сундуков-техники совсем не открывалось в креативе. А режим игры менялся на табличках essentials (Режим игры никак нельзя было сменить не заюзав табличку на спавне). И там никак нельзя было дюпать или помещать предмет в сундуки-технику.
 
@Uran, Я юзал этот плагин, у меня gui сундуков-техники совсем не открывалось в креативе. А режим игры менялся на табличках essentials (Режим игры никак нельзя было сменить не заюзав табличку на спавне). И там никак нельзя было дюпать или помещать предмет в сундуки-технику.

Я же сказал - читайте внимательнее. Вкратце: Чтобы нельзя было открывать прибор, нужно прописать его id в "ItemUse:". Но способ есть - выключаете креатив, заходите в прибор, в TMI или NEI тыкайте на кнопку включения креатива (в левом верхнем углу) и вуаля - креатив включился и вы остались в GUI прибора (ну или любого другого предмета).
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх