GithubHelp home page GithubHelp logo

carboncommunity / carbon Goto Github PK

View Code? Open in Web Editor NEW
63.0 5.0 15.0 168.89 MB

Carbon is a self-updating, lightweight, intelligent mod loader for Rust utilizing the latest C# and Harmony for the best performance and stability possible, fully compatible with Oxide.

Home Page: https://carbonmod.gg

License: GNU General Public License v3.0

C# 73.62% Batchfile 8.78% Shell 17.60%
framework game-modding harmony oxide oxidemod platform rust-modding

carbon's Introduction



GitHub NuGet


Carbon is a self-updating, lightweight, intelligent mod loader for Rust utilizing the latest C# and Harmony for the best performance and stability possible. Its robust framework and backward compatibility with Oxide plugins make it the ultimate replacement for those wanting better functionality and performance from their plugins!

Carbon has all the creature comforts you need to run your server, such as a permission system, user system, and so much more. Carbon is developed by experienced developers and server owners working to take the tedium out of hosting servers and make configuration and setup seamless with an integrated GUI in-game to manage everything!

๐Ÿ“ฆ Download

Start using Carbon today, download the latest version from our releases page. We also provide a quick start script to get your server running in minutes, available for Windows and Linux.

๐Ÿ“˜ Documentation

For more in-depth Carbon documentation, from builds and deployment, check here. Find all currently available hooks here. If you are a developer take a look at our Wiki page.

โ“ Support

Join our official Discord server for support, more frequent development info, discussions and future plans.

โค๏ธ Sponsor

If you would like to sponsor the project the best way is to use Patreon.

We would like to thank everyone who sponsors us.

carbon's People

Contributors

anthonyphysgun avatar artiiomi avatar david7-dev avatar deathicated avatar farkas1121 avatar github-actions[bot] avatar jake-rich avatar jbrazio avatar kop7er avatar patrette avatar raulssorban avatar rostov114 avatar scorteanucosmin avatar thepitereq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

carbon's Issues

Horses have become invulnerable in Development and Commit builds

RidableHorses have become invulnerable. They take no damage from guns, explosives, fire, melee and they do not deteriorate.
They do not eat ever again (once health and stamina are full), and they do not poop, ever.
This applies to horses whether they are hitched or not and whether console spawned, bought, wild or pre-existing.

This issue does NOT occur in Production (8dcf5e6) or Staging (3f9ddc1) builds.
This issue DOES occur with Development (aa3d978) and the last few Commit builds (including 8d3f714).

Can't pick up deployables

Running Carbon v0.23.321.1711
If I load up a completly fresh server without Carbon installed, I do not have this issue.
If I load up Rust with Carbon and no plugins, I have this issue.
Can't seem to figure out what is causing it.
I can't pick up my boxes, workbench, research table or doors with no locks.
No error messages, just won't pick up.
I am set as owner of server. Happens on a freshly wiped server. Happens on default Procedural map as well as custom maps. I am authorized on tool cupboard.
Can't think of anything else to try.

Windows Artifacts Are non-Standards Compliant .zip files.

The build script (build.bat) uses PowerShell to compress files on a Windows Runner, which in turn runs on old .NET Framework and produces non-standard compliant files:

powershell -Command "Compress-Archive -Update -Path '%BUILD_ROOT%\Release\.tmp\%BUILD_TARGET%\*' -DestinationPath '%BUILD_ROOT%\Release\Carbon.%TOS%.%TAG%.zip'"

(The separators in the .zip archive are \\ backslashes instead of forward slashes /), more info here:
https://github.com/microsoft/dotnet/blob/main/Documentation/compatibility/change-in-path-separator-character-in-zip-files.md

A quick fix would just be invoking PowerShell Core (pwsh), that should be preinstalled on CI machines.


Note: I don't know anything about Rust (game), I was just linked the repo and poked around.

Generally the impact of this is some unarchiving tools (more so on Linux side), may be unhappy with these archive files.

LightsOn and XPerience

