Fougerite Official

Fougerite Official 1.9.5

No permission to download
**Full Changelog**: https://github.com/Notulp/Fougerite/compare/v1.9.4...v1.9.5

* Supplied xml files to help plugin development with visible documentation.
* Documented more code
* Code fixes
* Added buffersize to ScriptWebSocket
* Added BasePlugin.WebSockets
* Supplied PDB file
* Fougerite.Module now derives from BasePlugin with backwards compatibility. Should not cause errors but help boost the experience of C# development and now all things should be at the same place.
* ScriptWebSocket has been finalized and implemented properly
* Data class has received lots of helper functions for script plugins and docs
* Lazy type implementations where it was needed
* Rust++ updated and history command was refined
* Added World.GetAllTreeInstances()
* Initialized the never used WoodBlockerTemp class to take the responsibility of proper tree cutting to the server rather than the client. Infinite wood cutting cheats will no longer work on trees. You can also no longer farm trees without being actually close to them using a cheat.
* GatherEvent was refined, AmountLeft and PercentFull will no longer throw errors on use when cutting a Tree
* Added GatherEvent.WoodBlockerTemp
* Added GatherEvent.TreeGameObject
* Added GatherEvent.ResourceTargetType
* Added World.AllTrees which gets filled after Server initialization complete event
* Refined ConcurrentDictionary
* Refined ConcurrentList
* Refined Server.ChatHistoryUsers and Server.ChatHistoryMessages
* Added Util.ChatHistory, only 2000 messages are kept and 1000 is proned after reaching 2000.
* **Patcher updated please re-patch or use prepatched files**
## What's Changed
* Websocket test by @DreTaX in https://github.com/Notulp/Fougerite/pull/160


**Full Changelog**: https://github.com/Notulp/Fougerite/compare/v1.9.3...v1.9.4

* Added IsIntensiveEventAllowed warning
* Refactored plugin loader
* Added Plugin.CreateWebSocket for websockets
* Fixed patcher crash, RE-PATCH OR USE PREPATCHED DLLS!!
* Added On_WebSocketMessage
* Added On_WebSocketClosed
* Added On_WebSocketConnected
* Added On_WebSocketError
**Full Changelog**: https://github.com/Notulp/Fougerite/compare/v1.9.2...v1.9.3

* Documented additional code like Moonsharp, Jint, Server, events and so on
* Added SystemTimerEvent and CreateSystemTimer and other pairs into the Util class to support a timer system that is not tied to the UnityEngine game objects to avoid crashes when you want to use timers on threads
* Added a warning log for all the timers
* Added file download, and upload and their async version to Fougerite/Fougerite/WinHttpClient.cs
* Added Plugin IPC with Plugin.SendMessage, see https://github.com/Notulp/Fougerite/commit/7fedb8f300b0b0e81da58043f2d9590f4ba96672 and https://github.com/Notulp/Fougerite/commit/8aef8d698cd4d551c6cc6967bbd8014190b0832c
* Added On_CraftingCancel
* Added On_CraftingComplete
* Added On_ServerTick
* Added On_MetabolismUpdate
* Removed CTimer
* Updated options of PlayerApprovalEvent see https://github.com/Notulp/Fougerite/commit/0851d997c7a75a17d2f32c35df8d4fda18945159
* Added Lazy class https://github.com/Notulp/Fougerite/commit/41a76f60e0f1838b2a5f59dafee5058f5f5752db
* Fixed some parallel issues within the Plugin class, C# plugins never used it so there should not be a problem https://github.com/Notulp/Fougerite/commit/cb3d8f1fa105b10f163fe8327f8397220ee0d8b5
* Added proper ZoneAPI https://github.com/Notulp/Fougerite/commit/7c2a50e3f3664479fd6594778c51693dfbad58a8
* Refactored Base Hooks https://github.com/Notulp/Fougerite/commit/c25cfe2437773ce69a22451ae5a014f032fcca50
* Fixed ActiveItem throwing exception instead of null when player holds nothing https://github.com/Notulp/Fougerite/commit/d377aef804a272372522679a293679158c6516f2
* Fixed Decay config option, now you can fully disable the rust legacy default decay system https://github.com/Notulp/Fougerite/commit/9b6906d4be251149f6d31cb22557dc174f0f5d04
  • Added some docs
  • Fixed obsolete marker for HurtEvent.Sleeper
  • Added UOwnerID to Sleeper class
  • Re-worked Falldamage event, the event is much more customizable, and the cancel functionality is much better
  • Fixed wrong patching for airdrops, the event should no longer crash the server.
  • Patcher updated re patch or use prepatched dlls
* Added documentations everywhere where I felt it was still needed
* Cleaned up the usings and some code related stuffs
* Fully removed Rust++'s System.Timer dependency.
* PermissionSystem handles exceptions even though it should never occur and also logs them
* Uploaded missing project files
* Fixed Util.GetLastSaveFile
* Added Player.WaterLevel
* Added Player.PoisonLevel
* Added Player.AntiRadLevel
* Rust++ xml files are automatically converted to json for much more clarity.
* Updated PermissionSystem module and GlitchFix
* Updated prepatched files, Fougerite, and Fougerite Patcher

