Will there be a feature to control dropping of specific items soon?
What do you mean by dropping? Players dropping items out of their inventory, mobs dropping items when they die or blocks dropping items when they get destroyed?
ah sorry for not being specific there. I meant it as players dropping items out of their inventory. If possible, also make it so if a chest has that certain item inside it canât be broken? Generally we have badges in the server which shouldnât be passed around.
It should be possible somehow to deny players dropping items out of their inventory. But what if the player dies?
Also I played a bit around with chests and the data api and found at that itâs currently not possible to match the contents of a chest by matching the nbt tags. Instead you have to use the TileEntity api, which does not suit ActionControl.
For such a specific problem, I would suggest looking for someone who writes a custom plugin for you.
Ahh see, we do have keepInventory enabled though, but the chest part doesnât seem possible right now. Thanks for considering the idea
If I understand this plugin correctly, maybe you could add an action control for when a player dies?
Like in LOZ when Link dies it plays a silly midi death sound. So for this when a player dies it will execute a sound command to the player who dies.
Also a few other options:
When a player earns xp
when a player earns an achievement
I think these things are out of the scope of ActionControl.
ActionControl will only handle events that are
- Initiated by a player (An action performed by a player)
- Cancellable and completely resettable (e.g. breaking a block can completely reverted if you want but earning an achievement or similar things canât)
It would be better to use a separate plugin for this but I donât know if there is already a plugin lets you react to all kinds of events like players dying or earning xp.
I tried to illustrate this report.
The first has been good.
pokeball has been applied to others doeeoteoyo not apply.
But later it was applied afterwards even pokeball.
Whatâs the problem?
craft {
filter {
result = "{'type': 'pixelmon:item.Poke_Ball'}"
},
response {
match = "deny"
}
},
craft {
filter {
result = "{'type': 'pixelmon:RubyAxe'}"
},
response {
match = "deny"
}
},
craft {
filter {
result = "{'type': 'minecraft:ender_chest'}"
},
response {
match = "deny"
}
},
craft {
filter {
result = "{'type': 'minecraft:ender_table'}"
},
response {
match = "deny"
}
},
craft {
filter {
result = "{'type': 'minecraft:anvil'}"
},
response {
match = "deny"
}
},
craft {
filter {
result = "{'type': 'pixelmon:item.Healer'}"
},
response {
match = "deny"
}
},
craft {
filter {
result = "{'type': 'pixelmon:item.Ranch_Block'}"
},
response {
match = "deny"
}
},
craft {
filter {
result = "{'type': 'pixelmon:item.Cloning_Machine'}"
},
response {
match = "deny"
}
},
craft {
filter {
result = "{'type': 'pixelmon:item.MechanicalAnvil'}"
},
response {
match = "deny"
}
},
You canât declare multiple craft rules. Instead you have to put everything inside one craft rule.
You can furthremore use | as an or conjuntion to shorten your config:
craft {
filter {
result = "{'type': 'pixelmon:item.Poke_Ball' | 'pixelmon:RubyAxe' | 'minecraft:ender_chest'}"
},
response {
match = "deny"
}
}
I just realized that the Ore page including the documentation got deleted. I will try to fix that as fast as possible but since I didnât back it up, I have to manually convert the docs to Markdown again âŚ
Hey @milchshakee You can get to your documentation here: http://actioncontrol.readthedocs.io/introduction.html#installation
Second thing I wanted to ask. I used your plugin and its awesome. Very helpful for my server, however I had a player discover a bug. When they attempt to craft it they cannot do so by pulling it out of the crafting table, BUT if they go to craft it and the recipe is completed and they click drop button it will still create the item even if the crafting is denied.
Hereâs a picture of whats happening: Screen capture - 02d9019024663d14f32766c91234c929 - Gyazo
I know that the doc is hosted there, but itâs written in another markup language and a little bit outdated since I only updated the Ore docs. (Yeah I know, I should have made some backups )
It didnât even know it was possible to drop an item out of an inventory like this, maybe I should play more Minecraft instead of making plugins .
I will try a find a way to fix that.
Haha All good I wasnt entirely sure myself until a player of mine reported it as a bug. Thanks for the great plugin it definitely has stopped quite a bit of my economy issues on my server!
The Ore page including the documentation is up again.
Not seeing the permissions in the documentation.
A case of nub-blindness or are they just not there?
ActionControl does not use permissions the same way as other plugins do. Instead, you create a player filter in each configuration file that specifies on which players the rules in that file should be applied on.
The player filters can check if a player has a specific permission, but they can check for much more if you want.
The Small RPG system example in the documentation shows you how to match players without a specific permission, which is basically what you are looking for.
The only real permission that is used by ActionControl is actioncontrol.reload, which allows you to reload the configuration file(s).
The only way to fix this right now is by disabling dropping items like this entirely. The new version 1.0.6 does exactly this.
I can fix this bug completely when the Sponge Inventory API is completely implemented, but I donât know when this will be the case.
@Michshakee Alright I can work with that xD Thanks again for your great work! Will this plugin work for 1.10 currently? Or is it not yet updated to API 5?
I will start updating ActionControl when a stable Sponge build for 1.10 is released.
[19:13:47] [Server thread/INFO] [io.github.hsyyid.essentialcmds]: [RodaMeo] executed command actioncontrol reload
[19:13:47] [Server thread/ERROR] [org.monospark.actioncontrol]: An error occured while loading a config file.
java.io.IOException: Invalid matcher: {'type': 'minecraft:ender_chest' | 'minecraft:ender_table' | 'minecraft:anvil' | 'minecraft:piston' | 'minecraft:sticky_piston' | 'minecraft:tnt' | 'minecraft:end_portal_frame' | 'minecraft:hopper' | 'minecraft:brewing_stand' | 'minecraft:dispenser' | 'minecraft:dropper' | 'minecraft:beacon' | 'minecraft:golden_apple' | 'pixelmon:item.Healer' | 'pixelmon:item.Ranch_Block' | 'pixelmon:item.Cloning_Machine' | 'pixelmon:item.MechanicalAnvil' | 'pixelmon:item.PC' | 'pixelmon:item.Trade_Machine' | 'pixelmon:item.itemFinder | 'pixelmon:item.Uno_Orb' | 'pixelmon:item.Dos_Orb' | 'pixelmon:item.Tres_Orb' | 'pixelmon:item.Rare_Candy' | 'pixelmon:item.Ever_Ston' | 'pixelmon:item.Lucky_Egg' | 'pixelmon:item.Macho_Brace' | 'pixelmon:item.MuscleBand' | 'pixelmon:item.Soothe_Bell' | 'pixelmon:item.Smoke_Ball' | 'pixelmon:item.WideLens' | 'pixelmon:item.Leftovers' | 'pixelmon:item.Shell_ball' | 'pixelmon:item.Call_Battery' | 'pixelmon:item.Metronome' | 'pixelmon:item.Metal_Coat' | 'pixelmon:item.Dubious_Disc' | 'pixelmon:item.Electirizer' | 'pixelmon:item.Magmarizer' | 'pixelmon:item.King's_Rock' | 'pixelmon:item.Protector' | 'pixelmon:item.UP-Grade' | 'pixelmon:item.Razor_Fang' | 'pixelmon:item.Dragon_Scale' | 'pixelmon:item.Life_Orb' | 'pixelmon:item.RazorClaw' | 'pixelmon:item.FocusSash' | 'pixelmon:item.FocusBand' | 'pixelmon:item.ScopeLens' | 'pixelmon:item.AirBalloon' | 'pixelmon:item.RockyHelmet' | 'pixelmon:item.ShedShell' | 'pixelmon:item.DampRock' | 'pixelmon:item.HeatRock' | 'pixelmon:item.IcyRock' | 'pixelmon:item.SmoothRock' | 'pixelmon:item.Eviolite' | 'pixelmon:item.LightBall' | 'pixelmon:item.LuckyPunch' | 'pixelmon:item.MetalPower' | 'pixelmon:item.RedCard' | 'pixelmon:item.ExpertBelt' | 'pixelmon:item.LightClay' | 'pixelmon:item.StickyBarb' | 'pixelmon:item.BlackBelt' | 'pixelmon:item.BlackGlasses' | 'pixelmon:item.Charcoal' | 'pixelmon:item.HardStone' | 'pixelmon:item.MiracleSeed' | 'pixelmon:item.MysticWater' | 'pixelmon:item.NeverMeltIce' | 'pixelmon:item.PosisonBarb' | 'pixelmon:item.SharpBeak' | 'pixelmon:item.SilkScarf' | 'pixelmon:item.SilverPowder' | 'pixelmon:item.SoftSand' | 'pixelmon:item.SpellTag' | 'pixelmon:item.TwistedSpoon' | 'pixelmon:item.Magnet' | 'pixelmon:item.ToxicOrb' | 'pixelmon:item.FlameOrb' | 'pixelmon:item.destinyKnot' | 'pixelmon:item.BlackSludge' | 'pixelmon:FirestoneSword' | 'pixelmon:FirestoneHammer' | 'pixelmon:FirestoneAxe' | 'pixelmon:FirestoneHoe' | 'pixelmon:FirestonePickaxe' | 'pixelmon:FirestoneShovel' | 'pixelmon:WaterstoneSword' | 'pixelmon:WaterstoneHammer' | 'pixelmon:WaterstoneAxe' | 'pixelmon:WaterstoneHoe' | 'pixelmon:WaterstonePickaxe' | 'pixelmon:WaterstoneShovel' | 'pixelmon:LeafstoneSword' | 'pixelmon:LeafstoneHammer' | 'pixelmon:LeafstoneAxe' | 'pixelmon:LeafstonePickaxe' | 'pixelmon:LeafstoneHoe' | 'pixelmon:LeafstoneShovel' | 'pixelmon:ThunderstoneSword' | 'pixelmon:ThunderstoneHammer' | 'pixelmon:ThunderstoneAxe' | 'pixelmon:ThunderstoneHoe' | 'pixelmon:ThunderstonePickaxe' | 'pixelmon:ThunderstoneShovel' | 'pixelmon:SunstoneSword' | 'pixelmon:SunstoneHammer' | 'pixelmon:SunstoneAxe' | 'pixelmon:SunstoneHoe' | 'pixelmon:SunstonePickaxe' | 'pixelmon:SunstoneShovel' | 'pixelmon:MoonstoneSword' | 'pixelmon:MoonstoneHammer' | 'pixelmon:MoonstoneAxe' | 'pixelmon:MoonstoneHoe' | 'pixelmon:MoonstonePickaxe' | 'pixelmon:MoonstoneShovel' | 'pixelmon:DrawnstoneSword' | 'pixelmon:DrawnstoneHammer' | 'pixelmon:DrawnstoneAxe' | 'pixelmon:DrawnstoneHoe' | 'pixelmon:DrawnstonePickaxe' | 'pixelmon:DrawnstoneShovel' | 'pixelmon:DuskstoneSword' | 'pixelmon:DuskstoneHammer' | 'pixelmon:DuskstoneAxe' | 'pixelmon:DuskstoneHoe' | 'pixelmon:DuskstonePickaxe' | 'pixelmon:DuskstoneShovel'}
at org.monospark.actioncontrol.rule.ActionSettings$Deserializer.deserializeFilter(ActionSettings.java:178) ~[ActionSettings$Deserializer.class:?]
at org.monospark.actioncontrol.rule.ActionSettings$Deserializer.deserializeFilters(ActionSettings.java:131) ~[ActionSettings$Deserializer.class:?]
at org.monospark.actioncontrol.rule.ActionSettings$Deserializer.deserialize(ActionSettings.java:89) ~[ActionSettings$Deserializer.class:?]
at org.monospark.actioncontrol.rule.ActionRule.deserializeSettings(ActionRule.java:102) ~[ActionRule.class:?]
at org.monospark.actioncontrol.config.ConfigParser.deserializeActionRules(ConfigParser.java:115) ~[ConfigParser.class:?]
at org.monospark.actioncontrol.config.ConfigParser.deserializeConfig(ConfigParser.java:98) ~[ConfigParser.class:?]
at org.monospark.actioncontrol.config.ConfigParser.parseConfig(ConfigParser.java:69) ~[ConfigParser.class:?]
at org.monospark.actioncontrol.config.ConfigParser.loadConfigs(ConfigParser.java:44) ~[ConfigParser.class:?]
at org.monospark.actioncontrol.config.ConfigRegistry.loadConfigs(ConfigRegistry.java:23) ~[ConfigRegistry.class:?]
at org.monospark.actioncontrol.ActionControl.loadConfigs(ActionControl.java:97) [ActionControl.class:?]
at org.monospark.actioncontrol.ActionControl.access$000(ActionControl.java:32) [ActionControl.class:?]
at org.monospark.actioncontrol.ActionControl$1.execute(ActionControl.java:74) [ActionControl$1.class:?]
at org.spongepowered.api.command.args.ChildCommandElementExecutor.execute(ChildCommandElementExecutor.java:177) [ChildCommandElementExecutor.class:1.8.9-1890-4.2.0-BETA-1490]
at org.spongepowered.api.command.spec.CommandSpec.process(CommandSpec.java:331) [CommandSpec.class:1.8.9-1890-4.2.0-BETA-1490]
at org.spongepowered.api.command.dispatcher.SimpleDispatcher.process(SimpleDispatcher.java:331) [SimpleDispatcher.class:1.8.9-1890-4.2.0-BETA-1490]
at org.spongepowered.common.command.SpongeCommandManager.process(SpongeCommandManager.java:269) [SpongeCommandManager.class:1.8.9-1890-4.2.0-BETA-1490]
at net.minecraft.command.ServerCommandManager.func_71556_a(SourceFile:80) [bd.class:?]
at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:815) [lm.class:?]
at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:794) [lm.class:?]
at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(SourceFile:37) [ie.class:?]
at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(SourceFile:9) [ie.class:?]
at org.spongepowered.common.network.PacketUtil.onProcessPacket(PacketUtil.java:119) [PacketUtil.class:1.8.9-1890-4.2.0-BETA-1490]
at net.minecraft.network.PacketThreadUtil$1.redirect$onProcessPacket$0(SourceFile:39) [fh$1.class:?]
at net.minecraft.network.PacketThreadUtil$1.run(SourceFile:13) [fh$1.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_91]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_91]
at net.minecraft.util.Util.func_181617_a(SourceFile:44) [g.class:?]
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:660) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:344) [ko.class:?]
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:605) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:481) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_91]
Caused by: org.monospark.spongematchers.parser.SpongeMatcherParseException: Invalid input string: {'type': 'minecraft:ender_chest' | 'minecraft:ender_table' | 'minecraft:anvil' | 'minecraft:piston' | 'minecraft:sticky_piston' | 'minecraft:tnt' | 'minecraft:end_portal_frame' | 'minecraft:hopper' | 'minecraft:brewing_stand' | 'minecraft:dispenser' | 'minecraft:dropper' | 'minecraft:beacon' | 'minecraft:golden_apple' | 'pixelmon:item.Healer' | 'pixelmon:item.Ranch_Block' | 'pixelmon:item.Cloning_Machine' | 'pixelmon:item.MechanicalAnvil' | 'pixelmon:item.PC' | 'pixelmon:item.Trade_Machine' | 'pixelmon:item.itemFinder | 'pixelmon:item.Uno_Orb' | 'pixelmon:item.Dos_Orb' | 'pixelmon:item.Tres_Orb' | 'pixelmon:item.Rare_Candy' | 'pixelmon:item.Ever_Ston' | 'pixelmon:item.Lucky_Egg' | 'pixelmon:item.Macho_Brace' | 'pixelmon:item.MuscleBand' | 'pixelmon:item.Soothe_Bell' | 'pixelmon:item.Smoke_Ball' | 'pixelmon:item.WideLens' | 'pixelmon:item.Leftovers' | 'pixelmon:item.Shell_ball' | 'pixelmon:item.Call_Battery' | 'pixelmon:item.Metronome' | 'pixelmon:item.Metal_Coat' | 'pixelmon:item.Dubious_Disc' | 'pixelmon:item.Electirizer' | 'pixelmon:item.Magmarizer' | 'pixelmon:item.King's_Rock' | 'pixelmon:item.Protector' | 'pixelmon:item.UP-Grade' | 'pixelmon:item.Razor_Fang' | 'pixelmon:item.Dragon_Scale' | 'pixelmon:item.Life_Orb' | 'pixelmon:item.RazorClaw' | 'pixelmon:item.FocusSash' | 'pixelmon:item.FocusBand' | 'pixelmon:item.ScopeLens' | 'pixelmon:item.AirBalloon' | 'pixelmon:item.RockyHelmet' | 'pixelmon:item.ShedShell' | 'pixelmon:item.DampRock' | 'pixelmon:item.HeatRock' | 'pixelmon:item.IcyRock' | 'pixelmon:item.SmoothRock' | 'pixelmon:item.Eviolite' | 'pixelmon:item.LightBall' | 'pixelmon:item.LuckyPunch' | 'pixelmon:item.MetalPower' | 'pixelmon:item.RedCard' | 'pixelmon:item.ExpertBelt' | 'pixelmon:item.LightClay' | 'pixelmon:item.StickyBarb' | 'pixelmon:item.BlackBelt' | 'pixelmon:item.BlackGlasses' | 'pixelmon:item.Charcoal' | 'pixelmon:item.HardStone' | 'pixelmon:item.MiracleSeed' | 'pixelmon:item.MysticWater' | 'pixelmon:item.NeverMeltIce' | 'pixelmon:item.PosisonBarb' | 'pixelmon:item.SharpBeak' | 'pixelmon:item.SilkScarf' | 'pixelmon:item.SilverPowder' | 'pixelmon:item.SoftSand' | 'pixelmon:item.SpellTag' | 'pixelmon:item.TwistedSpoon' | 'pixelmon:item.Magnet' | 'pixelmon:item.ToxicOrb' | 'pixelmon:item.FlameOrb' | 'pixelmon:item.destinyKnot' | 'pixelmon:item.BlackSludge' | 'pixelmon:FirestoneSword' | 'pixelmon:FirestoneHammer' | 'pixelmon:FirestoneAxe' | 'pixelmon:FirestoneHoe' | 'pixelmon:FirestonePickaxe' | 'pixelmon:FirestoneShovel' | 'pixelmon:WaterstoneSword' | 'pixelmon:WaterstoneHammer' | 'pixelmon:WaterstoneAxe' | 'pixelmon:WaterstoneHoe' | 'pixelmon:WaterstonePickaxe' | 'pixelmon:WaterstoneShovel' | 'pixelmon:LeafstoneSword' | 'pixelmon:LeafstoneHammer' | 'pixelmon:LeafstoneAxe' | 'pixelmon:LeafstonePickaxe' | 'pixelmon:LeafstoneHoe' | 'pixelmon:LeafstoneShovel' | 'pixelmon:ThunderstoneSword' | 'pixelmon:ThunderstoneHammer' | 'pixelmon:ThunderstoneAxe' | 'pixelmon:ThunderstoneHoe' | 'pixelmon:ThunderstonePickaxe' | 'pixelmon:ThunderstoneShovel' | 'pixelmon:SunstoneSword' | 'pixelmon:SunstoneHammer' | 'pixelmon:SunstoneAxe' | 'pixelmon:SunstoneHoe' | 'pixelmon:SunstonePickaxe' | 'pixelmon:SunstoneShovel' | 'pixelmon:MoonstoneSword' | 'pixelmon:MoonstoneHammer' | 'pixelmon:MoonstoneAxe' | 'pixelmon:MoonstoneHoe' | 'pixelmon:MoonstonePickaxe' | 'pixelmon:MoonstoneShovel' | 'pixelmon:DrawnstoneSword' | 'pixelmon:DrawnstoneHammer' | 'pixelmon:DrawnstoneAxe' | 'pixelmon:DrawnstoneHoe' | 'pixelmon:DrawnstonePickaxe' | 'pixelmon:DrawnstoneShovel' | 'pixelmon:DuskstoneSword' | 'pixelmon:DuskstoneHammer' | 'pixelmon:DuskstoneAxe' | 'pixelmon:DuskstoneHoe' | 'pixelmon:DuskstonePickaxe' | 'pixelmon:DuskstoneShovel'}
at org.monospark.spongematchers.parser.element.StringElementContext.getFinalElement(StringElementContext.java:26) ~[StringElementContext.class:?]
at org.monospark.spongematchers.parser.element.StringElementParser.parseStringElement(StringElementParser.java:59) ~[StringElementParser.class:?]
at org.monospark.actioncontrol.rule.ActionSettings$Deserializer.deserializeFilter(ActionSettings.java:174) ~[ActionSettings$Deserializer.class:?]
... 31 more
[19:13:47] [Server thread/INFO] [org.monospark.actioncontrol]: Fix the config and reload the plugin or restart the server to make it work again.
What should I do ? :>