diff --git a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp index 8818b541..b6f8f071 100644 --- a/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp +++ b/Minecraft.Client/Common/UI/IUIScene_CreativeMenu.cpp @@ -210,40 +210,6 @@ void IUIScene_CreativeMenu::staticCtor() ITEM_AUX(Tile::woolCarpet_Id,13) // Green ITEM_AUX(Tile::woolCarpet_Id,12) // Brown - ITEM_AUX(Tile::stained_glass_Id,14) // Red - ITEM_AUX(Tile::stained_glass_Id,1) // Orange - ITEM_AUX(Tile::stained_glass_Id,4) // Yellow - ITEM_AUX(Tile::stained_glass_Id,5) // Lime - ITEM_AUX(Tile::stained_glass_Id,3) // Light Blue - ITEM_AUX(Tile::stained_glass_Id,9) // Cyan - ITEM_AUX(Tile::stained_glass_Id,11) // Blue - ITEM_AUX(Tile::stained_glass_Id,10) // Purple - ITEM_AUX(Tile::stained_glass_Id,2) // Magenta - ITEM_AUX(Tile::stained_glass_Id,6) // Pink - ITEM_AUX(Tile::stained_glass_Id,0) // White - ITEM_AUX(Tile::stained_glass_Id,8) // Light Gray - ITEM_AUX(Tile::stained_glass_Id,7) // Gray - ITEM_AUX(Tile::stained_glass_Id,15) // Black - ITEM_AUX(Tile::stained_glass_Id,13) // Green - ITEM_AUX(Tile::stained_glass_Id,12) // Brown - - ITEM_AUX(Tile::stained_glass_pane_Id,14) // Red - ITEM_AUX(Tile::stained_glass_pane_Id,1) // Orange - ITEM_AUX(Tile::stained_glass_pane_Id,4) // Yellow - ITEM_AUX(Tile::stained_glass_pane_Id,5) // Lime - ITEM_AUX(Tile::stained_glass_pane_Id,3) // Light Blue - ITEM_AUX(Tile::stained_glass_pane_Id,9) // Cyan - ITEM_AUX(Tile::stained_glass_pane_Id,11) // Blue - ITEM_AUX(Tile::stained_glass_pane_Id,10) // Purple - ITEM_AUX(Tile::stained_glass_pane_Id,2) // Magenta - ITEM_AUX(Tile::stained_glass_pane_Id,6) // Pink - ITEM_AUX(Tile::stained_glass_pane_Id,0) // White - ITEM_AUX(Tile::stained_glass_pane_Id,8) // Light Gray - ITEM_AUX(Tile::stained_glass_pane_Id,7) // Gray - ITEM_AUX(Tile::stained_glass_pane_Id,15) // Black - ITEM_AUX(Tile::stained_glass_pane_Id,13) // Green - ITEM_AUX(Tile::stained_glass_pane_Id,12) // Brown - #ifndef _CONTENT_PACKAGE DEF(eCreativeInventory_ArtToolsDecorations) if(app.DebugSettingsOn()) @@ -492,16 +458,6 @@ void IUIScene_CreativeMenu::staticCtor() list->push_back(Item::enchantedBook->createForEnchantment(new EnchantmentInstance(enchantment, enchantment->getMaxLevel()))); } -#ifndef _CONTENT_PACKAGE - if(app.DebugSettingsOn()) - { - shared_ptr debugSword = std::make_shared(Item::sword_diamond_Id, 1, 0); - debugSword->enchant( Enchantment::damageBonus, 50 ); - debugSword->setHoverName(L"Sword of Debug"); - list->push_back(debugSword); - } -#endif - // Materials DEF(eCreativeInventory_Materials) ITEM(Item::coal_Id) diff --git a/Minecraft.Client/TileRenderer.cpp b/Minecraft.Client/TileRenderer.cpp index 7f630c96..31cf2ac3 100644 --- a/Minecraft.Client/TileRenderer.cpp +++ b/Minecraft.Client/TileRenderer.cpp @@ -3241,7 +3241,6 @@ bool TileRenderer::tesselateThinPaneInWorld(Tile *tt, int x, int y, int z) Icon *tex; Icon *edgeTex; - bool stained = dynamic_cast(tt) != nullptr; if (hasFixedTexture()) { tex = fixedTexture; @@ -3251,7 +3250,7 @@ bool TileRenderer::tesselateThinPaneInWorld(Tile *tt, int x, int y, int z) { int data = level->getData(x, y, z); tex = getTexture(tt, 0, data); - edgeTex = (stained) ? static_cast(tt)->getEdgeTexture(data) : static_cast(tt)->getEdgeTexture(); + edgeTex = static_cast(tt)->getEdgeTexture(); } double u0 = tex->getU0(); @@ -3277,10 +3276,10 @@ bool TileRenderer::tesselateThinPaneInWorld(Tile *tt, int x, int y, int z) double iz0 = z + .5 - 1.0 / 16.0; double iz1 = z + .5 + 1.0 / 16.0; - bool n = (stained) ? static_cast(tt)->attachsTo(level->getTile(x, y, z - 1)) : static_cast(tt)->attachsTo(level->getTile(x, y, z - 1)); - bool s = (stained) ? static_cast(tt)->attachsTo(level->getTile(x, y, z + 1)) : static_cast(tt)->attachsTo(level->getTile(x, y, z + 1)); - bool w = (stained) ? static_cast(tt)->attachsTo(level->getTile(x - 1, y, z)) : static_cast(tt)->attachsTo(level->getTile(x - 1, y, z)); - bool e = (stained) ? static_cast(tt)->attachsTo(level->getTile(x + 1, y, z)) : static_cast(tt)->attachsTo(level->getTile(x + 1, y, z)); + bool n = static_cast(tt)->attachsTo(level->getTile(x, y, z - 1)); + bool s = static_cast(tt)->attachsTo(level->getTile(x, y, z + 1)); + bool w = static_cast(tt)->attachsTo(level->getTile(x - 1, y, z)); + bool e = static_cast(tt)->attachsTo(level->getTile(x + 1, y, z)); double noZFightingOffset = 0.001; double yt = 1.0 - noZFightingOffset; diff --git a/Minecraft.World/StainedGlassBlock.cpp b/Minecraft.World/StainedGlassBlock.cpp deleted file mode 100644 index 3fae3d46..00000000 --- a/Minecraft.World/StainedGlassBlock.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include "stdafx.h" -#include "net.minecraft.world.item.h" -#include "net.minecraft.world.h" -#include "StainedGlassBlock.h" - -Icon *StainedGlassBlock::ICONS[StainedGlassBlock::ICONS_LENGTH]; - -StainedGlassBlock::StainedGlassBlock(int id, Material *material) : HalfTransparentTile(id, L"glass", material, false) -{ -} - -Icon *StainedGlassBlock::getTexture(int face, int data) -{ - return ICONS[data % ICONS_LENGTH]; -} - -int StainedGlassBlock::getSpawnResourcesAuxValue(int data) -{ - return data; -} - -int StainedGlassBlock::getItemAuxValueForBlockData(int data) -{ - return (~data & 0xf); -} - - -int StainedGlassBlock::getRenderLayer() -{ - return 1; -} - -void StainedGlassBlock::registerIcons(IconRegister *iconRegister) -{ - for (int i = 0; i < ICONS_LENGTH; i++) - { - ICONS[i] = iconRegister->registerIcon(getIconName() + L"_" + DyePowderItem::COLOR_TEXTURES[getItemAuxValueForBlockData(i)]); - } -} - -int StainedGlassBlock::getResourceCount(Random *random) -{ - return 0; -} - -bool StainedGlassBlock::isSilkTouchable() -{ - return true; -} - -bool StainedGlassBlock::isCubeShaped() -{ - return false; -} diff --git a/Minecraft.World/StainedGlassBlock.h b/Minecraft.World/StainedGlassBlock.h deleted file mode 100644 index 4b90d1dc..00000000 --- a/Minecraft.World/StainedGlassBlock.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "HalfTransparentTile.h" - -class StainedGlassBlock : public HalfTransparentTile -{ - friend class ChunkRebuildData; -private: - static const int ICONS_LENGTH = 16; - static Icon *ICONS[ICONS_LENGTH]; - -public: - StainedGlassBlock(int id, Material *material); - - Icon *getTexture(int face, int data); - int getSpawnResourcesAuxValue(int data); - static int getItemAuxValueForBlockData(int data); - int getRenderLayer(); - void registerIcons(IconRegister *iconRegister); - int getResourceCount(Random *random); - -protected: - bool isSilkTouchable(); - -public: - bool isCubeShaped(); -}; \ No newline at end of file diff --git a/Minecraft.World/StainedGlassPaneBlock.cpp b/Minecraft.World/StainedGlassPaneBlock.cpp deleted file mode 100644 index 086d8ae5..00000000 --- a/Minecraft.World/StainedGlassPaneBlock.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include "stdafx.h" -#include "net.minecraft.world.h" -#include "net.minecraft.world.item.h" -#include "StainedGlassPaneBlock.h" - -Icon *StainedGlassPaneBlock::ICONS[StainedGlassPaneBlock::ICONS_COUNT]; -Icon *StainedGlassPaneBlock::EDGE_ICONS[StainedGlassPaneBlock::ICONS_COUNT]; - -StainedGlassPaneBlock::StainedGlassPaneBlock(int id) : ThinFenceTile(id, L"glass", L"glass_pane_top", Material::glass, false) -{ -} - -Icon *StainedGlassPaneBlock::getIconTexture(int face, int data) -{ - return ICONS[data % ICONS_COUNT]; -} - -Icon *StainedGlassPaneBlock::getEdgeTexture(int data) -{ - return EDGE_ICONS[~data & 0xF]; -} - -Icon *StainedGlassPaneBlock::getTexture(int face, int data) -{ - return getIconTexture(face, ~data & 0xf); -} - -int StainedGlassPaneBlock::getSpawnResourcesAuxValue(int data) -{ - return data; -} - -int StainedGlassPaneBlock::getItemAuxValueForBlockData(int data) -{ - return (data & 0xf); -} - - -int StainedGlassPaneBlock::getRenderLayer() -{ - return 1; -} - -void StainedGlassPaneBlock::registerIcons(IconRegister *iconRegister) -{ - ThinFenceTile::registerIcons(iconRegister); - for (int i = 0; i < ICONS_COUNT; i++) - { - ICONS[i] = iconRegister->registerIcon(getIconName() + L"_" + DyePowderItem::COLOR_TEXTURES[getItemAuxValueForBlockData(i)]); - EDGE_ICONS[i] = iconRegister->registerIcon(getIconName() + L"_pane_top_" + DyePowderItem::COLOR_TEXTURES[getItemAuxValueForBlockData(i)]); - } -} \ No newline at end of file diff --git a/Minecraft.World/StainedGlassPaneBlock.h b/Minecraft.World/StainedGlassPaneBlock.h deleted file mode 100644 index fa943f55..00000000 --- a/Minecraft.World/StainedGlassPaneBlock.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "ThinFenceTile.h" - -class StainedGlassPaneBlock : public ThinFenceTile -{ - friend class ChunkRebuildData; -private: - static const int ICONS_COUNT = 16; - static Icon *ICONS[ICONS_COUNT]; - static Icon *EDGE_ICONS[ICONS_COUNT]; - -public: - StainedGlassPaneBlock(int id); - - Icon *getIconTexture(int face, int data); - Icon *getEdgeTexture(int data); - Icon *getTexture(int face, int data); - int getSpawnResourcesAuxValue(int data); - static int getItemAuxValueForBlockData(int data); - int getRenderLayer(); - void registerIcons(IconRegister *iconRegister); -}; \ No newline at end of file diff --git a/Minecraft.World/StructureRecipies.cpp b/Minecraft.World/StructureRecipies.cpp index 652a730c..1706a7ce 100644 --- a/Minecraft.World/StructureRecipies.cpp +++ b/Minecraft.World/StructureRecipies.cpp @@ -115,28 +115,6 @@ void StructureRecipies::addRecipes(Recipes *r) L'#', Tile::glass, L'D'); - - - - -// Stained Glass block + pane per color -for (int i = 0; i < 16; i++) -{ - r->addShapedRecipy(new ItemInstance(Tile::stained_glass, 8, ColoredTile::getItemAuxValueForTileData(i)), - L"sssczczg", - L"###", - L"#X#", - L"###", - L'#', new ItemInstance(Tile::glass), - L'X', new ItemInstance(Item::dye_powder, 1, i), - L'D'); - r->addShapedRecipy(new ItemInstance(Tile::stained_glass_pane, 16, ColoredTile::getItemAuxValueForTileData(i)), - L"ssczg", - L"###", - L"###", - L'#', new ItemInstance(Tile::stained_glass, 1, ColoredTile::getItemAuxValueForTileData(i)), - L'D'); -} r->addShapedRecipy(new ItemInstance(Tile::netherBrick, 1), // L"sscig", diff --git a/Minecraft.World/Tile.cpp b/Minecraft.World/Tile.cpp index e80ac108..f0ffe491 100644 --- a/Minecraft.World/Tile.cpp +++ b/Minecraft.World/Tile.cpp @@ -138,7 +138,6 @@ Tile *Tile::litPumpkin = nullptr; Tile *Tile::cake = nullptr; RepeaterTile *Tile::diode_off = nullptr; RepeaterTile *Tile::diode_on = nullptr; -Tile *Tile::stained_glass = nullptr; Tile *Tile::trapdoor = nullptr; Tile *Tile::monsterStoneEgg = nullptr; @@ -213,7 +212,6 @@ Tile *Tile::stairs_quartz = nullptr; Tile *Tile::activatorRail = nullptr; Tile *Tile::dropper = nullptr; Tile *Tile::clayHardened_colored = nullptr; -Tile *Tile::stained_glass_pane = nullptr; Tile *Tile::hayBlock = nullptr; Tile *Tile::woolCarpet = nullptr; @@ -362,7 +360,6 @@ void Tile::staticCtor() Tile::cake = (new CakeTile(92)) ->setDestroyTime(0.5f)->setSoundType(Tile::SOUND_CLOTH)->setIconName(L"cake")->setDescriptionId(IDS_TILE_CAKE)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_CAKE); Tile::diode_off = static_cast((new RepeaterTile(93, false))->setDestroyTime(0.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"repeater_off")->setDescriptionId(IDS_ITEM_DIODE)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_REDSTONEREPEATER)->disableMipmap()); Tile::diode_on = static_cast((new RepeaterTile(94, true))->setDestroyTime(0.0f)->setLightEmission(10 / 16.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"repeater_on")->setDescriptionId(IDS_ITEM_DIODE)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_REDSTONEREPEATER)->disableMipmap()); - Tile::stained_glass = (new StainedGlassBlock(95, Material::glass))->setBaseItemTypeAndMaterial(Item::eBaseItemType_glass, Item::eMaterial_glass)->setDestroyTime(0.3f)->setSoundType(SOUND_GLASS)->setIconName(L"glass")->setDescriptionId(IDS_TILE_STAINED_GLASS)->setUseDescriptionId(IDS_DESC_STAINED_GLASS); Tile::trapdoor = (new TrapDoorTile(96, Material::wood)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_door, Item::eMaterial_trap)->setDestroyTime(3.0f)->setSoundType(Tile::SOUND_WOOD)->setIconName(L"trapdoor")->setDescriptionId(IDS_TILE_TRAPDOOR)->setNotCollectStatistics()->sendTileData()->setUseDescriptionId(IDS_DESC_TRAPDOOR); Tile::monsterStoneEgg = (new StoneMonsterTile(97)) ->setDestroyTime(0.75f)->setIconName(L"monsterStoneEgg")->setDescriptionId(IDS_TILE_STONE_SILVERFISH)->setUseDescriptionId(IDS_DESC_STONE_SILVERFISH); Tile::stoneBrick = (new SmoothStoneBrickTile(98)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock, Item::eMaterial_stoneSmooth)->setDestroyTime(1.5f)->setExplodeable(10)->setSoundType(SOUND_STONE)->setIconName(L"stonebrick")->setDescriptionId(IDS_TILE_STONE_BRICK_SMOOTH)->setUseDescriptionId(IDS_DESC_STONE_BRICK_SMOOTH); @@ -440,7 +437,6 @@ void Tile::staticCtor() Tile::activatorRail = (new PoweredRailTile(157)) ->setDestroyTime(0.7f)->setSoundType(SOUND_METAL)->setIconName(L"rail_activator")->setDescriptionId(IDS_TILE_ACTIVATOR_RAIL)->setUseDescriptionId(IDS_DESC_ACTIVATOR_RAIL); Tile::dropper = (new DropperTile(158)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_redstoneContainer, Item::eMaterial_undefined)->setDestroyTime(3.5f)->setSoundType(SOUND_STONE)->setIconName(L"dropper")->setDescriptionId(IDS_TILE_DROPPER)->setUseDescriptionId(IDS_DESC_DROPPER); Tile::clayHardened_colored = (new ColoredTile(159, Material::stone)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_clay, Item::eMaterial_clay)->setDestroyTime(1.25f)->setExplodeable(7)->setSoundType(SOUND_STONE)->setIconName(L"hardened_clay_stained")->setDescriptionId(IDS_TILE_STAINED_CLAY)->setUseDescriptionId(IDS_DESC_STAINED_CLAY); - Tile::stained_glass_pane = (new StainedGlassPaneBlock(160)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_glass, Item::eMaterial_glass)->setDestroyTime(0.3f)->setSoundType(SOUND_GLASS)->setIconName(L"glass")->setDescriptionId(IDS_TILE_STAINED_GLASS_PANE)->setUseDescriptionId(IDS_DESC_STAINED_GLASS_PANE); Tile::hayBlock = (new HayBlockTile(170)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_block, Item::eMaterial_wheat)->setDestroyTime(0.5f)->setSoundType(SOUND_GRASS)->setIconName(L"hay_block")->setDescriptionId(IDS_TILE_HAY)->setUseDescriptionId(IDS_DESC_HAY); Tile::woolCarpet = (new WoolCarpetTile(171)) ->setBaseItemTypeAndMaterial(Item::eBaseItemType_carpet, Item::eMaterial_cloth)->setDestroyTime(0.1f)->setSoundType(SOUND_CLOTH)->setIconName(L"woolCarpet")->setLightBlock(0)->setDescriptionId(IDS_TILE_CARPET)->setUseDescriptionId(IDS_DESC_CARPET); @@ -451,8 +447,6 @@ void Tile::staticCtor() // Special cases for certain items since they can have different icons Item::items[wool_Id] = ( new WoolTileItem(Tile::wool_Id- 256) )->setIconName(L"cloth")->setDescriptionId(IDS_TILE_CLOTH)->setUseDescriptionId(IDS_DESC_WOOL); Item::items[clayHardened_colored_Id]= ( new WoolTileItem(Tile::clayHardened_colored_Id - 256))->setIconName(L"clayHardenedStained")->setDescriptionId(IDS_TILE_STAINED_CLAY)->setUseDescriptionId(IDS_DESC_STAINED_CLAY); - Item::items[stained_glass_Id] = ( new WoolTileItem(Tile::stained_glass_Id - 256))->setIconName(L"stainedGlass")->setDescriptionId(IDS_TILE_STAINED_GLASS)->setUseDescriptionId(IDS_DESC_STAINED_GLASS); - Item::items[stained_glass_pane_Id] = ( new WoolTileItem(Tile::stained_glass_pane_Id - 256))->setIconName(L"stainedGlassPane")->setDescriptionId(IDS_TILE_STAINED_GLASS_PANE)->setUseDescriptionId(IDS_DESC_STAINED_GLASS_PANE); Item::items[woolCarpet_Id] = ( new WoolTileItem(Tile::woolCarpet_Id - 256))->setIconName(L"woolCarpet")->setDescriptionId(IDS_TILE_CARPET)->setUseDescriptionId(IDS_DESC_CARPET); Item::items[treeTrunk_Id] = ( new MultiTextureTileItem(Tile::treeTrunk_Id - 256, treeTrunk, (int *)TreeTile::TREE_NAMES, 4) )->setIconName(L"log")->setDescriptionId(IDS_TILE_LOG)->setUseDescriptionId(IDS_DESC_LOG); Item::items[wood_Id] = ( new MultiTextureTileItem(Tile::wood_Id - 256, Tile::wood, (int *)WoodTile::WOOD_NAMES, 4, IDS_TILE_PLANKS))->setIconName(L"wood")->setDescriptionId(IDS_TILE_OAKWOOD_PLANKS)->setUseDescriptionId(IDS_DESC_LOG); // <- TODO diff --git a/Minecraft.World/cmake/sources/Common.cmake b/Minecraft.World/cmake/sources/Common.cmake index 926f437c..e0e5ffe3 100644 --- a/Minecraft.World/cmake/sources/Common.cmake +++ b/Minecraft.World/cmake/sources/Common.cmake @@ -1896,10 +1896,6 @@ set(_MINECRAFT_WORLD_COMMON_NET_MINECRAFT_WORLD_LEVEL_TILE "${CMAKE_CURRENT_SOURCE_DIR}/SoulSandTile.h" "${CMAKE_CURRENT_SOURCE_DIR}/Sponge.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Sponge.h" - "${CMAKE_CURRENT_SOURCE_DIR}/StainedGlassBlock.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/StainedGlassBlock.h" - "${CMAKE_CURRENT_SOURCE_DIR}/StainedGlassPaneBlock.cpp" - "${CMAKE_CURRENT_SOURCE_DIR}/StainedGlassPaneBlock.h" "${CMAKE_CURRENT_SOURCE_DIR}/StairTile.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/StairTile.h" "${CMAKE_CURRENT_SOURCE_DIR}/StemTile.cpp" diff --git a/Minecraft.World/net.minecraft.world.level.tile.h b/Minecraft.World/net.minecraft.world.level.tile.h index fb94ddf3..0e28c587 100644 --- a/Minecraft.World/net.minecraft.world.level.tile.h +++ b/Minecraft.World/net.minecraft.world.level.tile.h @@ -98,8 +98,6 @@ #include "SnowTile.h" #include "SoulSandTile.h" #include "Sponge.h" -#include "StainedGlassBlock.h" -#include "StainedGlassPaneBlock.h" #include "StairTile.h" #include "StemTile.h" #include "StoneButtonTile.h" diff --git a/PORTING.md b/PORTING.md index 6d57f41c..ba528760 100644 --- a/PORTING.md +++ b/PORTING.md @@ -12,4 +12,22 @@ If you provide a visual bugfix that fixes a distinctive quirk of the LCE rendere If your visual bugfix is a fix added in a future version of LCE than the one we're targeting, it should also be put behind a toggle or equivalent system for keeping it off by default. # Targeted Version -We are targeting to keep this on TU19 with the exclusion of neoLegacy for Higher TU's, If there are any features for versions maintained by [neoLegacy](https://github.com/neoStudiosLCE/neoLegacy) that are missing make a PR to there repository and it will be brought to this, we also allow PR's that Downport to get older TU's. +We are targeting to keep this on TU19 to TU24 with the exclusion of neoLegacy for Higher TU's, If there are any features for versions maintained by [neoLegacy](https://github.com/neoStudiosLCE/neoLegacy) that are missing make a PR to there repository and it will be brought to this, we also allow PR's that Downport to get older TU's. + +# Versions we are trying to add +[TU2 (Jun 2012)](https://minecraft.wiki/w/Xbox_360_Edition_TU2) +[TU4 (Aug 2012)](https://minecraft.wiki/w/Xbox_360_Edition_TU4) +[TU6 (Nov 2012)](https://minecraft.wiki/w/Xbox_360_Edition_TU6) +[TU8 (Nov 2013)](https://minecraft.wiki/w/Xbox_360_Edition_TU8) +[TU11 (May 2013)](https://minecraft.wiki/w/Xbox_360_Edition_TU11) +[TU13 (Oct 2013)](https://minecraft.wiki/w/Xbox_360_Edition_TU13) +[TU18 (Oct 2014)](https://minecraft.wiki/w/Xbox_360_Edition_TU18) +[TU24 (Apr 2015)](https://minecraft.wiki/w/Xbox_360_Edition_TU24) +[TU30 (Oct 2015)](https://minecraft.wiki/w/Xbox_360_Edition_TU30) +[TU42 (Sep 2016)](https://minecraft.wiki/w/Xbox_360_Edition_TU42) +[TU45 (Oct 2016)](https://minecraft.wiki/w/Xbox_360_Edition_TU45) +[TU52 (Apr 2017)](https://minecraft.wiki/w/Xbox_360_Edition_TU62) +[TU53 (May 2017)](https://minecraft.wiki/w/Xbox_360_Edition_TU53) +[TU59 (Nov 2017)](https://minecraft.wiki/w/Xbox_360_Edition_TU59) +[TU68 (Aug 2018)](https://minecraft.wiki/w/Xbox_360_Edition_TU68) +[TU75 (Apr 2019)](https://minecraft.wiki/w/Xbox_360_Edition_TU75)