Commit graph

360 commits

Author SHA1 Message Date
Chris
5b72ff6c0a Add IPacketHandler 2020-06-02 10:44:10 +09:30
Patrikkk
c94d15e634 Commit EmojiHandler.cs and register OnEmoji hook. 2020-06-01 15:31:45 +02:00
Patrikkk
4944ee3144 Implement Handler.LandGolfBalInCupHandler and handle packet exploits.
Added multiple checks to prevent clients from sending the golfball packet directly, without having golf play actions.
2020-06-01 12:59:40 +02:00
Chris
26aac0dab9
Merge branch 'general-devel' into fishoutnpc-event 2020-06-01 18:58:06 +09:30
Lucas Nicodemus
dff5f043aa
Merge branch 'general-devel' into fix-bugs 2020-06-01 02:21:21 -07:00
Chris
9fb27543b9 Some refactoring from feedback 2020-06-01 18:35:58 +09:30
Chris
e658af32ef merge general-devel into fix-sts 2020-06-01 15:21:55 +09:30
Lucas Nicodemus
6ca9a98a91
Bump max player damage to 42,000 for empress of light
Based on feedback from #1936, empress of light needs to do more damage,
so we're going to boost it to a higher arbitrary number than it was
before.
2020-05-31 13:11:01 -07:00
Patrikkk
1398b1e079
Merge branch 'general-devel' into fishoutnpc-event 2020-05-31 15:52:59 +02:00
Lucas Nicodemus
ac76ccf589
Fix doors in the lamest way possible (!)
Fixes #1774.

This commit is designed to fix the clientside door desync issue. Based
on the order of events that I've been able to see, the way that door
opening works is like this:

1. Client sends a door open request.
2. Server echoes request back to client.
3. Both server and client simulate door opening.
4. The client that requests the initial door open sends a tile square to
the server for some reason.

In TShock, under all circumstances, we send a tile square back to the
client that sends one in, unless you have the
`tshock.ignore.sendtilesquare` permission. This adds a deviation: it
does not network data back if the event is just a door change. Doing
this is safe from the perspective of actual gameplay. A previous
iteration of this commit synchronized data to other clients, but that
seemed superfluous.

This does not really solve the underlying problem or answer the question
as to why sending a tile square back to the client seems to throw it
off, but it does. I was not able to replicate the desync issue anymore
with this branch. I expect that it will be safe to keep, because the
improved logic will only happen if the tile square had no effective
changes in addition to the door changes.
2020-05-31 00:40:03 -07:00
Zack
c999b4305c
Remove Console debug output. 2020-05-30 11:58:59 -04:00
Olink
96c7453b33 Merge branch 'general-devel' of github.com:Pryaxis/TShock into fix-bugs 2020-05-30 11:54:09 -04:00
Patrikkk
9a49f6ad15
Merge branch 'general-devel' into fishoutnpc-event 2020-05-30 10:53:51 +02:00
Patrikkk
791a6be831
Add additional FoodPlatter event check. Update range check. (#1941)
This is a combination of 3 commits:

* @Olink was right. Adding additional check. Modifying range check.

There are two ways to place food into a plate. One is by having it in hand (mouse) and right clicking, the other is by having the item selected in the... "inventory bar"(?) and right clicking the plate.

Tested range, if player is outside the range, they should not get their item back.

* FoodPlatterHotfix - Update IsInRange range value.

To suggestion of Olink, to consider player lag and increase the range check.

Co-authored-by: Lucas Nicodemus <shank@shanked.me>
2020-05-30 00:39:40 -07:00
Lucas Nicodemus
61e7d10941
Merge branch 'general-devel' into patch-5 2020-05-30 00:02:27 -07:00
Lucas Nicodemus
f82ab41a25
Add /sync command to alleviate door related sadness
Run /sync if your doors disappear. This will resync your local client
with the server state. For more information, please see the associated
changelog entry.
2020-05-29 21:04:48 -07:00
Olink
6355f2d9ea Merge branch 'general-devel' of github.com:Pryaxis/TShock into fix-bugs 2020-05-29 17:04:00 -04:00
Olink
50337a1d2f Add support for all rope coil types. 2020-05-29 17:03:48 -04:00
Patrikkk
47dd4a4345 FishOutNPC - Simplify bouncer logic. Fix check in event. 2020-05-29 12:00:33 +02:00
Chris
d4a0f47e45 WIP - splitting STS into new class and processing methods 2020-05-29 14:05:43 +09:30
Patrikkk
695ca52a9a Fix FishOutNPC bouncer debug message. 2020-05-29 03:27:19 +02:00
Patrikkk
9cd4670436 Add FishOutNPC event handler. 2020-05-29 03:25:11 +02:00
Patrikkk
0fa8ae13d7 Implement FoodPlatter placing event.
This is called when a player is placing a fruit (item) in a plate.
Adding checks to see if they have permission to place or replace a fruit in the item.
Checks if they are within range. And a check to see if they are legitimately placing the item from their hand, and not by sending a raw packet.
2020-05-28 19:24:28 +02:00
Olink
079541d4c9 Initial working commit. 2020-05-27 23:05:45 -04:00
moisterrific
0d2b591760
Update NPCAddBuff to include Sparkle Slime debuff
It's a new cosmetic debuff added in 1.4, like Wet and Slimed that can be applied to Town NPCs. Wiki: https://terraria.gamepedia.com/Sparkle_Slime_Balloon
2020-05-26 13:45:31 -04:00
Lucas Nicodemus
ad82afd800
Merge branch 'general-devel' of github.com:Pryaxis/TShock into general-devel 2020-05-24 14:06:17 -07:00
Lucas Nicodemus
35c103e011
Fix bouncer debug message being incorrect 2020-05-24 14:04:11 -07:00
Olink
16d1cdd360 Track projectile updates being sent by the server, instead of received by the server. 2020-05-24 16:00:20 -04:00
鱼鱼
e39af6f917 fix npc home removal. rename something related. 2020-05-24 16:47:54 +08:00
Olink
8edca72919 Add config option for the bomb radius. 2020-05-24 04:33:03 -04:00
Olink
b73088306d Move the projectile refresh to Bouncer.
Bouncer now has an OnSecondUpdate().
Move projectile created tracking to GetDataHandler from Bouncer.
2020-05-24 04:27:12 -04:00
Zack
9209ac0b73
Apply suggestions from code review
Co-authored-by: Lucas Nicodemus <shank@shanked.me>
2020-05-24 04:19:00 -04:00
Olink
3b0c5f7775 Make bouncer compile. Reduce range checks. 2020-05-24 03:54:27 -04:00
Olink
965361c406 Add a projectile tracker, so that we can allow fluid bombs. 2020-05-24 03:48:08 -04:00
Lucas Nicodemus
ae87f242d7
Clarify log debug from SendTileSquare 2020-05-23 23:56:49 -07:00
Lucas Nicodemus
37e65b64dc
Add note about what Tombstones do and don't do 2020-05-23 23:47:50 -07:00
Axeel
8d277edf04
Fix npcbuff bouncer (#1881)
* Fix npcbuff bouncer

* Update CHANGELOG.md

Co-authored-by: Lucas Nicodemus <shank@shanked.me>
2020-05-24 13:31:21 +08:00
Lucas Nicodemus
eb8aad8a3b
Add extra debug logs to OnTileEdit Bouncer call 2020-05-23 00:39:39 -07:00
Lucas Nicodemus
d610ab929b
Support dirt bomb (fixes #1853, fixes #1865)
This commits adds rudamentary support for dirt bombs. There's probably
some edge cases in here but the entire handler really needs to be
rewritten. This is total spaghetti and completely unreadable and
unrecognizable.
2020-05-23 00:38:03 -07:00
Lucas Nicodemus
c5ec45bc02
Support using the scarab bomb (fixes #1808)
Also fixes #1781. Partially fixes #1865.
2020-05-22 23:53:34 -07:00
Lucas Nicodemus
7452d3c91d
Support using bottomless lava bucket
This is in response to discussion #1859. Due to the nature of this
already terrible handler, I refuse to add any other types of checks for
whether or not this item is banned and lava. If you want to ban lava,
ban a lava bucket. Don't ban an infinite lava bucket, because finite
lava is still infinite lava in this topsy turvy game where the client
rules the world.
2020-05-22 23:33:09 -07:00
Lucas Nicodemus
a457e8c9ee
Support lava absorbant sponge (fixes #1852) 2020-05-22 23:22:48 -07:00
Lucas Nicodemus
03e41a521e
Add more logging to Bouncer to debug antihack
This adds more logging in Bouncer so as to detect more false positives.
2020-05-22 19:34:55 -07:00
Lucas Nicodemus
7a5c2e4d26
Add verbose logging for many bouncer packets
This type of change is designed to make it easier to debug problems with
Bouncer's anticheat checks and antigrief checks by allowing server
operators to send better reports. In particular, the logs will help us
diagnose precisely which checks are tripping, and they can cross
correlate the item with the check to adjust the precise check.

More work is needed to add more checks in more places, but you can't
just do this naively and need to actually think when adding things.
2020-05-22 15:34:04 -07:00
鱼鱼
946d54b69e fix player spawn stuff 2020-05-20 21:27:49 +08:00
Lucas Nicodemus
3b748f1156
Potentially fix player desync issue
It was discovered that LastNetPosition is being checked to see if it's
zero in Bouncer. Then, Bouncer rejects the update. The default is zero
and potentially this can be zero in other ways. The original code in
master (checked at 9f4892f in GetDataHandlers) had an additional write
on LastNetPosition to update it, but this write was not moved over to
Bouncer. Thus, there is a high probability that players are "desync'd"
after LastNetPosition gets stuck at zero and never updates.
2020-05-19 23:50:02 -07:00
Lucas Nicodemus
e9098d0e78
Add verbose debug logs to a variety of checks
These are high priority checks we really want to look at. I want to add
more of these debug statements to all checks in Bouncer and other parts
of GetDataHandlers, but I think this is good enough for now.
2020-05-19 22:11:21 -07:00
Patrikkk
8ced5d5dfc Adding new buffs to OnNPCAddBuff
Missed these buffs with their bufftimes, so it was always caught by the bouncer, thinking players are hacking.
2020-05-18 18:47:39 +02:00
Lucas Nicodemus
3471646dc7
Temporarily disable some projectile cheat checks 2020-05-18 00:52:44 -07:00
Chris
ea6425a2e2 Update Bouncer/Item Bans refs for new models 2020-05-18 14:45:36 +09:30