Giter Club home page Giter Club logo

protector-plugin's Introduction

Protector Plugin

About

This plugin provides players on TShock driven Terraria servers the possibility of taking ownership of certain objects or blocks, so that other players can not change or use them. The content of a protected chest can not be viewed or altered by other players, protected switches can not be hit by other players, signs can not be edited, beds can not be used, doors not opened and even plants in protected clay pots can not be harvested without owning the clay pot.

And if a player wants to access items of a friend's chest, then the owner of it shall share it with them. Protector offers sharing of protections directly to specific users, to TShock user groups or just to everyone - and it's the owner of the protection doing that, no administrative actions required.

Stay in control, you define which blocks or objects can be protected, are automatically protected on placement, can be deprotected, how many protections a player can create in general and what can be shared or not.

Furthermore, one might make use of Protector's special chest related features, like powerful Refill Chests allowing a timed refill of their content, restrict players from looting them more than one time or allowing only X times of lootings in total. Also, if your server happens to change worlds frequently or if you just want to offer your players to use chests which can be easily transported including their content, then you can allow the usage of so called Bank Chests storing their content world independently - imagine them as server sided piggy banks.

Usually Terraria worlds are limited to a maximum of 1000 chests. By using Protector you may bypass this limitation, check out the comments in the configuration file to see how this is done.

Releases of this plugin use Semantic Versioning.

How to Install

Note: This plugin requires TerrariaAPI-Server and TShock in order to work. You can't use this with a vanilla Terraria server.

Grab the latest release and put the .dll files into your server's ServerPlugins directory. Also put the contents of the tshock/ folder into your server's tshock folder. You may change the configuration options to your needs by editing the tshock/Protector/Config.xml file.

Commands

  • /protect [-p]
  • /deprotect [-p]
  • /protectioninfo [-p]
  • /share <player name> [-p]
  • /unshare <player name> [-p]
  • /sharegroup <group name> [-p]
  • /unsharegroup <group name> [-p]
  • /sharepublic [-p]
  • /unsharepublic [-p]
  • /bankchest <number>
  • /dumpbankchest
  • /refillchest [time] [+ot|-ot] [+ll amount|-ll] [+al|-al] [-p]
  • /refillchestmany <selector> [time] [+ot|-ot] [+ll amount|-ll] [+al|-al] [-p]
  • /lockchest [-p]
  • /swapchest [-p]
  • /tradechest <sell amount> <sell item> <pay amount> <pay item or group> [limit]
  • /protector
  • /protector commands
  • /protector removeemptychests
  • /protector summary
  • /protector cleanup [-d]
  • /protector removeall <region <region>|user <user>> [-d]
  • /protector importinfinitechests
  • /protector importinfinitesigns
  • /protector reloadconfig|reloadcfg

To get more information about a command type /<command> help ingame.

