mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
Add Entity.Name & /inventory 0 creative <slot> <itemtype> <count> (#1024)
* Update Program.cs * Update Entity.cs Add Entity.Name * Update Program.cs * Update Entity.cs Add break; * Update Entity.cs * Update Inventory.cs Add /inventory 0 creative <slot> <item> <count> * Update PacketOutgoingType.cs + CreativeInventoryAction * Update Protocol16.cs + SendCreativeInventorAction * Update Protocol18.cs + SendCreativeInventorAction * Update IMinecraftCom.cs + SendCreativeInventorAction * Update McTcpClient.cs + DoCreativeInventorAction * Update ChatBot.cs + CreativeInventorAction * Update McTcpClient.cs * Update ChatBot.cs * Update Inventory.cs Add show count * Update ChatBot.cs + ChatBot fix * Update Inventory.cs Inventory update and Fix * Update Entity.cs * Update McTcpClient.cs * Update Program.cs * Update Protocol16.cs * Update Protocol18.cs * Update IMinecraftCom.cs * Update Entity.cs
This commit is contained in:
parent
65620e2e95
commit
d120001d70
8 changed files with 110 additions and 16 deletions
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -886,6 +886,20 @@ namespace MinecraftClient
|
|||
return Handler.InteractEntity(EntityID, type);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interact with an entity
|
||||
/// </summary>
|
||||
/// <param name="slot"></param>
|
||||
/// <param name="ItemType"></param>
|
||||
/// <param name="count"></param>
|
||||
/// <returns></returns>
|
||||
protected bool CreativeInventoryAction(int slot, ItemType ItemType, int count)
|
||||
{
|
||||
Dictionary<string, object> NBT = null;
|
||||
Item item = new Item((int)ItemType, count, NBT);
|
||||
return Handler.DoCreativeInventoryAction(slot, item);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Use item currently in the player's hand (active inventory bar slot)
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -9,7 +9,7 @@ namespace MinecraftClient.Commands
|
|||
class Inventory : Command
|
||||
{
|
||||
public override string CMDName { get { return "inventory"; } }
|
||||
public override string CMDDesc { get { return "inventory <<id>|player|container> <list|close|drop <slot> <1|all>|click <slot> <left|right|middle>>: Interact with inventories"; } }
|
||||
public override string CMDDesc { get { return "inventory <<id>|player|container> <list|close|drop <slot> <1|all>|click <slot> <left|right|middle>|creativegive <slot> <itemtype> <count>>: Interact with inventories"; } }
|
||||
|
||||
public override string Run(McTcpClient handler, string command, Dictionary<string, object> localVars)
|
||||
{
|
||||
|
|
@ -110,6 +110,32 @@ namespace MinecraftClient.Commands
|
|||
}
|
||||
}
|
||||
else return CMDDesc;
|
||||
case "creativegive":
|
||||
if (args.Length >= 3)
|
||||
{
|
||||
int slot = int.Parse(args[2]);
|
||||
ItemType ItemType = ItemType.Stone;
|
||||
if (Enum.TryParse(args[3], out ItemType))
|
||||
{
|
||||
int count = int.Parse(args[4]);
|
||||
Dictionary<string, object> NBT = null;
|
||||
Item item = new Item((int)ItemType, count, NBT);
|
||||
|
||||
if (handler.DoCreativeInventoryAction(slot, item))
|
||||
{
|
||||
return "You have received " + ItemType + " x" + count + " in the slot #" + slot;
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Failed";
|
||||
}
|
||||
}
|
||||
else;
|
||||
{
|
||||
return CMDDesc;
|
||||
}
|
||||
}
|
||||
else return CMDDesc;
|
||||
default:
|
||||
return CMDDesc;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Mapping
|
||||
{
|
||||
|
|
@ -20,6 +18,11 @@ namespace MinecraftClient.Mapping
|
|||
/// </summary>
|
||||
public Guid UUID;
|
||||
|
||||
/// <summary>
|
||||
/// Nickname of the entity if it is a player.
|
||||
/// </summary>
|
||||
public string Name;
|
||||
|
||||
/// <summary>
|
||||
/// Entity type
|
||||
/// </summary>
|
||||
|
|
@ -48,12 +51,14 @@ namespace MinecraftClient.Mapping
|
|||
/// <param name="ID">Entity ID</param>
|
||||
/// <param name="type">Entity Type Enum</param>
|
||||
/// <param name="location">Entity location</param>
|
||||
public Entity(int ID, EntityType type, Location location, Guid uuid)
|
||||
/// <param name="uuid">Player uuid</param>
|
||||
public Entity(int ID, EntityType type, Location location, Guid uuid, string name)
|
||||
{
|
||||
this.ID = ID;
|
||||
this.Type = type;
|
||||
this.Location = location;
|
||||
this.UUID = uuid;
|
||||
this.Name = name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -1260,7 +1260,16 @@ namespace MinecraftClient
|
|||
public void OnSpawnPlayer(int EntityID, Guid UUID, Location location, byte Yaw, byte Pitch)
|
||||
{
|
||||
if (entities.ContainsKey(EntityID)) return;
|
||||
Entity entity = new Entity(EntityID, EntityType.Player, location, UUID);
|
||||
string name = "";
|
||||
Dictionary<string, string> uuids = GetOnlinePlayersWithUUID();
|
||||
foreach (KeyValuePair<string, string> keyValue in uuids)
|
||||
{
|
||||
if (keyValue.Key == UUID.ToString())
|
||||
{
|
||||
name = keyValue.Value;
|
||||
}
|
||||
}
|
||||
Entity entity = new Entity(EntityID, EntityType.Player, location, UUID, name);
|
||||
entities.Add(EntityID, entity);
|
||||
foreach (ChatBot bot in bots.ToArray())
|
||||
{
|
||||
|
|
@ -1489,6 +1498,17 @@ namespace MinecraftClient
|
|||
return handler.SendWindowAction(windowId, slotId, action, item);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Close the specified inventory window
|
||||
/// </summary>
|
||||
/// <param name="slot">Inventory slot</param>
|
||||
/// <param name="item">Item</param>
|
||||
/// <returns>TRUE if the window was successfully closed</returns>
|
||||
public bool DoCreativeInventoryAction(int slot, Item item)
|
||||
{
|
||||
return handler.SendCreativeInventoryAction(slot, item);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Close the specified inventory window
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -26,6 +26,7 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
UseItem,
|
||||
ClickWindow,
|
||||
CloseWindow,
|
||||
PlayerBlockPlacement
|
||||
PlayerBlockPlacement,
|
||||
CreativeInventoryAction
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -693,6 +693,11 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
return false; //Currently not implemented
|
||||
}
|
||||
|
||||
public bool SendCreativeInventoryAction(int slot, Item item)
|
||||
{
|
||||
return false; //Currently not implemented
|
||||
}
|
||||
|
||||
public bool SendCloseWindow(int windowId)
|
||||
{
|
||||
return false; //Currently not implemented
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -724,7 +724,7 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
}
|
||||
catch (Exception innerException)
|
||||
{
|
||||
if (innerException is SocketException || innerException.InnerException is SocketException || innerException is ThreadAbortException)
|
||||
if (innerException is SocketException || innerException.InnerException is SocketException)
|
||||
throw; //Connection lost rather than invalid data
|
||||
throw new System.IO.InvalidDataException(
|
||||
String.Format("Failed to process incoming packet of type {0}. (PacketID: {1}, Protocol: {2}, LoginPhase: {3}, InnerException: {4}).",
|
||||
|
|
@ -1377,6 +1377,22 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
catch (ObjectDisposedException) { return false; }
|
||||
}
|
||||
|
||||
public bool SendCreativeInventoryAction(int slot, Item item)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<byte> packet = new List<byte>();
|
||||
packet.AddRange(dataTypes.GetShort((short)slot));
|
||||
packet.AddRange(dataTypes.GetItemSlot(item));
|
||||
|
||||
SendPacket(PacketOutgoingType.CreativeInventoryAction, packet);
|
||||
return true;
|
||||
}
|
||||
catch (SocketException) { return false; }
|
||||
catch (System.IO.IOException) { return false; }
|
||||
catch (ObjectDisposedException) { return false; }
|
||||
}
|
||||
|
||||
public bool SendCloseWindow(int windowId)
|
||||
{
|
||||
try
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -149,6 +149,13 @@ namespace MinecraftClient.Protocol
|
|||
/// <returns>True if packet was successfully sent</returns>
|
||||
bool SendWindowAction(int windowId, int slotId, WindowActionType action, Item item);
|
||||
|
||||
/// <summary>
|
||||
/// Send a click window slot packet to the server
|
||||
/// </summary>
|
||||
/// <param name="slot">Id of inventory slot</param>
|
||||
/// <param name="item">Id of item </param>
|
||||
bool SendCreativeInventoryAction(int slot, Item item);
|
||||
|
||||
/// <summary>
|
||||
/// Send a close window packet to the server
|
||||
/// </summary>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue