Commit graph

330 commits

Author SHA1 Message Date
James Puleo
ef603f61a8
Consistently use TilePlacementValid and SendTileSquare in Bouncer.
There are 3 different ways Bouncer uses these:
- Not checking `TilePlacementValid` at all.
- Checking `TilePlacementValid`, rejecting, but then doing a
  `SendTileSquare` to that player.
- Checking `TilePlacementValid`, rejecting. _(this is what we should
  always be doing)_

Not checking `TilePlacementValid` can allow for placement outside of the
world (unknown results), and checking `TilePlacementValid` and sending a
`SendTileSquare` on rejection causes the server to try to frame that
square. In the case of invalid coordinates (negative), framing takes
much longer than expected.
2021-07-10 00:10:45 -04:00
Lucas Nicodemus
89555beb73 Revert "Revert "Merge branch 'patch-28' into general-devel""
This reverts commit 258b21dddb.
2021-05-29 17:58:57 -07:00
Lucas Nicodemus
be2b817abd Merge remote-tracking branch 'moist/patch-28' into general-devel 2021-05-28 20:24:51 -07:00
Lucas Nicodemus
258b21dddb Revert "Merge branch 'patch-28' into general-devel"
This reverts commit d2179e95ff, reversing
changes made to 58d7e26960.
2021-05-28 20:21:14 -07:00
Lucas Nicodemus
d2179e95ff Merge branch 'patch-28' into general-devel 2021-05-28 20:18:56 -07:00
stacey
a369a25084
Update TShockAPI/Bouncer.cs
Co-authored-by: Lucas Nicodemus <shank@shanked.me>
2021-05-28 23:12:39 -04:00
Lucas Nicodemus
707683a0f2 Fix whitespace changes that are confusing 2021-05-28 19:52:42 -07:00
Lucas Nicodemus
5e09f5133d Merge branch 'general-devel' into h/ips 2021-05-28 19:36:25 -07:00
Lucas Nicodemus
177648c8c3 Change Bouncer internal handlers to private set 2021-05-28 00:02:59 -07:00
Lucas Nicodemus
046d52ad2e Move emoji player index check into IllegalPerSe
This is the first commit in a pattern that I'd like to follow. The
concept is that we specifically create handlers for things that are
"illegal per se." That is, there are no possible situations (in the
current protocol) where a packet of this type is received from a client.
In this case, I moved the emoji handler out of the Handler just for
emoji, since it seemed like an obvious case.

The rule of thumb is simple: if something is illegal per se, there
should be no possible way in the vanilla client to achieve this result.
If a player sends this combination of packets they *must* be hacking.
Not that there is a 99.9% chance they're hacking, but that there is a
100% unambiguous chance that they're hacking.

Something is illegal per se if it can only be created by a hacked
client. If there's a crashing bug that a normal player can do with a
complex series of vanilla events, that is not illegal per se.