Permissions

  • prot.manualprotect Can manually create protections (not required for auto protection).
  • prot.manualdeprotect Can manually remove owned protections (not required for auto deprotection).
  • prot.chestshare Can share Chests.
  • prot.switchshare Can share Switches / Levers / Pressure Plates / Timers / Music Boxes.
  • prot.othershare Can share Signs, Tombstones and Beds.
  • prot.sharewithgroups Can share protections with TShock Groups.
  • prot.setbankchest Can set up bank chests.
  • prot.bankchestshare Can share bank chests.
  • prot.nobankchestlimits Can set up unlimited bank chests.
  • prot.dumpbankchest Can dump bank chest content (Warning: duplicates the bank chest's items).
  • prot.nolimits Can create an unlimited amount of protections.
  • prot.viewall Can view all information of all protections. Usually only owners or shared players can view extended information of a protection.
  • prot.useeverything Can use and any Chest, Sign, Switch, Lever, Pressure Plate etc. (does not include removing them though).
  • prot.protectionmaster Can modify or remove any protection, can also alter any refill chest if "prot_setrefillchest" is also given.
  • prot.setrefillchest Can set up a chest to automatically refill its content.
  • prot.settradechest Can set up a trade chest to trade items with other players.
  • prot.freetradechests Doesn't have to pay SEconomy money to set up a trade chest.
  • prot.utility Can display a summary about all chests, signs and protections of a world, can lock chests, can convert all dungeon chests, sky island chests, ocean chests, hell shadow chests to refill chests (also requires "prot_setrefillchest"), can remove all empty non protected chests of the world, can swap chest data storage.
  • prot.cfg Can import Infinite Chests' data or Infinite Signs' database files, can reload Protector's configuration file.

Data Import and Compatibility

This plugin can import chest and sign data from the Infinite Chests and Infinite Signs plugins. Make SURE you create world backups before using this functionality as those changes can otherwise not be revoked. Note that the import features aren't very well tested, especially not with more recent versions of the plugins.

It's also limited to regular- and refill chests. Bank chests will not be imported. Also, region chest protection and chest passwords are not supported by Protector. If your infinite chests database holds more than 999 chests, all exceeding chests should become protector chests.

Do NOT try to use any chest features of Protector together with Infinite Chests as this will cause mixed item data in the world file and the chest database.

Credits

Icon made by freepik

protector-plugin's People

Contributors

codercow avatar kaupokytaru avatar stealownz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

protector-plugin's Issues

Setting to Turn Off Refill Chest Content Changes

Add a new config setting "AllowRefillChestContentChanges", if true refill chests will behave like usual, if false, refill chest content can not be changed afterwards thus they will behave like for any other player who has no permission to set up refill chests.

Refill Chest Auto Locking

Add another option to refill chests: auto lock (+al)
Will automatically lock (like /lock) a refill chest after it has been opened. This is good for dungeon and shadow chests as every player (instead of just the first looting player) will have to use a key in order to get the items.

Protector Unknow problem.

After i tried to login to my server I was getting Connecting.... and on my sure i started to connect and i notice everyone else was giving that problem too. I removed the plug in and notice it fix the problem. I replaced it didn't fix it then i relize by deleted the world data in the protector folder fixed the problem but then if this happens ever few times i restart the server Whats the point of having chest refills and protection on things. Please i really love this plugin and wish this problem fixed asap

forgotten null check?

[Protector] Error: One PlayerSpawn event handler has thrown an unexpected exception. Exception details:
System.NullReferenceException: Object reference not set to an instance of an object.
at Terraria.Plugins.CoderCow.Protector.ProtectionManager.CheckProtectionAccess(ProtectionEntry protection, TSPlayer player, Boolean fullAccessRequired)
at Terraria.Plugins.CoderCow.Protector.ProtectionManager.CheckBlockAccess(TSPlayer player, Point tileLocation, Boolean fullAccessRequired, ProtectionEntry& relatedProtection)
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.CheckProtected(TSPlayer player, Point tileLocation, Boolean fullAccessRequired)
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.HandlePlayerSpawn(TSPlayer player, Point spawnTileLocation)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_PlayerSpawn(Object sender, PlayerSpawnEventArgs e)
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnPlayerSpawn(PlayerSpawnEventArgs e)

Refill Chests converted to Protector Chests don't work properly

Chests converted for Protector chests does not work properly with Refill Chests. After conversion items from the chest not return as expected. Is there any possibility to be fixed?

I looked for a way to make a small donation to you, but not found. If you still accept donations, let me know. Thanks.

Unhandled exception in SaveWorld handler

2017-01-29 18:41:51 - Utils: INFO: Servidor executed: /save.
2017-01-29 18:41:52 - PluginTrace: ERROR: [Protector] Unhandled exception in SaveWorld handler:
System.ArrayTypeMismatchException: Tentativa de acesso a um elemento como um tipo incompatível com a matriz.
em Terraria.Plugins.CoderCow.Protector.WorldMetadata.Write(String filePath)
em Terraria.Plugins.Common.MetadataHandlerBase.WriteMetadata()
em Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.World_SaveWorld(WorldSaveEventArgs e)

Protector.dll compiled from source

Occasional error in log

[Protector] Error One DoorUse event handler has thrown an unexpected exception. Exception details:
System.IndexOutOfRangeException: Array index is out of range.
at Terraria.Plugins.Common.TerrariaTiles.get_Item (Point point) [0x00000] in :0
at Terraria.Plugins.CoderCow.Protector.ProtectionManager+d__1a.MoveNext () [0x00000] in :0
at Terraria.Plugins.CoderCow.Protector.ProtectionManager+d__1.MoveNext () [0x00000] in :0
at Terraria.Plugins.CoderCow.Protector.ProtectionManager.CheckBlockAccess (TShockAPI.TSPlayer player, Point tileLocation, Boolean fullAccessRequired, Terraria.Plugins.CoderCow.Protector.ProtectionEntry& relatedProtection) [0x00000] in :0
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.CheckProtected (TShockAPI.TSPlayer player, Point tileLocation, Boolean fullAccessRequired) [0x00000] in :0
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.HandleDoorUse (TShockAPI.TSPlayer player, Point location, Boolean isOpening, Direction direction) [0x00000] in :0
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_DoorUse (System.Object sender, Terraria.Plugins.Common.Hooks.DoorUseEventArgs e) [0x00000] in :0
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnDoorUse (Terraria.Plugins.Common.Hooks.DoorUseEventArgs e) [0x00000] in :0

Own Chest Protection Limit per Player

As the titel said - it would be very awesome if we could set limits only for chests aside of "overall protection limit".

So if you set 25 protections as maximum per player you should be able to set 6 chests as example as maximum placeable beside of the 25 "normal" protections. 👍

Silent Chest Protection

It appears that when a chest is tried to be opened, the message "This chest is protected." is not displayed sometimes.

Protector all chests in certain regions

Please consider adding command for protect all chests of certain regions, just as /refillchestmany protecting chests of certain places.

Thank for this great plugin!

Smarter Auto Locking

If a Refill Chest has a timer applied, it should be re-locked when the timer runs out, not when the chest is closed.

Startup error

Hey CoderCow,

First of all thank you for updating your plugins. You are awesome.:)
I ran into a problem with the config. First I just pasted the two dlls into the plugins folder. No errors this time. however withouth the config, I could protect nothing. Then I copied the config to where it belongs, now I get this error, no idea why. I'm running an unstable of Tshock for Terraria 1.3.0.6.
I will test it out with an 1.3.0.5 version to see if this error will show up or not.

2015-07-22 18:13:17 - TShock: INFO: Welcome to TShock for Terraria. Initialization complete.
2015-07-22 18:13:25 - PluginTrace: ERROR: [Protector] Reading the configuration file failed. This plugin will be disabled. Exception details:
System.FormatException: Input string was not in a correct format.
at System.Number.ParseSingle(String value, NumberStyles options, NumberFormatInfo numfmt)
at Terraria.Plugins.CoderCow.Protector.Configuration.Read(String filePath)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.InitConfig()
2015-07-22 18:13:25 - PluginTrace: ERROR: [Protector] THIS PLUGIN IS DISABLED, EVERYTHING IS UNPROTECTED!

Smarter Protection Management

The block type where a protection was defined for should be saved in the protection data, if any player interacts with the protected block later, Protector will check if the block types still matches with the block type defined in the protection data and thus remove the protection automatically because it will consider it invalid.

Also consider exceptional tiles here that are meant to change the block type, like when a sapling becomes a tree, the protection should still be considered valid.

ArrayTypeMismatchException

It throw an exception right after server start.
2017-05-09 14:16:52 - PluginTrace: ERROR: [Protector] Reading a metadata file failed. Exception details: System.ArrayTypeMismatchException: Attempted to access an element as a type incompatible with the array. at Terraria.Plugins.CoderCow.Protector.WorldMetadata.Read(String filePath) at Terraria.Plugins.CoderCow.Protector.WorldMetadataHandler.ReadMetadataFromFile(String filePath) at Terraria.Plugins.Common.MetadataHandlerBase.InitOrReadMetdata() 2017-05-09 14:16:52 - PluginTrace: ERROR: [Protector] Failed initializing or reading metdata or its backup. This plugin will be disabled. Exception details: System.ArrayTypeMismatchException: Attempted to access an element as a type incompatible with the array. at Terraria.Plugins.CoderCow.Protector.WorldMetadata.Read(String filePath) at Terraria.Plugins.CoderCow.Protector.WorldMetadataHandler.ReadMetadataFromFile(String filePath) at Terraria.Plugins.Common.MetadataHandlerBase.InitOrReadMetdata() at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.InitWorldMetdataHandler() 2017-05-09 14:16:52 - PluginTrace: ERROR: [Protector] THIS PLUGIN IS DISABLED, EVERYTHING IS UNPROTECTED!

Refillchest Issue

Items with large quantities get their items reduced to other quantities. A few tests came with these:

250 > 250
251 > Icon Disappears, but mouse hover says there's a wood.
252 > 1
253 > 2
254 > 3
255 > 5
300 > 44
350 > 94
400 > 144
450 > 194
500 > 244
550 > 38
600 > 88

Occasionally, the chest gets corrupted similar to that of the issue reported:
https://github.com/CoderCow/Protector-Plugin/issues/17

Items after Third Row Bug. Only reproducable sometimes with refillchest, but only occurs if there's an item at third or fourth row.

unexpected exception... "ChestGetContents"

[Protector] Error: One ChestGetContents event handler has thrown an unexpected exception. Exception details:
Terraria.Plugins.CoderCow.Protector.ProtectionNotSharedException: A protection is not shared with the given user or group.
at Terraria.Plugins.CoderCow.Protector.ProtectionManager.ProtectionShareUser(TSPlayer player, Point tileLocation, Int32 targetUserId, Boolean shareOrUnshare, Boolean checkPermissions)
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.TryAlterProtectionShare(TSPlayer player, Point tileLocation, Boolean isShareOrUnshare, Boolean isGroup, Boolean isShareAll, Object shareTarget, String shareTargetName, Boolean sendFailureMessages)
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.<>c__DisplayClass50_0.b__1(TSPlayer playerLocal, Point location)
at Terraria.Plugins.Common.UserInteractionHandlerBase.HandleChestGetContents(TSPlayer player, Point location)
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.HandleChestGetContents(TSPlayer player, Point location)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_ChestGetContents(Object sender, TileLocationEventArgs e)
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnChestGetContents(TileLocationEventArgs e)


#36 > seems working like intended! :)

Dressers and Active Stone

Placing a dresser on active stone converts them to chests.

Possible fix: can prolly just get rid of the active stone / ice block checks as those issues should have been fixed by vanilla Terraria a while ago.

Server Shutdown Error

This is actually a common lib error:

System.InvalidOperationException: A task may only be disposed if it is in a completion state (RanToCompletion, Faulted or Canceled).
at System.Threading.Tasks.Task.Dispose(Boolean disposing)
at Terraria.Plugins.Common.AsyncWorkQueue.Dispose(Boolean isDisposing)
at Terraria.Plugins.CoderCow.Protector.ServerMetadataHandler.Dispose(Boolean isDisposing)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Dispose(Boolean isDisposing)
at Terraria.ProgramServer.DeInitialize()
at Terraria.ProgramServer.Main(String[] args)

Errors throughout with protector

Using ignoreversion and when i run my server error code comes up everywhere when a block is broken and i cannot use any of the commands

[Protector] One TileEdit event handler has thrown an unexpected exception. Excep
tion details:
System.MissingMethodException: Method not found: 'Void TShockAPI.TSPlayer.SendEr
rorMessage(System.String)'.
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.HandleTileEdit(
TSPlayer player, TileEditType editType, BlockType blockType, Point location, Int
32 objectStyle)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_TileEdit(Object se
nder, TileEditEventArgs e)
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnTileEdit(TileEditEventA
rgs e)
[Protector] One TileEdit event handler has thrown an unexpected exception. Excep
tion details:
System.MissingMethodException: Method not found: 'Void TShockAPI.TSPlayer.SendEr
rorMessage(System.String)'.
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.HandleTileEdit(
TSPlayer player, TileEditType editType, BlockType blockType, Point location, Int
32 objectStyle)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_TileEdit(Object se
nder, TileEditEventArgs e)
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnTileEdit(TileEditEventA
rgs e)
[Protector] One TileEdit event handler has thrown an unexpected exception. Excep
tion details:
System.MissingMethodException: Method not found: 'Void TShockAPI.TSPlayer.SendEr
rorMessage(System.String)'.
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.HandleTileEdit(
TSPlayer player, TileEditType editType, BlockType blockType, Point location, Int
32 objectStyle)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_TileEdit(Object se
nder, TileEditEventArgs e)
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnTileEdit(TileEditEventA
rgs e)
[Protector] One TileEdit event handler has thrown an unexpected exception. Excep
tion details:
System.MissingMethodException: Method not found: 'Void TShockAPI.TSPlayer.SendEr
rorMessage(System.String)'.
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.HandleTileEdit(
TSPlayer player, TileEditType editType, BlockType blockType, Point location, Int
32 objectStyle)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_TileEdit(Object se
nder, TileEditEventArgs e)
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnTileEdit(TileEditEventA
rgs e)
[Protector] One TileEdit event handler has thrown an unexpected exception. Excep
tion details:
System.MissingMethodException: Method not found: 'Void TShockAPI.TSPlayer.SendEr
rorMessage(System.String)'.
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.HandleTileEdit(
TSPlayer player, TileEditType editType, BlockType blockType, Point location, Int
32 objectStyle)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_TileEdit(Object se
nder, TileEditEventArgs e)
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnTileEdit(TileEditEventA
rgs e)
[Protector] One TileEdit event handler has thrown an unexpected exception. Excep
tion details:
System.MissingMethodException: Method not found: 'Void TShockAPI.TSPlayer.SendEr
rorMessage(System.String)'.
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.HandleTileEdit(
TSPlayer player, TileEditType editType, BlockType blockType, Point location, Int
32 objectStyle)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_TileEdit(Object se
nder, TileEditEventArgs e)
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnTileEdit(TileEditEventA
rgs e)

Invalid MySQL Bank Chest Table Structure

If TShock is configured to use MySQL as database, the bank chest table might be created with an invalid structure resulting in bank chests not storing their data correctly.

Objects of type Chest can not be protected

Running Terraria Server v1.3.0.8 with the latest 1.3.9 build of Protector Plugin. I'm typing in /protect as a superadmin, hits the chest I want to protect and gets the message "Objects of type Chest can not be protected".

Bank Chests and Multiple Servers

When having multiple servers sharing the same database, bank chests will not function right.
As it's quite some work to fix this, I will do it only if requested.

Quick Stack Nearby Broken

Causes items to get lost or bank chest not to update properly or not to work at all. Quick Stack Nearby is therefore disabled completely at the moment.

Please update on TShock.co

I'm having trouble actually building/downloading this, it'd be easier if this was added/updated on TShock.co or a simple download link provided.

Thanks again :)

Can you please update this to 1.3.0.8?

Can you please update this to 1.3.0.8? The plugin won't work on my server because the most recent update for this plugin was for 1.2.something. Thanks for your help! Please email me at [email protected] when you have updated the plugin to 1.3.0.8, thank you!

Deprotect switch on wall

A protected switch with a wall behind, will get deprotected when a block under the switch is broken, but the switch is still on the wall.

Error One ChestPlace event handler has thrown an unexpected exception

