Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.IO;
- using Terraria;
- using TShockAPI;
- using Hooks;
- namespace Endless_Blocks
- {
- [APIVersion(1, 11)]
- public class Endless_Blocks : TerrariaPlugin
- {
- public static List<int> playerList = new List<int>();
- public override string Name
- {
- get { return "Endless Blocks"; }
- }
- public override string Author
- {
- get { return "by InanZen"; }
- }
- public override string Description
- {
- get { return "Never run out of building blocks"; }
- }
- public override Version Version
- {
- get { return new Version("1.0.0"); }
- }
- public override void Initialize()
- {
- NetHooks.GetData += GetData;
- ServerHooks.Leave += OnLeave;
- Commands.ChatCommands.Add(new Command("canbuild", EndlessCommand, "endless"));
- }
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- NetHooks.GetData -= GetData;
- ServerHooks.Leave -= OnLeave;
- }
- base.Dispose(disposing);
- }
- public Endless_Blocks(Main game)
- : base(game)
- {
- Order = 5;
- }
- public void OnLeave(int who)
- {
- lock (playerList)
- {
- playerList.Remove(who);
- }
- }
- public void EndlessCommand(CommandArgs args)
- {
- if (args.Parameters.Count == 1)
- {
- if (args.Parameters[0] == "off")
- {
- lock (playerList)
- playerList.Remove(args.Player.Index);
- args.Player.SendMessage("Endless Blocks disabled", Color.BurlyWood);
- }
- else if (args.Parameters[0] == "on")
- {
- lock (playerList)
- {
- if (!playerList.Contains(args.Player.Index))
- playerList.Add(args.Player.Index);
- }
- args.Player.SendMessage("Endless Blocks enabled", Color.BurlyWood);
- }
- }
- else
- {
- lock (playerList)
- {
- if (playerList.Remove(args.Player.Index))
- args.Player.SendMessage("Endless Blocks disabled", Color.BurlyWood);
- else
- {
- playerList.Add(args.Player.Index);
- args.Player.SendMessage("Endless Blocks enabled", Color.BurlyWood);
- }
- }
- }
- }
- public void GetData(GetDataEventArgs e)
- {
- if (e.MsgID == PacketTypes.Tile)
- {
- byte type, tileType, style;
- Int32 x, y;
- bool fail;
- using (var data = new MemoryStream(e.Msg.readBuffer, e.Index, e.Length))
- {
- var reader = new BinaryReader(data);
- type = reader.ReadByte();
- x = reader.ReadInt32();
- y = reader.ReadInt32();
- tileType = reader.ReadByte();
- fail = reader.ReadBoolean();
- style = reader.ReadByte();
- reader.Close();
- reader.Dispose();
- }
- if ((type == 1 || type == 3) && playerList.Contains(e.Msg.whoAmI))
- {
- int count = 0;
- Item giveItem = null;
- foreach (Item item in TShock.Players[e.Msg.whoAmI].TPlayer.inventory)
- {
- // Console.WriteLine("Item {0}, type: {1}, netid: {2}, createtile: {3}, createwall: {4}", item.name, item.type, item.netID, item.createTile, item.createWall);
- if ((type == 1 && item.createTile == tileType) || (type == 3 && item.createWall == tileType))
- {
- count += item.stack;
- giveItem = item;
- }
- }
- if (count < 10 && giveItem != null)
- TShock.Players[e.Msg.whoAmI].GiveItem(giveItem.type, giveItem.name, giveItem.width, giveItem.height, giveItem.maxStack-10);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment