Fragments: Separate out item bans (#1595)
* Remove commented out warning disable * Add initial ItemBans segregation infrastructure * Add shell for initial OnSecondUpdate stuff * Add comments yo * Remove duplicated logic * Split out more item ban code This part of the fragments work is primarily aimed at reducing the complexity of OnSecondUpdate in TShock and moving that check out into the ItemBans subsytem. Of major note in this is the removal of "check", which was a string variable that tracked state and replacement of many of the item ban activities with sane private methods that are at least somewhat sensible. Obviously there's a lot to be desired in this system and I'm really going for a run here by trying to continue a branch from so long ago that I barely even remember the whole point of existence. Still to do: GetDataHandlers related item ban code needs to be moved into its own hook in the ItemBan system. Finally, there is a downside to some of this: we're basically iterating over players again and again if we keep this pattern up, which is kinda lame for complexity purposes. * alt j: comment changes * Move item ban check out of main playerupdate check Separates out item ban logic from the rest of GetDataHandlers so that item bans is more isolated in terms of what fragments is asking for. * alt-j: convert indentation to tabs * alt-j: fix botching source code * Move item ban related chest checks out of gdh * Remove chest item change detection from item bans It doesn't do anything. If a user removes an item from a chest, it bypasses this check. If a user adds an item to a chest, the server seems to persist the change anyway, even if the event is handled. That's a bug for sure, but fundamentally, it's not the item ban system's fault. * Revert "Remove chest item change detection from item bans" This reverts commit 758541ac5c4d4096df2db05ba2a398968113e1e4. * Fix logic issues related to item ban handling Re-implements chest item handling and correctly handles events and returns after setting handled event state. * Remove TSPlayer.HasProjectilePermission In infinite wisdom, it turns out this is not a good method for TSPlayer to have. It just checks the states of things as per what the item ban system says is banned and then creates implicit relationships to the projectile ban system. Doing this effectively knocks down another external reference to the item ban system outside of the context of the implementation for the system itself and its related hooks. This commit also adds context around what the heck is going on with some of our more interesting checks as per discussions in Telegram with @Ijwu and @QuiCM. * Update changelog * Remove useless ref to Projectile.SetDefaults * Change item ban to ban based on ID not strings I think I was so confused as to why we were passing strings everywhere that I just felt inclined to continue the trend in previous commits.
This commit is contained in:
parent
ab99c48212
commit
b5f95d5918
8 changed files with 292 additions and 144 deletions
|
|
@ -39,7 +39,6 @@
|
|||
<DocumentationFile>bin\Debug\TShockAPI.XML</DocumentationFile>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<!-- <NoWarn>1591</NoWarn> -->
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
|
|
@ -133,6 +132,7 @@
|
|||
<Compile Include="Permissions.cs" />
|
||||
<Compile Include="DB\RememberedPosManager.cs" />
|
||||
<Compile Include="Bouncer.cs" />
|
||||
<Compile Include="ItemBans.cs" />
|
||||
<Compile Include="Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue