Ejemplo n.º 1
0
        static ItemFactory()
        {
            NameToId = BuildNameToId();

            var assembly = Assembly.GetAssembly(typeof(Item));

            using (var stream = assembly.GetManifestResourceStream(typeof(Item).Namespace + ".itemstates.json"))
                using (var reader = new StreamReader(stream))
                {
                    Itemstates = Itemstates.FromJson(reader.ReadToEnd());
                }
        }
Ejemplo n.º 2
0
        /// <inheritdoc />
        public override void Reset()
        {
            entityIdSelf    = default(long);
            runtimeEntityId = default(long);
            playerGamemode  = default(int);
            spawn           = default(Vector3);
            rotation        = default(Vector2);
            seed            = default(int);
            biomeType       = default(short);
            biomeName       = default(string);
            dimension       = default(int);
            generator       = default(int);
            gamemode        = default(int);
            difficulty      = default(int);
            x = default(int);
            y = default(int);
            z = default(int);
            hasAchievementsDisabled = default(bool);
            time     = default(int);
            eduOffer = default(int);
            hasEduFeaturesEnabled             = default(bool);
            eduProductUuid                    = default(string);
            rainLevel                         = default(float);
            lightningLevel                    = default(float);
            hasConfirmedPlatformLockedContent = default(bool);
            isMultiplayer                     = default(bool);
            broadcastToLan                    = default(bool);
            xboxLiveBroadcastMode             = default(int);
            platformBroadcastMode             = default(int);
            enableCommands                    = default(bool);
            isTexturepacksRequired            = default(bool);
            gamerules                         = default(GameRules);
            experiments                       = default(Experiments);
            bonusChest                        = default(bool);
            mapEnabled                        = default(bool);
            permissionLevel                   = default(int);
            serverChunkTickRange              = default(int);
            hasLockedBehaviorPack             = default(bool);
            hasLockedResourcePack             = default(bool);
            isFromLockedWorldTemplate         = default(bool);
            useMsaGamertagsOnly               = default(bool);
            isFromWorldTemplate               = default(bool);
            isWorldTemplateOptionLocked       = default(bool);
            onlySpawnV1Villagers              = default(bool);
            gameVersion                       = default(string);
            limitedWorldWidth                 = default(int);
            limitedWorldLength                = default(int);
            isNewNether                       = default(bool);
            experimentalGameplayOverride      = default(bool);
            levelId   = default(string);
            worldName = default(string);
            premiumWorldTemplateId = default(string);
            isTrial      = default(bool);
            movementType = default(int);
            movementRewindHistorySize = default(int);
            enableNewBlockBreakSystem = default(bool);
            currentTick              = default(long);
            enchantmentSeed          = default(int);
            blockPalette             = default(BlockPalette);
            itemstates               = default(Itemstates);
            multiplayerCorrelationId = default(string);
            enableNewInventorySystem = default(bool);
            serverVersion            = default(string);

            base.Reset();
        }
Ejemplo n.º 3
0
        public ItemTranslator(Itemstates itemstates)
        {
            var internalNameToNetworkName = new Dictionary <string, string>(StringComparer.Ordinal);
            var legacyTranslations        = ResourceUtil.ReadResource <Dictionary <string, short> >("item_id_map.json", typeof(Item), "Data");
            var r16Mapping = ResourceUtil.ReadResource <R16ToCurrentMap>("r16_to_current_item_map.json", typeof(Item), "Data");

            var simpleMappings = new Dictionary <string, short>();

            foreach (var entry in r16Mapping.Simple)
            {
                var oldId = entry.Key;
                var newId = entry.Value;

                if (simpleMappings.ContainsKey(newId))
                {
                    Log.Warn($"Duplicate mapping for StringID. NewId={newId} OldId={oldId}");

                    continue;
                }


                simpleMappings[newId]            = legacyTranslations[oldId];
                internalNameToNetworkName[oldId] = newId;
            }

            foreach (var entry in legacyTranslations)
            {
                var stringId  = entry.Key;
                var integerId = entry.Value;

                if (simpleMappings.ContainsKey(stringId))
                {
                    continue;
                }

                simpleMappings[stringId] = integerId;
            }

            var complexMapping = new Dictionary <string, TranslatedItem>();

            foreach (var entry in r16Mapping.Complex)
            {
                string oldId           = entry.Key;
                var    legacyIntegerId = legacyTranslations[oldId];
                foreach (var mappingEntry in entry.Value)
                {
                    var newId = mappingEntry.Value;
                    if (short.TryParse(mappingEntry.Key, out var meta))
                    {
                        if (!complexMapping.TryAdd(newId, new TranslatedItem(legacyIntegerId, meta)))
                        {
                            Log.Warn($"Duplicate complex... OldId={oldId} NewId={newId} (IntegerID={legacyIntegerId} Meta={meta})");
                        }
                    }
                }
            }

            var internalToNetwork         = new Dictionary <int, ComplexMappingEntry>();
            var simpleInternalToNetwork   = new Dictionary <int, int>();
            var networkIdToInternal       = new Dictionary <int, TranslatedItem>();
            var simpleNetworkIdToInternal = new Dictionary <int, int>();

            foreach (var state in itemstates)
            {
                var stringId = state.Name;
                var netId    = state.Id;

                if (complexMapping.TryGetValue(stringId, out var translatedItem))
                {
                    var internalId   = translatedItem.Id;
                    var internalMeta = translatedItem.Meta;

                    ComplexMappingEntry mappingEntry;

                    if (!internalToNetwork.TryGetValue(internalId, out mappingEntry))
                    {
                        mappingEntry = new ComplexMappingEntry();
                        internalToNetwork.Add(internalId, mappingEntry);
                    }

                    mappingEntry.Add(internalMeta, netId);

                    internalToNetwork[internalId] = mappingEntry;
                    networkIdToInternal.Add(netId, translatedItem);
                }
                else if (simpleMappings.TryGetValue(stringId, out var legacyId))
                {
                    simpleNetworkIdToInternal.Add(netId, legacyId);
                    simpleInternalToNetwork.Add(legacyId, netId);
                }
            }

            _internalIdToNetwork       = internalToNetwork;
            _simpleInternalIdToNetwork = simpleInternalToNetwork;
            _networkIdToInternal       = networkIdToInternal;
            _simpleNetworkIdToInternal = simpleNetworkIdToInternal;
            _internalNameToNetworkName = internalNameToNetworkName;
        }
