diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 3af965a8..df65112c 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -1317,7 +1317,7 @@ namespace TShockAPI args.Player.SendMultipleMatchError(players.Select(p => p.Name)); return; } - + UserAccount offlineUserAccount = TShock.UserAccounts.GetUserAccountByName(args.Parameters[1]); // Storage variable to determine if the command executor is the server console @@ -1338,8 +1338,8 @@ namespace TShockAPI if (args.Parameters[2] != "0") { parsedOkay = TShock.Utils.TryParseTime(args.Parameters[2], out banLengthInSeconds); - } - else + } + else { parsedOkay = true; } @@ -1409,8 +1409,8 @@ namespace TShockAPI args.Player.SendErrorMessage("Note: An account named with this IP address also exists."); args.Player.SendErrorMessage("Note: It will also be banned."); } - } - else + } + else { // Apparently there is no way to not IP ban someone // This means that where we would normally just ban a "character name" here @@ -1435,7 +1435,7 @@ namespace TShockAPI // This needs to be fixed in a future implementation. targetGeneralizedName = offlineUserAccount.Name; - if (TShock.Groups.GetGroupByName(offlineUserAccount.Group).HasPermission(Permissions.immunetoban) && + if (TShock.Groups.GetGroupByName(offlineUserAccount.Group).HasPermission(Permissions.immunetoban) && !callerIsServerConsole) { args.Player.SendErrorMessage("Permission denied. Target {0} is immune to ban.", targetGeneralizedName); @@ -1450,7 +1450,7 @@ namespace TShockAPI string lastIP = JsonConvert.DeserializeObject>(offlineUserAccount.KnownIps).Last(); - success = + success = TShock.Bans.AddBan(lastIP, "", offlineUserAccount.UUID, offlineUserAccount.Name, banReason, false, args.Player.Account.Name, banLengthInSeconds == 0 ? "" : DateTime.UtcNow.AddSeconds(banLengthInSeconds).ToString("s")); @@ -2144,7 +2144,12 @@ namespace TShockAPI private static void ToggleExpert(CommandArgs args) { - Main.expertMode = !Main.expertMode; + const int NormalMode = 0; + const int ExpertMode = 1; + if (Main.GameMode != ExpertMode) + Main.GameMode = ExpertMode; + else if (Main.GameMode == ExpertMode) + Main.GameMode = NormalMode; TSPlayer.All.SendData(PacketTypes.WorldInfo); args.Player.SendSuccessMessage("Expert mode is now {0}.", Main.expertMode ? "on" : "off"); } @@ -2274,7 +2279,7 @@ namespace TShockAPI return; case "wof": case "wall of flesh": - if (Main.wof >= 0) + if (Main.wofNPCIndex != -1) { args.Player.SendErrorMessage("There is already a Wall of Flesh!"); return; @@ -2347,7 +2352,7 @@ namespace TShockAPI } else if (npc.type == 113) { - if (Main.wof >= 0 || (args.Player.Y / 16f < (Main.maxTilesY - 205))) + if (Main.wofNPCIndex != -1 || (args.Player.Y / 16f < (Main.maxTilesY - 205))) { args.Player.SendErrorMessage("Can't spawn Wall of Flesh!"); return; @@ -4148,9 +4153,8 @@ namespace TShockAPI return; } - Main.windSpeed = speed; - Main.windSpeedSet = speed; - Main.windSpeedSpeed = 0f; + Main.windSpeedCurrent = speed; + Main.windSpeedTarget = 0f; TSPlayer.All.SendData(PacketTypes.WorldInfo); TSPlayer.All.SendInfoMessage("{0} changed the wind speed to {1}.", args.Player.Name, speed); } @@ -4651,7 +4655,7 @@ namespace TShockAPI args.Player.SendErrorMessage("Region \"{0}\" already exists.", newName); break; } - + if(TShock.Regions.RenameRegion(oldName, newName)) { args.Player.SendInfoMessage("Region renamed successfully!"); diff --git a/TShockAPI/DB/CharacterManager.cs b/TShockAPI/DB/CharacterManager.cs index 21380589..cd2ff426 100644 --- a/TShockAPI/DB/CharacterManager.cs +++ b/TShockAPI/DB/CharacterManager.cs @@ -175,7 +175,7 @@ namespace TShockAPI.DB { database.Query( "INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, extraSlot, spawnX, spawnY, skinVariant, hair, hairDye, hairColor, pantsColor, shirtColor, underShirtColor, shoeColor, hideVisuals, skinColor, eyeColor, questsCompleted) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20);", - player.Account.ID, playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, String.Join("~", playerData.inventory), playerData.extraSlot, player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.skinVariant, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor),TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBoolArray(player.TPlayer.hideVisual), TShock.Utils.EncodeColor(player.TPlayer.skinColor),TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished); + player.Account.ID, playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, String.Join("~", playerData.inventory), playerData.extraSlot, player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.skinVariant, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor),TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBoolArray(player.TPlayer.hideVisibleAccessory), TShock.Utils.EncodeColor(player.TPlayer.skinColor),TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished); return true; } catch (Exception ex) @@ -189,7 +189,7 @@ namespace TShockAPI.DB { database.Query( "UPDATE tsCharacter SET Health = @0, MaxHealth = @1, Mana = @2, MaxMana = @3, Inventory = @4, spawnX = @6, spawnY = @7, hair = @8, hairDye = @9, hairColor = @10, pantsColor = @11, shirtColor = @12, underShirtColor = @13, shoeColor = @14, hideVisuals = @15, skinColor = @16, eyeColor = @17, questsCompleted = @18, skinVariant = @19, extraSlot = @20 WHERE Account = @5;", - playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, String.Join("~", playerData.inventory), player.Account.ID, player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor), TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBoolArray(player.TPlayer.hideVisual), TShock.Utils.EncodeColor(player.TPlayer.skinColor), TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished, player.TPlayer.skinVariant, player.TPlayer.extraAccessory ? 1 : 0); + playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, String.Join("~", playerData.inventory), player.Account.ID, player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor), TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBoolArray(player.TPlayer.hideVisibleAccessory), TShock.Utils.EncodeColor(player.TPlayer.skinColor), TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished, player.TPlayer.skinVariant, player.TPlayer.extraAccessory ? 1 : 0); return true; } catch (Exception ex) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 64242a07..31a316b1 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -215,7 +215,7 @@ namespace TShockAPI PlayerInfo.Invoke(null, args); return args.Handled; } - + /// /// For use in a PlayerSlot event /// @@ -228,7 +228,7 @@ namespace TShockAPI /// /// The slot edited /// - public byte Slot { get; set; } + public short Slot { get; set; } /// /// The stack edited /// @@ -246,7 +246,7 @@ namespace TShockAPI /// PlayerSlot - called at a PlayerSlot event /// public static HandlerList PlayerSlot = new HandlerList(); - private static bool OnPlayerSlot(TSPlayer player, MemoryStream data, byte _plr, byte _slot, short _stack, byte _prefix, short _type) + private static bool OnPlayerSlot(TSPlayer player, MemoryStream data, byte _plr, short _slot, short _stack, byte _prefix, short _type) { if (PlayerSlot == null) return false; @@ -264,7 +264,7 @@ namespace TShockAPI PlayerSlot.Invoke(null, args); return args.Handled; } - + /// The arguments to a GetSection packet. public class GetSectionEventArgs : GetDataHandledEventArgs { @@ -292,7 +292,7 @@ namespace TShockAPI GetSection.Invoke(null, args); return args.Handled; } - + /// /// For use in a PlayerUpdate event /// @@ -383,7 +383,7 @@ namespace TShockAPI PlayerHP.Invoke(null, args); return args.Handled; } - + /// /// Used when a TileEdit event is called. /// @@ -442,7 +442,7 @@ namespace TShockAPI TileEdit.Invoke(null, args); return args.Handled; } - + /// /// For use in a SendTileSquare event /// @@ -484,7 +484,7 @@ namespace TShockAPI SendTileSquare.Invoke(null, args); return args.Handled; } - + /// /// For use in an ItemDrop event /// @@ -544,7 +544,7 @@ namespace TShockAPI ItemDrop.Invoke(null, args); return args.Handled; } - + /// /// For use in a NewProjectile event /// @@ -608,7 +608,7 @@ namespace TShockAPI NewProjectile.Invoke(null, args); return args.Handled; } - + /// /// For use with a NPCStrike event /// @@ -657,7 +657,7 @@ namespace TShockAPI NPCStrike.Invoke(null, args); return args.Handled; } - + /// The arguments to the ProjectileKill packet. public class ProjectileKillEventArgs : GetDataHandledEventArgs { @@ -694,7 +694,7 @@ namespace TShockAPI ProjectileKill.Invoke(null, args); return args.Handled; } - + /// /// For use in a TogglePvp event /// @@ -728,7 +728,7 @@ namespace TShockAPI TogglePvp.Invoke(null, args); return args.Handled; } - + /// /// For use in a PlayerSpawn event /// @@ -850,7 +850,7 @@ namespace TShockAPI ChestOpen.Invoke(null, args); return args.Handled; } - + /// /// For use in a PlaceChest event /// @@ -887,7 +887,7 @@ namespace TShockAPI PlaceChest.Invoke(null, args); return args.Handled; } - + /// /// For use in a PlayerZone event /// @@ -936,7 +936,7 @@ namespace TShockAPI PlayerZone.Invoke(null, args); return args.Handled; } - + /// /// For use with a PlayerAnimation event /// @@ -958,7 +958,7 @@ namespace TShockAPI PlayerAnimation.Invoke(null, args); return args.Handled; } - + /// /// For use in a PlayerMana event /// @@ -988,7 +988,7 @@ namespace TShockAPI PlayerMana.Invoke(null, args); return args.Handled; } - + /// /// For use in a PlayerTeam event /// @@ -1022,7 +1022,7 @@ namespace TShockAPI PlayerTeam.Invoke(null, args); return args.Handled; } - + /// /// For use in a Sign event /// @@ -1061,7 +1061,7 @@ namespace TShockAPI Sign.Invoke(null, args); return args.Handled; } - + /// /// For use in a LiquidSet event /// @@ -1105,7 +1105,7 @@ namespace TShockAPI LiquidSet.Invoke(null, args); return args.Handled; } - + /// /// For use in a PlayerBuffUpdate event /// @@ -1207,7 +1207,7 @@ namespace TShockAPI NPCAddBuff.Invoke(null, args); return args.Handled; } - + /// /// For use in a PlayerBuff event /// @@ -1246,7 +1246,7 @@ namespace TShockAPI PlayerBuff.Invoke(null, args); return args.Handled; } - + /// /// For use in a NPCHome event /// @@ -1488,7 +1488,7 @@ namespace TShockAPI PlaceObject.Invoke(null, args); return args.Handled; } - + /// For use in a PlaceTileEntity event. public class PlaceTileEntityEventArgs : GetDataHandledEventArgs { @@ -1784,7 +1784,7 @@ namespace TShockAPI } #endregion - + private static bool HandlePlayerInfo(GetDataHandlerArgs args) { byte playerid = args.Data.ReadInt8(); @@ -1843,11 +1843,11 @@ namespace TShockAPI args.Player.TPlayer.shirtColor = shirtColor; args.Player.TPlayer.underShirtColor = underShirtColor; args.Player.TPlayer.shoeColor = shoeColor; - args.Player.TPlayer.hideVisual = new bool[10]; + args.Player.TPlayer.hideVisibleAccessory = new bool[10]; for (int i = 0; i < 8; i++) - args.Player.TPlayer.hideVisual[i] = hideVisual[i]; + args.Player.TPlayer.hideVisibleAccessory[i] = hideVisual[i]; for (int i = 8; i < 10; i++) - args.Player.TPlayer.hideVisual[i] = hideVisual2[i]; + args.Player.TPlayer.hideVisibleAccessory[i] = hideVisual2[i]; args.Player.TPlayer.hideMisc = hideMisc; args.Player.TPlayer.extraAccessory = extraSlot; NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, args.Player.Index, NetworkText.FromLiteral(args.Player.Name), args.Player.Index); @@ -1873,7 +1873,7 @@ namespace TShockAPI private static bool HandlePlayerSlot(GetDataHandlerArgs args) { byte plr = args.Data.ReadInt8(); - byte slot = args.Data.ReadInt8(); + short slot = args.Data.ReadInt16(); short stack = args.Data.ReadInt16(); byte prefix = args.Data.ReadInt8(); short type = args.Data.ReadInt16(); @@ -1987,7 +1987,7 @@ namespace TShockAPI NetMessage.SendData((int)PacketTypes.WorldInfo, args.Player.Index); return true; } - + private static bool HandleGetSection(GetDataHandlerArgs args) { if (OnGetSection(args.Player, args.Data, args.Data.ReadInt32(), args.Data.ReadInt32())) @@ -2003,7 +2003,7 @@ namespace TShockAPI NetMessage.SendData((int)PacketTypes.TimeSet, -1, -1, NetworkText.Empty, Main.dayTime ? 1 : 0, (int)Main.time, Main.sunModY, Main.moonModY); return false; } - + private static bool HandleSpawn(GetDataHandlerArgs args) { var player = args.Data.ReadInt8(); @@ -3118,7 +3118,7 @@ namespace TShockAPI return false; } - + private static bool HandleSyncExtraValue(GetDataHandlerArgs args) { var npcIndex = args.Data.ReadInt16(); @@ -3142,7 +3142,7 @@ namespace TShockAPI return false; } - + private static bool HandleKillPortal(GetDataHandlerArgs args) { short projectileIndex = args.Data.ReadInt16(); @@ -3383,7 +3383,7 @@ namespace TShockAPI TileID.Candles, TileID.CorruptGrass, TileID.Dirt, - TileID.FleshGrass, + TileID.CrimsonGrass, TileID.Grass, TileID.HallowedGrass, TileID.MagicalIceBlock, diff --git a/TShockAPI/Localization/EnglishLanguage.cs b/TShockAPI/Localization/EnglishLanguage.cs index 2191f74e..81c8b933 100644 --- a/TShockAPI/Localization/EnglishLanguage.cs +++ b/TShockAPI/Localization/EnglishLanguage.cs @@ -1,4 +1,4 @@ -/* +/* TShock, a server mod for Terraria Copyright (C) 2011-2019 Pryaxis & TShock Contributors @@ -39,13 +39,13 @@ namespace TShockAPI.Localization { var culture = Language.ActiveCulture; - var skip = culture == GameCulture.English; + var skip = culture == GameCulture.FromCultureName(GameCulture.CultureName.English); try { if (!skip) { - LanguageManager.Instance.SetLanguage(GameCulture.English); + LanguageManager.Instance.SetLanguage(GameCulture.FromCultureName(GameCulture.CultureName.English)); } for (var i = -48; i < Main.maxItemTypes; i++) diff --git a/TShockAPI/NetItem.cs b/TShockAPI/NetItem.cs index a32e9501..13ac0989 100644 --- a/TShockAPI/NetItem.cs +++ b/TShockAPI/NetItem.cs @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -using System; + using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -46,6 +46,11 @@ namespace TShockAPI /// public static readonly int ForgeSlots = SafeSlots; + /// + /// 40 - The number of slots in a void vault + /// + public static readonly int VoidSlots = ForgeSlots; + /// /// 59 - The size of the player's inventory (inventory, coins, ammo, held item) /// @@ -79,7 +84,7 @@ namespace TShockAPI /// /// 180 - The inventory size (inventory, held item, armour, dies, coins, ammo, piggy, safe, and trash) /// - public static readonly int MaxInventory = InventorySlots + ArmorSlots + DyeSlots + MiscEquipSlots + MiscDyeSlots + PiggySlots + SafeSlots + ForgeSlots + 1; + public static readonly int MaxInventory = InventorySlots + ArmorSlots + DyeSlots + MiscEquipSlots + MiscDyeSlots + PiggySlots + SafeSlots + ForgeSlots + VoidSlots + 1; public static readonly Tuple InventoryIndex = new Tuple(0, InventorySlots); public static readonly Tuple ArmorIndex = new Tuple(InventoryIndex.Item2, InventoryIndex.Item2 + ArmorSlots); @@ -90,6 +95,7 @@ namespace TShockAPI public static readonly Tuple SafeIndex = new Tuple(PiggyIndex.Item2, PiggyIndex.Item2 + SafeSlots); public static readonly Tuple TrashIndex = new Tuple(SafeIndex.Item2, SafeIndex.Item2 + TrashSlots); public static readonly Tuple ForgeIndex = new Tuple(TrashIndex.Item2, TrashIndex.Item2 + ForgeSlots); + public static readonly Tuple VoidIndex = new Tuple(ForgeIndex.Item2, ForgeIndex.Item2 + VoidSlots); [JsonProperty("netID")] private int _netId; diff --git a/TShockAPI/PlayerData.cs b/TShockAPI/PlayerData.cs index 3c270c00..64a33676 100644 --- a/TShockAPI/PlayerData.cs +++ b/TShockAPI/PlayerData.cs @@ -107,7 +107,7 @@ namespace TShockAPI this.shirtColor = player.TPlayer.shirtColor; this.underShirtColor = player.TPlayer.underShirtColor; this.shoeColor = player.TPlayer.shoeColor; - this.hideVisuals = player.TPlayer.hideVisual; + this.hideVisuals = player.TPlayer.hideVisibleAccessory; this.skinColor = player.TPlayer.skinColor; this.eyeColor = player.TPlayer.eyeColor; this.questsCompleted = player.TPlayer.anglerQuestsFinished; @@ -120,6 +120,7 @@ namespace TShockAPI Item[] piggy = player.TPlayer.bank.item; Item[] safe = player.TPlayer.bank2.item; Item[] forge = player.TPlayer.bank3.item; + Item[] voidVault = player.TPlayer.bank4.item; Item trash = player.TPlayer.trashItem; for (int i = 0; i < NetItem.MaxInventory; i++) @@ -170,12 +171,17 @@ namespace TShockAPI //179-219 this.inventory[i] = (NetItem)trash; } - else + else if (i < NetItem.ForgeIndex.Item2) { //220 var index = i - NetItem.ForgeIndex.Item1; this.inventory[i] = (NetItem)forge[index]; - + } + else + { + //220 + var index = i - NetItem.VoidIndex.Item1; + this.inventory[i] = (NetItem)voidVault[index]; } } } @@ -222,9 +228,9 @@ namespace TShockAPI player.TPlayer.eyeColor = this.eyeColor.Value; if (this.hideVisuals != null) - player.TPlayer.hideVisual = this.hideVisuals; + player.TPlayer.hideVisibleAccessory = this.hideVisuals; else - player.TPlayer.hideVisual = new bool[player.TPlayer.hideVisual.Length]; + player.TPlayer.hideVisibleAccessory = new bool[player.TPlayer.hideVisibleAccessory.Length]; for (int i = 0; i < NetItem.MaxInventory; i++) { @@ -323,7 +329,7 @@ namespace TShockAPI player.TPlayer.trashItem.prefix = (byte)this.inventory[i].PrefixId; } } - else + else if (i < NetItem.ForgeIndex.Item2) { //220 var index = i - NetItem.ForgeIndex.Item1; @@ -334,7 +340,18 @@ namespace TShockAPI player.TPlayer.bank3.item[index].stack = this.inventory[i].Stack; player.TPlayer.bank3.item[index].Prefix((byte)this.inventory[i].PrefixId); } - + } + else + { + //260 + var index = i - NetItem.VoidIndex.Item1; + player.TPlayer.bank4.item[index].netDefaults(this.inventory[i].NetId); + + if (player.TPlayer.bank4.item[index].netID != 0) + { + player.TPlayer.bank4.item[index].stack = this.inventory[i].Stack; + player.TPlayer.bank4.item[index].Prefix((byte)this.inventory[i].PrefixId); + } } } @@ -380,6 +397,11 @@ namespace TShockAPI NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].bank3.item[k].Name), player.Index, slot, (float)Main.player[player.Index].bank3.item[k].prefix); slot++; } + for (int k = 0; k < NetItem.VoidSlots; k++) + { + NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].bank4.item[k].Name), player.Index, slot, (float)Main.player[player.Index].bank4.item[k].prefix); + slot++; + } NetMessage.SendData(4, -1, -1, NetworkText.FromLiteral(player.Name), player.Index, 0f, 0f, 0f, 0); @@ -428,8 +450,13 @@ namespace TShockAPI NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].bank3.item[k].Name), player.Index, slot, (float)Main.player[player.Index].bank3.item[k].prefix); slot++; } + for (int k = 0; k < NetItem.VoidSlots; k++) + { + NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].bank4.item[k].Name), player.Index, slot, (float)Main.player[player.Index].bank4.item[k].prefix); + slot++; + } + - NetMessage.SendData(4, player.Index, -1, NetworkText.FromLiteral(player.Name), player.Index, 0f, 0f, 0f, 0); NetMessage.SendData(42, player.Index, -1, NetworkText.Empty, player.Index, 0f, 0f, 0f, 0); diff --git a/TShockAPI/SaveManager.cs b/TShockAPI/SaveManager.cs index 577db086..54b2af98 100644 --- a/TShockAPI/SaveManager.cs +++ b/TShockAPI/SaveManager.cs @@ -29,7 +29,7 @@ namespace TShockAPI { // Singleton private static readonly SaveManager instance = new SaveManager(); - private SaveManager() + private SaveManager() { _saveThread = new Thread(SaveWorker); _saveThread.Name = "TShock SaveManager Worker"; @@ -126,10 +126,10 @@ namespace TShockAPI if (task.direct) { OnSaveWorld(new WorldSaveEventArgs()); - WorldFile.saveWorld(task.resetTime); + WorldFile.SaveWorld(task.resetTime); } else - WorldFile.saveWorld(task.resetTime); + WorldFile.SaveWorld(task.resetTime); TShock.Utils.Broadcast("World saved.", Color.Yellow); TShock.Log.Info(string.Format("World saved at ({0})", Main.worldPathName)); } @@ -154,11 +154,11 @@ namespace TShockAPI this.resetTime = resetTime; this.direct = direct; } - + public override string ToString() { return string.Format("resetTime {0}, direct {1}", resetTime, direct); } } } -} \ No newline at end of file +} diff --git a/TShockAPI/Sockets/LinuxTcpSocket.cs b/TShockAPI/Sockets/LinuxTcpSocket.cs index e31ec51e..98892c42 100644 --- a/TShockAPI/Sockets/LinuxTcpSocket.cs +++ b/TShockAPI/Sockets/LinuxTcpSocket.cs @@ -1,4 +1,4 @@ -/* +/* TShock, a server mod for Terraria Copyright (C) 2011-2019 Pryaxis & TShock Contributors @@ -185,7 +185,7 @@ namespace TShockAPI.Sockets private void ListenLoop(object unused) { - while (this._isListening && !Netplay.disconnect) + while (this._isListening && !Netplay.Disconnect) { try { diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index bb33bcc9..d3d4dd95 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1110,7 +1110,7 @@ namespace TShockAPI /// True if allowed, otherwise false private bool OnCreep(int tileType) { - if (!Config.AllowCrimsonCreep && (tileType == TileID.Dirt || tileType == TileID.FleshWeeds + if (!Config.AllowCrimsonCreep && (tileType == TileID.Dirt || tileType == TileID.CrimsonGrass || TileID.Sets.Crimson[tileType])) { return false; @@ -1669,7 +1669,7 @@ namespace TShockAPI file.ServerPassword = _cliPassword; } - Netplay.spamCheck = false; + Netplay.SpamCheck = false; } } } diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index 9be5eabd..41eecf36 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -255,7 +255,7 @@ namespace TShockAPI var found = new List(); Item item = new Item(); string nameLower = name.ToLowerInvariant(); - var checkEnglish = Language.ActiveCulture != GameCulture.English; + var checkEnglish = Language.ActiveCulture != GameCulture.FromCultureName(GameCulture.CultureName.English); for (int i = 1; i < Main.maxItemTypes; i++) { @@ -471,7 +471,7 @@ namespace TShockAPI TShock.Utils.Broadcast(reason, Color.Red); // Disconnect after kick as that signifies server is exiting and could cause a race - Netplay.disconnect = true; + Netplay.Disconnect = true; } /// @@ -853,7 +853,7 @@ namespace TShockAPI for(int i = 0; i < Main.recipe.Length; i++) Main.recipe[i] = new Recipe(); } - + /// Dumps a matrix of all permissions & all groups in Markdown table format. /// The save destination. internal void DumpPermissionMatrix(string path)