Getting this error on latest Tshock build. (#498)

[Protector] Error One ChestPlace event handler has thrown an unexpected exception. Exception details:
System.MissingMethodException: Method 'Item.NewItem' not found.
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_ChestPlace (System.Object sender, Terraria.Plugins.Common.Hooks.ChestPlaceEventArgs e) [0x00000] in :0
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnChestPlace (Terraria.Plugins.Common.Hooks.ChestPlaceEventArgs e) [0x00000] in :0

Able to destroy chests with items in it (Also using InfiniteChests)

People are able (When using inifnitechests, which worked perfectly fine before in 1.2.4.1) to destroy chests which contain items in it and people are ALSO (still) able to open the same chest at the same time.

Wondering if you could fix both of these issues as this plugin is greatly needed and these bugs are gamebreaking.

Thank you.

Multiple View Toggle

For chests, of course. To allow people to look into chests same time together. Which can be selected which chest can allow Multiple View. Using some command to toggle chest's multiple view status. This is suggestion, thank you.

Allow for Immediate Refills by Chest Groups

Allow users to assign refill chests to refill chest groups which can then be manipulated by using the chest group name as a reference - like refilling them on call.

-Add a [+g group|-g] parameter set to /refillchest and /refillchestmany.
-Add the command /refillchestbygroup|rchestbg

Exceptions on Closing Piggy Banks / Safes

2013-06-27 09:55:06 - GetDataHookHandler: ERROR: [Protector] One ChestOpen event handler has thrown an unexpected exception. Exception details:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Terraria.Plugins.CoderCow.Protector.UserInteractionHandler.HandleChestOpen(TSPlayer player, Int32 chestIndex, Point chestLocation)
at Terraria.Plugins.CoderCow.Protector.ProtectorPlugin.Net_ChestOpen(Object sender, ChestOpenEventArgs e)
at Terraria.Plugins.Common.Hooks.GetDataHookHandler.OnChestOpen(ChestOpenEventArgs e)
2013-06-27 09:55:10 - PacketBufferer: WARNING: System.Net.Sockets.SocketException (0x80004005): An established connection was aborted by the software in your host machine
at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at TShockAPI.PacketBufferer.SendBytes(ServerSock socket, Byte[] buffer, Int32 offset, Int32 count)

Bankchest Issue

Test 1:{
place "chest", make bchest 1
put in first slot "dirt block"
break "chest"
returned "inactive stone block"
break and check again: still "inactive stone block"
}

Items Change Bug:
It seems items convert to these items as such:
Previous item (ID) -> New Item in Bankchest (ID)
Dirt block (2) -> Inactive Stone Block (512)
Stone Block (3) -> Bone Block Wall (768)
Iron Broadsword (4) -> Teal and Black dye (1024)
Mushroom (5) -> Sailor Pants (1280)
Iron Shortsword (6) -> hallowed key (1536)
Iron Hammer (7) -> Pumpkin Chair (1792)

Item ID past 7, corrupting chest bug.
Any Items past ID 7, regardless of item amount or which slot, placed inside a bankchest will create an empty bankchest with only one chest slot. The slot is empty, clicking on the slot causes the entire bankchest slots to reappear, but still empty. Pressing Loot all corrupts Player's inventory, causing some inv slots to be lost. Relog fixes the lost inv slots. Relog resets bankchest if loot all was clicked.

Item Quantities Bugs:
Tested with Dirt Block & Stone Block:
Dirt Block still turns to Inactive Stone Block,
Stone Block turns to Bone Block Wall.
If dirt block has this much quantity then:

1 - 255 Dirt Block --> Same amount Inactive Stone Block
256 -> Disappear - No Icon, hover over says "Large Inactive Stone Block" no number.
265 -> 9 Prefix Large added.
266 -> 10 ^
300 -> 44 ^
350 -> 94 ^
400 -> 144 ^
450 -> 154 ^
500 -> 244 ^
550 -> 38 Prefix Massive added
600 -> 88 ^
650 -> 138 ^
700 -> 188 ^
750 -> 328 ^
800 -> 32 Inactive Stone Block
850 -> 82 ^
900 -> 132 ^
999 -> 231 ^

Items after Third Row Bug
Test 2{
Place Chest, make bchest 1
Place a dirt block in any slot at First or Second Row.
Place a dirt block in any slot at Third or Fourth Row.
Try to break bankchest, Chest doesn't break, but gets deprotected.
Any dirt block at the first or second row disappears in that unprotected chest.
Any dirt block at the third or fourth row stays as it was.
Place another chest, make bchest 1
All slots with dirt blocks in any row have been converted to Inactive Stone Block.
}

Note: If item placed inside for test 2 has item number greater than 7, the Chest Corrupting bug partially occurs instead, where part of the right side chest slots disappear, while the other side gets the Items after Third Row Bug.

Unlimited Chests Support

Save as many chests in the world data as possible, save further chests in world metadata for best compatibility.

This should also allow chest naming, at least for the 1000 world chests.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.