Ejemplo n.º 4
0
        partial void AfterDecode()
        {
            entityIdSelf    = ReadSignedVarLong();
            runtimeEntityId = ReadUnsignedVarLong();
            playerGamemode  = ReadSignedVarInt();
            spawn           = ReadVector3();
            rotation        = ReadVector2();

            //Level Settings
            seed       = ReadSignedVarInt();
            biomeType  = ReadShort();
            biomeName  = ReadString();
            dimension  = ReadSignedVarInt();
            generator  = ReadSignedVarInt();
            gamemode   = ReadSignedVarInt();
            difficulty = ReadSignedVarInt();

            x = ReadSignedVarInt();
            y = ReadVarInt();
            z = ReadSignedVarInt();

            hasAchievementsDisabled = ReadBool();
            time     = ReadSignedVarInt();
            eduOffer = ReadSignedVarInt();
            hasEduFeaturesEnabled             = ReadBool();
            eduProductUuid                    = ReadString();
            rainLevel                         = ReadFloat();
            lightningLevel                    = ReadFloat();
            hasConfirmedPlatformLockedContent = ReadBool();
            isMultiplayer                     = ReadBool();
            broadcastToLan                    = ReadBool();
            xboxLiveBroadcastMode             = ReadVarInt();
            platformBroadcastMode             = ReadVarInt();
            enableCommands                    = ReadBool();
            isTexturepacksRequired            = ReadBool();
            gamerules                         = ReadGameRules();
            experiments                       = ReadExperiments();
            ReadBool();
            bonusChest                  = ReadBool();
            mapEnabled                  = ReadBool();
            permissionLevel             = ReadSignedVarInt();
            serverChunkTickRange        = ReadInt();
            hasLockedBehaviorPack       = ReadBool();
            hasLockedResourcePack       = ReadBool();
            isFromLockedWorldTemplate   = ReadBool();
            useMsaGamertagsOnly         = ReadBool();
            isFromWorldTemplate         = ReadBool();
            isWorldTemplateOptionLocked = ReadBool();
            onlySpawnV1Villagers        = ReadBool();
            gameVersion                 = ReadString();
            limitedWorldWidth           = ReadInt();
            limitedWorldLength          = ReadInt();
            isNewNether                 = ReadBool();
            if (ReadBool())
            {
                experimentalGameplayOverride = ReadBool();
            }
            else
            {
                experimentalGameplayOverride = false;
            }
            //End of level settings.

            levelId   = ReadString();
            worldName = ReadString();
            premiumWorldTemplateId = ReadString();
            isTrial = ReadBool();

            //Player movement settings
            movementType = ReadSignedVarInt();
            movementRewindHistorySize = ReadSignedVarInt();
            enableNewBlockBreakSystem = ReadBool();

            currentTick     = ReadLong();
            enchantmentSeed = ReadSignedVarInt();

            try
            {
                blockPalette = ReadBlockPalette();
            }
            catch (Exception ex)
            {
                Log.Warn($"Failed to read complete blockpallete", ex);
                return;
            }

            itemstates = ReadItemstates();

            multiplayerCorrelationId = ReadString();
            enableNewInventorySystem = ReadBool();
            serverVersion            = ReadString();
        }