The goal of this namespace and class of handlers is to handle exactly
one type of protocol violation, and remove the packet accordingly. If it
is ever reported that the packet can be sent from a vanilla client, the
check must be removed as it is no longer a per se violation of the
protocol.
2021-05-27 23:59:43 -07:00
stacey
d78de5719e
Fix formatting 2021-05-27 18:51:27 -04:00
stacey
a5eeb0788a
Even better solution 2021-05-27 18:39:50 -04:00
stacey
6592a880bc
Improve on prev code
Thanks to everyone who helped on discord
2021-05-27 18:08:53 -04:00
stacey
98a93693da
Fix Torch God biome torch swap issue
Can confirm this fixes the issue but not sure if it opens any new exploits
2021-05-27 13:00:33 -04:00
stacey
09f75e0db9
Update OnNPCAddBuff to account for Frost armor set
This fixes false positive cheat detection when throwing rotten eggs at town NPCs while wearing Frost armor set. Also made the debug and kick messages more clear for future reference.
2021-05-26 19:31:46 -04:00
stacey
b98c6aa282
fix typo
oops sorry
2021-05-12 12:35:15 -04:00
stacey
e7807f6378
improved the code 2021-05-12 12:18:53 -04:00
stacey
10318f032a
Improve HealOtherPlayer 0.2 check
Since this check is based on damage and healing amount is based on 20% of the damage, it makes more sense to skip the check if the player has ignoredamagecap (trustedadmin and higher).
2021-05-12 12:09:11 -04:00
Chris
85fbf593c9 Implement place style checks, courtesy of @AgaSpace 2021-03-22 10:29:09 +10:30
Lucas Nicodemus
355a7f02f5 Fix ∞ velocity exploit (@bartico6, @tlworks) 2021-01-28 00:39:09 -08:00
Chris
9423febd0a Refactor for new configuration 2020-12-03 17:43:10 +10:30
Chris
39e13f74d6 Remove TShock.Itembans in favour of TShock.ItemBans 2020-11-13 19:22:10 +10:30
Chris
77fd8c9c9f Add calculated rollback rectangle for tile edits 2020-11-13 18:32:52 +10:30
Chris
ca38d64632 The great refactoring! Squares to Rectangles 2020-11-13 17:46:00 +10:30
Quinci135
253c239f86
Add missing comma 2020-10-14 15:45:43 -07:00
Quinci135
50e0bf0290
Added 1.4.1.0 player inflicted debuffs to bouncer
OnFire3/Hellfire - New magma stone debuff that deals 15 dps instead of 4 dps
Frostburn2/Frostbite - Frost armor new set bonus 25 dps instead of 8 dps
BoneWhipNPCDebuff - Debuff applied from new Spinal Tap whip
2020-10-14 15:21:16 -07:00
Edoan
838d55a737
Updated GravediggerShovel ID
Co-authored-by: Chris <2648373+QuiCM@users.noreply.github.com>
2020-07-07 21:49:08 -03:00
Edoan
c285b50d9f Add Graveyardigger's Shovel support 2020-07-05 13:17:08 -03:00
Lucas Nicodemus
0cfe670038
Merge branch 'general-devel' into addtileentityinteraction 2020-06-25 21:57:00 -07:00
Patrikkk
05829dee3b Missing parenthesis from an if logic. Fix Tile placement reject. 2020-06-25 17:08:58 +02:00
Patrikkk
d4e4692d8b Merge branch 'general-devel' into addtileentityinteraction 2020-06-25 13:41:14 +02:00
Patrikkk
38a1351d38 Register DisplayDollItemSyncHandler.
Moved the type check for 0 before itemSetDefaults to have less code run if the empty slots are clicked.
2020-06-25 01:42:22 +02:00
Patrikkk
972483340a
Merge branch 'general-devel' into addtileentityinteraction 2020-06-18 23:57:40 +02:00
Rustly
0a01ae6d83
Merge branch 'general-devel' into general-devel 2020-06-18 16:53:14 -05:00
Patrikkk
c418dda42c Add RequestTileEntityInteractionHandler. Check Mannequin modif perms.
Users can no longer open a Mannequin if they do not have building permissions at the position of the Mannequin.
(Mannequins work as a chest since 1.4)
2020-06-18 17:08:14 +02:00
Rustly
01bae0475d apply the rest of fixes for snake flute, prevent players from seeing the npc perm error on join 2020-06-15 13:32:42 -05:00
Rustly
013ef4ce98 fix snake rope thingy 2020-06-15 12:37:49 -05:00
Patrikkk
865748fedf
Merge branch 'general-devel' into removebouldercheck 2020-06-13 22:58:36 +02:00
Patrikkk
a80e88b85b
Merge branch 'general-devel' into ontileeditcleanup 2020-06-13 12:13:20 +02:00
Patrikkk
2ed9e320c1 Bouncer OnTileEdit - Remove redundant Boulder placement check 2020-06-13 11:58:36 +02:00
Patrikkk
6bad423d6a
Merge branch 'general-devel' into addpersonalstoragecheck 2020-06-12 14:29:39 +02:00
Patrikkk
e2fad8e77e
Merge branch 'general-devel' into ontileeditcleanup 2020-06-12 14:28:48 +02:00
Patrikkk
c03ac50f81 Bouncer OnTileEdit remove personal storage SSC check.
We are covering/tracking these features properly now in SSC, thus they are unnedded.
2020-06-12 10:38:13 +02:00
Patrikkk
822579277b
Update TShockAPI/Bouncer.cs Add space to comment
Co-authored-by: Lucas Nicodemus <shank@shanked.me>
2020-06-12 10:12:38 +02:00
Patrikkk
f5e1510f58 Bouncer OnTileEdit - Add new personalstorage tiles for ssc check.
We do not allow piggybank and safe to be placed if SSC is enabled.
The DefendersFroge and VoidVault have the same functionality as far as I know. So adding these two missing tiles.
2020-06-12 00:56:51 +02:00
Patrikkk
51a0732f0c Bouncer OnTileEdit - Code cleanup
I moved the block that checks for max tile and wall types to the start of the method where it checks for the editData (type) being smaller than 0.
I merged these checks, so it gets caught under the same hood.

We had a block that was a bit chaotic and hard to understand.
I've split it up so its a bit clearer. It checks if the tile data that is being placed, comes from the item they are selecting. There were additional checks merged in it, because terraria does not set the createTile of some items, so without the check it would have get caught as invalid placement.
I added a valid placement check for one of these, which is the Ice Rod/Ice block placement.
Handle action if the player is using icerod but not placing ice block.
There is no need for a check here on Dirtbomb, because the player only sends the projectile, the tiles are being placed by the server.
2020-06-12 00:27:47 +02:00
Patrikkk
fbf7b5791a Bouncer OnTileEdit - Fix issue with placing ropes.
This fixes #1980 .
The issue came from checking for recently created ropecoil projectile. But didn't actually check if the player is holding a ropecoil item.
Because of this, users could not place regular ropes.
2020-06-11 23:41:27 +02:00
Patrikkk
f81155dac1
Merge branch 'general-devel' into bounceronnewproj 2020-06-09 17:11:58 +02:00
Patrikkk
5decc50bd9 Bouncer OnNewProjectile - Add checks on directional projectiles.
**This commit does not have any effect on actual gameplay as of current project state, but it does let valid projectile creation pass through instead of getting caught up in Bouncer. That catch is currently disabled for the time being, until all valid projectile creation check is added.**

Things would have get caught up in our bouncer eversince 1.4. We commented out the catch (the disable and handling) for now, but none of these new projectiles were added to let them pass.
Renaming stabProjectile to directionalProjectile. Adding staffs to directionalProjectiles
Adding check for GolfClubHelper projectile.

Left in a debug check for golfball projectile. I would want to see if the reject gets triggered in a proper server enviroment. I didn't want to handle the projectile just yet.
Adding GolfBallItemIDs list in Handlers.LandGolfBallInCupHandler.cs
2020-06-09 14:04:27 +02:00
Patrikkk
6c22cfd57c Bouncer OnTileData - Add more checks on ReplaceTile/ReplaceWall 2020-06-09 00:39:04 +02:00