├── MineNET.GUI ├── VERSION ├── Resources │ ├── Icon │ │ └── App.ico │ └── Image │ │ └── icon.png ├── App.config ├── packages.config ├── Data │ └── Language.cs ├── Program.cs ├── MineNETGUIConfig.cs └── UI │ └── Controls │ └── PlayerListControl.cs ├── icon.png ├── MineNET ├── .nuget │ ├── nuget_build.bat │ └── nuget.exe ├── MineNET.nuspec ├── Attributes │ └── InternalCallAttribute.cs ├── Utils │ ├── CryptoUtils.cs │ ├── Config │ │ ├── JsonConfig.cs │ │ └── JsonStaticConfig.cs │ ├── LinqExtention.cs │ ├── TextContainerUtils.cs │ └── Random.cs ├── ICloneable.cs ├── Events │ ├── ICancelable.cs │ ├── ServerEvents │ │ ├── ServerStopEventArgs.cs │ │ ├── ServerStartEventArgs.cs │ │ ├── ServerStartedEventArgs.cs │ │ ├── ServerStoppedEventArgs.cs │ │ ├── ServerEventArgs.cs │ │ └── ServerCommandEventArgs.cs │ ├── IOEvents │ │ ├── IOEventArgs.cs │ │ ├── InputActionEventArgs.cs │ │ └── IOEvent.cs │ ├── EventHandlerAttribute.cs │ ├── PlayerEvents │ │ ├── PlayerJumpEventArgs.cs │ │ ├── PlayerEventArgs.cs │ │ ├── PlayerCreateEventArgs.cs │ │ ├── PlayerJoinEventArgs.cs │ │ ├── PlayerLoginEventArgs.cs │ │ ├── PlayerPreLoginEventArgs.cs │ │ ├── PlayerChatEventArgs.cs │ │ ├── PlayerToggleGlideEventArgs.cs │ │ ├── PlayerToggleSneakEventArgs.cs │ │ ├── PlayerToggleSprintEventArgs.cs │ │ ├── PlayerCommandEventArgs.cs │ │ ├── PlayerQuitEventArgs.cs │ │ ├── PlayerEatFoodEventArgs.cs │ │ ├── PlayerSkinChangeEventArgs.cs │ │ ├── PlayerItemConsumeEventArgs.cs │ │ ├── PlayerItemHeldEventArgs.cs │ │ ├── PlayerInteractEventArgs.cs │ │ └── PlayerBlockPickRequestEventArgs.cs │ ├── BlockEvents │ │ ├── BlockEventArgs.cs │ │ ├── BlockEvent.cs │ │ ├── BlockBreakEventArgs.cs │ │ └── BlockPlaceEventArgs.cs │ ├── EntityEvents │ │ ├── EntityEventArgs.cs │ │ ├── EntityEvent.cs │ │ └── EntityAnimationEventArgs.cs │ ├── NetworkEvents │ │ ├── NetworkEventArgs.cs │ │ ├── CloseSessionEventArgs.cs │ │ ├── CreateSessionEventArgs.cs │ │ └── RakNet │ │ │ ├── PacketSendEventArgs.cs │ │ │ ├── PacketReceiveEventArgs.cs │ │ │ ├── DataPacketSendEventArgs.cs │ │ │ ├── DataPacketReceiveEventArgs.cs │ │ │ ├── EncapsulatedSendEventArgs.cs │ │ │ ├── EncapsulatedReceiveEventArgs.cs │ │ │ ├── BatchPacketSendEventArgs.cs │ │ │ └── BatchPacketReceiveEventArgs.cs │ └── InventoryEvents │ │ ├── InventoryEventArgs.cs │ │ ├── InventoryOpenEventArgs.cs │ │ ├── InventoryCloseEventArgs.cs │ │ └── InventoryTransactionEventArgs.cs ├── NBT │ ├── Data │ │ └── NBTEndian.cs │ └── Tags │ │ ├── DataTag.cs │ │ └── ArrayDataTag.cs ├── Permissions │ ├── IServerOperator.cs │ ├── IPermissionRemovedExecutor.cs │ ├── PermissionAttachmentInfo.cs │ └── IPermissible.cs ├── Registry │ ├── EntityIdentityRegistry.cs │ ├── IListRegistry.cs │ ├── ItemRegistry.cs │ ├── BlockRegistry.cs │ ├── CreativeItemRegistry.cs │ ├── EffectRegistry.cs │ ├── IDictionaryRegistry.cs │ ├── RakNetPacketRegistry.cs │ ├── MinecraftPacketRegistry.cs │ └── CommandRegistry.cs ├── Commands │ ├── ICommandHandler.cs │ ├── Enums │ │ ├── CommandEnumItems.cs │ │ ├── CommandEnumBlocks.cs │ │ ├── CommandEnumBoolean.cs │ │ ├── CommandEnumRValueParam.cs │ │ ├── CommandEnumGameMode.cs │ │ └── CommandEnum.cs │ ├── Parameters │ │ ├── CommandParameterText.cs │ │ ├── CommandParameterJson.cs │ │ ├── CommandParameterFloat.cs │ │ ├── CommandParameterTarget.cs │ │ ├── CommandParameterValue.cs │ │ ├── CommandParameterCommand.cs │ │ ├── CommandParameterMessage.cs │ │ ├── CommandParameterPosition.cs │ │ ├── CommandParameterInt.cs │ │ ├── CommandParameterValueEnum.cs │ │ └── CommandParameterString.cs │ └── CommandSender.cs ├── Plugins │ ├── ApiVersion.cs │ ├── PluginFlags.cs │ └── IPlugin.cs ├── Items │ ├── Tools │ │ ├── Axes │ │ │ ├── ItemAxe.cs │ │ │ ├── ItemIronAxe.cs │ │ │ ├── ItemStoneAxe.cs │ │ │ ├── ItemGoldenAxe.cs │ │ │ ├── ItemWoodenAxe.cs │ │ │ └── ItemDiamondAxe.cs │ │ ├── Hoes │ │ │ ├── ItemHoe.cs │ │ │ ├── ItemIronHoe.cs │ │ │ ├── ItemStoneHoe.cs │ │ │ ├── ItemGoldenHoe.cs │ │ │ ├── ItemWoodenHoe.cs │ │ │ └── ItemDiamondHoe.cs │ │ ├── Swords │ │ │ ├── ItemSword.cs │ │ │ ├── ItemIronSword.cs │ │ │ ├── ItemGoldenSword.cs │ │ │ ├── ItemStoneSword.cs │ │ │ ├── ItemDiamondSword.cs │ │ │ └── ItemWoodenSword.cs │ │ ├── Shovels │ │ │ ├── ItemShovel.cs │ │ │ ├── ItemIronShovel.cs │ │ │ ├── ItemGoldenShovel.cs │ │ │ ├── ItemStoneShovel.cs │ │ │ ├── ItemWoodenShovel.cs │ │ │ └── ItemDiamondShovel.cs │ │ ├── Pickaxes │ │ │ ├── ItemPickaxe.cs │ │ │ ├── ItemIronPickaxe.cs │ │ │ ├── ItemStonePickaxe.cs │ │ │ ├── ItemGoldenPickaxe.cs │ │ │ ├── ItemWoodenPickaxe.cs │ │ │ └── ItemDiamondPickaxe.cs │ │ ├── ItemFishingRod.cs │ │ ├── ItemBow.cs │ │ ├── ItemFlintAndSteel.cs │ │ └── ItemTool.cs │ ├── Aromors │ │ ├── Boots │ │ │ ├── ItemBoots.cs │ │ │ ├── ItemIronBoots.cs │ │ │ ├── ItemGoldenBoots.cs │ │ │ ├── ItemLeatherBoots.cs │ │ │ ├── ItemDiamondBoots.cs │ │ │ └── ItemChainmailBoots.cs │ │ ├── Helmets │ │ │ ├── ItemHelmet.cs │ │ │ ├── ItemIronHelmet.cs │ │ │ ├── ItemGoldenHelmet.cs │ │ │ ├── ItemDiamondHelmet.cs │ │ │ ├── ItemLeatherHelmet.cs │ │ │ └── ItemChainmailHelmet.cs │ │ ├── Leggings │ │ │ ├── ItemLeggings.cs │ │ │ ├── ItemIronLeggings.cs │ │ │ ├── ItemGoldenLeggings.cs │ │ │ ├── ItemDiamondLeggings.cs │ │ │ ├── ItemLeatherLeggings.cs │ │ │ └── ItemChainmailLeggings.cs │ │ ├── Chestplate │ │ │ ├── ItemChestplate.cs │ │ │ ├── ItemIronChestplate.cs │ │ │ ├── ItemGoldenChestplate.cs │ │ │ ├── ItemLeatherChestplate.cs │ │ │ ├── ItemDiamondChestplate.cs │ │ │ └── ItemChainmailChestplate.cs │ │ └── ItemArmor.cs │ ├── ItemDye.cs │ ├── ItemEgg.cs │ ├── ItemBoat.cs │ ├── ItemBone.cs │ ├── ItemBook.cs │ ├── ItemBowl.cs │ ├── ItemCoal.cs │ ├── ItemKelp.cs │ ├── ItemArrow.cs │ ├── ItemBrick.cs │ ├── ItemClock.cs │ ├── ItemFlint.cs │ ├── ItemPaper.cs │ ├── ItemReeds.cs │ ├── ItemStick.cs │ ├── ItemString.cs │ ├── ItemWheat.cs │ ├── ItemCompass.cs │ ├── ItemDiamond.cs │ ├── ItemFeather.cs │ ├── ItemLeather.cs │ ├── ItemClayBall.cs │ ├── ItemPainting.cs │ ├── ItemSnowball.cs │ ├── ItemGoldIngot.cs │ ├── ItemGunpowder.cs │ ├── ItemIronIngot.cs │ ├── ItemSlimeBall.cs │ ├── ItemWheatSeeds.cs │ ├── Datas │ │ ├── ItemToolTier.cs │ │ ├── IConsumeable.cs │ │ ├── ItemToolType.cs │ │ └── ItemArmorType.cs │ ├── ItemChestMinecart.cs │ ├── ItemGlowstoneDust.cs │ ├── ItemBucket.cs │ ├── ItemSaddle.cs │ ├── ItemMinecart.cs │ ├── ItemIronDoor.cs │ ├── Foods │ │ ├── ItemBread.cs │ │ ├── ItemFish.cs │ │ ├── ItemApple.cs │ │ ├── ItemPorkchop.cs │ │ ├── ItemCookedFish.cs │ │ ├── ItemGoldenApple.cs │ │ ├── ItemCookedPorkchop.cs │ │ └── ItemMushroomStew.cs │ ├── ItemRedstone.cs │ ├── ItemWoodenDoor.cs │ ├── ItemSign.cs │ ├── ItemBlock.cs │ └── ItemUnknown.cs ├── ServerStatus.cs ├── Blocks │ ├── BlockBush.cs │ ├── BlockOre.cs │ ├── BlockUnknown.cs │ ├── BlockFalling.cs │ ├── BlockContainer.cs │ ├── BlockSapling.cs │ ├── BlockEmptyDrops.cs │ ├── BlockStaticLiquid.cs │ ├── BlockDynamicLiquid.cs │ ├── BlockLiquid.cs │ ├── BlockPlanks.cs │ ├── BlockSponge.cs │ ├── BlockAir.cs │ ├── BlockGlass.cs │ ├── BlockLog.cs │ ├── BlockDirt.cs │ ├── BlockGrass.cs │ ├── BlockCoalOre.cs │ ├── BlockGoldOre.cs │ ├── BlockIronOre.cs │ ├── BlockSolid.cs │ ├── BlockDispenser.cs │ ├── BlockTransparent.cs │ ├── BlockGravel.cs │ ├── BlockLeave.cs │ ├── BlockLapisOre.cs │ ├── BlockSandstone.cs │ └── BlockSand.cs ├── Network │ ├── RakNetPackets │ │ ├── Ack.cs │ │ ├── Nack.cs │ │ ├── DataPacket0.cs │ │ ├── DataPacket1.cs │ │ ├── DataPacket2.cs │ │ ├── DataPacket3.cs │ │ ├── DataPacket4.cs │ │ ├── DataPacket5.cs │ │ ├── DataPacket6.cs │ │ ├── DataPacket7.cs │ │ ├── DataPacket8.cs │ │ ├── DataPacket9.cs │ │ ├── DataPacketA.cs │ │ ├── DataPacketB.cs │ │ ├── DataPacketC.cs │ │ ├── DataPacketD.cs │ │ ├── DataPacketE.cs │ │ ├── DataPacketF.cs │ │ ├── ClientDisconnectDataPacket.cs │ │ ├── OnlinePing.cs │ │ ├── OnlinePong.cs │ │ ├── OpenConnectingReply1.cs │ │ ├── OpenConnectingRequest1.cs │ │ ├── OfflineMessage.cs │ │ ├── RakNetPacket.cs │ │ ├── ClientConnectDataPacket.cs │ │ ├── OfflinePing.cs │ │ ├── OfflinePong.cs │ │ ├── OpenConnectingRequest2.cs │ │ └── OpenConnectingReply2.cs │ ├── SessionState.cs │ ├── INetworkSocket.cs │ └── MinecraftPackets │ │ ├── LecternUpdatePacket.cs │ │ ├── VideoStreamConnectPacket.cs │ │ ├── StructureBlockUpdatePacket.cs │ │ ├── ServerSettingsRequestPacket.cs │ │ ├── ClientToServerHandshakePacket.cs │ │ ├── ClientboundMapItemDataPacket.cs │ │ ├── SetTimePacket.cs │ │ ├── ShowProfilePacket.cs │ │ ├── MapInfoRequestPacket.cs │ │ ├── RequestChunkRadiusPacket.cs │ │ ├── ChunkRadiusUpdatedPacket.cs │ │ ├── GuiDataPickItemPacket.cs │ │ ├── SetCommandsEnabledPacket.cs │ │ ├── RemoveEntityPacket.cs │ │ ├── HurtArmorPacket.cs │ │ ├── SetHealthPacket.cs │ │ ├── ContainerClosePacket.cs │ │ ├── RiderJumpPacket.cs │ │ ├── BiomeDefinitionListPacket.cs │ │ ├── GameRulesChangedPacket.cs │ │ ├── SetLastHurtByPacket.cs │ │ ├── RespawnPacket.cs │ │ ├── ServerToClientHandshakePacket.cs │ │ ├── RemoveObjectivePacket.cs │ │ ├── AddBehaviorTreePacket.cs │ │ ├── OnScreenTextureAnimationPacket.cs │ │ ├── TransferPacket.cs │ │ ├── StopSoundPacket.cs │ │ ├── SubClientLoginPacket.cs │ │ ├── ModalFormRequestPacket.cs │ │ ├── AutomationClientConnectPacket.cs │ │ ├── SetScorePacket.cs │ │ ├── ModalFormResponsePacket.cs │ │ ├── ServerSettingsResponsePacket.cs │ │ ├── SetDifficultyPacket.cs │ │ ├── CameraPacket.cs │ │ ├── ItemFrameDropItemPacket.cs │ │ ├── SetDefaultGameTypePacket.cs │ │ ├── SetPlayerGameTypePacket.cs │ │ ├── UpdateBlockSyncedPacket.cs │ │ ├── SetLocalPlayerAsInitializedPacket.cs │ │ ├── ChangeDimensionPacket.cs │ │ ├── SpawnExperienceOrbPacket.cs │ │ ├── TakeItemEntityPacket.cs │ │ ├── SetEntityMotionPacket.cs │ │ ├── SimpleEventPacket.cs │ │ ├── SetEntityDataPacket.cs │ │ ├── ShowStoreOfferPacket.cs │ │ ├── PlayerListPacket.cs │ │ ├── UpdateAttributesPacket.cs │ │ ├── DisconnectPacket.cs │ │ ├── ScriptCustomEventPacket.cs │ │ ├── EntityFallPacket.cs │ │ ├── NetworkStackLatencyPacket.cs │ │ ├── InventorySlotPacket.cs │ │ ├── ResourcePackChunkRequestPacket.cs │ │ ├── ShowCreditsPacket.cs │ │ ├── EntityPickRequestPacket.cs │ │ ├── EntityPickrequestPacket.cs │ │ ├── BlockEntityDataPacket.cs │ │ ├── MapCreateLockedCopyPacket.cs │ │ ├── CommandRequestPacket.cs │ │ ├── BlockPickRequestPacket.cs │ │ └── NetworkChunkPublisherUpdatePacket.cs ├── Text │ └── ITextContainer.cs ├── ResourcePack │ ├── IResourcePack.cs │ └── ResourcePackInfo.cs ├── IO │ ├── IServerLogger.cs │ └── InputInterface.cs ├── Worlds │ ├── Generators │ │ └── IGenerator.cs │ ├── Dimensions │ │ └── DimensionIDs.cs │ ├── Formats │ │ ├── WorldDataFormats │ │ │ └── IWorldDataFormat.cs │ │ ├── ChunkFormats │ │ │ └── IChunkFormat.cs │ │ └── WorldSaveFormats │ │ │ └── IWorldSaveFormat.cs │ ├── Rule │ │ ├── GameRuleBase.cs │ │ └── GameRule.cs │ └── Difficulty.cs ├── Inventories │ ├── InventoryHolder.cs │ ├── Recipe │ │ ├── IRecipe.cs │ │ └── FurnaceRecipe.cs │ ├── Transactions │ │ └── Data │ │ │ ├── TransactionData.cs │ │ │ └── ReleaseItemData.cs │ └── Data │ │ └── InventoryType.cs ├── Data │ ├── ScoreboardIdentityPacketEntry.cs │ ├── CommandOutputMessage.cs │ ├── LoginData.cs │ ├── PlayerPermissions.cs │ ├── ContainerIds.cs │ ├── ClientData.cs │ └── Skin.cs ├── Entities │ └── Metadata │ │ ├── EntityDataProperty.cs │ │ ├── EntityData.cs │ │ ├── EntityDataInt.cs │ │ ├── EntityDataLong.cs │ │ ├── EntityDataFloat.cs │ │ ├── EntityDataShort.cs │ │ ├── EntityDataSlot.cs │ │ ├── EntityDataString.cs │ │ ├── EntityDataVector.cs │ │ ├── EntityDataPos.cs │ │ ├── EntityDataByte.cs │ │ └── EntityMetadataType.cs ├── Reports │ └── IReport.cs ├── IServerListInfo.cs ├── Values │ ├── IPosition.cs │ ├── ILocation.cs │ ├── BlockCoordinate2D.cs │ ├── IVector2.cs │ ├── IBlockCoordinate2D.cs │ └── IBlockCoordinate3D.cs ├── MineNETConfig.cs ├── packages.config └── Init │ └── BlockEntityInit.cs ├── MineNET.Console ├── Resources │ └── Icon │ │ └── App.ico └── App.config ├── .github ├── PULL_REQUEST_TEMPLATE.md └── ISSUE_TEMPLATE │ └── BugIssue.md ├── README.md └── MineNET.Test ├── Text └── CultureTextContainerTests.cs └── Values └── AxisAlignedBBTest.cs /MineNET.GUI/VERSION: -------------------------------------------------------------------------------- 1 | 1.0.0.0 -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MineCoreDev/MineNET/HEAD/icon.png -------------------------------------------------------------------------------- /MineNET/.nuget/nuget_build.bat: -------------------------------------------------------------------------------- 1 | nuget pack ../ -Build -Properties Configuration=Release -------------------------------------------------------------------------------- /MineNET/.nuget/nuget.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MineCoreDev/MineNET/HEAD/MineNET/.nuget/nuget.exe -------------------------------------------------------------------------------- /MineNET/MineNET.nuspec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MineCoreDev/MineNET/HEAD/MineNET/MineNET.nuspec -------------------------------------------------------------------------------- /MineNET.GUI/Resources/Icon/App.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MineCoreDev/MineNET/HEAD/MineNET.GUI/Resources/Icon/App.ico -------------------------------------------------------------------------------- /MineNET.GUI/Resources/Image/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MineCoreDev/MineNET/HEAD/MineNET.GUI/Resources/Image/icon.png -------------------------------------------------------------------------------- /MineNET.Console/Resources/Icon/App.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MineCoreDev/MineNET/HEAD/MineNET.Console/Resources/Icon/App.ico -------------------------------------------------------------------------------- /MineNET/Attributes/InternalCallAttribute.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MineCoreDev/MineNET/HEAD/MineNET/Attributes/InternalCallAttribute.cs -------------------------------------------------------------------------------- /MineNET/Utils/CryptoUtils.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Utils 2 | { 3 | public static class CryptoUtils 4 | { 5 | //TODO... 6 | } 7 | } -------------------------------------------------------------------------------- /MineNET/ICloneable.cs: -------------------------------------------------------------------------------- 1 | namespace System 2 | { 3 | public interface ICloneable : ICloneable 4 | { 5 | new T Clone(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Events/ICancelable.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Events 2 | { 3 | public interface ICancelable 4 | { 5 | bool IsCancel { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/NBT/Data/NBTEndian.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.NBT.Data 2 | { 3 | public enum NBTEndian 4 | { 5 | BIG_ENDIAN, 6 | LITTLE_ENDIAN 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /MineNET/Events/ServerEvents/ServerStopEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Events.ServerEvents 2 | { 3 | public class ServerStopEventArgs : ServerEventArgs 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /MineNET/Permissions/IServerOperator.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Permissions 2 | { 3 | public interface IServerOperator 4 | { 5 | bool Op { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Events/IOEvents/IOEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Events.IOEvents 4 | { 5 | public abstract class IOEventArgs : EventArgs 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /MineNET/Events/ServerEvents/ServerStartEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Events.ServerEvents 2 | { 3 | public class ServerStartEventArgs : ServerEventArgs 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /MineNET/Events/ServerEvents/ServerStartedEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Events.ServerEvents 2 | { 3 | public class ServerStartedEventArgs : ServerEventArgs 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /MineNET/Events/ServerEvents/ServerStoppedEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Events.ServerEvents 2 | { 3 | public class ServerStoppedEventArgs : ServerEventArgs 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /MineNET/Registry/EntityIdentityRegistry.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Registry 2 | { 3 | public class EntityIdentityRegistry : DictionaryRegistryBase 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **動作確認の画面、動画** 2 | (必須) 3 | 4 | **変更理由** 5 | (必須) 6 | 7 | **動作ロジック** 8 | (必須) 9 | 10 | **メリット、デメリット** 11 | (必須) 12 | 13 | **その他** 14 | (任意) 15 | -------------------------------------------------------------------------------- /MineNET/Commands/ICommandHandler.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands 2 | { 3 | public interface ICommandHandler 4 | { 5 | void OnCommandExecute(CommandData data); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Registry/IListRegistry.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace MineNET.Registry 4 | { 5 | public interface IListRegistry : IList 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /MineNET/Plugins/ApiVersion.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Plugins 2 | { 3 | public enum ApiVersion 4 | { 5 | Version1000, 6 | Version1100, 7 | Other = 4096 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Registry/ItemRegistry.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Registry 4 | { 5 | public class ItemRegistry : DictionaryRegistryBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Axes/ItemAxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemAxe : ItemTool 4 | { 5 | public override ItemToolType ToolType => ItemToolType.AXE; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Hoes/ItemHoe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemHoe : ItemTool 4 | { 5 | public override ItemToolType ToolType => ItemToolType.HOE; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Registry/BlockRegistry.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Blocks; 2 | 3 | namespace MineNET.Registry 4 | { 5 | public class BlockRegistry : DictionaryRegistryBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Registry/CreativeItemRegistry.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Registry 4 | { 5 | public class CreativeItemRegistry : ListRegistryBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Swords/ItemSword.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemSword : ItemTool 4 | { 5 | public override ItemToolType ToolType => ItemToolType.SWORD; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Registry/EffectRegistry.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities; 2 | 3 | namespace MineNET.Registry 4 | { 5 | public class EffectRegistry : DictionaryRegistryBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/ServerStatus.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET 2 | { 3 | public enum ServerStatus 4 | { 5 | Stop, 6 | Start, 7 | Running, 8 | Stoping, 9 | Error 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET.GUI/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Boots/ItemBoots.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemBoots : ItemArmor 4 | { 5 | public override ItemArmorType ArmorType => ItemArmorType.BOOTS; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Shovels/ItemShovel.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemShovel : ItemTool 4 | { 5 | public override ItemToolType ToolType => ItemToolType.SHOVEL; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Helmets/ItemHelmet.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemHelmet : ItemArmor 4 | { 5 | public override ItemArmorType ArmorType => ItemArmorType.HELMET; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Pickaxes/ItemPickaxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemPickaxe : ItemTool 4 | { 5 | public override ItemToolType ToolType => ItemToolType.PICKAXE; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Registry/IDictionaryRegistry.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace MineNET.Registry 4 | { 5 | public interface IDictionaryRegistry : IDictionary 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockBush.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockBush : Block 4 | { 5 | public BlockBush(int id, string name) : base(id, name) 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Items/ItemDye.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDye : Item 4 | { 5 | public override int ID => ItemIDs.DYE; 6 | 7 | public override string Name => "Dye"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemEgg.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemEgg : Item 4 | { 5 | public override int ID => ItemIDs.EGG; 6 | 7 | public override string Name => "Egg"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/Ack.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class Ack : AcknowledgePacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.AckPacket; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/SessionState.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network 2 | { 3 | public enum SessionState 4 | { 5 | Connecting, 6 | Connected, 7 | Disconnecting, 8 | Disconnected 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Permissions/IPermissionRemovedExecutor.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Permissions 2 | { 3 | public interface IPermissionRemovedExecutor 4 | { 5 | void AttachmentRemoved(PermissionAttachment attachment); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Text/ITextContainer.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Text 2 | { 3 | public interface ITextContainer 4 | { 5 | string Key { get; } 6 | object[] Args { get; } 7 | 8 | string GetText(); 9 | } 10 | } -------------------------------------------------------------------------------- /MineNET/Blocks/BlockOre.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockOre : BlockSolid 4 | { 5 | public BlockOre(int id, string name) : base(id, name) 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockUnknown.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockUnknown : Block 4 | { 5 | public BlockUnknown(int id) : base(id, "unknown") 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Leggings/ItemLeggings.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemLeggings : ItemArmor 4 | { 5 | public override ItemArmorType ArmorType => ItemArmorType.LEGGINGS; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Items/ItemBoat.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemBoat : Item 4 | { 5 | public override int ID => ItemIDs.BOAT; 6 | 7 | public override string Name => "Boat"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemBone.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemBone : Item 4 | { 5 | public override int ID => ItemIDs.BONE; 6 | 7 | public override string Name => "Bone"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemBook.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemBook : Item 4 | { 5 | public override int ID => ItemIDs.BOOK; 6 | 7 | public override string Name => "Book"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemBowl.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemBowl : Item 4 | { 5 | public override int ID => ItemIDs.BOWL; 6 | 7 | public override string Name => "Bowl"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemCoal.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemCoal : Item 4 | { 5 | public override int ID => ItemIDs.COAL; 6 | 7 | public override string Name => "Coal"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemKelp.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemKelp : Item 4 | { 5 | public override int ID => ItemIDs.KELP; 6 | 7 | public override string Name => "Kelp"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/Nack.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class Nack : AcknowledgePacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.NackPacket; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockFalling.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockFalling : Block 4 | { 5 | public BlockFalling(int id, string name) : base(id, name) 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Chestplate/ItemChestplate.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemChestplate : ItemArmor 4 | { 5 | public override ItemArmorType ArmorType => ItemArmorType.CHESTPLATE; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Items/ItemArrow.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemArrow : Item 4 | { 5 | public override int ID => ItemIDs.ARROW; 6 | 7 | public override string Name => "Arrow"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemBrick.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemBrick : Item 4 | { 5 | public override int ID => ItemIDs.BRICK; 6 | 7 | public override string Name => "Brick"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemClock.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemClock : Item 4 | { 5 | public override int ID => ItemIDs.CLOCK; 6 | 7 | public override string Name => "Clock"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemFlint.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemFlint : Item 4 | { 5 | public override int ID => ItemIDs.FLINT; 6 | 7 | public override string Name => "Flint"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemPaper.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemPaper : Item 4 | { 5 | public override int ID => ItemIDs.PAPER; 6 | 7 | public override string Name => "Paper"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemReeds.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemReeds : Item 4 | { 5 | public override int ID => ItemIDs.REEDS; 6 | 7 | public override string Name => "Reeds"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemStick.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemStick : Item 4 | { 5 | public override int ID => ItemIDs.STICK; 6 | 7 | public override string Name => "Stick"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemString.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemString : Item 4 | { 5 | public override int ID => ItemIDs.STRING; 6 | 7 | public override string Name => "String"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemWheat.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemWheat : Item 4 | { 5 | public override int ID => ItemIDs.WHEAT; 6 | 7 | public override string Name => "Wheat"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacket0.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacket0 : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacket0; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacket1.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacket1 : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacket1; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacket2.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacket2 : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacket2; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacket3.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacket3 : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacket3; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacket4.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacket4 : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacket4; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacket5.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacket5 : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacket5; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacket6.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacket6 : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacket6; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacket7.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacket7 : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacket7; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacket8.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacket8 : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacket8; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacket9.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacket9 : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacket9; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacketA.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacketA : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacketA; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacketB.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacketB : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacketB; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacketC.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacketC : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacketC; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacketD.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacketD : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacketD; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacketE.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacketE : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacketE; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/DataPacketF.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class DataPacketF : DataPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.DataPacketF; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET.GUI/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockContainer.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockContainer : Block 4 | { 5 | public BlockContainer(int id, string name) : base(id, name) 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockSapling.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockSapling : BlockBush 4 | { 5 | public BlockSapling() : base(BlockIDs.SAPLING, "Sapling") 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Items/ItemCompass.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemCompass : Item 4 | { 5 | public override int ID => ItemIDs.COMPASS; 6 | 7 | public override string Name => "Compass"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemDiamond.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDiamond : Item 4 | { 5 | public override int ID => ItemIDs.DIAMOND; 6 | 7 | public override string Name => "Diamond"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemFeather.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemFeather : Item 4 | { 5 | public override int ID => ItemIDs.FEATHER; 6 | 7 | public override string Name => "Feather"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemLeather.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemLeather : Item 4 | { 5 | public override int ID => ItemIDs.LEATHER; 6 | 7 | public override string Name => "Leather"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Registry/RakNetPacketRegistry.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network.RakNetPackets; 2 | 3 | namespace MineNET.Registry 4 | { 5 | public class RakNetPacketRegistry : DictionaryRegistryBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockEmptyDrops.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockEmptyDrops : Block 4 | { 5 | public BlockEmptyDrops(int id, string name) : base(id, name) 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Items/ItemClayBall.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemClayBall : Item 4 | { 5 | public override int ID => ItemIDs.CLAY_BALL; 6 | 7 | public override string Name => "Clay Ball"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemPainting.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemPainting : Item 4 | { 5 | public override int ID => ItemIDs.PAINTING; 6 | 7 | public override string Name => "Painting"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemSnowball.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemSnowball : Item 4 | { 5 | public override int ID => ItemIDs.SNOWBALL; 6 | 7 | public override string Name => "Snowball"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/ResourcePack/IResourcePack.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.ResourcePack 2 | { 3 | public interface IResourcePack 4 | { 5 | string GetPackId(); 6 | string GetPackVersion(); 7 | ulong GetPackSize(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemGoldIngot.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldIngot : Item 4 | { 5 | public override int ID => ItemIDs.GOLD_INGOT; 6 | 7 | public override string Name => "Gold Ingot"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemGunpowder.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGunpowder : Item 4 | { 5 | public override int ID => ItemIDs.GUNPOWDER; 6 | 7 | public override string Name => "Gunpowder"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemIronIngot.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemIronIngot : Item 4 | { 5 | public override int ID => ItemIDs.IRON_INGOT; 6 | 7 | public override string Name => "Iron Ingot"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemSlimeBall.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemSlimeBall : Item 4 | { 5 | public override int ID => ItemIDs.SLIME_BALL; 6 | 7 | public override string Name => "Slime Ball"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Registry/MinecraftPacketRegistry.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network.MinecraftPackets; 2 | 3 | namespace MineNET.Registry 4 | { 5 | public class MinecraftPacketRegistry : DictionaryRegistryBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockStaticLiquid.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockStaticLiquid : BlockLiquid 4 | { 5 | public BlockStaticLiquid(int id, string name) : base(id, name) 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Commands/Enums/CommandEnumItems.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Enums 2 | { 3 | public class CommandEnumItems : CommandEnum 4 | { 5 | public CommandEnumItems() : base("Item", "air") 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Items/ItemWheatSeeds.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemWheatSeeds : Item 4 | { 5 | public override int ID => ItemIDs.WHEAT_SEEDS; 6 | 7 | public override string Name => "Wheat Seeds"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockDynamicLiquid.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockDynamicLiquid : BlockLiquid 4 | { 5 | public BlockDynamicLiquid(int id, string name) : base(id, name) 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Commands/Enums/CommandEnumBlocks.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Enums 2 | { 3 | public class CommandEnumBlocks : CommandEnum 4 | { 5 | public CommandEnumBlocks() : base("Block", "air") 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/IO/IServerLogger.cs: -------------------------------------------------------------------------------- 1 | using NLog; 2 | using System; 3 | 4 | namespace MineNET.IO 5 | { 6 | public interface IServerLogger : IDisposable 7 | { 8 | ILogger OutputLogger { get; } 9 | InputInterface InputLogger { get; } 10 | } 11 | } -------------------------------------------------------------------------------- /MineNET/Commands/Enums/CommandEnumBoolean.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Enums 2 | { 3 | public class CommandEnumBoolean : CommandEnum 4 | { 5 | public CommandEnumBoolean() : base("Boolean", "true") 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Items/Datas/ItemToolTier.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public enum ItemToolTier 4 | { 5 | NONE = 0, 6 | WOODEN = 1, 7 | GOLD = 2, 8 | STONE = 3, 9 | IRON = 4, 10 | DIAMOND = 5 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Items/ItemChestMinecart.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemChestMinecart : Item 4 | { 5 | public override int ID => ItemIDs.CHEST_MINECART; 6 | 7 | public override string Name => "Chest Minecart"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/ItemGlowstoneDust.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGlowstoneDust : Item 4 | { 5 | public override int ID => ItemIDs.GLOWSTONE_DUST; 6 | 7 | public override string Name => "Glowstone Dust"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/ItemFishingRod.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemFishingRod : ItemTool 4 | { 5 | public override int ID => ItemIDs.FISHING_ROD; 6 | 7 | public override string Name => "Fishing Rod"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Worlds/Generators/IGenerator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Worlds.Generators 4 | { 5 | public interface IGenerator : ICloneable 6 | { 7 | string Name { get; } 8 | void ChunkGeneration(Chunk chunk); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Commands/Enums/CommandEnumRValueParam.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Enums 2 | { 3 | public class CommandEnumRValueParam : CommandEnum 4 | { 5 | public CommandEnumRValueParam() : base("RValueParam", "x", "y", "z") 6 | { 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /MineNET/Inventories/InventoryHolder.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Inventories 4 | { 5 | public interface InventoryHolder : IVector3 6 | { 7 | Inventory Inventory 8 | { 9 | get; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockLiquid.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public abstract class BlockLiquid : Block 4 | { 5 | public BlockLiquid(int id, string name) : base(id, name) 6 | { 7 | this.CanBreak = false; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Inventories/Recipe/IRecipe.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network.MinecraftPackets; 2 | 3 | namespace MineNET.Inventories.Recipe 4 | { 5 | public interface IRecipe 6 | { 7 | int ID { get; } 8 | 9 | void Write(MinecraftPacket stream); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Utils/Config/JsonConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Utils.Config 4 | { 5 | public class JsonConfig 6 | { 7 | public void Save() 8 | { 9 | throw new NotImplementedException(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Data/ScoreboardIdentityPacketEntry.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Data 4 | { 5 | public class ScoreboardIdentityPacketEntry 6 | { 7 | public long ScoreboardId { get; set; } 8 | public UUID Uuid { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Worlds/Dimensions/DimensionIDs.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Worlds.Dimensions 2 | { 3 | public sealed class DimensionIDs 4 | { 5 | public const byte OverWorld = 0; 6 | public const byte Nether = 1; 7 | public const byte End = 2; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/BugIssue.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 不具合報告 3 | about: 不具合を報告する場合はこちら 4 | 5 | --- 6 | 7 | **不具合内容** 8 | (必須) 9 | 10 | **例外のメッセージ、クラッシュリポートの内容** 11 | (必須) 12 | 13 | **発生環境** 14 | (クラッシュリポートの内容を添付した場合は、必要ありません。) 15 | 16 | **発生条件** 17 | (必須) 18 | 19 | **その他** 20 | (任意) 21 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/ClientDisconnectDataPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class ClientDisconnectDataPacket : RakNetPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.ClientDisconnectDataPacket; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /MineNET/Utils/Config/JsonStaticConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Utils.Config 4 | { 5 | public class JsonStaticConfig 6 | { 7 | public void Save() 8 | { 9 | throw new NotImplementedException(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Data/CommandOutputMessage.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Data 2 | { 3 | public class CommandOutputMessage 4 | { 5 | public bool IsInternal { get; set; } 6 | public string MessageId { get; set; } 7 | public string[] Parameters { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Events/EventHandlerAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Events 4 | { 5 | [AttributeUsage(AttributeTargets.Method)] 6 | public class EventHandlerAttribute : Attribute 7 | { 8 | public EventHandlerAttribute() 9 | { 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /MineNET/Items/ItemBucket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemBucket : Item 4 | { 5 | public override int ID => ItemIDs.BUCKET; 6 | 7 | public override string Name => "Bucket"; 8 | 9 | public override byte MaxStackSize => 16; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/ItemSaddle.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemSaddle : Item 4 | { 5 | public override int ID => ItemIDs.SADDLE; 6 | 7 | public override string Name => "Saddle"; 8 | 9 | public override byte MaxStackSize => 1; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Worlds/Formats/WorldDataFormats/IWorldDataFormat.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Worlds.Formats.WorldDataFormats 2 | { 3 | public interface IWorldDataFormat 4 | { 5 | void Save(World world); 6 | void Load(World world); 7 | void Create(World world); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockPlanks.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockPlanks : Block 4 | { 5 | public BlockPlanks() : base(BlockIDs.PLANKS, "Planks") 6 | { 7 | this.Hardness = 2.0f; 8 | this.Resistance = 15f; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/ItemMinecart.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemMinecart : Item 4 | { 5 | public override int ID => ItemIDs.MINECART; 6 | 7 | public override string Name => "Minecart"; 8 | 9 | public override byte MaxStackSize => 1; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/NBT/Tags/DataTag.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.NBT.Tags 2 | { 3 | public abstract class DataTag : Tag 4 | { 5 | public DataTag(string name, T data) : base(name) 6 | { 7 | this.Data = data; 8 | } 9 | 10 | public T Data { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockSponge.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockSponge : BlockSolid 4 | { 5 | public BlockSponge() : base(BlockIDs.SPONGE, "Sponge") 6 | { 7 | this.Hardness = 0.6f; 8 | this.Resistance = 3f; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Network/INetworkSocket.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Net; 3 | using System.Net.Sockets; 4 | 5 | namespace MineNET.Network 6 | { 7 | public interface INetworkSocket : IDisposable 8 | { 9 | UdpClient Socket { get; } 10 | 11 | void Init(IPEndPoint point); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Worlds/Rule/GameRuleBase.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Worlds.Rule 2 | { 3 | public abstract class GameRuleBase 4 | { 5 | public string Name { get; set; } 6 | 7 | public GameRuleBase(string ruleName) 8 | { 9 | this.Name = ruleName; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/ItemArmor.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemArmor : Item 4 | { 5 | public override bool IsArmor => true; 6 | 7 | public virtual ItemArmorType ArmorType => ItemArmorType.NONE; 8 | 9 | public virtual int MaxDurability => 0; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Commands/Enums/CommandEnumGameMode.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Enums 2 | { 3 | public class CommandEnumGameMode : CommandEnum 4 | { 5 | public CommandEnumGameMode() : base("GameMode", "default", "creative", "survival", "adventure", "d", "c", "s", "a") 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerJumpEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | 3 | namespace MineNET.Events.PlayerEvents 4 | { 5 | public class PlayerJumpEventArgs : PlayerEventArgs 6 | { 7 | public PlayerJumpEventArgs(Player player) : base(player) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Boots/ItemIronBoots.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemIronBoots : ItemBoots 4 | { 5 | public override int ID => ItemIDs.IRON_BOOTS; 6 | 7 | public override string Name => "Iron Boots"; 8 | 9 | public override int MaxDurability => 195; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Worlds/Rule/GameRule.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Worlds.Rule 2 | { 3 | public class GameRule : GameRuleBase 4 | { 5 | public T Value { set; get; } 6 | 7 | public GameRule(string ruleName, T value) : base(ruleName) 8 | { 9 | this.Value = value; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Inventories/Transactions/Data/TransactionData.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Inventories.Transactions.Data 4 | { 5 | public interface TransactionData 6 | { 7 | int ActionType { get; set; } 8 | int HotbarSlot { get; set; } 9 | Item ItemMainHand { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Boots/ItemGoldenBoots.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldenBoots : ItemBoots 4 | { 5 | public override int ID => ItemIDs.GOLDEN_BOOTS; 6 | 7 | public override string Name => "Golden Boots"; 8 | 9 | public override int MaxDurability => 91; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Boots/ItemLeatherBoots.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemLeatherBoots : ItemBoots 4 | { 5 | public override int ID => ItemIDs.LEATHER_BOOTS; 6 | 7 | public override string Name => "Leather Boots"; 8 | 9 | public override int MaxDurability => 65; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Helmets/ItemIronHelmet.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemIronHelmet : ItemHelmet 4 | { 5 | public override int ID => ItemIDs.IRON_HELMET; 6 | 7 | public override string Name => "Iron Helmet"; 8 | 9 | public override int MaxDurability => 165; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Datas/IConsumeable.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities; 2 | using MineNET.Entities.Players; 3 | 4 | namespace MineNET.Items 5 | { 6 | public interface IConsumeable 7 | { 8 | void OnConsume(Player player); 9 | 10 | Effect[] AdditionalEffects { get; } 11 | 12 | Item Residue { get; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Boots/ItemDiamondBoots.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDiamondBoots : ItemBoots 4 | { 5 | public override int ID => ItemIDs.DIAMOND_BOOTS; 6 | 7 | public override string Name => "Diamond Boots"; 8 | 9 | public override int MaxDurability => 429; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Helmets/ItemGoldenHelmet.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldenHelmet : ItemHelmet 4 | { 5 | public override int ID => ItemIDs.GOLDEN_HELMET; 6 | 7 | public override string Name => "Golden Helmet"; 8 | 9 | public override int MaxDurability => 77; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Datas/ItemToolType.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public enum ItemToolType 4 | { 5 | NONE = 0, 6 | SWORD = 1, 7 | SHOVEL = 2, 8 | PICKAXE = 3, 9 | AXE = 4, 10 | HOE = 5, 11 | SHEARS = 6, 12 | FLINT_AND_STEEL = 7, 13 | BOW = 8 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Worlds/Formats/ChunkFormats/IChunkFormat.cs: -------------------------------------------------------------------------------- 1 | using MineNET.NBT.Tags; 2 | 3 | namespace MineNET.Worlds.Formats.ChunkFormats 4 | { 5 | public interface IChunkFormat 6 | { 7 | World World { get; } 8 | 9 | CompoundTag NBTSerialize(Chunk chunk); 10 | Chunk NBTDeserialize(CompoundTag tag); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockAir.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockAir : BlockTransparent 4 | { 5 | public BlockAir() : base(BlockIDs.AIR, "Air") 6 | { 7 | this.CanBePlaced = false; 8 | this.CanBeReplaced = true; 9 | this.CanBreak = false; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Boots/ItemChainmailBoots.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemChainmailBoots : ItemBoots 4 | { 5 | public override int ID => ItemIDs.CHAINMAIL_BOOTS; 6 | 7 | public override string Name => "Chainmail Boots"; 8 | 9 | public override int MaxDurability => 195; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Helmets/ItemDiamondHelmet.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDiamondHelmet : ItemHelmet 4 | { 5 | public override int ID => ItemIDs.DIAMOND_HELMET; 6 | 7 | public override string Name => "Diamond Helmet"; 8 | 9 | public override int MaxDurability => 363; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Helmets/ItemLeatherHelmet.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemLeatherHelmet : ItemHelmet 4 | { 5 | public override int ID => ItemIDs.LEATHER_HELMET; 6 | 7 | public override string Name => "Leather Helmet"; 8 | 9 | public override int MaxDurability => 55; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Leggings/ItemIronLeggings.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemIronLeggings : ItemLeggings 4 | { 5 | public override int ID => ItemIDs.IRON_LEGGINGS; 6 | 7 | public override string Name => "Iron Leggings"; 8 | 9 | public override int MaxDurability => 225; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockGlass.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockGlass : BlockTransparent 4 | { 5 | public BlockGlass(int id, string name) : base(id, name) 6 | { 7 | this.LightOpacity = 0; 8 | this.Hardness = 0.3f; 9 | this.Resistance = 1.5f; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Leggings/ItemGoldenLeggings.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldenLeggings : ItemLeggings 4 | { 5 | public override int ID => ItemIDs.GOLDEN_LEGGINGS; 6 | 7 | public override string Name => "Golden Leggings"; 8 | 9 | public override int MaxDurability => 105; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Data/LoginData.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Data 4 | { 5 | public sealed class LoginData 6 | { 7 | public string XUID { get; set; } 8 | public string DisplayName { get; set; } 9 | public UUID ClientUUID { get; set; } 10 | public string IdentityPublicKey { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityDataProperty.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Entities.Metadata 2 | { 3 | public abstract class EntityDataProperty : EntityData 4 | { 5 | public T Data { get; set; } 6 | 7 | public EntityDataProperty(int id, T data) : base(id) 8 | { 9 | this.Data = data; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Events/IOEvents/InputActionEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Events.IOEvents 2 | { 3 | public class InputActionEventArgs : IOEventArgs 4 | { 5 | public string InputText { get; set; } 6 | 7 | public InputActionEventArgs(string inputText) 8 | { 9 | this.InputText = inputText; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Chestplate/ItemIronChestplate.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemIronChestplate : ItemChestplate 4 | { 5 | public override int ID => ItemIDs.IRON_CHESTPLATE; 6 | 7 | public override string Name => "Iron Chestplate"; 8 | 9 | public override int MaxDurability => 241; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Helmets/ItemChainmailHelmet.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemChainmailHelmet : ItemHelmet 4 | { 5 | public override int ID => ItemIDs.CHAINMAIL_HELMET; 6 | 7 | public override string Name => "Chainmail Helmet"; 8 | 9 | public override int MaxDurability => 165; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Leggings/ItemDiamondLeggings.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDiamondLeggings : ItemLeggings 4 | { 5 | public override int ID => ItemIDs.DIAMOND_LEGGINGS; 6 | 7 | public override string Name => "Diamond Leggings"; 8 | 9 | public override int MaxDurability => 495; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Leggings/ItemLeatherLeggings.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemLeatherLeggings : ItemLeggings 4 | { 5 | public override int ID => ItemIDs.LEATHER_LEGGINGS; 6 | 7 | public override string Name => "Leather Leggings"; 8 | 9 | public override int MaxDurability => 75; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/ItemIronDoor.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Blocks; 2 | 3 | namespace MineNET.Items 4 | { 5 | public class ItemIronDoor : Item 6 | { 7 | public override int ID => ItemIDs.IRON_DOOR; 8 | 9 | public override string Name => "Iron Door"; 10 | 11 | public override Block Block => Block.Get(BlockIDs.IRON_DOOR); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityData.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Entities.Metadata 2 | { 3 | public abstract class EntityData 4 | { 5 | public abstract EntityMetadataType Type { get; } 6 | 7 | public int ID { get; set; } 8 | 9 | public EntityData(int id) 10 | { 11 | this.ID = id; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Items/Foods/ItemBread.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemBread : ItemFood 4 | { 5 | public override int ID => ItemIDs.BREAD; 6 | 7 | public override string Name => "Bread"; 8 | 9 | public override int FoodRestore => 5; 10 | 11 | public override float SaturationRestore => 6; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Foods/ItemFish.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemFish : ItemFood 4 | { 5 | public override int ID => ItemIDs.FISH; 6 | 7 | public override string Name => "Fish"; 8 | 9 | public override int FoodRestore => 2; 10 | 11 | public override float SaturationRestore => 0.4f; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/ItemRedstone.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Blocks; 2 | 3 | namespace MineNET.Items 4 | { 5 | public class ItemRedstone : Item 6 | { 7 | public override int ID => ItemIDs.REDSTONE; 8 | 9 | public override string Name => "Redstone"; 10 | 11 | public override Block Block => Block.Get(BlockIDs.REDSTONE_WIRE); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Chestplate/ItemGoldenChestplate.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldenChestplate : ItemChestplate 4 | { 5 | public override int ID => ItemIDs.GOLDEN_CHESTPLATE; 6 | 7 | public override string Name => "Golden Chestplate"; 8 | 9 | public override int MaxDurability => 113; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Chestplate/ItemLeatherChestplate.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemLeatherChestplate : ItemChestplate 4 | { 5 | public override int ID => ItemIDs.LEATHER_CHESTPLATE; 6 | 7 | public override string Name => "Leather Chestplate"; 8 | 9 | public override int MaxDurability => 81; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Leggings/ItemChainmailLeggings.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemChainmailLeggings : ItemLeggings 4 | { 5 | public override int ID => ItemIDs.CHAINMAIL_LEGGINGS; 6 | 7 | public override string Name => "Chainmail Leggings"; 8 | 9 | public override int MaxDurability => 225; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Foods/ItemApple.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemApple : ItemFood 4 | { 5 | public override int ID => ItemIDs.APPLE; 6 | 7 | public override string Name => "Apple"; 8 | 9 | public override int FoodRestore => 4; 10 | 11 | public override float SaturationRestore => 2.4f; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/ItemWoodenDoor.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Blocks; 2 | 3 | namespace MineNET.Items 4 | { 5 | public class ItemWoodenDoor : Item 6 | { 7 | public override int ID => ItemIDs.WOODEN_DOOR; 8 | 9 | public override string Name => "Wooden Door"; 10 | 11 | public override Block Block => Block.Get(BlockIDs.WOODEN_DOOR); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockLog.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockLog : BlockSolid 6 | { 7 | public BlockLog() : base(BlockIDs.LOG, "Log") 8 | { 9 | this.Hardness = 2f; 10 | this.Resistance = 10f; 11 | this.ToolType = ItemToolType.AXE; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterText.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Parameters 2 | { 3 | public class CommandParameterText : CommandParameter 4 | { 5 | public CommandParameterText(string name, bool optional = false) 6 | : base(name, CommandParameter.ARG_TYPE_TEXT, optional, null, null) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Events/ServerEvents/ServerEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Events.ServerEvents 4 | { 5 | public abstract class ServerEventArgs : EventArgs 6 | { 7 | public Server Server { get; protected set; } 8 | 9 | public ServerEventArgs() 10 | { 11 | this.Server = Server.Instance; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Chestplate/ItemDiamondChestplate.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDiamondChestplate : ItemChestplate 4 | { 5 | public override int ID => ItemIDs.DIAMOND_CHESTPLATE; 6 | 7 | public override string Name => "Diamond Chestplate"; 8 | 9 | public override int MaxDurability => 528; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/ItemBow.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemBow : ItemTool 4 | { 5 | public override int ID => ItemIDs.BOW; 6 | 7 | public override string Name => "Bow"; 8 | 9 | public override ItemToolType ToolType => ItemToolType.BOW; 10 | 11 | public override int MaxDurability => 385; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterJson.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Parameters 2 | { 3 | public class CommandParameterJson : CommandParameter 4 | { 5 | public CommandParameterJson(string name, bool optional = false) 6 | : base(name, CommandParameter.ARG_TYPE_JSON, optional, null, null) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Aromors/Chestplate/ItemChainmailChestplate.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemChainmailChestplate : ItemChestplate 4 | { 5 | public override int ID => ItemIDs.CHAINMAIL_CHESTPLATE; 6 | 7 | public override string Name => "Chainmail Chestplate"; 8 | 9 | public override int MaxDurability => 241; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Foods/ItemPorkchop.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemPorkchop : ItemFood 4 | { 5 | public override int ID => ItemIDs.PORKCHOP; 6 | 7 | public override string Name => "Porkshop"; 8 | 9 | public override int FoodRestore => 3; 10 | 11 | public override float SaturationRestore => 1.8f; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Registry/CommandRegistry.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Commands; 2 | using System.Collections.Generic; 3 | 4 | namespace MineNET.Registry 5 | { 6 | public class CommandRegistry : DictionaryRegistryBase 7 | { 8 | public Dictionary ToDictionary() 9 | { 10 | return this.Dictionary; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockDirt.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockDirt : BlockSolid 6 | { 7 | public BlockDirt() : base(BlockIDs.DIRT, "Dirt") 8 | { 9 | this.Hardness = 0.5f; 10 | this.Resistance = 2.5f; 11 | this.ToolType = ItemToolType.SHOVEL; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterFloat.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Parameters 2 | { 3 | public class CommandParameterFloat : CommandParameter 4 | { 5 | public CommandParameterFloat(string name, bool optional = false) 6 | : base(name, CommandParameter.ARG_TYPE_FLOAT, optional, null, null) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterTarget.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Parameters 2 | { 3 | public class CommandParameterTarget : CommandParameter 4 | { 5 | public CommandParameterTarget(string name, bool optional = false) 6 | : base(name, CommandParameter.ARG_TYPE_TARGET, optional, null, null) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterValue.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Parameters 2 | { 3 | public class CommandParameterValue : CommandParameter 4 | { 5 | public CommandParameterValue(string name, bool optional = false) 6 | : base(name, CommandParameter.ARG_TYPE_VALUE, optional, null, null) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Foods/ItemCookedFish.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemCookedFish : ItemFood 4 | { 5 | public override int ID => ItemIDs.COOKED_FISH; 6 | 7 | public override string Name => "Cooked Fish"; 8 | 9 | public override int FoodRestore => 5; 10 | 11 | public override float SaturationRestore => 6; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Reports/IReport.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Reports 4 | { 5 | public interface IReport 6 | { 7 | string Title { get; } 8 | string Description { get; } 9 | 10 | Exception Cause { get; } 11 | 12 | DateTime Time { get; } 13 | 14 | string OSData { get; } 15 | 16 | void SendReport(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockGrass.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockGrass : BlockSolid 6 | { 7 | public BlockGrass() : base(BlockIDs.GRASS, "Glass") 8 | { 9 | this.Hardness = 0.6f; 10 | this.Resistance = 3f; 11 | this.ToolType = ItemToolType.SHOVEL; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterCommand.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Parameters 2 | { 3 | public class CommandParameterCommand : CommandParameter 4 | { 5 | public CommandParameterCommand(string name, bool optional = false) 6 | : base(name, CommandParameter.ARG_TYPE_COMMAND, optional, null, null) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterMessage.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Parameters 2 | { 3 | public class CommandParameterMessage : CommandParameter 4 | { 5 | public CommandParameterMessage(string name, bool optional = false) 6 | : base(name, CommandParameter.ARG_TYPE_MESSAGE, optional, null, null) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Events/BlockEvents/BlockEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using MineNET.Blocks; 3 | 4 | namespace MineNET.Events.BlockEvents 5 | { 6 | public abstract class BlockEventArgs : EventArgs 7 | { 8 | public Block Block { get; set; } 9 | 10 | public BlockEventArgs(Block block) 11 | { 12 | this.Block = block; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockCoalOre.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockCoalOre : BlockOre 6 | { 7 | public BlockCoalOre() : base(BlockIDs.COAL_ORE, "CoalOre") 8 | { 9 | this.Hardness = 3f; 10 | this.Resistance = 15; 11 | this.ToolType = ItemToolType.PICKAXE; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockGoldOre.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockGoldOre : BlockOre 6 | { 7 | public BlockGoldOre() : base(BlockIDs.GOLD_ORE, "GoldOre") 8 | { 9 | this.Hardness = 3f; 10 | this.Resistance = 15; 11 | this.ToolType = ItemToolType.PICKAXE; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockIronOre.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockIronOre : BlockOre 6 | { 7 | public BlockIronOre() : base(BlockIDs.IRON_ORE, "IronOre") 8 | { 9 | this.Hardness = 3f; 10 | this.Resistance = 15; 11 | this.ToolType = ItemToolType.PICKAXE; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterPosition.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Parameters 2 | { 3 | public class CommandParameterPosition : CommandParameter 4 | { 5 | public CommandParameterPosition(string name, bool optional = false) 6 | : base(name, CommandParameter.ARG_TYPE_POSITION, optional, null, null) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Events/EntityEvents/EntityEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using MineNET.Entities; 3 | 4 | namespace MineNET.Events.EntityEvents 5 | { 6 | public abstract class EntityEventArgs : EventArgs 7 | { 8 | public Entity Entity { get; } 9 | 10 | public EntityEventArgs(Entity entity) 11 | { 12 | this.Entity = entity; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Events/IOEvents/IOEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Events.IOEvents 4 | { 5 | public sealed class IOEvent 6 | { 7 | public event EventHandler InputAction; 8 | public void OnInputAction(object sender, InputActionEventArgs e) 9 | { 10 | this.InputAction?.Invoke(sender, e); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/IO/InputInterface.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Concurrent; 3 | 4 | namespace MineNET.IO 5 | { 6 | public interface InputInterface : IDisposable 7 | { 8 | ConcurrentQueue InputQueue { get; } 9 | 10 | void InputAction(string inputText); 11 | void AddInputQueue(string inputText); 12 | void GetInputQueue(); 13 | } 14 | } -------------------------------------------------------------------------------- /MineNET/Items/Foods/ItemGoldenApple.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldenApple : ItemFood 4 | { 5 | public override int ID => ItemIDs.GOLDEN_APPLE; 6 | 7 | public override string Name => "Golden Apple"; 8 | 9 | public override int FoodRestore => 4; 10 | 11 | public override float SaturationRestore => 9.6f; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Axes/ItemIronAxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemIronAxe : ItemAxe 4 | { 5 | public override int ID => ItemIDs.IRON_AXE; 6 | 7 | public override string Name => "Iron Axe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.IRON; 10 | 11 | public override int MaxDurability => 251; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Hoes/ItemIronHoe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemIronHoe : ItemHoe 4 | { 5 | public override int ID => ItemIDs.IRON_HOE; 6 | 7 | public override string Name => "Iron Hoe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.IRON; 10 | 11 | public override int MaxDurability => 251; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterInt.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Parameters 2 | { 3 | public class CommandParameterInt : CommandParameter 4 | { 5 | public CommandParameterInt(string name, bool optional = false, string postfix = null) 6 | : base(name, CommandParameter.ARG_TYPE_INT, optional, null, postfix) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /MineNET/Items/Datas/ItemArmorType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace MineNET.Items 8 | { 9 | public enum ItemArmorType 10 | { 11 | NONE = 0, 12 | HELMET = 1, 13 | CHESTPLATE = 2, 14 | LEGGINGS = 3, 15 | BOOTS = 4 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Axes/ItemStoneAxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemStoneAxe : ItemAxe 4 | { 5 | public override int ID => ItemIDs.STONE_AXE; 6 | 7 | public override string Name => "Stone Axe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.STONE; 10 | 11 | public override int MaxDurability => 132; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Hoes/ItemStoneHoe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemStoneHoe : ItemHoe 4 | { 5 | public override int ID => ItemIDs.STONE_HOE; 6 | 7 | public override string Name => "Stone Hoe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.STONE; 10 | 11 | public override int MaxDurability => 132; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET.Console/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockSolid.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockSolid : Block 6 | { 7 | public BlockSolid(int id, string name) : base(id, name) 8 | { 9 | this.IsSolid = true; 10 | this.BoundingBoxes = new AxisAlignedBB[] { new AxisAlignedBB(Vector3.Zero, Vector3.One) }; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Foods/ItemCookedPorkchop.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemCookedPorkchop : ItemFood 4 | { 5 | public override int ID => ItemIDs.COOKED_PORKCHOP; 6 | 7 | public override string Name => "Cooked Porkchop"; 8 | 9 | public override int FoodRestore => 8; 10 | 11 | public override float SaturationRestore => 12.8f; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Axes/ItemGoldenAxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldenAxe : ItemAxe 4 | { 5 | public override int ID => ItemIDs.GOLDEN_AXE; 6 | 7 | public override string Name => "Golden Axe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.GOLD; 10 | 11 | public override int MaxDurability => 33; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Axes/ItemWoodenAxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemWoodenAxe : ItemAxe 4 | { 5 | public override int ID => ItemIDs.WOODEN_AXE; 6 | 7 | public override string Name => "Wooden Axe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.WOODEN; 10 | 11 | public override int MaxDurability => 60; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Hoes/ItemGoldenHoe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldenHoe : ItemHoe 4 | { 5 | public override int ID => ItemIDs.GOLDEN_HOE; 6 | 7 | public override string Name => "Golden Hoe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.GOLD; 10 | 11 | public override int MaxDurability => 33; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Hoes/ItemWoodenHoe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemWoodenHoe : ItemHoe 4 | { 5 | public override int ID => ItemIDs.WOODEN_HOE; 6 | 7 | public override string Name => "Wooden Hoe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.WOODEN; 10 | 11 | public override int MaxDurability => 60; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Swords/ItemIronSword.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemIronSword : ItemSword 4 | { 5 | public override int ID => ItemIDs.IRON_SWORD; 6 | 7 | public override string Name => "Iron Sword"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.IRON; 10 | 11 | public override int MaxDurability => 251; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockDispenser.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockDispenser : BlockSolid 6 | { 7 | public BlockDispenser() : base(BlockIDs.DISPENSER, "Dispenser") 8 | { 9 | this.Hardness = 3.5f; 10 | this.Resistance = 17.5f; 11 | this.ToolType = ItemToolType.PICKAXE; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Commands/CommandSender.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Text; 2 | 3 | namespace MineNET.Commands 4 | { 5 | public interface CommandSender 6 | { 7 | bool IsPlayer { get; } 8 | 9 | string Name { get; } 10 | 11 | void SendMessage(string message); 12 | void SendMessage(TranslationContainer message); 13 | void SendMessage(string message, params object[] args); 14 | } 15 | } -------------------------------------------------------------------------------- /MineNET/Items/ItemSign.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Blocks; 2 | 3 | namespace MineNET.Items 4 | { 5 | public class ItemSign : Item 6 | { 7 | public override int ID { get; } = ItemIDs.SIGN; 8 | 9 | public override string Name => "Sign"; 10 | 11 | public override byte MaxStackSize => 16; 12 | 13 | public override Block Block => Block.Get(BlockIDs.STANDING_SIGN); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Axes/ItemDiamondAxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDiamondAxe : ItemAxe 4 | { 5 | public override int ID => ItemIDs.DIAMOND_AXE; 6 | 7 | public override string Name => "Diamond Axe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.DIAMOND; 10 | 11 | public override int MaxDurability => 1562; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Hoes/ItemDiamondHoe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDiamondHoe : ItemHoe 4 | { 5 | public override int ID => ItemIDs.DIAMOND_HOE; 6 | 7 | public override string Name => "Diamond Hoe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.DIAMOND; 10 | 11 | public override int MaxDurability => 1562; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Shovels/ItemIronShovel.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemIronShovel : ItemShovel 4 | { 5 | public override int ID => ItemIDs.IRON_SHOVEL; 6 | 7 | public override string Name => "Iron Shovel"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.IRON; 10 | 11 | public override int MaxDurability => 251; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Swords/ItemGoldenSword.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldenSword : ItemSword 4 | { 5 | public override int ID => ItemIDs.GOLDEN_SWORD; 6 | 7 | public override string Name => "Golden Sword"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.GOLD; 10 | 11 | public override int MaxDurability => 33; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Swords/ItemStoneSword.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemStoneSword : ItemSword 4 | { 5 | public override int ID => ItemIDs.STONE_SWORD; 6 | 7 | public override string Name => "Stone Sword"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.STONE; 10 | 11 | public override int MaxDurability => 132; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Worlds/Difficulty.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Worlds 2 | { 3 | public enum Difficulty 4 | { 5 | Peaceful, 6 | Easy, 7 | Normal, 8 | Hard 9 | } 10 | 11 | public static class DifficultyExtention 12 | { 13 | public static int GetIndex(this Difficulty difficulty) 14 | { 15 | return (int) difficulty; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using MineNET.Entities.Players; 3 | 4 | namespace MineNET.Events.PlayerEvents 5 | { 6 | public abstract class PlayerEventArgs : EventArgs 7 | { 8 | public Player Player { get; protected set; } 9 | 10 | public PlayerEventArgs(Player player) 11 | { 12 | this.Player = player; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Pickaxes/ItemIronPickaxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemIronPickaxe : ItemPickaxe 4 | { 5 | public override int ID => ItemIDs.IRON_PICKAXE; 6 | 7 | public override string Name => "Iron Pickaxe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.IRON; 10 | 11 | public override int MaxDurability => 251; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Shovels/ItemGoldenShovel.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldenShovel : ItemShovel 4 | { 5 | public override int ID => ItemIDs.GOLDEN_SHOVEL; 6 | 7 | public override string Name => "Golden Shovel"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.GOLD; 10 | 11 | public override int MaxDurability => 33; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Shovels/ItemStoneShovel.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemStoneShovel : ItemShovel 4 | { 5 | public override int ID => ItemIDs.STONE_SHOVEL; 6 | 7 | public override string Name => "Stone Shovel"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.STONE; 10 | 11 | public override int MaxDurability => 132; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Pickaxes/ItemStonePickaxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemStonePickaxe : ItemPickaxe 4 | { 5 | public override int ID => ItemIDs.STONE_PICKAXE; 6 | 7 | public override string Name => "Stone Pickaxe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.STONE; 10 | 11 | public override int MaxDurability => 132; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Shovels/ItemWoodenShovel.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemWoodenShovel : ItemShovel 4 | { 5 | public override int ID => ItemIDs.WOODEN_SHOVEL; 6 | 7 | public override string Name => "Wooden Shovel"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.WOODEN; 10 | 11 | public override int MaxDurability => 60; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Swords/ItemDiamondSword.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDiamondSword : ItemSword 4 | { 5 | public override int ID => ItemIDs.DIAMOND_SWORD; 6 | 7 | public override string Name => "Diamond Sword"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.DIAMOND; 10 | 11 | public override int MaxDurability => 1562; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/NetworkEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network; 2 | using System; 3 | 4 | namespace MineNET.Events.NetworkEvents 5 | { 6 | public abstract class NetworkEventArgs : EventArgs 7 | { 8 | public NetworkManager Network { get; protected set; } 9 | 10 | public NetworkEventArgs() 11 | { 12 | this.Network = Server.Instance.Network; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/ItemFlintAndSteel.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemFlintAndSteel : ItemTool 4 | { 5 | public override int ID => ItemIDs.FLINT_AND_STEEL; 6 | 7 | public override string Name => "Flint And Steel"; 8 | 9 | public override ItemToolType ToolType => ItemToolType.FLINT_AND_STEEL; 10 | 11 | public override int MaxDurability => 65; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Pickaxes/ItemGoldenPickaxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemGoldenPickaxe : ItemPickaxe 4 | { 5 | public override int ID => ItemIDs.GOLDEN_PICKAXE; 6 | 7 | public override string Name => "Golden Pickaxe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.GOLD; 10 | 11 | public override int MaxDurability => 33; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Pickaxes/ItemWoodenPickaxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemWoodenPickaxe : ItemPickaxe 4 | { 5 | public override int ID => ItemIDs.WOODEN_PICKAXE; 6 | 7 | public override string Name => "Wooden Pickaxe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.WOODEN; 10 | 11 | public override int MaxDurability => 60; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Shovels/ItemDiamondShovel.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDiamondShovel : ItemShovel 4 | { 5 | public override int ID => ItemIDs.DIAMOND_SHOVEL; 6 | 7 | public override string Name => "Diamond Shovel"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.DIAMOND; 10 | 11 | public override int MaxDurability => 1562; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockTransparent.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public abstract class BlockTransparent : Block 4 | { 5 | public BlockTransparent(int id, string name) : base(id, name) 6 | { 7 | 8 | } 9 | 10 | public override bool IsTransparent 11 | { 12 | get 13 | { 14 | return true; 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Events/EntityEvents/EntityEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Events.EntityEvents 4 | { 5 | public sealed class EntityEvent 6 | { 7 | public event EventHandler EntityAnimation; 8 | public void OnEntityAnimation(object sender, EntityAnimationEventArgs e) 9 | { 10 | this.EntityAnimation?.Invoke(sender, e); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Events/InventoryEvents/InventoryEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using MineNET.Inventories; 3 | 4 | namespace MineNET.Events.InventoryEvents 5 | { 6 | public abstract class InventoryEventArgs : EventArgs 7 | { 8 | public Inventory Inventory { get; } 9 | 10 | public InventoryEventArgs(Inventory inventory) 11 | { 12 | this.Inventory = inventory; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerCreateEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | 3 | namespace MineNET.Events.PlayerEvents 4 | { 5 | public class PlayerCreateEventArgs : PlayerEventArgs 6 | { 7 | public Player CustomPlayer { get; set; } 8 | 9 | public PlayerCreateEventArgs(Player player) : base(player) 10 | { 11 | this.CustomPlayer = player; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Pickaxes/ItemDiamondPickaxe.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemDiamondPickaxe : ItemPickaxe 4 | { 5 | public override int ID => ItemIDs.DIAMOND_PICKAXE; 6 | 7 | public override string Name => "Diamond Pickaxe"; 8 | 9 | public override ItemToolTier ToolTier => ItemToolTier.DIAMOND; 10 | 11 | public override int MaxDurability => 1562; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/Swords/ItemWoodenSword.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemWoodenSword : ItemSword 4 | { 5 | public override int ID => ItemIDs.WOODEN_SWORD; 6 | 7 | public override string Name => "Wooden Sword"; 8 | 9 | public override ItemToolTier ToolTier { get; } = ItemToolTier.WOODEN; 10 | 11 | public override int MaxDurability { get; } = 60; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockGravel.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockGravel : BlockFalling 6 | { 7 | public BlockGravel() : base(BlockIDs.GRAVEL, "Gravel") 8 | { 9 | this.IsSolid = true; 10 | 11 | this.Hardness = 0.6f; 12 | this.Resistance = 3f; 13 | this.ToolType = ItemToolType.SHOVEL; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockLeave.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockLeave : BlockTransparent 6 | { 7 | public BlockLeave(int id, string name) : base(id, name) 8 | { 9 | this.LightOpacity = 0; 10 | this.Hardness = 0.2f; 11 | this.Resistance = 1f; 12 | this.ToolType = ItemToolType.SHEARS; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterValueEnum.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Commands.Enums; 2 | 3 | namespace MineNET.Commands.Parameters 4 | { 5 | public class CommandParameterValueEnum : CommandParameter 6 | { 7 | public CommandParameterValueEnum(string value) 8 | : base("valueEnum", CommandParameter.ARG_TYPE_VALUE, false, new CommandEnum(value, value), null) 9 | { 10 | 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerJoinEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | 3 | namespace MineNET.Events.PlayerEvents 4 | { 5 | public class PlayerJoinEventArgs : PlayerEventArgs 6 | { 7 | public string JoinMessage { get; set; } 8 | 9 | public PlayerJoinEventArgs(Player player, string joinMessage) : base(player) 10 | { 11 | this.JoinMessage = joinMessage; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockLapisOre.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockLapisOre : BlockOre 6 | { 7 | public BlockLapisOre() : base(BlockIDs.LAPIS_ORE, "LapisOre") 8 | { 9 | this.Hardness = 3f; 10 | this.Resistance = 15f; 11 | this.ToolType = ItemToolType.PICKAXE; 12 | this.ToolTier = ItemToolTier.STONE; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Items/Tools/ItemTool.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public abstract class ItemTool : Item 4 | { 5 | public override byte MaxStackSize => 1; 6 | 7 | public override bool IsTool => true; 8 | 9 | public virtual ItemToolType ToolType => ItemToolType.NONE; 10 | 11 | public virtual ItemToolTier ToolTier => ItemToolTier.NONE; 12 | 13 | public virtual int MaxDurability => 0; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/OnlinePing.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class OnlinePing : RakNetPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.OnlinePing; 6 | 7 | public long PingID { get; set; } 8 | 9 | public override void Decode() 10 | { 11 | base.Decode(); 12 | 13 | this.PingID = ReadLong(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/OnlinePong.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class OnlinePong : RakNetPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.OnlinePong; 6 | 7 | public long PingID { get; set; } 8 | 9 | public override void Encode() 10 | { 11 | base.Encode(); 12 | 13 | WriteLong(this.PingID); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Data/PlayerPermissions.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Data 2 | { 3 | public enum PlayerPermissions 4 | { 5 | VISITOR = 0, 6 | MEMBER = 1, 7 | OPERATOR = 2, 8 | CUSTOM = 4 9 | } 10 | 11 | public static class PlayerPermissionExtensions 12 | { 13 | public static int GetIndex(this PlayerPermissions permission) 14 | { 15 | return (int) permission; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/LecternUpdatePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class LecternUpdatePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.LECTERN_UPDATE_PACKET; 6 | 7 | protected override void DecodePayload() 8 | { 9 | } 10 | 11 | protected override void EncodePayload() 12 | { 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Commands/Parameters/CommandParameterString.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Commands.Enums; 2 | 3 | namespace MineNET.Commands.Parameters 4 | { 5 | public class CommandParameterString : CommandParameter 6 | { 7 | public CommandParameterString(string name, bool optional = false, CommandEnum commandEnum = null) 8 | : base(name, CommandParameter.ARG_TYPE_STRING, optional, commandEnum, null) 9 | { 10 | 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerLoginEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | 3 | namespace MineNET.Events.PlayerEvents 4 | { 5 | public class PlayerLoginEventArgs : PlayerEventArgs, ICancelable 6 | { 7 | public string KickMessage { get; set; } = ""; 8 | 9 | public bool IsCancel { get; set; } 10 | 11 | public PlayerLoginEventArgs(Player player) : base(player) 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/IServerListInfo.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET 2 | { 3 | public interface IServerListInfo 4 | { 5 | string Platform { get; } 6 | string ServerName { get; } 7 | 8 | int ClientProtocol { get; } 9 | string ClientVersion { get; } 10 | 11 | int JoinedPlayerCount { get; } 12 | int MaxPlayerCount { get; } 13 | 14 | string SystemName { get; } 15 | string Description { get; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Values/IPosition.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Worlds; 2 | 3 | namespace MineNET.Values 4 | { 5 | public interface IPosition : IVector3 6 | { 7 | World World { get; } 8 | } 9 | 10 | public static class IPositionExtensions 11 | { 12 | public static Position ToPosition(this IPosition position) 13 | { 14 | return new Position(position.X, position.Y, position.Z, position.World); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerPreLoginEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | 3 | namespace MineNET.Events.PlayerEvents 4 | { 5 | public class PlayerPreLoginEventArgs : PlayerEventArgs, ICancelable 6 | { 7 | public string KickMessage { get; set; } = ""; 8 | 9 | public bool IsCancel { get; set; } 10 | 11 | public PlayerPreLoginEventArgs(Player player) : base(player) 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Utils/LinqExtention.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace System.Linq 4 | { 5 | public static class LinqExtention 6 | { 7 | public static IEnumerable> Chunks(this IEnumerable list, int size) 8 | { 9 | while (list.Any()) 10 | { 11 | yield return list.Take(size); 12 | list = list.Skip(size); 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/VideoStreamConnectPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class VideoStreamConnectPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.VIDEO_STREAM_CONNECT_PACKET; 6 | 7 | protected override void DecodePayload() 8 | { 9 | } 10 | 11 | protected override void EncodePayload() 12 | { 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityDataInt.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Entities.Metadata 2 | { 3 | public class EntityDataInt : EntityDataProperty 4 | { 5 | public EntityDataInt(int id, int data) : base(id, data) 6 | { 7 | 8 | } 9 | 10 | public override EntityMetadataType Type 11 | { 12 | get 13 | { 14 | return EntityMetadataType.DATA_TYPE_INT; 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Events/EntityEvents/EntityAnimationEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities; 2 | 3 | namespace MineNET.Events.EntityEvents 4 | { 5 | public class EntityAnimationEventArgs : EntityEventArgs, ICancelable 6 | { 7 | public int Action { get; } 8 | public bool IsCancel { get; set; } 9 | 10 | public EntityAnimationEventArgs(Entity entity, int action) : base(entity) 11 | { 12 | this.Action = action; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MineNET/MineNETConfig.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Utils.Config; 2 | 3 | namespace MineNET 4 | { 5 | public class MineNETConfig : YamlStaticConfig 6 | { 7 | public string Language { get; set; } = "ja_JP"; 8 | public bool PacketDebug { get; set; } = false; 9 | public bool ClockDelayDebug { get; set; } = false; 10 | public bool TraceLogDisable { get; set; } = true; 11 | public bool NewVersionChunkFormat { get; set; } = true; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityDataLong.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Entities.Metadata 2 | { 3 | public class EntityDataLong : EntityDataProperty 4 | { 5 | public EntityDataLong(int id, long data) : base(id, data) 6 | { 7 | 8 | } 9 | 10 | public override EntityMetadataType Type 11 | { 12 | get 13 | { 14 | return EntityMetadataType.DATA_TYPE_LONG; 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Utils/TextContainerUtils.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Text; 2 | 3 | namespace MineNET.Utils 4 | { 5 | public static class TextContainerUtils 6 | { 7 | public static string ToString(string key) 8 | { 9 | return new CultureTextContainer(key).GetText(); 10 | } 11 | 12 | public static string ToString(string key, object[] args) 13 | { 14 | return new CultureTextContainer(key, args).GetText(); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /MineNET.GUI/Data/Language.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.GUI.Data 2 | { 3 | public class Language 4 | { 5 | public string Name { get; } 6 | public string Code { get; } 7 | 8 | public Language(string name, string code) 9 | { 10 | this.Name = name; 11 | this.Code = code; 12 | } 13 | 14 | public override string ToString() 15 | { 16 | return $"{this.Name}({this.Code})"; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/StructureBlockUpdatePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class StructureBlockUpdatePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.STRUCTURE_BLOCK_UPDATE_PACKET; 6 | 7 | protected override void EncodePayload() 8 | { 9 | 10 | } 11 | 12 | protected override void DecodePayload() 13 | { 14 | 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Values/ILocation.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Values 2 | { 3 | public interface ILocation : IPosition 4 | { 5 | float Yaw { get; } 6 | float Pitch { get; } 7 | } 8 | 9 | public static class ILocationExtensions 10 | { 11 | public static Location ToLocation(this ILocation location) 12 | { 13 | return new Location(location.X, location.Y, location.Z, location.Yaw, location.Pitch, location.World); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityDataFloat.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Entities.Metadata 2 | { 3 | public class EntityDataFloat : EntityDataProperty 4 | { 5 | public EntityDataFloat(int id, float data) : base(id, data) 6 | { 7 | 8 | } 9 | 10 | public override EntityMetadataType Type 11 | { 12 | get 13 | { 14 | return EntityMetadataType.DATA_TYPE_FLOAT; 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityDataShort.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Entities.Metadata 2 | { 3 | public class EntityDataShort : EntityDataProperty 4 | { 5 | public EntityDataShort(int id, short data) : base(id, data) 6 | { 7 | 8 | } 9 | 10 | public override EntityMetadataType Type 11 | { 12 | get 13 | { 14 | return EntityMetadataType.DATA_TYPE_SHORT; 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerChatEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | 3 | namespace MineNET.Events.PlayerEvents 4 | { 5 | public class PlayerChatEventArgs : PlayerEventArgs, ICancelable 6 | { 7 | public string Message { get; set; } 8 | 9 | public bool IsCancel { get; set; } 10 | 11 | public PlayerChatEventArgs(Player player, string message) : base(player) 12 | { 13 | this.Message = message; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ServerSettingsRequestPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ServerSettingsRequestPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SERVER_SETTINGS_REQUEST_PACKET; 6 | 7 | protected override void EncodePayload() 8 | { 9 | 10 | } 11 | 12 | protected override void DecodePayload() 13 | { 14 | 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ClientToServerHandshakePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ClientToServerHandshakePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.CLIENTBOUND_MAP_ITEM_DATA_PACKET; 6 | 7 | protected override void EncodePayload() 8 | { 9 | 10 | } 11 | 12 | protected override void DecodePayload() 13 | { 14 | 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ClientboundMapItemDataPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ClientboundMapItemDataPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.CLIENTBOUND_MAP_ITEM_DATA_PACKET; 6 | 7 | protected override void EncodePayload() 8 | { 9 | 10 | } 11 | 12 | protected override void DecodePayload() 13 | { 14 | 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Plugins/PluginFlags.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Plugins 4 | { 5 | [Flags] 6 | public enum PluginFlags 7 | { 8 | None = 0, 9 | Plugin = 1, 10 | Library = 2, 11 | Package = PluginFlags.Plugin | PluginFlags.Library, 12 | ApiVersionCheck = 4, 13 | UsePremisePlugins = 8, 14 | Fast = 16, 15 | Slow = 32, 16 | Normal = PluginFlags.Fast | PluginFlags.Slow, 17 | GenerateConfig = 64 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerToggleGlideEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | 3 | namespace MineNET.Events.PlayerEvents 4 | { 5 | public class PlayerToggleGlideEventArgs : PlayerEventArgs, ICancelable 6 | { 7 | public bool IsGliding { get; } 8 | 9 | public bool IsCancel { get; set; } 10 | 11 | public PlayerToggleGlideEventArgs(Player player, bool isGliding) : base(player) 12 | { 13 | this.IsGliding = isGliding; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Plugins/IPlugin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Plugins 4 | { 5 | public interface IPlugin 6 | { 7 | string Name { get; } 8 | string Description { get; } 9 | string Version { get; } 10 | ApiVersion ApiVersion { get; } 11 | PluginFlags Flag { get; } 12 | string[] PremisePlugins { get; } 13 | 14 | void OnLoad(); 15 | void OnEnable(); 16 | void OnDisable(); 17 | void OnError(Exception e); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityDataSlot.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Entities.Metadata 4 | { 5 | public class EntityDataSlot : EntityDataProperty 6 | { 7 | public EntityDataSlot(int id, Item data) : base(id, data) 8 | { 9 | 10 | } 11 | 12 | public override EntityMetadataType Type 13 | { 14 | get 15 | { 16 | return EntityMetadataType.DATA_TYPE_SLOT; 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerToggleSneakEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | 3 | namespace MineNET.Events.PlayerEvents 4 | { 5 | public class PlayerToggleSneakEventArgs : PlayerEventArgs, ICancelable 6 | { 7 | public bool IsSneaking { get; } 8 | 9 | public bool IsCancel { get; set; } 10 | 11 | public PlayerToggleSneakEventArgs(Player player, bool isSneaking) : base(player) 12 | { 13 | this.IsSneaking = isSneaking; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Events/ServerEvents/ServerCommandEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Commands; 2 | 3 | namespace MineNET.Events.ServerEvents 4 | { 5 | public class ServerCommandEventArgs : ServerEventArgs, ICancelable 6 | { 7 | public CommandData CommandData { get; } 8 | public bool IsCancel { get; set; } 9 | 10 | public ServerCommandEventArgs(CommandData command) 11 | { 12 | this.Server = Server.Instance; 13 | this.CommandData = command; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Commands/Enums/CommandEnum.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Commands.Enums 2 | { 3 | public class CommandEnum 4 | { 5 | public string Name { get; set; } 6 | public string[] Values { get; set; } 7 | 8 | public CommandEnum(string name, params string[] values) 9 | { 10 | this.Name = name; 11 | if (values == null) 12 | { 13 | values = new string[0]; 14 | } 15 | this.Values = values; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityDataString.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Entities.Metadata 4 | { 5 | public class EntityDataString : EntityDataProperty 6 | { 7 | public EntityDataString(int id, string data) : base(id, data) 8 | { 9 | 10 | } 11 | 12 | public override EntityMetadataType Type 13 | { 14 | get 15 | { 16 | return EntityMetadataType.DATA_TYPE_STRING; 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerToggleSprintEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | 3 | namespace MineNET.Events.PlayerEvents 4 | { 5 | public class PlayerToggleSprintEventArgs : PlayerEventArgs, ICancelable 6 | { 7 | public bool IsSprinting { get; } 8 | 9 | public bool IsCancel { get; set; } 10 | 11 | public PlayerToggleSprintEventArgs(Player player, bool isSprinting) : base(player) 12 | { 13 | this.IsSprinting = isSprinting; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Items/Foods/ItemMushroomStew.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemMushroomStew : ItemFood 4 | { 5 | public override int ID => ItemIDs.MUSHROOM_STEW; 6 | 7 | public override string Name => "Mushroom Stew"; 8 | 9 | public override byte MaxStackSize => 1; 10 | 11 | public override int FoodRestore => 6; 12 | 13 | public override float SaturationRestore => 7.2f; 14 | 15 | public override Item Residue => Item.Get(ItemIDs.BOWL); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityDataVector.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Entities.Metadata 4 | { 5 | public class EntityDataVector : EntityDataProperty 6 | { 7 | public EntityDataVector(int id, Vector3 data) : base(id, data) 8 | { 9 | 10 | } 11 | 12 | public override EntityMetadataType Type 13 | { 14 | get 15 | { 16 | return EntityMetadataType.DATA_TYPE_VECTOR; 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/Inventories/Recipe/FurnaceRecipe.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network.MinecraftPackets; 2 | 3 | namespace MineNET.Inventories.Recipe 4 | { 5 | public class FurnaceRecipe : IRecipe 6 | { 7 | public int ID 8 | { 9 | get 10 | { 11 | return CraftingDataPacket.ENTRY_FURNACE; 12 | } 13 | } 14 | 15 | public void Write(MinecraftPacket stream) 16 | { 17 | throw new System.NotImplementedException(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityDataPos.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Entities.Metadata 4 | { 5 | public class EntityDataPos : EntityDataProperty 6 | { 7 | public EntityDataPos(int id, BlockCoordinate3D data) : base(id, data) 8 | { 9 | 10 | } 11 | 12 | public override EntityMetadataType Type 13 | { 14 | get 15 | { 16 | return EntityMetadataType.DATA_TYPE_POS; 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/Items/ItemBlock.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Blocks; 2 | 3 | namespace MineNET.Items 4 | { 5 | public class ItemBlock : Item 6 | { 7 | private Block block; 8 | 9 | public ItemBlock(Block block) 10 | { 11 | this.block = block; 12 | } 13 | 14 | public override int ID => this.block.ID < 256 ? this.block.ID : -this.block.ID + 255; 15 | 16 | public override string Name => this.block.Name; 17 | 18 | public override Block Block => this.block.Clone(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetTimePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class SetTimePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SET_TIME_PACKET; 6 | 7 | public int Time { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteVarInt(this.Time); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET.GUI/Program.cs: -------------------------------------------------------------------------------- 1 | using MineNET.GUI.UI.Forms; 2 | using System; 3 | using System.Windows.Forms; 4 | 5 | namespace MineNET.GUI 6 | { 7 | static class Program 8 | { 9 | /// 10 | /// アプリケーションのメイン エントリ ポイントです。 11 | /// 12 | [STAThread] 13 | static void Main() 14 | { 15 | Application.EnableVisualStyles(); 16 | Application.SetCompatibleTextRenderingDefault(false); 17 | Application.Run(new MainForm()); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/Events/InventoryEvents/InventoryOpenEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | using MineNET.Inventories; 3 | 4 | namespace MineNET.Events.InventoryEvents 5 | { 6 | public class InventoryOpenEventArgs : InventoryEventArgs, ICancelable 7 | { 8 | public Player Player { get; set; } 9 | 10 | public bool IsCancel { get; set; } 11 | 12 | public InventoryOpenEventArgs(Inventory inventory, Player player) : base(inventory) 13 | { 14 | this.Player = player; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/CloseSessionEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network; 2 | using System.Net; 3 | 4 | namespace MineNET.Events.NetworkEvents 5 | { 6 | public class CloseSessionEventArgs : NetworkEventArgs 7 | { 8 | public IPEndPoint EndPoint { get; } 9 | public NetworkSession Session { get; set; } 10 | 11 | public CloseSessionEventArgs(IPEndPoint endPoint, NetworkSession session) 12 | { 13 | this.EndPoint = endPoint; 14 | this.Session = session; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerCommandEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Commands; 2 | using MineNET.Entities.Players; 3 | 4 | namespace MineNET.Events.PlayerEvents 5 | { 6 | public class PlayerCommandEventArgs : PlayerEventArgs, ICancelable 7 | { 8 | public CommandData CommandData { get; set; } 9 | public bool IsCancel { get; set; } 10 | 11 | public PlayerCommandEventArgs(CommandData command) : base((Player) command.Sender) 12 | { 13 | this.CommandData = command; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /MineNET/Events/InventoryEvents/InventoryCloseEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | using MineNET.Inventories; 3 | 4 | namespace MineNET.Events.InventoryEvents 5 | { 6 | public class InventoryCloseEventArgs : InventoryEventArgs, ICancelable 7 | { 8 | public Player Player { get; set; } 9 | 10 | public bool IsCancel { get; set; } 11 | 12 | public InventoryCloseEventArgs(Inventory inventory, Player player) : base(inventory) 13 | { 14 | this.Player = player; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerQuitEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | 3 | namespace MineNET.Events.PlayerEvents 4 | { 5 | public class PlayerQuitEventArgs : PlayerEventArgs 6 | { 7 | public string QuitMessage { get; set; } 8 | 9 | public string Reason { get; set; } 10 | 11 | public PlayerQuitEventArgs(Player player, string quitMessage, string reason) : base(player) 12 | { 13 | this.QuitMessage = quitMessage; 14 | this.Reason = reason; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ShowProfilePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ShowProfilePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SHOW_PROFILE_PACKET; 6 | 7 | public string Xuid { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteString(this.Xuid); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Events/InventoryEvents/InventoryTransactionEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using MineNET.Inventories.Transactions; 3 | 4 | namespace MineNET.Events.InventoryEvents 5 | { 6 | public class InventoryTransactionEventArgs : EventArgs, ICancelable 7 | { 8 | public InventoryTransaction Transaction { get; } 9 | 10 | public bool IsCancel { get; set; } 11 | 12 | public InventoryTransactionEventArgs(InventoryTransaction transaction) 13 | { 14 | this.Transaction = transaction; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/ResourcePack/ResourcePackInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.ResourcePack 4 | { 5 | public class ResourcePackInfo : IResourcePack 6 | { 7 | public string GetPackId() 8 | { 9 | throw new NotImplementedException(); 10 | } 11 | 12 | public ulong GetPackSize() 13 | { 14 | throw new NotImplementedException(); 15 | } 16 | 17 | public string GetPackVersion() 18 | { 19 | throw new NotImplementedException(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MineNET 2 | MineCraftBE Server SoftWere 3 | 1から作ったサーバーソフトウェア 4 | 5 | ## 目標 6 | とりあえず、最低限鯖を運営できる程度にする 7 | 8 | ## 現状 9 | 地形が保存されるようになり、IDが256以上のブロックが読み込まれるようになった 10 | 11 | ## MineNETで実装予定の要素 12 | - Entityの実装 13 | - レッドストーンの実装 14 | など 15 | 16 | ## 使用しているライブラリ 17 | [YamlDotNet](https://github.com/aaubry/YamlDotNet) 18 | [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) 19 | [SharpZipLib](https://github.com/icsharpcode/SharpZipLib) 20 | [NLog](https://github.com/NLog/NLog) 21 | [SharpNoise](https://github.com/rthome/SharpNoise) 22 | -------------------------------------------------------------------------------- /MineNET/Items/ItemUnknown.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Items 2 | { 3 | public class ItemUnknown : Item 4 | { 5 | private int id; 6 | private string name; 7 | 8 | public ItemUnknown(int id) : this(id, "Unknown") 9 | { 10 | 11 | } 12 | 13 | public ItemUnknown(int id, string name) 14 | { 15 | this.id = id; 16 | this.name = name; 17 | } 18 | 19 | public override int ID => this.id; 20 | 21 | public override string Name => this.name; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/NBT/Tags/ArrayDataTag.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.NBT.Tags 2 | { 3 | public abstract class ArrayDataTag : Tag 4 | { 5 | private T[] data; 6 | 7 | public ArrayDataTag(string name, T[] data) : base(name) 8 | { 9 | this.data = data; 10 | } 11 | 12 | public T[] Data 13 | { 14 | get 15 | { 16 | return this.data; 17 | } 18 | 19 | set 20 | { 21 | this.data = value; 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/MapInfoRequestPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class MapInfoRequestPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.MAP_INFO_REQUEST_PACKET; 6 | 7 | public long MapId { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.MapId = this.ReadEntityUniqueId(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/RequestChunkRadiusPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class RequestChunkRadiusPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.REQUEST_CHUNK_RADIUS_PACKET; 6 | 7 | public int Radius { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.Radius = ReadSVarInt(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET.GUI/MineNETGUIConfig.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Utils.Config; 2 | 3 | namespace MineNET.GUI 4 | { 5 | public class MineNETGUIConfig : YamlStaticConfig 6 | { 7 | [YamlDescription("app.config.checkVersion", typeof(MineNETGUIConfig), "MineNET.GUI.Resources.Lang.")] 8 | public bool CheckVersion { get; set; } = true; 9 | [YamlDescription("app.config.showNews", typeof(MineNETGUIConfig), "MineNET.GUI.Resources.Lang.")] 10 | public bool ShowNews { get; set; } = false; 11 | 12 | public bool ServerLoadStart { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ChunkRadiusUpdatedPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ChunkRadiusUpdatedPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.CHUNK_RADIUS_UPDATED_PACKET; 6 | 7 | public int Radius { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteSVarInt(this.Radius); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/GuiDataPickItemPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class GuiDataPickItemPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.GUI_DATA_PICK_ITEM_PACKET; 6 | 7 | public uint HotbarSlot { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.HotbarSlot = this.ReadLInt(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetCommandsEnabledPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class SetCommandsEnabledPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SET_COMMANDS_ENABLED_PACKET; 6 | 7 | public bool Enabled { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteBool(this.Enabled); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/RemoveEntityPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class RemoveEntityPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.REMOVE_ENTITY_PACKET; 6 | 7 | public long EntityUniqueId { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteEntityUniqueId(this.EntityUniqueId); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Utils/Random.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Utils 2 | { 3 | public static class Random 4 | { 5 | private static readonly System.Random _randomBase = new System.Random(); 6 | 7 | public static long CreateRandomID() 8 | { 9 | long val = ((long) _randomBase.Next(int.MinValue, int.MaxValue) << 8); 10 | val += _randomBase.Next(int.MinValue, int.MaxValue); 11 | return val; 12 | } 13 | 14 | public static System.Random GetRandom() 15 | { 16 | return _randomBase; 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /MineNET/Values/BlockCoordinate2D.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Values 4 | { 5 | public struct BlockCoordinate2D : IBlockCoordinate2D 6 | { 7 | public int X { get; set; } 8 | public int Y { get; set; } 9 | 10 | public BlockCoordinate2D(int x, int y) 11 | { 12 | this.X = x; 13 | this.Y = y; 14 | } 15 | 16 | public BlockCoordinate2D(float x, float y) 17 | { 18 | this.X = (int) Math.Floor(x); 19 | this.Y = (int) Math.Floor(y); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Data/ContainerIds.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Data 2 | { 3 | public enum ContainerIds 4 | { 5 | NONE = -1, 6 | INVENTORY = 0, 7 | FIRST = 1, 8 | LAST = 100, 9 | OFFHAND = 119, 10 | ARMOR = 120, 11 | CREATIVE = 121, 12 | HOTBAR = 122, 13 | FIXED_INVENTORY = 123, 14 | CURSOR = 124, 15 | } 16 | 17 | public static class ContainerIdsExtensions 18 | { 19 | public static byte GetIndex(this ContainerIds ids) 20 | { 21 | return (byte) ids; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/HurtArmorPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class HurtArmorPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.HURT_ARMOR_PACKET; 6 | 7 | public int Health { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteVarInt(this.Health); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.Health = this.ReadVarInt(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetHealthPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class SetHealthPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SET_HEALTH_PACKET; 6 | 7 | public int Health { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteVarInt(this.Health); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.Health = this.ReadVarInt(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ContainerClosePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ContainerClosePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.CONTAINER_CLOSE_PACKET; 6 | 7 | public byte WindowId { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteByte(this.WindowId); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.WindowId = this.ReadByte(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/RiderJumpPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class RiderJumpPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.RIDER_JUMP_PACKET; 6 | 7 | public int JumpStrength { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteVarInt(this.JumpStrength); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.JumpStrength = this.ReadVarInt(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Values/IVector2.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Values 2 | { 3 | public interface IVector2 4 | { 5 | float X { get; set; } 6 | float Y { get; set; } 7 | } 8 | 9 | public static class IVector2Extensions 10 | { 11 | public static Vector2 ToVector2(this IVector2 vector) 12 | { 13 | return new Vector2(vector.X, vector.Y); 14 | } 15 | 16 | public static BlockCoordinate2D ToBlockCoordinate2D(this IVector2 vector) 17 | { 18 | return new BlockCoordinate2D((int)vector.X, (int)vector.Y); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET.GUI/UI/Controls/PlayerListControl.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace MineNET.GUI.UI.Controls 4 | { 5 | public partial class PlayerListControl : UserControl 6 | { 7 | public PlayerListControl() 8 | { 9 | InitializeComponent(); 10 | } 11 | 12 | private void PlayerListControl_Load(object sender, System.EventArgs e) 13 | { 14 | this.label.Text = LanguageService.GetString("app.playerListControl.label"); 15 | } 16 | 17 | public void UpdatePlayerList() 18 | { 19 | 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/CreateSessionEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network; 2 | using System.Net; 3 | 4 | namespace MineNET.Events.NetworkEvents 5 | { 6 | public class CreateSessionEventArgs : NetworkEventArgs, ICancelable 7 | { 8 | public IPEndPoint EndPoint { get; } 9 | public NetworkSession Session { get; set; } 10 | public bool IsCancel { get; set; } 11 | 12 | public CreateSessionEventArgs(IPEndPoint endPoint, NetworkSession session) 13 | { 14 | this.EndPoint = endPoint; 15 | this.Session = session; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/BiomeDefinitionListPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class BiomeDefinitionListPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.BIOME_DEFINITION_LIST_PACKET; 6 | 7 | public byte[] Tag { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteBytes(this.Tag); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.Tag = this.ReadBytes(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityDataByte.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Entities.Metadata 2 | { 3 | public class EntityDataByte : EntityDataProperty 4 | { 5 | public EntityDataByte(int id, byte data) : base(id, data) 6 | { 7 | 8 | } 9 | 10 | public EntityDataByte(int id, bool data) : base(id, data ? (byte) 0 : (byte) 1) 11 | { 12 | 13 | } 14 | 15 | public override EntityMetadataType Type 16 | { 17 | get 18 | { 19 | return EntityMetadataType.DATA_TYPE_BYTE; 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerEatFoodEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | using MineNET.Items; 3 | 4 | namespace MineNET.Events.PlayerEvents 5 | { 6 | public class PlayerEatFoodEventArgs : PlayerEventArgs, ICancelable 7 | { 8 | public ItemFood Food { get; } 9 | public Item Residue { get; set; } 10 | 11 | public bool IsCancel { get; set; } 12 | 13 | public PlayerEatFoodEventArgs(Player player, ItemFood food, Item residue) : base(player) 14 | { 15 | this.Food = food; 16 | this.Residue = residue; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/RakNet/PacketSendEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network.RakNetPackets; 2 | using System.Net; 3 | 4 | namespace MineNET.Events.NetworkEvents.RakNet 5 | { 6 | public class RakNetPacketSendEventArgs : NetworkEventArgs 7 | { 8 | public IPEndPoint EndPoint { get; } 9 | public RakNetPacket Packet { get; set; } 10 | public bool IsCancel { get; set; } 11 | 12 | public RakNetPacketSendEventArgs(IPEndPoint endPoint, RakNetPacket packet) 13 | { 14 | this.EndPoint = endPoint; 15 | this.Packet = packet; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerSkinChangeEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Data; 2 | using MineNET.Entities.Players; 3 | 4 | namespace MineNET.Events.PlayerEvents 5 | { 6 | public class PlayerSkinChangeEventArgs : PlayerEventArgs, ICancelable 7 | { 8 | public Skin OldSkin { get; } 9 | public Skin NewSkin { get; set; } 10 | public bool IsCancel { get; set; } 11 | 12 | public PlayerSkinChangeEventArgs(Player player, Skin oldSkin, Skin newSkin) : base(player) 13 | { 14 | this.OldSkin = oldSkin; 15 | this.NewSkin = newSkin; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/GameRulesChangedPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Worlds.Rule; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class GameRulesChangedPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.GAME_RULES_CHANGED_PACKET; 8 | 9 | public GameRules GameRules { get; set; } 10 | 11 | protected override void EncodePayload() 12 | { 13 | this.WriteGameRules(this.GameRules); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetLastHurtByPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class SetLastHurtByPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SET_LAST_HURT_BY_PACKET; 6 | 7 | public int EntityTypeId { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteVarInt(this.EntityTypeId); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.EntityTypeId = this.ReadVarInt(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/RespawnPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class RespawnPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.RESPAWN_PACKET; 8 | 9 | public Vector3 Position { get; set; } 10 | 11 | protected override void EncodePayload() 12 | { 13 | this.WriteVector3(this.Position); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.Position = this.ReadVector3(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ServerToClientHandshakePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ServerToClientHandshakePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SERVER_TO_CLIENT_HANDSHAKE_PACKET; 6 | 7 | public string Jwt { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteString(this.Jwt); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.Jwt = this.ReadString(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerItemConsumeEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | using MineNET.Items; 3 | 4 | namespace MineNET.Events.PlayerEvents 5 | { 6 | public class PlayerItemConsumeEventArgs : PlayerEventArgs, ICancelable 7 | { 8 | public Item Item { get; } 9 | public IConsumeable Consume { get; } 10 | 11 | public bool IsCancel { get; set; } 12 | 13 | public PlayerItemConsumeEventArgs(Player player, Item item, IConsumeable consume) : base(player) 14 | { 15 | this.Item = item; 16 | this.Consume = consume; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/RemoveObjectivePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class RemoveObjectivePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.REMOVE_OBJECTIVE_PACKET; 6 | 7 | public string ObjectiveName { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteString(this.ObjectiveName); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.ObjectiveName = this.ReadString(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Events/BlockEvents/BlockEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Events.BlockEvents 4 | { 5 | public class BlockEvent 6 | { 7 | public event EventHandler BlockBreak; 8 | public void OnBlockBreak(object sender, BlockBreakEventArgs args) 9 | { 10 | this.BlockBreak?.Invoke(sender, args); 11 | } 12 | 13 | public event EventHandler BlockPlace; 14 | public void OnBlockPlace(object sender, BlockPlaceEventArgs args) 15 | { 16 | this.BlockPlace?.Invoke(sender, args); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Values/IBlockCoordinate2D.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Values 2 | { 3 | public interface IBlockCoordinate2D 4 | { 5 | int X { get; set; } 6 | int Y { get; set; } 7 | } 8 | 9 | public static class IBlockCoordinate2DExtensions 10 | { 11 | public static Vector2 ToVector2(this IBlockCoordinate2D block) 12 | { 13 | return new Vector2(block.X, block.Y); 14 | } 15 | 16 | public static BlockCoordinate2D ToBlockCoordinate2D(this IBlockCoordinate2D block) 17 | { 18 | return new BlockCoordinate2D(block.X, block.Y); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/RakNet/PacketReceiveEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network.RakNetPackets; 2 | using System.Net; 3 | 4 | namespace MineNET.Events.NetworkEvents.RakNet 5 | { 6 | public class RakNetPacketReceiveEventArgs : NetworkEventArgs, ICancelable 7 | { 8 | public IPEndPoint EndPoint { get; } 9 | public RakNetPacket Packet { get; set; } 10 | public bool IsCancel { get; set; } 11 | 12 | public RakNetPacketReceiveEventArgs(IPEndPoint endPoint, RakNetPacket packet) 13 | { 14 | this.EndPoint = endPoint; 15 | this.Packet = packet; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/AddBehaviorTreePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class AddBehaviorTreePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.ADD_BEHAVIOR_TREE_PACKET; 6 | 7 | public string BehaviorTreeJson { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteString(this.BehaviorTreeJson); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.BehaviorTreeJson = this.ReadString(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/OnScreenTextureAnimationPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class OnScreenTextureAnimationPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.ON_SCREEN_TEXTURE_ANIMATION_PACKET; 6 | 7 | public uint EffectId { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteLInt(this.EffectId); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.EffectId = this.ReadLInt(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/TransferPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class TransferPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.TRANSFER_PACKET; 6 | 7 | public string Address { get; set; } 8 | public ushort Port { get; set; } = 19132; 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteString(this.Address); 13 | this.WriteLShort(this.Port); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/OpenConnectingReply1.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class OpenConnectingReply1 : OfflineMessage 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.OpenConnectingReply1; 6 | 7 | public long ServerID { get; set; } 8 | public short MTUSize { get; set; } 9 | 10 | public override void Encode() 11 | { 12 | base.Encode(); 13 | 14 | this.WriteMagic(); 15 | this.WriteLong(this.ServerID); 16 | this.WriteByte(0); 17 | this.WriteShort(this.MTUSize); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /MineNET/Values/IBlockCoordinate3D.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Values 2 | { 3 | public interface IBlockCoordinate3D : IBlockCoordinate2D 4 | { 5 | int Z { get; set; } 6 | } 7 | 8 | public static class IBlockCoordinate3DExtensions 9 | { 10 | public static Vector3 ToVector3(this IBlockCoordinate3D block) 11 | { 12 | return new Vector3(block.X, block.Y, block.Z); 13 | } 14 | 15 | public static BlockCoordinate3D ToBlockCoordinate3D(this IBlockCoordinate3D block) 16 | { 17 | return new BlockCoordinate3D(block.X, block.Y, block.Z); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/RakNet/DataPacketSendEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network; 2 | using MineNET.Network.RakNetPackets; 3 | 4 | namespace MineNET.Events.NetworkEvents.RakNet 5 | { 6 | public class RakNetDataPacketSendEventArgs : NetworkEventArgs, ICancelable 7 | { 8 | public NetworkSession Session { get; } 9 | public DataPacket Packet { get; set; } 10 | public bool IsCancel { get; set; } 11 | 12 | public RakNetDataPacketSendEventArgs(NetworkSession session, DataPacket packet) 13 | { 14 | this.Session = session; 15 | this.Packet = packet; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/StopSoundPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class StopSoundPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.STOP_SOUND_PACKET; 6 | 7 | public string SoundName { get; set; } 8 | public bool StopAll { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteString(this.SoundName); 13 | this.WriteBool(this.StopAll); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/OpenConnectingRequest1.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class OpenConnectingRequest1 : OfflineMessage 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.OpenConnectingRequest1; 6 | 7 | public byte Protocol { get; set; } 8 | public short MTUSize { get; set; } 9 | 10 | public override void Decode() 11 | { 12 | base.Decode(); 13 | 14 | this.ReadMagic(); 15 | this.Protocol = this.ReadByte(); 16 | this.MTUSize = (short) (this.ReadBytes().Length + 18); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SubClientLoginPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class SubClientLoginPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SUB_CLIENT_LOGIN_PACKET; 6 | 7 | public string ConnectionRequestData { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteString(this.ConnectionRequestData); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.ConnectionRequestData = this.ReadString(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/RakNet/DataPacketReceiveEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network; 2 | using MineNET.Network.RakNetPackets; 3 | 4 | namespace MineNET.Events.NetworkEvents.RakNet 5 | { 6 | public class RakNetDataPacketReceiveEventArgs : NetworkEventArgs, ICancelable 7 | { 8 | public NetworkSession Session { get; } 9 | public DataPacket Packet { get; set; } 10 | public bool IsCancel { get; set; } 11 | 12 | public RakNetDataPacketReceiveEventArgs(NetworkSession session, DataPacket packet) 13 | { 14 | this.Session = session; 15 | this.Packet = packet; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Entities/Metadata/EntityMetadataType.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Entities.Metadata 2 | { 3 | public enum EntityMetadataType 4 | { 5 | DATA_TYPE_BYTE = 0, 6 | DATA_TYPE_SHORT = 1, 7 | DATA_TYPE_INT = 2, 8 | DATA_TYPE_FLOAT = 3, 9 | DATA_TYPE_STRING = 4, 10 | DATA_TYPE_SLOT = 5, 11 | DATA_TYPE_POS = 6, 12 | DATA_TYPE_LONG = 7, 13 | DATA_TYPE_VECTOR = 8, 14 | } 15 | 16 | public static class EntityMetadataTypeExtensions 17 | { 18 | public static int GetIndex(this EntityMetadataType type) 19 | { 20 | return (int) type; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ModalFormRequestPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ModalFormRequestPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.MODAL_FORM_REQUEST_PACKET; 6 | 7 | public int FormId { get; set; } 8 | public string FormData { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteVarInt(this.FormId); 13 | this.WriteString(this.FormData); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/RakNet/EncapsulatedSendEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network; 2 | using MineNET.Network.RakNetPackets; 3 | 4 | namespace MineNET.Events.NetworkEvents.RakNet 5 | { 6 | public class RakNetEncapsulatedSendEventArgs : NetworkEventArgs, ICancelable 7 | { 8 | public NetworkSession Session { get; } 9 | public EncapsulatedPacket Packet { get; set; } 10 | public bool IsCancel { get; set; } 11 | 12 | public RakNetEncapsulatedSendEventArgs(NetworkSession session, EncapsulatedPacket packet) 13 | { 14 | this.Session = session; 15 | this.Packet = packet; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/AutomationClientConnectPacket.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class AutomationClientConnectPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.AUTOMATION_CLIENT_CONNECT_PACKET; 8 | 9 | public String ServerUri { get; set; } 10 | 11 | protected override void EncodePayload() 12 | { 13 | this.WriteString(this.ServerUri); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.ServerUri = this.ReadString(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetScorePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class SetScorePacket : MinecraftPacket 4 | { 5 | public const byte TYPE_MODIFY_SCORE = 0; 6 | public const byte TYPE_RESET_SCORE = 1; 7 | 8 | public override byte PacketID { get; } = MinecraftProtocol.SET_SCORE_PACKET; 9 | 10 | public byte Type { get; set; } 11 | //public ScorePacketEntry Entry { get; set; } 12 | 13 | protected override void EncodePayload() 14 | { 15 | 16 | } 17 | 18 | protected override void DecodePayload() 19 | { 20 | 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/OfflineMessage.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | 3 | namespace MineNET.Network.RakNetPackets 4 | { 5 | public abstract class OfflineMessage : RakNetPacket 6 | { 7 | public byte[] Magic { get; private set; } 8 | public void ReadMagic() 9 | { 10 | this.Magic = this.ReadBytes(RakNetProtocol.Magic.Length); 11 | } 12 | 13 | public void WriteMagic() 14 | { 15 | this.WriteBytes(RakNetProtocol.Magic); 16 | } 17 | 18 | public bool IsValid() 19 | { 20 | return this.Magic.SequenceEqual(RakNetProtocol.Magic); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/RakNetPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Utils; 2 | using System; 3 | 4 | namespace MineNET.Network.RakNetPackets 5 | { 6 | public abstract class RakNetPacket : BinaryStream, ICloneable 7 | { 8 | public abstract byte MessageID { get; } 9 | 10 | public virtual void Encode() 11 | { 12 | this.WriteByte(this.MessageID); 13 | } 14 | public virtual void Decode() 15 | { 16 | this.ReadByte(); 17 | } 18 | 19 | public new RakNetPacket Clone() 20 | { 21 | return (RakNetPacket) this.MemberwiseClone(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /MineNET/Data/ClientData.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Data 2 | { 3 | public sealed class ClientData 4 | { 5 | public string ClientRandomID { get; set; } 6 | public int CurrentInputMode { get; set; } 7 | public int DefaultInputMode { get; set; } 8 | public string DeviceModel { get; set; } 9 | public int DeviceOS { get; set; } 10 | public string GameVersion { get; set; } 11 | public int GUIScale { get; set; } 12 | public string LanguageCode { get; set; } 13 | public string ServerAddress { get; set; } 14 | public Skin Skin { get; set; } 15 | public int UIProfile { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ModalFormResponsePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ModalFormResponsePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.MODAL_FORM_RESPONSE_PACKET; 6 | 7 | public int FormId { get; set; } 8 | public string FormData { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | 13 | } 14 | 15 | protected override void DecodePayload() 16 | { 17 | this.FormId = this.ReadVarInt(); 18 | this.FormData = this.ReadString(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ServerSettingsResponsePacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ServerSettingsResponsePacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SERVER_SETTINGS_RESPONSE_PACKET; 6 | 7 | public int FormId { get; set; } 8 | public string Data { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteVarInt(this.FormId); 13 | this.WriteString(this.Data); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetDifficultyPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Worlds; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class SetDifficultyPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.SET_DIFFICULTY_PACKET; 8 | 9 | public Difficulty Difficulty { get; set; } 10 | 11 | protected override void EncodePayload() 12 | { 13 | this.WriteUVarInt((uint) this.Difficulty); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.Difficulty = (Difficulty) this.ReadUVarInt(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Worlds/Formats/WorldSaveFormats/IWorldSaveFormat.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using MineNET.Worlds.Formats.ChunkFormats; 4 | using MineNET.Worlds.Formats.WorldDataFormats; 5 | 6 | namespace MineNET.Worlds.Formats.WorldSaveFormats 7 | { 8 | public interface IWorldSaveFormat 9 | { 10 | IWorldDataFormat WorldData { get; } 11 | IChunkFormat ChunkFormat { get; } 12 | World World { get; } 13 | 14 | void SetWorld(World world); 15 | Chunk GetChunk(int chunkX, int chunkZ); 16 | void SetChunk(Chunk chunk); 17 | void Save(Dictionary, Chunk> chunks); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/RakNet/EncapsulatedReceiveEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Network; 2 | using MineNET.Network.RakNetPackets; 3 | 4 | namespace MineNET.Events.NetworkEvents.RakNet 5 | { 6 | public class RakNetEncapsulatedReceiveEventArgs : NetworkEventArgs, ICancelable 7 | { 8 | public NetworkSession Session { get; } 9 | public EncapsulatedPacket Packet { get; set; } 10 | public bool IsCancel { get; set; } 11 | 12 | public RakNetEncapsulatedReceiveEventArgs(NetworkSession session, EncapsulatedPacket packet) 13 | { 14 | this.Session = session; 15 | this.Packet = packet; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/CameraPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class CameraPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.CAMERA_PACKET; 6 | 7 | public long CameraUniqueId { get; set; } 8 | public long PlayerUniqueId { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteEntityUniqueId(this.CameraUniqueId); 13 | this.WriteEntityUniqueId(this.PlayerUniqueId); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ItemFrameDropItemPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class ItemFrameDropItemPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.ITEM_FRAME_DROP_ITEM_PACKET; 8 | 9 | public BlockCoordinate3D Position { get; set; } 10 | 11 | protected override void EncodePayload() 12 | { 13 | this.WriteBlockVector3(this.Position); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.Position = this.ReadBlockVector3(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetDefaultGameTypePacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Worlds; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class SetDefaultGameTypePacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.SET_DEFAULT_GAME_TYPE_PACKET; 8 | 9 | public GameMode GameMode { get; set; } 10 | 11 | protected override void EncodePayload() 12 | { 13 | this.WriteUVarInt((uint) this.GameMode); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.GameMode = (GameMode) this.ReadUVarInt(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetPlayerGameTypePacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Worlds; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class SetPlayerGameTypePacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.SET_PLAYER_GAME_TYPE_PACKET; 8 | 9 | public GameMode GameMode { get; set; } 10 | 11 | protected override void EncodePayload() 12 | { 13 | this.WriteSVarInt((int) this.GameMode); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.GameMode = (GameMode) this.ReadSVarInt(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/UpdateBlockSyncedPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class UpdateBlockSyncedPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.UPDATE_BLOCK_SYNCED_PACKET; 6 | 7 | public ulong Unknown1 { get; set; } 8 | public ulong Unknown2 { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteUVarLong(this.Unknown1); 13 | this.WriteUVarLong(this.Unknown2); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/ClientConnectDataPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class ClientConnectDataPacket : RakNetPacket 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.ClientConnectDataPacket; 6 | 7 | public long ClientID { get; set; } 8 | public long SendPing { get; set; } 9 | public bool UseSecurity { get; set; } 10 | 11 | public override void Decode() 12 | { 13 | base.Decode(); 14 | 15 | this.ClientID = ReadLong(); 16 | this.SendPing = ReadLong(); 17 | this.UseSecurity = ReadBool(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/OfflinePing.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class OfflinePing : OfflineMessage 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.OfflinePing; 6 | 7 | public long Ping { get; set; } 8 | 9 | public override void Encode() 10 | { 11 | base.Encode(); 12 | 13 | this.WriteLong(this.Ping); 14 | this.WriteMagic(); 15 | } 16 | 17 | public override void Decode() 18 | { 19 | base.Decode(); 20 | 21 | this.Ping = this.ReadLong(); 22 | this.ReadMagic(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /MineNET.Test/Text/CultureTextContainerTests.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UnitTesting; 2 | using MineNET.Text; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Globalization; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace MineNET.Text.Tests 11 | { 12 | [TestClass()] 13 | public class CultureTextContainerTests 14 | { 15 | [TestMethod()] 16 | public void GetTextTest() 17 | { 18 | CultureTextContainer container = new CultureTextContainer("commands_effect_description"); 19 | Console.WriteLine(">" + container.GetText()); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetLocalPlayerAsInitializedPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class SetLocalPlayerAsInitializedPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SET_LOCAL_PLAYER_AS_INITIALIZED_PACKET; 6 | 7 | public long EntityRuntimeId { get; set; } 8 | 9 | protected override void EncodePayload() 10 | { 11 | this.WriteEntityRuntimeId(this.EntityRuntimeId); 12 | } 13 | 14 | protected override void DecodePayload() 15 | { 16 | this.EntityRuntimeId = this.ReadEntityRuntimeId(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/OfflinePong.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.RakNetPackets 2 | { 3 | public class OfflinePong : OfflineMessage 4 | { 5 | public override byte MessageID { get; } = RakNetProtocol.OfflinePong; 6 | 7 | public long Ping { get; set; } 8 | public long ServerID { get; set; } 9 | public string ServerName { get; set; } 10 | 11 | public override void Encode() 12 | { 13 | base.Encode(); 14 | 15 | this.WriteLong(this.Ping); 16 | this.WriteLong(this.ServerID); 17 | this.WriteMagic(); 18 | 19 | this.WriteFixedString(this.ServerName); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Permissions/PermissionAttachmentInfo.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Permissions 2 | { 3 | public class PermissionAttachmentInfo 4 | { 5 | public IPermissible Permissible { get; } 6 | public string Permission { get; } 7 | public PermissionAttachment Attachment { get; } 8 | public bool Value { get; } 9 | 10 | public PermissionAttachmentInfo(IPermissible permissible, string permission, PermissionAttachment attachment, bool value) 11 | { 12 | this.Permissible = permissible; 13 | this.Permission = permission; 14 | this.Attachment = attachment; 15 | this.Value = value; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockSandstone.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Blocks 2 | { 3 | public class BlockSandstone : BlockSolid 4 | { 5 | public BlockSandstone() : base(BlockIDs.SANDSTONE, "Sandstone") 6 | { 7 | 8 | } 9 | 10 | public override string Name 11 | { 12 | get 13 | { 14 | if (this.Damage == 1) 15 | { 16 | return "ChiseledSandstone"; 17 | } 18 | else if (this.Damage == 2) 19 | { 20 | return "SmoothSandstone"; 21 | } 22 | return "Sandstone"; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ChangeDimensionPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class ChangeDimensionPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.CHANGE_DIMENSION_PACKET; 8 | 9 | public int Dimension { get; set; } 10 | public Vector3 Position { get; set; } 11 | 12 | protected override void EncodePayload() 13 | { 14 | this.WriteVarInt(this.Dimension); 15 | this.WriteVector3(this.Position); 16 | } 17 | 18 | protected override void DecodePayload() 19 | { 20 | 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SpawnExperienceOrbPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class SpawnExperienceOrbPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.SPAWN_EXPERIENCE_ORB_PACKET; 8 | 9 | public Vector3 Position { get; set; } 10 | public int Amount { get; set; } 11 | 12 | protected override void EncodePayload() 13 | { 14 | this.WriteVector3(this.Position); 15 | this.WriteVarInt(this.Amount); 16 | } 17 | 18 | protected override void DecodePayload() 19 | { 20 | 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/TakeItemEntityPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class TakeItemEntityPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.TAKE_ITEM_ENTITY_PACKET; 6 | 7 | public long TargetRuntimeId { get; set; } 8 | public long EntityRuntimeId { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteEntityRuntimeId(this.TargetRuntimeId); 13 | this.WriteEntityRuntimeId(this.EntityRuntimeId); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerItemHeldEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | using MineNET.Items; 3 | 4 | namespace MineNET.Events.PlayerEvents 5 | { 6 | public class PlayerItemHeldEventArgs : PlayerEventArgs, ICancelable 7 | { 8 | public Item Item { get; } 9 | public int OldHotbar { get; } 10 | public int NewHotbar { get; set; } 11 | public bool IsCancel { get; set; } 12 | 13 | public PlayerItemHeldEventArgs(Player player, Item item, int oldHotbar, int newHotbar) : base(player) 14 | { 15 | this.Item = item; 16 | this.OldHotbar = oldHotbar; 17 | this.NewHotbar = newHotbar; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/Blocks/BlockSand.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Blocks 4 | { 5 | public class BlockSand : BlockFalling 6 | { 7 | public BlockSand() : base(BlockIDs.SAND, "sand") 8 | { 9 | this.IsSolid = true; 10 | 11 | this.Hardness = 0.5f; 12 | this.Resistance = 2.5f; 13 | this.ToolType = ItemToolType.SHOVEL; 14 | } 15 | 16 | public override string Name 17 | { 18 | get 19 | { 20 | if (this.Damage == 1) 21 | { 22 | return "RedSand"; 23 | } 24 | return "Sand"; 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /MineNET/Data/Skin.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Data 2 | { 3 | public class Skin 4 | { 5 | public string SkinId { get; set; } 6 | public byte[] SkinData { get; set; } 7 | public byte[] CapeData { get; set; } 8 | public string GeometryName { get; set; } 9 | public string GeometryData { get; set; } 10 | 11 | public Skin(string skinId, byte[] skinData, byte[] capeData, string geometryName, string geometryData) 12 | { 13 | this.SkinId = skinId; 14 | this.SkinData = skinData; 15 | this.CapeData = capeData; 16 | this.GeometryName = geometryName; 17 | this.GeometryData = geometryData; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MineNET/Events/BlockEvents/BlockBreakEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Blocks; 2 | using MineNET.Entities.Players; 3 | using MineNET.Items; 4 | 5 | namespace MineNET.Events.BlockEvents 6 | { 7 | public class BlockBreakEventArgs : BlockEventArgs, ICancelable 8 | { 9 | public Player Player { get; set; } 10 | public Item Item { get; set; } 11 | public Item[] Drops { get; set; } 12 | 13 | public bool IsCancel { get; set; } 14 | 15 | public BlockBreakEventArgs(Player player, Block block, Item item) : base(block) 16 | { 17 | this.Player = player; 18 | this.Item = item; 19 | this.Drops = block.GetDrops(item); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetEntityMotionPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class SetEntityMotionPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.SET_ENTITY_MOTION_PACKET; 8 | 9 | public long EntityRuntimeId { get; set; } 10 | public Vector3 Motion { get; set; } 11 | 12 | protected override void EncodePayload() 13 | { 14 | this.WriteEntityRuntimeId(this.EntityRuntimeId); 15 | this.WriteVector3(this.Motion); 16 | } 17 | 18 | protected override void DecodePayload() 19 | { 20 | 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SimpleEventPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class SimpleEventPacket : MinecraftPacket 4 | { 5 | public const ushort TYPE_ENABLE_COMMANDS = 1; 6 | public const ushort TYPE_DISABLE_COMMANDS = 2; 7 | 8 | public override byte PacketID { get; } = MinecraftProtocol.SIMPLE_EVENT_PACKET; 9 | 10 | public ushort EventType { get; set; } 11 | 12 | protected override void EncodePayload() 13 | { 14 | this.WriteLShort(this.EventType); 15 | } 16 | 17 | protected override void DecodePayload() 18 | { 19 | this.EventType = this.ReadLShort(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/OpenConnectingRequest2.cs: -------------------------------------------------------------------------------- 1 | using System.Net; 2 | 3 | namespace MineNET.Network.RakNetPackets 4 | { 5 | public class OpenConnectingRequest2 : OfflineMessage 6 | { 7 | public override byte MessageID { get; } = RakNetProtocol.OpenConnectingRequest2; 8 | 9 | public IPEndPoint EndPoint { get; set; } 10 | public short MTUSize { get; set; } 11 | public long ClientID { get; set; } 12 | 13 | public override void Decode() 14 | { 15 | base.Decode(); 16 | 17 | ReadMagic(); 18 | this.EndPoint = ReadIPEndPoint(); 19 | this.MTUSize = ReadShort(); 20 | this.ClientID = ReadLong(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/SetEntityDataPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Metadata; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class SetEntityDataPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.SET_ENTITY_DATA_PACKET; 8 | 9 | public long EntityRuntimeId { get; set; } 10 | public EntityMetadataManager EntityData { get; set; } 11 | 12 | protected override void EncodePayload() 13 | { 14 | this.WriteEntityRuntimeId(this.EntityRuntimeId); 15 | this.WriteEntityMetadata(this.EntityData); 16 | } 17 | 18 | protected override void DecodePayload() 19 | { 20 | 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ShowStoreOfferPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ShowStoreOfferPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SHOW_STORE_OFFER_PACKET; 6 | 7 | public string OfferId { get; set; } 8 | public bool ShowAll { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteString(this.OfferId); 13 | this.WriteBool(this.ShowAll); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.OfferId = this.ReadString(); 19 | this.ShowAll = this.ReadBool(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerInteractEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Blocks; 2 | using MineNET.Data; 3 | using MineNET.Entities.Players; 4 | using MineNET.Items; 5 | 6 | namespace MineNET.Events.PlayerEvents 7 | { 8 | public class PlayerInteractEventArgs : PlayerEventArgs, ICancelable 9 | { 10 | public Item Item { get; } 11 | public Block Target { get; } 12 | public BlockFace BlockFace { get; } 13 | 14 | public bool IsCancel { get; set; } 15 | 16 | public PlayerInteractEventArgs(Player player, Item item, Block target, BlockFace face) : base(player) 17 | { 18 | this.Item = item; 19 | this.Target = target; 20 | this.BlockFace = face; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/PlayerListPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Data; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class PlayerListPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.PLAYER_LIST_PACKET; 8 | 9 | public const byte TYPE_ADD = 0; 10 | public const byte TYPE_REMOVE = 1; 11 | 12 | public byte Type { get; set; } 13 | 14 | public PlayerListEntry[] Entries { get; set; } 15 | 16 | protected override void EncodePayload() 17 | { 18 | this.WritePlayerListEntries(this.Entries, this.Type); 19 | } 20 | 21 | protected override void DecodePayload() 22 | { 23 | 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/UpdateAttributesPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Attributes; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class UpdateAttributesPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.UPDATE_ATTRIBUTES_PACKET; 8 | 9 | public long EntityRuntimeId { get; set; } 10 | public EntityAttributeDictionary Attributes { get; set; } 11 | 12 | protected override void EncodePayload() 13 | { 14 | this.WriteEntityRuntimeId(this.EntityRuntimeId); 15 | this.WriteAttributes(this.Attributes); 16 | } 17 | 18 | protected override void DecodePayload() 19 | { 20 | 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/RakNetPackets/OpenConnectingReply2.cs: -------------------------------------------------------------------------------- 1 | using System.Net; 2 | 3 | namespace MineNET.Network.RakNetPackets 4 | { 5 | public class OpenConnectingReply2 : OfflineMessage 6 | { 7 | public override byte MessageID { get; } = RakNetProtocol.OpenConnectingReply2; 8 | 9 | public long ServerID { get; set; } 10 | public IPEndPoint EndPoint { get; set; } 11 | public short MTUSize { get; set; } 12 | 13 | public override void Encode() 14 | { 15 | base.Encode(); 16 | 17 | WriteMagic(); 18 | WriteLong(this.ServerID); 19 | WriteIPEndPoint(this.EndPoint); 20 | WriteShort(this.MTUSize); 21 | WriteByte(0); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/RakNet/BatchPacketSendEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | using MineNET.Network; 3 | using MineNET.Network.RakNetPackets; 4 | 5 | namespace MineNET.Events.NetworkEvents.RakNet 6 | { 7 | public class RakNetBatchPacketSendEventArgs : NetworkEventArgs 8 | { 9 | public NetworkSession Session { get; } 10 | public Player Player { get; } 11 | public BatchPacket Packet { get; set; } 12 | public bool IsCancel { get; set; } 13 | 14 | public RakNetBatchPacketSendEventArgs(NetworkSession session, Player player, BatchPacket packet) 15 | { 16 | this.Session = session; 17 | this.Player = player; 18 | this.Packet = packet; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/DisconnectPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class DisconnectPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.DISCONNECT_PACKET; 6 | 7 | public bool HideDisconnectionScreen { get; set; } = false; 8 | public string Message { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteBool(this.HideDisconnectionScreen); 13 | if (!this.HideDisconnectionScreen) 14 | { 15 | this.WriteString(this.Message); 16 | } 17 | } 18 | 19 | protected override void DecodePayload() 20 | { 21 | 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ScriptCustomEventPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ScriptCustomEventPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.SCRIPT_CUSTOM_EVENT_PACKET; 6 | 7 | public string EventName { get; set; } 8 | public string EventData { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteString(this.EventName); 13 | this.WriteString(this.EventData); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.EventName = this.ReadString(); 19 | this.EventData = this.ReadString(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Events/NetworkEvents/RakNet/BatchPacketReceiveEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Entities.Players; 2 | using MineNET.Network; 3 | using MineNET.Network.RakNetPackets; 4 | 5 | namespace MineNET.Events.NetworkEvents.RakNet 6 | { 7 | public class RakNetBatchPacketReceiveEventArgs : NetworkEventArgs 8 | { 9 | public NetworkSession Session { get; } 10 | public Player Player { get; } 11 | public BatchPacket Packet { get; set; } 12 | public bool IsCancel { get; set; } 13 | 14 | public RakNetBatchPacketReceiveEventArgs(NetworkSession session, Player player, BatchPacket packet) 15 | { 16 | this.Session = session; 17 | this.Player = player; 18 | this.Packet = packet; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/EntityFallPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class EntityFallPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.ENTITY_FALL_PACKET; 6 | 7 | public long EntityRuntimeId { get; set; } 8 | public float FallDistance { get; set; } 9 | public bool Unknown { get; set; } 10 | 11 | protected override void EncodePayload() 12 | { 13 | 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.EntityRuntimeId = this.ReadEntityRuntimeId(); 19 | this.FallDistance = this.ReadLFloat(); 20 | this.Unknown = this.ReadBool(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/NetworkStackLatencyPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class NetworkStackLatencyPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.NETWORK_STACK_LATENCY_PACKET; 6 | 7 | public ulong Timestamp { get; set; } 8 | public bool UnknownBool { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteLLong(this.Timestamp); 13 | this.WriteBool(this.UnknownBool); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.Timestamp = this.ReadLLong(); 19 | this.UnknownBool = this.ReadBool(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Events/PlayerEvents/PlayerBlockPickRequestEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Blocks; 2 | using MineNET.Entities.Players; 3 | using MineNET.Items; 4 | 5 | namespace MineNET.Events.PlayerEvents 6 | { 7 | public class PlayerBlockPickRequestEventArgs : PlayerEventArgs, ICancelable 8 | { 9 | public Block Block { get; } 10 | public Item Item { get; set; } 11 | public bool RequestBlockData { get; } 12 | 13 | public bool IsCancel { get; set; } 14 | 15 | public PlayerBlockPickRequestEventArgs(Player player, Block block, Item item, bool requestBlockData) : base(player) 16 | { 17 | this.Block = block; 18 | this.Item = item; 19 | this.RequestBlockData = requestBlockData; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/InventorySlotPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class InventorySlotPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.INVENTORY_SLOT_PACKET; 8 | 9 | public uint InventoryId { get; set; } 10 | 11 | public uint Slot { get; set; } 12 | 13 | public Item Item { get; set; } 14 | 15 | protected override void EncodePayload() 16 | { 17 | this.WriteUVarInt(this.InventoryId); 18 | this.WriteUVarInt(this.Slot); 19 | this.WriteItem(this.Item); 20 | } 21 | 22 | protected override void DecodePayload() 23 | { 24 | 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ResourcePackChunkRequestPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ResourcePackChunkRequestPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.RESOURCE_PACK_CHUNK_REQUEST_PACKET; 6 | 7 | public string PackId { get; set; } 8 | public uint ChunkIndex { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteString(this.PackId); 13 | this.WriteLInt(this.ChunkIndex); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.PackId = this.ReadString(); 19 | this.ChunkIndex = this.ReadLInt(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/ShowCreditsPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class ShowCreditsPacket : MinecraftPacket 4 | { 5 | public const int STATUS_START_CREDITS = 0; 6 | public const int STATUS_END_CREDITS = 1; 7 | 8 | public override byte PacketID { get; } = MinecraftProtocol.SHOW_CREDITS_PACKET; 9 | 10 | public long EntityRuntimeId { get; set; } 11 | public int Status { get; set; } 12 | 13 | protected override void EncodePayload() 14 | { 15 | this.WriteEntityRuntimeId(this.EntityRuntimeId); 16 | this.WriteVarInt(this.Status); 17 | } 18 | 19 | protected override void DecodePayload() 20 | { 21 | 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /MineNET/Inventories/Transactions/Data/ReleaseItemData.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Items; 2 | using MineNET.Network.MinecraftPackets; 3 | using MineNET.Values; 4 | 5 | namespace MineNET.Inventories.Transactions.Data 6 | { 7 | public class ReleaseItemData : TransactionData 8 | { 9 | public int ActionType { get; set; } 10 | public int HotbarSlot { get; set; } 11 | public Item ItemMainHand { get; set; } 12 | public Vector3 HeadRot { get; set; } 13 | 14 | public ReleaseItemData(InventoryTransactionPacket pk) 15 | { 16 | this.ActionType = (int) pk.ReadUVarInt(); 17 | this.HotbarSlot = pk.ReadSVarInt(); 18 | this.ItemMainHand = pk.ReadItem(); 19 | this.HeadRot = pk.ReadVector3(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Permissions/IPermissible.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using MineNET.Plugins; 3 | 4 | namespace MineNET.Permissions 5 | { 6 | public interface IPermissible : IServerOperator 7 | { 8 | bool IsPermissionSet(string name); 9 | 10 | bool IsPermissionSet(Permission perm); 11 | 12 | bool HasPermission(string name); 13 | 14 | bool HasPermission(Permission perm); 15 | 16 | PermissionAttachment AddAttachment(IPlugin plugin, string name, bool value); 17 | 18 | PermissionAttachment AddAttachment(IPlugin plugin); 19 | 20 | void RemoveAttachment(PermissionAttachment attachment); 21 | 22 | void RecalculatePermissions(); 23 | 24 | List GetEffectivePermissions(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /MineNET.Test/Values/AxisAlignedBBTest.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UnitTesting; 2 | using MineNET.Values; 3 | using System; 4 | 5 | namespace MineNET.Test.Values 6 | { 7 | [TestClass] 8 | public class AxisAlignedBBTest 9 | { 10 | [TestMethod] 11 | public void TestMethod() 12 | { 13 | AxisAlignedBB box = new AxisAlignedBB(Vector3.Zero, Vector3.One); 14 | Console.WriteLine(box.Center); 15 | 16 | Assert.IsFalse(box.ContainsVector(new Vector3(1f, 2f, 1f))); 17 | Assert.IsTrue(box.ContainsVector(new Vector3(1f, 0.5f, 1f))); 18 | Assert.IsTrue(box.ContainsVector(new Vector3(1f, 1f, 1f))); 19 | Assert.IsFalse(box.ContainsVector(new Vector3(1f, 1.1f, 1f))); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Init/BlockEntityInit.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using MineNET.BlockEntities; 3 | 4 | namespace MineNET.Init 5 | { 6 | public sealed class BlockEntityInit : IDisposable 7 | { 8 | public static BlockEntityInit In { get; private set; } 9 | 10 | public BlockEntityInit() 11 | { 12 | BlockEntityInit.In = this; 13 | this.Init(); 14 | } 15 | 16 | public void Init() 17 | { 18 | this.Set("chest", typeof(BlockEntityChest)); 19 | } 20 | 21 | public void Set(string name, Type type) 22 | { 23 | MineNET_Registries.BlockEntity[name] = type; 24 | } 25 | 26 | public void Dispose() 27 | { 28 | BlockEntityInit.In = null; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/EntityPickRequestPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class EntityPickRequestPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.ENTITY_PICK_REQUEST_PACKET; 6 | 7 | public long EntityUniqueId { get; set; } 8 | public byte HotbarSlot { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteLLong((ulong) this.EntityUniqueId); 13 | this.WriteByte(this.HotbarSlot); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.EntityUniqueId = (long) this.ReadLLong(); 19 | this.HotbarSlot = this.ReadByte(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/EntityPickrequestPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class EntityPickRequestPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.ENTITY_PICK_REQUEST_PACKET; 6 | 7 | public long EntityUniqueId { get; set; } 8 | public byte HotbarSlot { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteLLong((ulong) this.EntityUniqueId); 13 | this.WriteByte(this.HotbarSlot); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.EntityUniqueId = (long) this.ReadLLong(); 19 | this.HotbarSlot = this.ReadByte(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/BlockEntityDataPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class BlockEntityDataPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.BLOCK_ENTITY_DATA_PACKET; 8 | 9 | public BlockCoordinate3D Position { get; set; } 10 | public byte[] Namedtag { get; set; } 11 | 12 | protected override void EncodePayload() 13 | { 14 | this.WriteBlockVector3(this.Position); 15 | this.WriteBytes(this.Namedtag); 16 | } 17 | 18 | protected override void DecodePayload() 19 | { 20 | this.Position = this.ReadBlockVector3(); 21 | this.Namedtag = this.ReadBytes(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/MapCreateLockedCopyPacket.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Network.MinecraftPackets 2 | { 3 | public class MapCreateLockedCopyPacket : MinecraftPacket 4 | { 5 | public override byte PacketID { get; } = MinecraftProtocol.MAP_CREATE_LOCKED_COPY_PACKET; 6 | 7 | public long OriginalMapID { get; set; } 8 | public long NewMapID { get; set; } 9 | 10 | protected override void EncodePayload() 11 | { 12 | this.WriteEntityUniqueId(this.OriginalMapID); 13 | this.WriteEntityUniqueId(this.NewMapID); 14 | } 15 | 16 | protected override void DecodePayload() 17 | { 18 | this.OriginalMapID = this.ReadEntityUniqueId(); 19 | this.NewMapID = this.ReadEntityUniqueId(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /MineNET/Events/BlockEvents/BlockPlaceEventArgs.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Blocks; 2 | using MineNET.Entities.Players; 3 | using MineNET.Items; 4 | 5 | namespace MineNET.Events.BlockEvents 6 | { 7 | public class BlockPlaceEventArgs : BlockEventArgs, ICancelable 8 | { 9 | public Player Player { get; set; } 10 | public Block Replace { get; set; } 11 | public Block Clicked { get; set; } 12 | public Item Item { get; set; } 13 | 14 | public bool IsCancel { get; set; } 15 | 16 | public BlockPlaceEventArgs(Player player, Block place, Block replace, Block clicked, Item item) : base(place) 17 | { 18 | this.Player = player; 19 | this.Replace = replace; 20 | this.Clicked = clicked; 21 | this.Item = item; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/CommandRequestPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Data; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class CommandRequestPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.COMMAND_REQUEST_PACKET; 8 | 9 | public string Command { get; set; } 10 | public CommandOriginData OriginData { get; set; } 11 | public bool IsInternal { get; set; } 12 | 13 | protected override void EncodePayload() 14 | { 15 | 16 | } 17 | 18 | protected override void DecodePayload() 19 | { 20 | this.Command = this.ReadString(); 21 | this.OriginData = this.ReadCommandOriginData(); 22 | this.IsInternal = this.ReadBool(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/BlockPickRequestPacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class BlockPickRequestPacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.BLOCK_PICK_REQUEST_PACKET; 8 | 9 | public BlockCoordinate3D Position { get; set; } 10 | public bool AddUserData { get; set; } 11 | public byte HotbarSlot { get; set; } 12 | 13 | protected override void EncodePayload() 14 | { 15 | 16 | } 17 | 18 | protected override void DecodePayload() 19 | { 20 | this.Position = this.ReadSBlockVector3(); 21 | this.AddUserData = this.ReadBool(); 22 | this.HotbarSlot = this.ReadByte(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /MineNET/Inventories/Data/InventoryType.cs: -------------------------------------------------------------------------------- 1 | namespace MineNET.Inventories.Data 2 | { 3 | public enum InventoryType 4 | { 5 | CONTAINER = 0, 6 | WORKBENCH = 1, 7 | FURNACE = 2, 8 | ENCHANTMENT = 3, 9 | BREWING_STAND = 4, 10 | DISPENSER = 6, 11 | DROPPER = 7, 12 | HOPPER = 8, 13 | CAULDRON = 9, 14 | MINECART_CHEST = 10, 15 | MINECART_HOPPER = 11, 16 | HORSE = 12, 17 | BEACON = 13, 18 | STRUCTURE_EDITOR = 14, 19 | TRADING = 15, 20 | COMMAND_BLOCK = 16, 21 | JUKEBOX = 17 22 | } 23 | 24 | public static class TinventoryTypeExtensions 25 | { 26 | public static byte GetIndex(this InventoryType type) 27 | { 28 | return (byte) type; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /MineNET/Network/MinecraftPackets/NetworkChunkPublisherUpdatePacket.cs: -------------------------------------------------------------------------------- 1 | using MineNET.Values; 2 | 3 | namespace MineNET.Network.MinecraftPackets 4 | { 5 | public class NetworkChunkPublisherUpdatePacket : MinecraftPacket 6 | { 7 | public override byte PacketID { get; } = MinecraftProtocol.NETWORK_CHUNK_PUBLISHER_UPDATE_PACKET; 8 | 9 | public BlockCoordinate3D Position { get; set; } 10 | public uint Radius { get; set; } 11 | 12 | protected override void EncodePayload() 13 | { 14 | this.WriteSBlockVector3(this.Position); 15 | this.WriteUVarInt(this.Radius); 16 | } 17 | 18 | protected override void DecodePayload() 19 | { 20 | this.Position = this.ReadSBlockVector3(); 21 | this.Radius = this.ReadUVarInt(); 22 | } 23 | } 24 | } 25 | --------------------------------------------------------------------------------