Industrial Farming

Industrial Farming 1.0.1

No permission to download
Compatible With:
  1. Oxide
  2. Carbon
Features:

  • Automatically attaches Industrial Adapters and Lights to farming entities.
  • Integrated "Hub" system: Spawns a storage box for Coops and Beehives to manage inputs/outputs.
  • Automated Egg Collection: Moves eggs from Coops to the attached storage box (protecting the hatching slot).
  • Automated Refilling: Moves food into Coops and refills water from jugs placed in the storage box.
  • Automated Honey Collection: Moves honey from Beehives into the storage box.
  • Highly Optimized: Uses a staggered initial scan and batch-processing coroutines to ensure zero impact on server performance.
  • Custom Layouts: Fully configurable offsets and rotations for every supported entity.

Supported Entities by Default:

  • Chicken Coops
  • Beehives
  • Composters
  • Large/Small/Triangle Planters
  • Fridges & Mini Fridges
  • Hitch Troughs
  • Bathtub & Minecart Planters
Developer API :

Industrial Farming features an open API via custom hooks. These hooks are called whenever the plugin performs an automated action. Because these are standard Oxide/Carbon hooks, you do not need to add a [PluginReference] to your code; simply adding the method signature to your plugin is enough to receive the data.

Supported Hooks :

  • OnEggMoved(ChickenCoop coop, Item item, StorageContainer box)
    • Triggered when a produced egg is moved from the coop to the external storage box.
  • OnHoneyMoved(BaseEntity beehive, Item item, StorageContainer box)
    • Triggered when honey is moved from a beehive to the external storage box.
  • OnWaterFilled(ChickenCoop coop, int amount, StorageContainer box)
    • Triggered when water is siphoned from a jug in the storage box into the coop.
  • OnFoodMoved(ChickenCoop coop, Item item, StorageContainer box)
    • Triggered when food is transferred from the storage box into the coop inventory.
Integration Example :

If you want to log these actions in a separate plugin or create a custom UI for farming stats, you can use the hooks like this:

C#:
        #region Debug API (also for testing example for other plugins)
        private void OnEggMoved(ChickenCoop coop , Item item , StorageContainer box)
        {
            if (config.Debug) Puts($"[DEBUG] Moved {item.info.shortname} from Coop {coop.net.ID} to Box {box.net.ID}");
        }

        private void OnHoneyMoved(BaseEntity beehive , Item item , StorageContainer box)
        {
            if (config.Debug) Puts($"[DEBUG] Moved Honey from Beehive {beehive.net.ID} to Box {box.net.ID}");
        }

        private void OnWaterFilled(ChickenCoop coop , int amount , StorageContainer box)
        {
            if (config.Debug) Puts($"[DEBUG] Refilled {amount}ml Water into Coop {coop.net.ID} from Box {box.net.ID}");
        }

        private void OnFoodMoved(ChickenCoop coop , Item item , StorageContainer box)
        {
            if (config.Debug) Puts($"[DEBUG] Moved Food ({item.info.shortname}) into Coop {coop.net.ID} from Box {box.net.ID}");
        }
        #endregion

Configuration :

JSON:
{
  "Prefix": "[IndustrialFarming] ",
  "Debug": false,
  "Plugin Settings": {
    "Scan Interval (Seconds)": 120.0,
    "Item Transfer Delay (Seconds)": 0.1,
    "Chicken Coop Box Skin": 3555732160,
    "Beehive Box Skin": 3438077533,
    "Entities Processed Per Frame": 100
  },
  "Entity Layout Mappings": {
    "chickencoop.deployed": {
      "BoxOffset": {
        "x": 0.7,
        "y": 0.0,
        "z": -1.0
      },
      "AdapterOffset": {
        "x": 0.0,
        "y": 0.55,
        "z": 0.0
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": {
        "x": -0.32,
        "y": 1.45,
        "z": -0.56,
        "normalized": {
          "x": -0.201641068,
          "y": 0.9136861,
          "z": -0.352871865
        },
        "magnitude": 1.58697832,
        "sqrMagnitude": 2.5185
      },
      "LampRotationEuler": null
    },
    "beehive.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.0,
        "y": 0.3,
        "z": 0.35
      },
      "AdapterRotationEuler": {
        "x": 90.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "composter": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.0,
        "y": 1.7,
        "z": 0.0
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "fridge.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.0,
        "y": 2.0,
        "z": 0.0
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "minifridge.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.0,
        "y": 1.055,
        "z": -0.05
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "planter.small.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.65,
        "y": 0.3,
        "z": 0.0
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "planter.large.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.65,
        "y": 0.3,
        "z": 0.0
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "railroadplanter.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.65,
        "y": 0.32,
        "z": 0.0
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "bathtub.planter.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.65,
        "y": 0.55,
        "z": 0.0
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "minecart.planter.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.0,
        "y": 0.8,
        "z": 0.0
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "triangle_railroad_planter.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.3,
        "y": 0.3,
        "z": 0.0
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 90.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "planter.triangle.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.3,
        "y": 0.3,
        "z": 0.0
      },
      "AdapterRotationEuler": {
        "x": 0.0,
        "y": 90.0,
        "z": 0.0
      },
      "LampOffset": null,
      "LampRotationEuler": null
    },
    "hitchtrough.deployed": {
      "BoxOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
      },
      "AdapterOffset": {
        "x": 0.0,
        "y": 0.48,
        "z": 0.32
      },
      "AdapterRotationEuler": {
        "x": 105.0,
        "y": 0.0,
        "z": 0.0
      },
      "LampOffset": {
        "x": 0.0,
        "y": 1.05,
        "z": -0.28,
        "normalized": {
          "x": 0.0,
          "y": 0.9662349,
          "z": -0.257662654
        },
        "magnitude": 1.08669221,
        "sqrMagnitude": 1.18089986
      },
      "LampRotationEuler": {
        "x": -90.0,
        "y": 0.0,
        "z": 0.0,
        "normalized": {
          "x": -1.0,
          "y": 0.0,
          "z": 0.0
        },
        "magnitude": 90.0,
        "sqrMagnitude": 8100.0
      }
    }
  }
}
Author
KrunghCrow
Downloads
6
Views
239
First release
Last update

Ratings

5.00 star(s) 1 ratings

More resources from KrunghCrow

Latest updates

  1. Updated to version v1.0.1

    Performance Overhaul: Reduced memory usage by 98% and optimized logic to achieve 0ms idle CPU...

Latest reviews

Brilliant for my PVE server the players love it
Back
Top