Evert
Members-
Posts
25 -
Joined
-
Last visited
Converted
-
Gender
Male
-
URL
http://powerbeat.org/minecraft/
-
Location
Netherlands
-
Personal Text
I am new!
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
Evert's Achievements
Tree Puncher (2/8)
3
Reputation
-
Like i wrote before. It works, but when items are dropped from the inventory screen, they seem to disappear for a while, but they're not really lost. They reappear after some other action with the inventory or a reconnect. Since mc 1.4.6, I had to change one line: ItemStack itemStack = event.entityItem.func_92014_d();
-
I belief this is a problem that can only be solved with cooperation of the developers of the mods that provide those machines and/or the Forge team. I've tried to find a way to protect against this for my own mod (Chunk Protection) and haven't been able to do so. There has been no response from the machine mod developers. It were those mods that I would like to combine my/a protection mod with, so now I'm seriously considering stopping the project, because a server without those mods can be protected fine already with a Bukkit server.
-
As far as I know, none of the mods/plugins that do protect against stealing/destructing by players directly, can protect against those players abusing machines to do the grieving for them. It can be very frustrating for players and server owners to see their creations being destructed or stolen from. And then not even be able to find out who did it. Server owners now choose to disable (parts of) mods that are great to play with, but that are being abused by a minority. It would be very helpful if there were some sort of standard within Forge that mods would have to use to alter the world, so protection mods can detect which mod/player combination is at work here and use that for logging or permissions. My suggestion is to let mods alter the world through a fake player, that has a name that combines the names of the mod and the player that controls that machine. For example. If I would use a ComputerCraft Mining Turtle to break blocks, it would call PlayerInteractEvent with as fake playername [computercraft]evert79 This way, a mod that makes a log, could save that information and if I abuse the turtle to destroy something that is build by an other player, the server admins could find it and ban me from the server. Or a mod that offers protection could stop the turtle from breaking in an area where the fake player doesn't have explicit permission.
-
I installed a test server with BukkitForge, Factions plugin and ComputerCraft mod. Factions seems to work fine (did very little testing). A piece of land claimed by one player couldn't be destroyed or build upon by other players. But if an other player made a ComputerCraft turtle, they could use that to break blocks in the protected area.
-
In the Events API A small thing: In META-INF/MANIFEST.MF keepcalm.mods.blockbreak.asm.BlockBreakLoadingPlugin should be keepcalm.mods.events.asm.BlockBreakLoadingPlugin like it is in BlockBreakNin.jar and a bigger problem (for me it is) After adding mcp.properties and obf.properties to the src/minecraft folder and changing some of the variables in ItemInWorldManager.java from private to public, it works when running from Eclipse. After recompile and reobfuscate, there is now the file "ir.class" in the minecraft folder. I can add this to the coremod .jar file, but it doesn't seem to be loaded. It gives this error when trying to break a block:
-
I am trying to get this fixed by using the Events API that keepcalm extracted from the BukkitForge project, but as of now, I can't get it to work.
-
Thank you for the Events API, but I can't get it to work. I tried it with a fresh MC146, MCP725, Forge489 and BlockBreak source downloaded on 2012-01-15. Eclipse gives a few problems in keepkalm.mods.events ForgeEventHelper.java, but it still compiles. import org.bukkit.Bukkit; --- remove unused import --- public static boolean onBlockDamage(ItemInWorldManager man) { // mcp has ridiculously long names if (man.curblockDamage % 2 == 1) { return false; } PlayerDamageBlockEvent ev = new PlayerDamageBlockEvent(man.thisPlayerMP, man.partiallyDestroyedBlockX, man.partiallyDestroyedBlockY, man.partiallyDestroyedBlockZ, man.theWorld, man.curblockDamage, man.durabilityRemainingOnBlock); MinecraftForge.EVENT_BUS.post(ev); if (ev.isCanceled()) { return true; } return false; } --- with man.xyz, change visibility of xyz to public --- Without the BlockBreakNin.jar in the coremods folder, it runs, but doesn't work. With the jar in the folder it gives a runtime error: 2013-01-16 09:49:10 [iNFO] [ForgeModLoader] Forge Mod Loader version 4.6.17.515 for Minecraft 1.4.6 loading 2013-01-16 09:49:11 [iNFO] [sTDERR] Exception in thread "main" java.lang.RuntimeException: java.lang.ExceptionInInitializerError 2013-01-16 09:49:11 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.FMLRelauncher.setupHome(FMLRelauncher.java:175) 2013-01-16 09:49:11 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.FMLRelauncher.relaunchServer(FMLRelauncher.java:133) 2013-01-16 09:49:11 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.FMLRelauncher.handleServerRelaunch(FMLRelauncher.java:33) 2013-01-16 09:49:11 [iNFO] [sTDERR] at net.minecraft.server.MinecraftServer.main(MinecraftServer.java:1375) 2013-01-16 09:49:11 [iNFO] [sTDERR] Caused by: java.lang.ExceptionInInitializerError 2013-01-16 09:49:11 [iNFO] [sTDERR] at keepcalm.mods.events.asm.transformers.events.BlockEventHelpers.<init>(BlockEventHelpers.java:37) 2013-01-16 09:49:11 [iNFO] [sTDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2013-01-16 09:49:11 [iNFO] [sTDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 2013-01-16 09:49:11 [iNFO] [sTDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 2013-01-16 09:49:11 [iNFO] [sTDERR] at java.lang.reflect.Constructor.newInstance(Unknown Source) 2013-01-16 09:49:11 [iNFO] [sTDERR] at java.lang.Class.newInstance0(Unknown Source) 2013-01-16 09:49:11 [iNFO] [sTDERR] at java.lang.Class.newInstance(Unknown Source) 2013-01-16 09:49:11 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.RelaunchClassLoader.registerTransformer(RelaunchClassLoader.java:75) 2013-01-16 09:49:11 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.RelaunchLibraryManager.handleLaunch(RelaunchLibraryManager.java:238) 2013-01-16 09:49:11 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.FMLRelauncher.setupHome(FMLRelauncher.java:155) 2013-01-16 09:49:11 [iNFO] [sTDERR] ... 3 more 2013-01-16 09:49:11 [iNFO] [sTDERR] Caused by: java.lang.NullPointerException 2013-01-16 09:49:11 [iNFO] [sTDERR] at java.util.Properties$LineReader.readLine(Unknown Source) 2013-01-16 09:49:11 [iNFO] [sTDERR] at java.util.Properties.load0(Unknown Source) 2013-01-16 09:49:11 [iNFO] [sTDERR] at java.util.Properties.load(Unknown Source) 2013-01-16 09:49:11 [iNFO] [sTDERR] at keepcalm.mods.events.asm.transformers.events.ObfuscationHelper.<clinit>(ObfuscationHelper.java:140) 2013-01-16 09:49:11 [iNFO] [sTDERR] ... 13 more
-
I will look into changing that so the player can't die until logged in. Thanks
-
My mod would only use BlockDestroyEvent and PlayerBucketEmptyEvent. If possible, a small API, like the BlockBreakEvent, would be great, otherwise I could try to use the whole BukkitForge as dependency. Anyway, thanks for your replies and the mods/APIs
-
I successfully integrated the BlockBreakEvent mod into my mod, but it only triggers when a player breaks a block, but not when a ComputerCraft turtle does. Is this right? I would like my mod to detect when a block is broken by a turtle or any other mod machine, and to be able to cancel it, if that mod or a specific machine doesn't have permission. My mod, Chunk Protection, lets players claim a private chunk on a server, where other players can't build or break. An important thing that in still missing from my mod is that it lets machines still break things, so grievers can bypass the protection.
-
For server-side mods that protect blocks or regions so a player can own or claim something that others can't build on, break, enter or steal from. It is easy to protect from direct player interaction, by using @ForgeSubscribe with PlayerInteractEvent, but unfortunately this doesn't detect when a block is placed or broken by a quarry, mining laser or turtle. I get a lot of request to add protection against machines to the Chunk Protection mod, but at this point that doesn't seem possible. If there already is a way to do this, please let me know. I've seen mods having 'fake players' before, but i guess that was added with Bukkit ports, because I can't find it anymore in the mods configuration files.
-
The only thing I can think of here, is that you may have Power Login installed as well. Then you have to register and login before you can use any commands. Or do you have any other mods installed that add something with permissions?
-
Block Break Event Would this work to notify my mod that a block is broken by a creeper or IC2 mining laser? Does your code need to run on the client side as well, because I'm making a server side only mod? I tried to use this in my mod for Chunk Protection, but it doesn't seem to work. I tried placing your source code "keepcalm\mods\blockbreak" in "src\common" or "src\minecraft" There are no error messages. This was the first time I tried to use outside code with my own mod, so I may be missing something. public class ProtectEventHookContainer { @ForgeSubscribe public void blockBreak(BlockBreakEvent event) { event.player.sendChatToPlayer("Block Event Test"); } } And in the main mod: @Init public void init(FMLInitializationEvent event) { MinecraftForge.EVENT_BUS.register(new ProtectEventHookContainer()); } There are other event handling methods in that EventContainer that do work.
-
It gets automatically generated when the mod is started the first time. Only ChunkProtection makes a file, "powertools_chunkprotection.cfg". It is in the "config" folder.