// actual code private object OnRecyclerToggle(Recycler r, BasePlayer p) { // check permission if (!permission.UserHasPermission(p.UserIDString, "recyclerspeed.use")) { return(null); } if (r.IsOn() == false) { timer.Once(0.1f, () => { r.CancelInvoke(new Action(r.RecycleThink)); r.InvokeRepeating(new Action(r.RecycleThink), (speed - 0.1f), speed); }); } return(null); }
private object CanAcceptItem(ItemContainer con, Item i, int target) { if (con.entityOwner is Recycler) { Recycler r = con.entityOwner as Recycler; if (this.IsRecycleBox(r)) { BasePlayer p = this.PlayerFromRecycler(r.net.ID); if (p == null) { return(null); } if (target < 6) { if (!this.Data.Settings.RecyclableTypes.Contains(Enum.GetName(typeof(ItemCategory), i.info.category)) || this.Data.Settings.Blacklist.Contains(i.info.shortname)) { if (p != null) { this.PrintToChat(p, this.GetMessage("Recycle", "Invalid", p)); } return(ItemContainer.CanAcceptResult.CannotAcceptRightNow); } else { NextFrame(() => { if (r == null || !r.HasRecyclable()) { return; } if (this.Data.Settings.InstantRecycling) { if (!r.IsOn()) { r.InvokeRepeating(new Action(r.RecycleThink), 0, 0); r.SetFlag(BaseEntity.Flags.On, true, false, true); r.SendNetworkUpdateImmediate(); } } else { r.StartRecycling(); } }); } } else if (this.Data.Settings.ToInventory) { NextFrame(() => { if (p == null || p.inventory == null || p.inventory.containerMain == null || p.inventory.containerBelt == null || i == null) { return; } bool flag = false; if (!p.inventory.containerMain.IsFull()) { flag = i.MoveToContainer(p.inventory.containerMain); } if (!flag && !p.inventory.containerBelt.IsFull()) { i.MoveToContainer(p.inventory.containerBelt); } }); } } } return(null); }