Having issues with LightsOn (https://umod.org/plugins/lights-on) and XPerience (https://umod.org/plugins/xperience):
Failed compiling 'C:\Rust Server Tool\carbon\plugins\XPerience.cs':

  1. Argument 3: cannot convert from 'Oxide.Core.Plugins.Plugin' to 'Oxide.Plugins.RustPlugin'
    (XPerience 88 line 9618)
    [LightsOn] Timer 60s has failed: (Index was outside the bounds of the array.)
    at Oxide.Plugins.LightsOn.VehicleLiftChangePower () [0x00032] in <1713b71cc0034ce5b509c58cda7cc973>:0
    at Oxide.Plugins.LightsOn.b__65_18 () [0x00000] in <1713b71cc0034ce5b509c58cda7cc973>:0
    at Oxide.Plugins.Timers+<>c__DisplayClass13_0.b__0 () [0x0000c] in :0

What is this error ?

Threading compilation failed for 'RustEditAPIExample' (Object reference not set to an instance of an object)
at Carbon.Jobs.ScriptCompilationThread.ThreadFunction () [0x00295] in :0
Failed compiling 'C:\Rustserver\Server\carbon\plugins\RustEditAPIExample.cs':

  1. The type or namespace name 'RustEdit' does not exist in the namespace 'Oxide.Ext' (are you missing an assembly reference?)
    I'm having this issue only with Carbon, when I unistall and get back to oxide it disapear

Dev builds break previously working plugin (Permissions Manager)

The last few dev and dev commit builds (can't determine how far back this started) have broken Permissions Manager By Steenamaroo (Hosted on Codefling)
It now fails to compile with the following error:

Failed compiling 'C:\GAMES\RUST\carbon\plugins\PermissionsManager.cs':

  1. The type 'DbConnection' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
    (PermissionsManager 29 line 1032)

Line 1032 reads: try { Sql_conn?.Con?.Open(); }

[REQ] Add support for subdirectories

If possible, please add subdirectory support for plugins.

Example layout:

  • plugins/core/mysql.cs
  • plugins/core/permissions.cs
  • plugins/fixes/FixCargoshipRHIB.cs
  • etc ...

Currently you will get an error message if you try this.

"-carbon.rootdir" switch doesn`t working

I renamed the carbon folder to carbon2. Now my startup script looks like this:

RustDedicated.exe -nographics -batchmode -logs -silent-crashes ^
                  -server.hostname "%name%" ^
                  -server.identity "%identity%" ^
                  -server.port %port% ^
                  -server.queryport %queryport% ^
                  -server.netlog ^
                  -server.saveinterval 400 ^
                  -rcon.port %rconPort% ^
                  -rcon.password "%rconPassword%" ^
                  -rcon.web true ^
                  -server.maxplayers 50 ^
                  -chat.serverlog 1 ^
                  -logfile "%identity%_log.txt" ^
                  -carbon.rootdir "D://path//to//carbon2//"

But when I try to start the server, all I have is an empty console output.
Without any errors. All logs are also empty.
I need this to run multiple server instances locally.

Whitelist being enforced, even if whitelist module set disabled. commit build c04d3ac

In testing commit build c04d3ac, found that whitelist was being enforced, even if config has it disabled.
192.168.1.2:60769/7XXXXXXXXXXXXXX2/Paul has auth level 2
192.168.1.2:60769/7XXXXXXXXXXXXXX2/Paul Rejecting connection - Not whitelisted
192.168.1.2:60769/7XXXXXXXXXXXXXX2/Paul kicked: Not whitelisted

Whitelist config.json:
{
"Enabled": false,
"Config": {
"BypassPermission": "whitelist.bypass",
"BypassGroup": "whitelisted"
}
}

Mods that interact / change other mods seem to have protection issues and refuse to load

Example:

Zombie Horde loads fine

Raiding zombies alters the behavior of Zombie Horde, and refuses to load in Carbon, this works properly in Oxide however.

(Ran into a lot of issues where other mods have similar problems if they interact the same way)

[ERRO] Failed compiling '\carbon\plugins\RaidingZombies.cs':
[ERRO] 1. 'ZombieHorde' is inaccessible due to its protection level [CS0122]
(RaidingZombies 30 line 142)

Link to above example mods
https://chaoscode.io/resources/raiding-zombies.211/
https://chaoscode.io/resources/zombiehorde.120/

Red text when booting (Vanilla, Procedural Map) server

[Edge Build โ€” v0.2023.2110.5046]
More lines of red text when booting server.

RuntimeNavMeshBuilder: Source mesh Tarp_LOD1 is skipped because it does not allow read access
RuntimeNavMeshBuilder: Source mesh structure_bottom_COL is skipped because it does not allow read access
RuntimeNavMeshBuilder: Source mesh source_pipes_COL is skipped because it does not allow read access
RuntimeNavMeshBuilder: Source mesh waterpumps_COL is skipped because it does not allow read access
Failed to check connectivity to the companion server: System.NullReferenceException: Object reference not set to an instance of an object
  at Steamworks.SteamServer.get_PublicIp () [0x00005] in <0beb3bfceb4241188e08900c8216569f>:0
  at ConVar.App.GetPublicIP () [0x00029] in <824ee182d2964181bc40c58c0dbb2d5f>:0
  at CompanionServer.Server+<GetPublicIPAsync>d__23.MoveNext () [0x0002b] in <824ee182d2964181bc40c58c0dbb2d5f>:0
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <fb001e01371b4adca20013e0ac763896>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <fb001e01371b4adca20013e0ac763896>:0
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <fb001e01371b4adca20013e0ac763896>:0
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <fb001e01371b4adca20013e0ac763896>:0
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <fb001e01371b4adca20013e0ac763896>:0
  at CompanionServer.Server+<CheckConnectivity>d__22.MoveNext () [0x00086] in <824ee182d2964181bc40c58c0dbb2d5f>:0
Setting breakpad minidump AppID = 252490
Failed to call hook 'OnServerInitialized' on plugin 'QualityCrafting v2.1.1' (Object reference not set to an instance of an object)
  at Carbon.HookCaller.CallHook[T] (Carbon.Base.BaseHookable plugin, System.String hookName, System.Object arg1, System.Object arg2, System.Object arg3) [0x0003b] in <6b10a4dcee1640219e0217702e4a7c33>:0
  at Oxide.Core.Plugins.Plugin.Call[T] (System.String hook, System.Object arg1, System.Object arg2, System.Object arg3) [0x00001] in <6b10a4dcee1640219e0217702e4a7c33>:0
  at Oxide.Plugins.QualityCrafting.LoadImages () [0x00020] in <0fe5d816fe3a4e8eba5867e6b49324b5>:0
  at Oxide.Plugins.QualityCrafting.OnServerInitialized (System.Boolean initial) [0x00037] in <0fe5d816fe3a4e8eba5867e6b49324b5>:0
  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <fb001e01371b4adca20013e0ac763896>:0
Failed to call hook 'OnServerInitialized' on plugin 'RemoverTool v4.3.36' (Object reference not set to an instance of an object)
  at Oxide.Plugins.RemoverTool.AddImageToLibrary (System.String url, System.String shortname, System.UInt64 skin) [0x00021] in <2f8e02cfd7a64ed4892751b89464d3e7>:0
  at Oxide.Plugins.RemoverTool.OnServerInitialized () [0x00286] in <2f8e02cfd7a64ed4892751b89464d3e7>:0
  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <fb001e01371b4adca20013e0ac763896>:0
[LightsOn] Timer 60s has failed: (Index was outside the bounds of the array.)
  at Oxide.Plugins.LightsOn.VehicleLiftChangePower () [0x00032] in <9fdf99c25d2345988819c6abf322e5bd>:0
  at Oxide.Plugins.LightsOn.<OnServerInitialized>b__65_18 () [0x00000] in <9fdf99c25d2345988819c6abf322e5bd>:0
  at Oxide.Plugins.Timers+<>c__DisplayClass13_0.<In>b__0 () [0x0000c] in <6b10a4dcee1640219e0217702e4a7c33>:0

arg.cmd.FullName prints Error

When using regular console command in UI trying to get arg.cmd.FullName prints error:

[ShoppyStock] Error (Object reference not set to an instance of an object)
  at Oxide.Plugins.ShoppyStock.ShoppyStockConsoleCommand (ConsoleSystem+Arg arg) [0x0003a] in <2f2723b07ada4e758352f8cca66ed8b1>:0 
  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <fb001e01371b4adca20013e0ac763896>:0 

Example code:

        [ConsoleCommand("ConsoleCommandTest")]
        private void ConsoleTestCommand(ConsoleSystem.Arg arg)
        {
            Puts($"TEST: {arg.cmd.FullName}");
	}

QualityCrafting

Quality Crafting
Carbon v0.2023.2124.3917

Loaded plugin QualityCrafting v2.1.2 by mr01sam [708ms]
Failed to call hook 'OnServerInitialized' on plugin 'QualityCrafting v2.1.2' (Object reference not set to an instance of an object)
  at Carbon.HookCaller.CallHook[T] (Carbon.Base.BaseHookable plugin, System.String hookName, System.Object arg1, System.Object arg2, System.Object arg3) [0x0003b] in <d59461e36e4d456db946934552a033c6>:0
  at Oxide.Core.Plugins.Plugin.Call[T] (System.String hook, System.Object arg1, System.Object arg2, System.Object arg3) [0x00001] in <d59461e36e4d456db946934552a033c6>:0 .2124.3917-Debug-develop-46463ac, 2 mods, 30 plgs
  at Oxide.Plugins.QualityCrafting.LoadImages () [0x00020] in <38efe1d1a2664f27b1ee1e68b5d890e5>:0
  at Oxide.Plugins.QualityCrafting.OnServerInitialized (System.Boolean initial) [0x00037] in <38efe1d1a2664f27b1ee1e68b5d890e5>:0
  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <fb001e01371b4adca20013e0ac763896>:0

XPerience Issue

When I try loading the XPerience plugin, it will not load.

c.load XPerience
Failed compiling 'C:\Rust Server Tool\carbon\plugins\XPerience.cs':

  1. Using the generic type 'ArrayPool' requires 1 type arguments
    (XPerience 41 line 4369)

Couldn't patch UpdateServerInformation. Error

The server with Bare Carbon installation is spamming an error in console each 30 seconds:

Couldn't patch UpdateServerInformation. (Object reference not set to an instance of an object)
   at bool Carbon.Hooks.Category_Static+Static_ServerMgr+IServerInfoUpdate.get_ForceModded()
   at void Carbon.Hooks.Category_Static+Static_ServerMgr+IServerInfoUpdate.Postfix()

List of installed plugins:

#   Name             Enabled  Version  Hook Time  Memory Usage  Uptime     Quick
1   Admin            True     1.7.0    0ms        0.0b          13h14m31s  c.setmodule "Admin" [0|1]
2   ColorPicker      True     1.0.0    0ms        0.0b          13h14m31s  c.setmodule "ColorPicker" [0|1]
3   DatePicker       True     1.0.0    0ms        0.0b          13h14m31s  c.setmodule "DatePicker" [0|1]
4   ImageDatabase    True     0.0.0    0ms        0.0b          13h14m31s  c.setmodule "ImageDatabase" [0|1]
5   Modal            True     1.0.0    0ms        0.0b          13h14m31s  c.setmodule "Modal" [0|1]
6   DRM              False    0.0.0    0ms        0.0b          13h14m31s  c.setmodule "DRM" [0|1]
7   GatherManager    False    0.0.0    0ms        0.0b          13h14m31s  c.setmodule "GatherManager" [0|1]
8   MapProtection    False    0.0.0    0ms        0.0b          13h14m31s  c.setmodule "MapProtection" [0|1]
9   ModerationTools  False    0.0.0    0ms        0.0b          13h14m31s  c.setmodule "ModerationTools" [0|1]
10  Optimisations    False    0.0.0    0ms        0.0b          13h14m31s  c.setmodule "Optimisations" [0|1]
11  StackManager     False    0.0.0    0ms        0.0b          13h14m31s  c.setmodule "StackManager" [0|1]
12  Whitelist        False    0.0.0    0ms        0.0b          13h14m31s  c.setmodule "Whitelist" [0|1]

List of installed mods:

#  Mod          Author  Version  Hook Time  Memory Usage  Compile Time  Uptime
1  Scripts
2  Zip Scripts
Failed plugins:
#  File  Errors  Stack
To list the full stack trace of failed plugins, run 'c.pluginsfailed'

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.