JackTheBox allows for client & server modifications to s&box independent of the current gamemode

Overview

JackTheBox

JackTheBox allows for client & server modifications to s&box independent of the current gamemode (or even in the absence of a gamemode).

Demo

2022-08-15.20-22-20.mp4

Guide

  1. Compile an addon (i.e. example_addon)
  2. Create a directory in the root sandbox game directory called ./sideload and put all the assemblies you want to load inside it.
  3. Compile the jackthebox library and inject it into the s&box process.
Comments
  • Support loading into assembly contexts

    Support loading into assembly contexts

    Sandbox uses AssemblyLoadContext to separate out each realm.

    A realm is defined as a load context which allows separation of globals, most noticeably for us, the Host. While it looks like the Host is a static class which will only have a single instance, because of the use of load contexts for assemblies, each realm has its own copy of Host and other globals.

    Sideloading addons via jackthebox currently does not load the aforementioned into any one load context, instead the addons are loaded into the default one, this consequentially means that you cannot access any realm specific globals.

    enhancement 
    opened by dankope 1
  • Fix CI

    Fix CI

    CI is currently broken due to the following assemblies not being present for linking:

    <ItemGroup>
        <Analyzer Include="bin\Sandbox.Generator.dll"/>
        <Reference Include="bin\Sandbox.System.dll" />
        <Reference Include="bin\Sandbox.Engine.dll" />
        <Reference Include="bin\Sandbox.Game.dll" />
        <Reference Include="bin\Sandbox.Event.dll" />
        <Reference Include="bin\Sandbox.Bind.dll" />
        <Reference Include="bin\Sandbox.Reflection.dll" />
        <Reference Include="bin\Sandbox.Menu.dll" />
    </ItemGroup>
    

    A solution must be able to provide these assemblies without distributing publicly. One solution would be to create a private repo hosting up-to-date assemblies and pulling them in for CI, however this requires manually updating the assemblies.

    bug help wanted 
    opened by dankope 0
  • Migrate to new addon system

    Migrate to new addon system

    opened by dankope 1
  • Complete example

    Complete example

    An example showcasing:

    • Console commands
    • Generic alterations
    • Gamemode specific alterations
    • Use of base addon (sbox\addons\base)
    • Client and server components
    help wanted good first issue 
    opened by dankope 1
  • Game specific addons

    Game specific addons

    Currently every addon is loaded regardless of gamemode, this is ill advised as many addons are for specific gamemodes. We should be able to specify which gamemode to load the addon for as well as swapping all references in the addon for the current instance of the gamemode.

    enhancement 
    opened by dankope 2
Releases(master)
Owner
dank
have you tried turning it off and on again?
dank
An actors library for Rust and Tokio designed to work with async / await message handlers out of the box.

Akt An actors framework for Rust and Tokio. It is heavily inspired by Actix and right now it has very similar look and feel. The main difference is th

Artyom Kozhemiakin 7 Jan 10, 2023
A collection of crates to make minecraft development (client, server) with rust possible.

rust-craft rust-craft is a collection of crates to make minecraft development (client, server) with rust possible. Motivation There's no better way of

João Victor 15 Mar 23, 2023
This crate allows to generate a flat binary with the memory representation of an ELF.

flatelf Library This crate allows to generate a flat binary with the memory representation of an ELF. It also allows to generate a FLATELF with the fo

Roi Martin 3 Sep 29, 2022
🦀 Rust crate that allows creating weighted prefix trees that can be used in autocomplete

weighted_trie ?? Rust crate that allows creating weighted prefix trees that can be used in autocomplete Released API Docs Quickstart To use weigthed-t

Alexander Osipenko 8 Mar 1, 2023
📩 steamworks.DownloadUGC for the server!

gmsv_workshop This module allows for servers to use the steamworks.DownloadUGC and steamworks.FileInfo functions, enabling runtime downloading & mount

William 27 Dec 24, 2022
Stardust XR Reference Server, now in Rust :D

Stardust XR Reference Server This project is a usable Linux display server that reinvents human-computer interaction for all kinds of XR, from putting

Stardust XR 9 Dec 20, 2022
🚀simple server that returns error codes with their respective messages and debug information, written in rust 🦀

ErrorServer ?? A simple & lightweight server that returns a HTML page of the error code with its respective message and debug information, written in

Jakob 2 Dec 15, 2022
Diosic is an open source web-based music collection server and streamer

Diosic is an open source web-based music collection server and streamer. Mainly suitable for users who need to deploy on servers with low hardware specifications.

Jinker 45 Jan 28, 2023
VoceChat is a superlight rust written social server. Easy integration to your site/app.

Re-decentralized the Internet through personal cloud computing. VoceChat is the lightest chat server prioritizes private hosting! Easy integratation t

Privoce 134 Feb 22, 2023
Global-Scale Media Server written in Rust (WebRTC/RTMP/SIP)

8xFF Media Server: Global-Scale Ultra-Low Latency Streaming Server written in Rust A media server that supports multiple protocols, including WebRTC,

8xFF 8 Nov 8, 2023
Global-Scale Media Server written in Rust (WebRTC/RTMP/SIP)

Decentralized Ultra-Low Latency Streaming Server A decentralized media server designed to handle media streaming at a global-scale, making it suitable

8xFF 11 Nov 26, 2023
Tiny HTTP client for GET

tinyget a tiny fork of minreq. Simple, minimal-dependency HTTP client. Optional features for https with native-tls TLS implementations. Documentation

迷渡 19 Dec 31, 2022
Conversion Tools API Rust client

ConversionTools Rust This Conversion Tools API Rust client allows you to use the site API and convert files faster and more conveniently. Site Convers

WinsomeQuill 2 Jan 23, 2022
The second Rust implementation on GitHub of third-party REST API client for Bilibili.

Bilibili REST API The second Rust implementation on GitHub of third-party REST API client for Bilibili. Designed to be lightweight and efficient. It's

null 4 Aug 25, 2022
💩 Small HTTP client for the Webpurify API following the sans-io approach 🦀

?? tame-webpurify Super simple client for the WebPurify REST API What is this? An incredibly small library to interact with the https://www.webpurify.

Embark 8 May 1, 2023
Reverse-engineered Rust client for Instagram's Threads app.

Instagram Threads API Unofficial, Reverse-Engineered Rust client for Instagram's Threads. Usage use threads_api::Threads; let client = Threads::new()

Miguel Piedrafita 66 Jul 12, 2023
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
Executes commands in response to file modifications

watchexec Software development often involves running the same commands over and over. Boring! watchexec is a simple, standalone tool that watches a p

null 3.6k Jan 1, 2023
Rust program to monitor Windows 10 Registry keys for changes or modifications.

RegMon This Rust program monitors changes to multiple registry keys in Windows 10 and writes the changes to a text file. It also periodically sends a

0x44F 3 Jan 16, 2023
A program written in Rust, that allows the user to find the current location of the International Space Station and see it on a map.

ISS Location ViewFinder A program written in Rust, that allows the user to find the current location of the International Space Station and see it on

Suvaditya Mukherjee 2 Nov 8, 2021