P.S: I tried making one last hook which would trigger on weapon attachment toggle. I didn't find the place apparently where server side would be calling it, all trivial places do not seem to be called at all.
This is my final-final Fougerite update. Unless there is a critical bug, I'll not be making additional updates any time soon.
Want a feature added? Add it yourself, and shoot a pull request to github. Relatively easy to do so.
  • * Documented and improved gather event a bit more, ResourceItemDataBlock is now assigned
    * Added TimedEvent.MaxElapsedCount and added argument to all createtimer functions
    * Added Player.IsAtWorkbench()
    * Added Player.IsCrafting()
    * Added internal PlayerInventory class to PlayerInv class
    * Added On_HeatZoneEnter
    * Added On_WorkZoneEnter
    * Added Inventory to EntityItem class
    * Added IsEmpty checks everywhere in inventory functions. So far it was only safe due to name comparisms
    * Documented EntityItem well
    * Added EntityItem.IsEntityInv to tell which class of Inventory is held
    * Added EntityItem.EntityInv to get inventory
    * Fixed EntityItem.UsesLeft setter null check
    * Added EntityItem.TotalModSlots getter and setter, works for weapons, returns 0 otherwise
    * Added EntityItem.UsedModSlots, works for weapons, returns 0 otherwise
    * Added EntityItem.FreeModSlots, works for weapons, returns 0 otherwise
    * Added EntityItem.AddMod(modname, removefrominv), works for weapons
    * Added EntityItem.RemoveMod(slot, giveback), works for weapons
    * Added EntityItem.ClearMods(giveback), works for weapons
    * Added EntityItem.GetMods, works for weapons
    * InventoryModEvent has slightly changed and documented
    * Added InventoryModEvent.IsInternalMove to check if source and target inventory is the same. For remove events this will always be the same. As much as i have tested at least.
    * Added InventoryModEvent.FromInventory
    * FInventory internal checks and docs
    * Added PlayerInv.ClearItems() which goes through items
    * PlayerInv checks
    * PlayerItem docs
    * PlayerItem.UsesLeft setter null check fix
    * PlayerItem.TotalModSlots fixes and now setter as well, works for weapons only
    * PlayerItem.UsedModSlots fixup
    * PlayerItem.FreeModSlots fixup
    * Added PlayerItem.AddMod(string modName, bool removeFromInv = true), works for weapons only
    * PlayerItem.RemoveMod(int slot, bool giveBack = true) fixup, weapons only
    * Farewell update to Fougerite!
  • Like
Reactions: Pompeyo
  • Like
Reactions: Pompeyo
* Updated patcher and prepatched dlls
* Added On_ConsumableUse
* Added On_MedikitUse
* Added On_ItemModInstall (yes, nearly after a long time here it is, attachments now have events on guns)
* Added On_BloodDraw
* Added On_ArmorEquip
* Added On_ArmorUnEquip
* Added On_FlareThrow
* Added On_FlareIgnite
* Added On_TorchIgnite
* Improved manual spawn function of sleepers in World class
* Added timer functions into C# Module classes, Util timer functions exist just due to fougerite it self..
* Fixed duplicate patching of GrenadeEvent
* Minor code fixes
* PlayerItem now has a reference to PlayerInv it was needed internally
* Added PlayerItem.TotalModSlots only works on guns
* Added PlayerItem.FreeModSlots only works on guns
* Added PlayerItem.UsedModSlots only works on guns
* Added PlayerItem.RemoveMod(slot, giveback) which you can remove attachments from weapons with
* Added PlayerItem.ClearMods(giveback) which you can remove all attachments from weapons with
* Added PlayerItem.GetMods() which will return the names of attachments on weapons
  • Like
Reactions: Pompeyo
  • Like
Reactions: Pompeyo
  • Added helper functions into PlayerCache class for plugins.
  • Added documentation to Lock and other classes
  • Added World.ManuallySpawnSleeper(steamid). It allows you to spawn the exact sleeper of a player, for example after server start, on On_ServerLoaded event or any case.
  • DataStore loads earlier than plugins now. This was a mistake.
  • Script plugins now automatically reload on the main thread
  • Patched newest Jint 2.7.1 dll so plugins using foreach on dictionaries, or lists within a class should work. This was a disaster to make. Even after 10 years lol.
  • Like
Reactions: Pompeyo
  • Like
Reactions: Pompeyo
  • Missing documentation of Logger and BeltUseEvent
  • Documentation of rpctracer config flag
  • Add new EnableScriptPluginsIntensiveEvents setting into Fougerite.cfg make sure to add this value into your config based on the provided Fougerite.cfg! This is for developers that want to enable On_PlayerMove, On_Shoot, On_ShotgunShoot, On_BowShoot, On_AnimalMovement events on script plugins like py, lua, js. By default you can leave it on false
  • Added event On_DayCycleChanged
  • Documented GetInstanceField and SetInstanceField for setting fields that are private
  • Added GetInstanceProperty and SetInstanceProperty for setting properties that are private with reflection
  • Added CallInstanceMethod to call any private function with reflection
  • Added On_AnimalMovement
  • Improved the NPC class's safety
  • Patcher updated, re-patch or use prepatched dlls!
  • Like
Reactions: Pompeyo
  • Like
Reactions: Pompeyo
  • Improve lock in EntityCache
  • Fix small uLink spam issue and check
  • Add On_FireBarrelToggle which triggers on use of campfire and furnace
  • Turn DataStore into json with improvements, customizable parser support, and backwards compatibility
  • Improve jint js experience by being able to properly import types + exception handling
  • Jint recursion max to 1 million
  • Patcher updated
  • Like
Reactions: Pompeyo
  • Like
Reactions: Pompeyo