diff --git a/Minecraft.Client/Common/UI/UIController.cpp b/Minecraft.Client/Common/UI/UIController.cpp index 8b38bbb3b..100262065 100644 --- a/Minecraft.Client/Common/UI/UIController.cpp +++ b/Minecraft.Client/Common/UI/UIController.cpp @@ -307,7 +307,7 @@ void UIController::postInit() IggyInstallPerfmon(iggy_perfmon); #endif - NavigateToScene(0, eUIScene_Intro); + //NavigateToScene(0, eUIScene_Intro); } diff --git a/Minecraft.Client/Common/res/lang/en_US.lang b/Minecraft.Client/Common/res/lang/en_US.lang new file mode 100644 index 000000000..6db986297 --- /dev/null +++ b/Minecraft.Client/Common/res/lang/en_US.lang @@ -0,0 +1,569 @@ + +gui.done=Done +gui.cancel=Cancel +gui.toMenu=Back to title screen +gui.up=Up +gui.down=Down +gui.yes=Yes +gui.no=No + +menu.singleplayer=Singleplayer +menu.multiplayer=Multiplayer +menu.mods=Mods and Texture Packs +menu.options=Options... +menu.quit=Quit Game + +selectWorld.title=Select World +selectWorld.empty=empty +selectWorld.world=World +selectWorld.select=Play Selected World +selectWorld.create=Create New World +selectWorld.createDemo=Play New Demo World +selectWorld.delete=Delete +selectWorld.rename=Rename +selectWorld.deleteQuestion=Are you sure you want to delete this world? +selectWorld.deleteWarning=will be lost forever! (A long time!) +selectWorld.deleteButton=Delete +selectWorld.renameButton=Rename +selectWorld.renameTitle=Rename World +selectWorld.conversion=Must be converted! +selectWorld.newWorld=New World +selectWorld.enterName=World Name +selectWorld.resultFolder=Will be saved in: +selectWorld.enterSeed=Seed for the World Generator +selectWorld.seedInfo=Leave blank for a random seed + +multiplayer.title=Play Multiplayer +multiplayer.connect=Connect +multiplayer.info1=Minecraft Multiplayer is currently not finished, but there +multiplayer.info2=is some buggy early testing going on. +multiplayer.ipinfo=Enter the IP of a server to connect to it: + +multiplayer.downloadingTerrain=Downloading terrain + +multiplayer.stopSleeping=Leave Bed + +demo.day.1=This demo will last five game days, do your best! +demo.day.2=Day Two +demo.day.3=Day Three +demo.day.4=Day Four +demo.day.5=This is your last day! +demo.day.warning=Your time is almost up! +demo.day.6=You have passed your fifth day, use F2 to save a screenshot of your creation +demo.reminder=The demo time has expired, buy the game to continue or start a new world! +demo.help.movement=Use %1$s, %2$s, %3$s, %4$s and the mouse to move around +demo.help.jump=Jump by pressing %1$s +demo.help.inventory=Use %1$s to open your inventory + +connect.connecting=Connecting to the server... +connect.authorizing=Logging in... +connect.failed=Failed to connect to the server + +disconnect.genericReason=%s +disconnect.disconnected=Disconnected by Server +disconnect.lost=Connection Lost +disconnect.kicked=Was kicked from the game +disconnect.timeout=Timed out +disconnect.closed=Connection closed +disconnect.loginFailed=Failed to login +disconnect.loginFailedInfo=Failed to login: %s +disconnect.quitting=Quitting +disconnect.endOfStream=End of stream +disconnect.overflow=Buffer overflow + +options.off=OFF +options.on=ON +options.title=Options +options.controls=Controls... +options.video=Video Settings... +options.videoTitle=Video Settings +options.music=Music +options.sound=Sound +options.invertMouse=Invert Mouse +options.sensitivity=Sensitivity +options.sensitivity.min=*yawn* +options.sensitivity.max=HYPERSPEED!!! +options.renderDistance=Render Distance +options.renderDistance.tiny=Tiny +options.renderDistance.short=Short +options.renderDistance.normal=Normal +options.renderDistance.far=Far +options.viewBobbing=View Bobbing +options.ao=Smooth Lighting +options.anaglyph=3D Anaglyph +options.framerateLimit=Performance +options.difficulty=Difficulty +options.difficulty.peaceful=Peaceful +options.difficulty.easy=Easy +options.difficulty.normal=Normal +options.difficulty.hard=Hard +options.graphics=Graphics +options.graphics.fancy=Fancy +options.graphics.fast=Fast +options.guiScale=GUI Scale +options.guiScale.auto=Auto +options.guiScale.small=Small +options.guiScale.normal=Normal +options.guiScale.large=Large +options.advancedOpengl=Advanced OpenGL + +performance.max=Max FPS +performance.balanced=Balanced +performance.powersaver=Power saver + +controls.title=Controls + +key.forward=Forward +key.left=Left +key.back=Back +key.right=Right +key.jump=Jump +key.inventory=Inventory +key.drop=Drop +key.chat=Chat +key.fog=Toggle Fog +key.sneak=Sneak +key.playerlist=List players + +texturePack.openFolder=Open texture pack folder +texturePack.title=Select Texture Pack +texturePack.folderInfo=(Place texture pack files here) + +tile.stone.name=Stone +tile.stone.desc= +tile.grass.name=Grass +tile.grass.desc= +tile.dirt.name=Dirt +tile.dirt.desc= +tile.stonebrick.name=Cobblestone +tile.stonebrick.desc= +tile.wood.name=Wooden Planks +tile.wood.desc= +tile.sapling.name=Sapling +tile.sapling.desc= +tile.bedrock.name=Bedrock +tile.bedrock.desc= +tile.water.name=Water +tile.water.desc= +tile.lava.name=Lava +tile.lava.desc= +tile.sand.name=Sand +tile.sand.desc= +tile.sandStone.name=Sandstone +tile.sand.desc= +tile.gravel.name=Gravel +tile.gravel.desc= +tile.oreGold.name=Gold Ore +tile.oreGold.desc= +tile.oreIron.name=Iron Ore +tile.oreIron.desc= +tile.oreCoal.name=Coal Ore +tile.oreCoal.desc= +tile.log.name=Wood +tile.log.desc= +tile.leaves.name=Leaves +tile.leaves.desc= +tile.sponge.name=Sponge +tile.sponge.desc= +tile.glass.name=Glass +tile.glass.desc= +tile.cloth.name=Wool +tile.cloth.desc= +tile.flower.name=Flower +tile.flower.desc= +tile.rose.name=Rose +tile.rose.desc= +tile.mushroom.name=Mushroom +tile.mushroom.desc= +tile.blockGold.name=Block of Gold +tile.blockGold.desc= +tile.blockIron.name=Block of Iron +tile.blockIron.desc= +tile.stoneSlab.stone.name=Stone Slab +tile.stoneSlab.stone.desc= +tile.stoneSlab.sand.name=Sandstone Slab +tile.stoneSlab.sand.desc= +tile.stoneSlab.wood.name=Wooden Slab +tile.stoneSlab.wood.desc= +tile.stoneSlab.cobble.name=Stone Slab +tile.stoneSlab.cobble.desc= +tile.brick.name=Bricks +tile.brick.desc= +tile.tnt.name=TNT +tile.tnt.desc= +tile.bookshelf.name=Bookshelf +tile.bookshelf.desc= +tile.stoneMoss.name=Moss Stone +tile.stoneMoss.desc= +tile.obsidian.name=Obsidian +tile.obsidian.desc= +tile.torch.name=Torch +tile.torch.desc= +tile.fire.name=Fire +tile.fire.desc= +tile.mobSpawner.name=Monster Spawner +tile.mobSpawner.desc= +tile.stairsWood.name=Wooden Stairs +tile.stairsWood.desc= +tile.chest.name=Chest +tile.chest.desc= +tile.redstoneDust.name=Redstone Dust +tile.redstoneDust.desc= +tile.oreDiamond.name=Diamond Ore +tile.oreDiamond.desc= +tile.blockDiamond.name=Block of Diamond +tile.blockDiamond.desc= +tile.workbench.name=Crafting Table +tile.workbench.desc= +tile.crops.name=Crops +tile.crops.desc= +tile.farmland.name=Farmland +tile.farmland.desc= +tile.furnace.name=Furnace +tile.furnace.desc= +tile.sign.name=Sign +tile.sign.desc= +tile.doorWood.name=Wooden Door +tile.doorWood.desc= +tile.ladder.name=Ladder +tile.ladder.desc= +tile.rail.name=Rail +tile.rail.desc= +tile.goldenRail.name=Powered Rail +tile.goldenRail.desc= +tile.detectorRail.name=Detector Rail +tile.detectorRail.desc= +tile.stairsStone.name=Stone Stairs +tile.stairsStone.desc= +tile.lever.name=Lever +tile.lever.desc= +tile.pressurePlate.name=Pressure Plate +tile.pressurePlate.desc= +tile.doorIron.name=Iron Door +tile.doorIron.desc= +tile.oreRedstone.name=Redstone Ore +tile.oreRedstone.desc= +tile.notGate.name=Redstone Torch +tile.notGate.desc= +tile.button.name=Button +tile.button.desc= +tile.snow.name=Snow +tile.snow.desc= +tile.ice.name=Ice +tile.ice.desc= +tile.cactus.name=Cactus +tile.cactus.desc= +tile.clay.name=Clay +tile.clay.desc= +tile.reeds.name=Sugar cane +tile.reeds.desc= +tile.jukebox.name=Jukebox +tile.jukebox.desc= +tile.fence.name=Fence +tile.fence.desc= +tile.pumpkin.name=Pumpkin +tile.pumpkin.desc= +tile.litpumpkin.name=Jack 'o' Lantern +tile.litpumpkin.desc= +tile.hellrock.name=Netherrack +tile.hellrock.desc= +tile.hellsand.name=Soul Sand +tile.hellsand.desc= +tile.lightgem.name=Glowstone +tile.lightgem.desc= +tile.portal.name=Portal +tile.portal.desc= +tile.cloth.black.name=Black Wool +tile.cloth.black.desc= +tile.cloth.red.name=Red Wool +tile.cloth.red.desc= +tile.cloth.green.name=Green Wool +tile.cloth.green.desc= +tile.cloth.brown.name=Brown Wool +tile.cloth.brown.desc= +tile.cloth.blue.name=Blue Wool +tile.cloth.blue.desc= +tile.cloth.purple.name=Purple Wool +tile.cloth.purple.desc= +tile.cloth.cyan.name=Cyan Wool +tile.cloth.cyan.desc= +tile.cloth.silver.name=Light Gray Wool +tile.cloth.silver.desc= +tile.cloth.gray.name=Gray Wool +tile.cloth.gray.desc= +tile.cloth.pink.name=Pink Wool +tile.cloth.pink.desc= +tile.cloth.lime.name=Lime Wool +tile.cloth.lime.desc= +tile.cloth.yellow.name=Yellow Wool +tile.cloth.yellow.desc= +tile.cloth.lightBlue.name=Light Blue Wool +tile.cloth.lightBlue.desc= +tile.cloth.magenta.name=Magenta Wool +tile.cloth.magenta.desc= +tile.cloth.orange.name=Orange Wool +tile.cloth.orange.desc= +tile.cloth.white.name=Wool +tile.cloth.white.desc= +tile.oreLapis.name=Lapis Lazuli Ore +tile.oreLapis.desc= +tile.blockLapis.name=Lapis Lazuli Block +tile.blockLapis.desc= +tile.dispenser.name=Dispenser +tile.dispenser.desc= +tile.musicBlock.name=Note Block +tile.musicBlock.desc= +tile.cake.name=Cake +tile.cake.desc= +tile.bed.name=Bed +tile.bed.desc= +tile.bed.occupied=This bed is occupied +tile.bed.noSleep=You can only sleep at night +tile.bed.notValid=Your home bed was missing or obstructed +tile.lockedchest.name=Locked chest +tile.lockedchest.desc= +tile.trapdoor.name=Trapdoor +tile.trapdoor.desc= +tile.web.name=Cobweb +tile.web.desc= + +item.shovelIron.name=Iron Shovel +item.shovelIron.desc= +item.pickaxeIron.name=Iron Pickaxe +item.pickaxeIron.desc= +item.hatchetIron.name=Iron Axe +item.hatchetIron.desc= +item.flintAndSteel.name=Flint and Steel +item.flintAndSteel.desc= +item.apple.name=Apple +item.apple.desc= +item.cookie.name=Cookie +item.cookie.desc= +item.bow.name=Bow +item.bow.desc= +item.arrow.name=Arrow +item.arrow.desc= +item.coal.name=Coal +item.coal.desc= +item.charcoal.name=Charcoal +item.charcoal.desc= +item.emerald.name=Diamond +item.emerald.desc= +item.ingotIron.name=Iron Ingot +item.ingotIron.desc= +item.ingotGold.name=Gold Ingot +item.ingotGold.desc= +item.swordIron.name=Iron Sword +item.swordIron.desc= +item.swordWood.name=Wooden Sword +item.swordWood.desc= +item.shovelWood.name=Wooden Shovel +item.shovelWood.desc= +item.pickaxeWood.name=Wooden Pickaxe +item.pickaxeWood.desc= +item.hatchetWood.name=Wooden Axe +item.hatchetWood.desc= +item.swordStone.name=Stone Sword +item.swordStone.desc= +item.shovelStone.name=Stone Shovel +item.shovelStone.desc= +item.pickaxeStone.name=Stone Pickaxe +item.pickaxeStone.desc= +item.hatchetStone.name=Stone Axe +item.hatchetStone.desc= +item.swordDiamond.name=Diamond Sword +item.swordDiamond.desc= +item.shovelDiamond.name=Diamond Shovel +item.shovelDiamond.desc= +item.pickaxeDiamond.name=Diamond Pickaxe +item.pickaxeDiamond.desc= +item.hatchetDiamond.name=Diamond Axe +item.hatchetDiamond.desc= +item.stick.name=Stick +item.stick.desc= +item.bowl.name=Bowl +item.bowl.desc= +item.mushroomStew.name=Mushroom Stew +item.mushroomStew.desc= +item.swordGold.name=Golden Sword +item.swordGold.desc= +item.shovelGold.name=Golden Shovel +item.shovelGold.desc= +item.pickaxeGold.name=Golden Pickaxe +item.pickaxeGold.desc= +item.hatchetGold.name=Golden Axe +item.hatchetGold.desc= +item.string.name=String +item.string.desc= +item.feather.name=Feather +item.feather.desc= +item.sulphur.name=Gunpowder +item.sulphur.desc= +item.hoeWood.name=Wooden Hoe +item.hoeWood.desc= +item.hoeStone.name=Stone Hoe +item.hoeStone.desc= +item.hoeIron.name=Iron Hoe +item.hoeIron.desc= +item.hoeDiamond.name=Diamond Hoe +item.hoeDiamond.desc= +item.hoeGold.name=Golden Hoe +item.hoeGold.desc= +item.seeds.name=Seeds +item.seeds.desc= +item.wheat.name=Wheat +item.wheat.desc= +item.bread.name=Bread +item.bread.desc= +item.helmetCloth.name=Leather Cap +item.helmetCloth.desc= +item.chestplateCloth.name=Leather Tunic +item.chestplateCloth.desc= +item.leggingsCloth.name=Leather Pants +item.leggingsCloth.desc= +item.bootsCloth.name=Leather Boots +item.bootsCloth.desc= +item.helmetChain.name=Chain Helmet +item.helmetChain.desc= +item.chestplateChain.name=Chain Chestplate +item.chestplateChain.desc= +item.leggingsChain.name=Chain Leggings +item.leggingsChain.desc= +item.bootsChain.name=Chain Boots +item.bootsChain.desc= +item.helmetIron.name=Iron Helmet +item.helmetIron.desc= +item.chestplateIron.name=Iron Chestplate +item.chestplateIron.desc= +item.leggingsIron.name=Iron Leggings +item.leggingsIron.desc= +item.bootsIron.name=Iron Boots +item.bootsIron.desc= +item.helmetDiamond.name=Diamond Helmet +item.helmetDiamond.desc= +item.chestplateDiamond.name=Diamond Chestplate +item.chestplateDiamond.desc= +item.leggingsDiamond.name=Diamond Leggings +item.leggingsDiamond.desc= +item.bootsDiamond.name=Diamond Boots +item.bootsDiamond.desc= +item.helmetGold.name=Golden Helmet +item.helmetGold.desc= +item.chestplateGold.name=Golden Chestplate +item.chestplateGold.desc= +item.leggingsGold.name=Golden Leggings +item.leggingsGold.desc= +item.bootsGold.name=Golden boots +item.bootsGold.desc= +item.flint.name=Flint +item.flint.desc= +item.porkchopRaw.name=Raw Porkchop +item.porkchopRaw.desc= +item.porkchopCooked.name=Cooked Porkchop +item.porkchopCooked.desc= +item.painting.name=Painting +item.painting.desc= +item.appleGold.name=Golden Apple +item.appleGold.desc= +item.sign.name=Sign +item.sign.desc= +item.doorWood.name=Wooden Door +item.doorWood.desc= +item.bucket.name=Bucket +item.bucket.desc= +item.bucketWater.name=Water Bucket +item.bucketWater.desc= +item.bucketLava.name=Lava bucket +item.bucketLava.desc= +item.minecart.name=Minecart +item.minecart.desc= +item.saddle.name=Saddle +item.saddle.desc= +item.doorIron.name=Iron Door +item.doorIron.desc= +item.redstone.name=Redstone +item.redstone.desc= +item.snowball.name=Snowball +item.snowball.desc= +item.boat.name=Boat +item.boat.desc= +item.leather.name=Leather +item.leather.desc= +item.milk.name=Milk +item.milk.desc= +item.brick.name=Brick +item.brick.desc= +item.clay.name=Clay +item.clay.desc= +item.reeds.name=Sugar Canes +item.reeds.desc= +item.paper.name=Paper +item.paper.desc= +item.book.name=Book +item.book.desc= +item.slimeball.name=Slimeball +item.slimeball.desc= +item.minecartChest.name=Minecart with Chest +item.minecartChest.desc= +item.minecartFurnace.name=Minecart with Furnace +item.minecartFurnace.desc= +item.egg.name=Egg +item.egg.desc= +item.compass.name=Compass +item.compass.desc= +item.fishingRod.name=Fishing Rod +item.fishingRod.desc= +item.clock.name=Clock +item.clock.desc= +item.yellowDust.name=Glowstone Dust +item.yellowDust.desc= +item.fishRaw.name=Raw Fish +item.fishRaw.desc= +item.fishCooked.name=Cooked Fish +item.fishCooked.desc= +item.record.name=Music Disc +item.record.desc= +item.bone.name=Bone +item.bone.desc= +item.dyePowder.black.name=Ink Sac +item.dyePowder.black.desc= +item.dyePowder.red.name=Rose Red +item.dyePowder.red.desc= +item.dyePowder.green.name=Cactus Green +item.dyePowder.green.desc= +item.dyePowder.brown.name=Cocoa Beans +item.dyePowder.brown.desc= +item.dyePowder.blue.name=Lapis Lazuli +item.dyePowder.blue.desc= +item.dyePowder.purple.name=Purple Dye +item.dyePowder.purple.desc= +item.dyePowder.cyan.name=Cyan Dye +item.dyePowder.cyan.desc= +item.dyePowder.silver.name=Light Gray Dye +item.dyePowder.silver.desc= +item.dyePowder.gray.name=Gray Dye +item.dyePowder.gray.desc= +item.dyePowder.pink.name=Pink Dye +item.dyePowder.pink.desc= +item.dyePowder.lime.name=Lime Dye +item.dyePowder.lime.desc= +item.dyePowder.yellow.name=Dandelion Yellow +item.dyePowder.yellow.desc= +item.dyePowder.lightBlue.name=Light Blue Dye +item.dyePowder.lightBlue.desc= +item.dyePowder.magenta.name=Magenta Dye +item.dyePowder.magenta.desc= +item.dyePowder.orange.name=Orange Dye +item.dyePowder.orange.desc= +item.dyePowder.white.name=Bone Meal +item.dyePowder.white.desc= +item.sugar.name=Sugar +item.sugar.desc= +item.cake.name=Cake +item.cake.desc= +item.bed.name=Bed +item.bed.desc= +item.diode.name=Redstone Repeater +item.diode.desc= +item.map.name=Map +item.map.desc= diff --git a/Minecraft.Client/Common/res/lang/stats_US.lang b/Minecraft.Client/Common/res/lang/stats_US.lang new file mode 100644 index 000000000..caba23afd --- /dev/null +++ b/Minecraft.Client/Common/res/lang/stats_US.lang @@ -0,0 +1,81 @@ +gui.achievements=Achievements +gui.stats=Statistics + +stat.generalButton=General +stat.blocksButton=Blocks +stat.itemsButton=Items + +stat.used=Times Used +stat.mined=Times Mined +stat.depleted=Times Depleted +stat.crafted=Times Crafted + +stat.startGame=Times played +stat.createWorld=Worlds played +stat.loadWorld=Saves loaded +stat.joinMultiplayer=Multiplayer joins +stat.leaveGame=Games quit + +stat.playOneMinute=Minutes Played + +stat.walkOneCm=Distance Walked +stat.fallOneCm=Distance Fallen +stat.swimOneCm=Distance Swum +stat.flyOneCm=Distance Flown +stat.climbOneCm=Distance Climbed +stat.diveOneCm=Distance Dove +stat.minecartOneCm=Distance by Minecart +stat.boatOneCm=Distance by Boat +stat.pigOneCm=Distance by Pig +stat.jump=Jumps +stat.drop=Items Dropped + +stat.damageDealt=Damage Dealt +stat.damageTaken=Damage Taken +stat.deaths=Number of Deaths +stat.mobKills=Mob Kills +stat.playerKills=Player Kills +stat.fishCaught=Fish Caught + +stat.mineBlock=%1$s Mined +stat.craftItem=%1$s Crafted +stat.useItem=%1$s Used +stat.breakItem=%1$s Depleted + +achievement.get=Achievement get! + +achievement.taken=Taken! + +achievement.requires=Requires '%1$s' +achievement.openInventory=Taking Inventory +achievement.openInventory.desc=Press '%1$s' to open your inventory. +achievement.mineWood=Getting Wood +achievement.mineWood.desc=Attack a tree until a block of wood pops out +achievement.buildWorkBench=Benchmarking +achievement.buildWorkBench.desc=Craft a workbench with four blocks of planks +achievement.buildPickaxe=Time to Mine! +achievement.buildPickaxe.desc=Use planks and sticks to make a pickaxe +achievement.buildFurnace=Hot Topic +achievement.buildFurnace.desc=Construct a furnace out of eight stone blocks +achievement.acquireIron=Acquire Hardware +achievement.acquireIron.desc=Smelt an iron ingot +achievement.buildHoe=Time to Farm! +achievement.buildHoe.desc=Use planks and sticks to make a hoe +achievement.makeBread=Bake Bread +achievement.makeBread.desc=Turn wheat into bread +achievement.bakeCake=The Lie +achievement.bakeCake.desc=Wheat, sugar, milk and eggs! +achievement.buildBetterPickaxe=Getting an Upgrade +achievement.buildBetterPickaxe.desc=Construct a better pickaxe +achievement.cookFish=Delicious Fish +achievement.cookFish.desc=Catch and cook fish! +achievement.onARail=On A Rail +achievement.onARail.desc=Travel by minecart at least 1 km from where you started +achievement.buildSword=Time to Strike! +achievement.buildSword.desc=Use planks and sticks to make a sword +achievement.killEnemy=Monster Hunter +achievement.killEnemy.desc=Attack and destroy a monster +achievement.killCow=Cow Tipper +achievement.killCow.desc=Harvest some leather +achievement.flyPig=When Pigs Fly +achievement.flyPig.desc=Fly a pig off a cliff diff --git a/Minecraft.Client/Common/res/title/splashes.txt b/Minecraft.Client/Common/res/title/splashes.txt new file mode 100644 index 000000000..fd6b2e6a7 --- /dev/null +++ b/Minecraft.Client/Common/res/title/splashes.txt @@ -0,0 +1,226 @@ +As seen on TV! +Awesome! +100% pure! +May contain nuts! +Better than Prey! +More polygons! +Sexy! +Limited edition! +Flashing letters! +Made by Notch! +Coming soon! +Best in class! +When it's finished! +Absolutely dragon free! +Excitement! +More than 500 sold! +One of a kind! +Heaps of hits on YouTube! +Indev! +Spiders everywhere! +Check it out! +Holy cow, man! +It's a game! +Made in Sweden! +Uses LWJGL! +Reticulating splines! +Minecraft! +Yaaay! +Singleplayer! +Keyboard compatible! +Undocumented! +Ingots! +Exploding creepers! +That's not a moon! +l33t! +Create! +Survive! +Dungeon! +Exclusive! +The bee's knees! +Down with O.P.P.! +Closed source! +Classy! +Wow! +Not on steam! +Oh man! +Check it out! +Awesome community! +Pixels! +Teetsuuuuoooo! +Kaaneeeedaaaa! +Now with difficulty! +Enhanced! +90% bug free! +Pretty! +12 herbs and spices! +Fat free! +Absolutely no memes! +Free dental! +Ask your doctor! +Minors welcome! +Cloud computing! +Legal in Finland! +Hard to label! +Technically good! +Bringing home the bacon! +Indie! +GOTY! +Ceci n'est pas une title screen! +Euclidian! +Now in 3D! +Inspirational! +Herregud! +Complex cellular automata! +Yes, sir! +Played by cowboys! +OpenGL 1.1! +Thousands of colors! +Try it! +Age of Wonders is better! +Try the mushroom stew! +Sensational! +Hot tamale, hot hot tamale! +Play him off, keyboard cat! +Guaranteed! +Macroscopic! +Bring it on! +Random splash! +Call your mother! +Monster infighting! +Loved by millions! +Ultimate edition! +Freaky! +You've got a brand new key! +Water proof! +Uninflammable! +Whoa, dude! +All inclusive! +Tell your friends! +NP is not in P! +Notch <3 ez! +Music by C418! +Livestreamed! +Haunted! +Polynomial! +Terrestrial! +All is full of love! +Full of stars! +Scientific! +Cooler than Spock! +Collaborate and listen! +Never dig down! +Take frequent breaks! +Not linear! +Han shot first! +Nice to meet you! +Buckets of lava! +Ride the pig! +Larger than Earth! +sqrt(-1) love you! +Phobos anomaly! +Punching wood! +Falling off cliffs! +0% sugar! +150% hyperbole! +Synecdoche! +Let's danec! +Seecret Friday update! +Reference implementation! +Lewd with two dudes with food! +Kiss the sky! +20 GOTO 10! +Verlet intregration! +Peter Griffin! +Do not distribute! +Cogito ergo sum! +4815162342 lines of code! +A skeleton popped out! +The Work of Notch! +The sum of its parts! +BTAF used to be good! +I miss ADOM! +umop-apisdn! +OICU812! +Bring me Ray Cokes! +Finger-licking! +Thematic! +Pneumatic! +Sublime! +Octagonal! +Une baguette! +Gargamel plays it! +Rita is the new top dog! +SWM forever! +Representing Edsbyn! +Matt Damon! +Superfragilisticexpialidocious! +Consummate V's! +Cow Tools! +Double buffered! +Fan fiction! +Flaxkikare! +Jason! Jason! Jason! +Hotter than the sun! +Internet enabled! +Autonomous! +Engage! +Fantasy! +DRR! DRR! DRR! +Kick it root down! +Regional resources! +Woo, facepunch! +Woo, somethingawful! +Woo, /v/! +Woo, tigsource! +Woo, minecraftforum! +Woo, worldofminecraft! +Woo, reddit! +Woo, 2pp! +Google anlyticsed! +Now supports åäö! +Give us Gordon! +Tip your waiter! +Very fun! +12345 is a bad password! +Vote for net neutrality! +Lives in a pineapple under the sea! +MAP11 has two names! +Omnipotent! +Gasp! +...! +Bees, bees, bees, bees! +Jag känner en bot! +This text is hard to read if you play the game at the default resolution, but at 1080p it's fine! +Haha, LOL! +Hampsterdance! +Switches and ores! +Menger sponge! +idspispopd! +Eple (original edit)! +So fresh, so clean! +Slow acting portals! +Try the Nether! +Don't look directly at the bugs! +Oh, ok, Pigmen! +Finally with ladders! +Scary! +Play Minecraft, Watch Topgear, Get Pig! +Twittered about! +Jump up, jump up, and get down! +Joel is neat! +A riddle, wrapped in a mystery! +Huge tracts of land! +Welcome to your Doom! +Stay a while, stay forever! +Stay a while and listen! +Treatment for your rash! +"Noun" is an autonym! +Information wants to be free! +"Almost never" is an interesting concept! +Lots of truthiness! +The creeper is a spy! +Turing complete! +It's groundbreaking! +Let our battle's begin! +The sky is the limit! diff --git a/Minecraft.Client/GameRenderer.cpp b/Minecraft.Client/GameRenderer.cpp index 08c20cfb4..08e10bf6e 100644 --- a/Minecraft.Client/GameRenderer.cpp +++ b/Minecraft.Client/GameRenderer.cpp @@ -739,7 +739,8 @@ void GameRenderer::renderItemInHand(float a, int eye) { turnOnLightLayer(a); PIXBeginNamedEvent(0,"Item in hand render"); - itemInHandRenderer->render(a); + if (itemInHandRenderer) + itemInHandRenderer->render(a); PIXEndNamedEvent(); turnOffLightLayer(a); } @@ -751,7 +752,8 @@ void GameRenderer::renderItemInHand(float a, int eye) //if (!mc->options->thirdPersonView && !mc->cameraTargetPlayer->isSleeping()) if (!localplayer->ThirdPersonView() && !mc->cameraTargetPlayer->isSleeping()) { - itemInHandRenderer->renderScreenEffect(a); + if (itemInHandRenderer) + itemInHandRenderer->renderScreenEffect(a); bobHurt(a); } diff --git a/Minecraft.Client/Gui.cpp b/Minecraft.Client/Gui.cpp index 2db0c83c8..6b8a67874 100644 --- a/Minecraft.Client/Gui.cpp +++ b/Minecraft.Client/Gui.cpp @@ -28,13 +28,15 @@ #include "..\Minecraft.World\net.minecraft.world.h" #include "..\Minecraft.World\LevelChunk.h" #include "..\Minecraft.World\Biome.h" +#include "../Minecraft.World/SharedMonsterAttributes.h" +#include "../Minecraft.World/AttributeInstance.h" ResourceLocation Gui::PUMPKIN_BLUR_LOCATION = ResourceLocation(TN__BLUR__MISC_PUMPKINBLUR); -#define RENDER_HUD 0 +//#define RENDER_HUD 0 //#ifndef _XBOX //#undef RENDER_HUD -//#define RENDER_HUD 1 +#define RENDER_HUD 1 //#endif float Gui::currentGuiBlendFactor = 1.0f; // 4J added @@ -311,7 +313,7 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) if(bDisplayGui) { MemSect(31); - minecraft->textures->bindTexture(TN_GUI_GUI); // 4J was L"/gui/gui.png" + glBindTexture(GL_TEXTURE_2D, minecraft->textures->loadTexture(TN_GUI_GUI)); // 4J was L"/gui/gui.png" MemSect(0); shared_ptr inventory = minecraft->player->inventory; @@ -335,7 +337,7 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) MemSect(31); - minecraft->textures->bindTexture(TN_GUI_ICONS);//L"/gui/icons.png")); + minecraft->textures->bindTexture(&ResourceLocation(TN_GUI_ICONS));//L"/gui/icons.png")); MemSect(0); glEnable(GL_BLEND); RenderManager.StateSetBlendFactor(0xffffff |(((unsigned int)fVal)<<24)); @@ -433,12 +435,18 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) yLine2 = yLine1 - 10; } - double maxHealth = minecraft->localplayers[iPad]->getAttribute(SharedMonsterAttributes.MAX_HEALTH); + const int NUM_HEARTS_PER_ROW = 10; + double maxHealth = minecraft->localplayers[iPad]->getAttribute(SharedMonsterAttributes::MAX_HEALTH)->getValue(); + + + double oldHealth = minecraft->localplayers[iPad]->lastHealth; + double currentHealth = minecraft->localplayers[iPad]->getHealth(); + double absorption; double totalAbsorption = minecraft->localplayers[iPad]->getAbsorptionAmount(); - int numHealthRows = Mth.ceil((maxHealth + totalAbsorption) / 2 / (float) NUM_HEARTS_PER_ROW); - int healthRowHeight = Math.max(10 - (numHealthRows - 2), 3); - int yLine2 = yLine1 - (numHealthRows - 1) * healthRowHeight - 10; + int numHealthRows = Mth::ceil((maxHealth + totalAbsorption) / 2 / (float) NUM_HEARTS_PER_ROW); + int healthRowHeight = max(10 - (numHealthRows - 2), 3); + //int yLine2 = yLine1 - (numHealthRows - 1) * healthRowHeight - 10; absorption = totalAbsorption; int armor = minecraft->player->getArmorValue(); @@ -462,51 +470,51 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) } //minecraft.profiler.popPush("health"); - for (int i = Mth.ceil((maxHealth + totalAbsorption) / 2) - 1; i >= 0; i--) + for (int i = Mth::ceil((maxHealth + totalAbsorption) / 2) - 1; i >= 0; i--) { int healthTexBaseX = 16; - if (minecraft.player.hasEffect(MobEffect.poison)) + if (minecraft->player->hasEffect(MobEffect::poison)) { healthTexBaseX += 4 * 9; } - else if (minecraft.player.hasEffect(MobEffect.wither)) + else if (minecraft->player->hasEffect(MobEffect::wither)) { healthTexBaseX += 8 * 9; } - + int bg = 0; if (blink) bg = 1; - int rowIndex = Mth.ceil((i + 1) / (float) NUM_HEARTS_PER_ROW) - 1; + int rowIndex = Mth::ceil((i + 1) / (float) NUM_HEARTS_PER_ROW) - 1; int xo = xLeft + (i % NUM_HEARTS_PER_ROW) * 8; int yo = yLine1 - rowIndex * healthRowHeight; if (currentHealth <= 4) { - yo += random.nextInt(2); + yo += random->nextInt(2); } - + if (i == heartOffsetIndex) { yo -= 2; } - + int y0 = 0; - + // No hardcore on console /*if (minecraft->level.getLevelData().isHardcore()) { y0 = 5; }*/ - + blit(xo, yo, 16 + bg * 9, 9 * y0, 9, 9); if (blink) { if (i * 2 + 1 < oldHealth) blit(xo, yo, healthTexBaseX + 6 * 9, 9 * y0, 9, 9); if (i * 2 + 1 == oldHealth) blit(xo, yo, healthTexBaseX + 7 * 9, 9 * y0, 9, 9); } - + if (absorption > 0) { - if (absorption == totalAbsorption && totalAbsorption % 2 == 1) + if (absorption == totalAbsorption && fmodf(totalAbsorption, 2) == 1) { blit(xo, yo, healthTexBaseX + 17 * 9, 9 * y0, 9, 9); } @@ -565,36 +573,36 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) { // Render mount health - int riderCurrentHealth = (int) ceil(living.get()->GetHealth()); - float maxRiderHealth = living->GetMaxHealth(); - int hearts = (int) (maxRiderHealth + .5f) / 2; - if (hearts > 30) - { - hearts = 30; - } - - int yo = yLine1; - int baseHealth = 0; - - while (hearts > 0) - { - int rowHearts = min(hearts, 10); - hearts -= rowHearts; - - for (int i = 0; i < rowHearts; i++) - { - int texBaseX = 52; - int bg = 0; - - if (foodBlink) bg = 1; - int xo = xRight - i * 8 - 9; - blit(xo, yo, texBaseX + bg * 9, 9 * 1, 9, 9); - if (i * 2 + 1 + baseHealth < riderCurrentHealth) blit(xo, yo, texBaseX + 4 * 9, 9 * 1, 9, 9); - if (i * 2 + 1 + baseHealth == riderCurrentHealth) blit(xo, yo, texBaseX + 5 * 9, 9 * 1, 9, 9); - } - yo -= 10; - baseHealth += 20; - } + //int riderCurrentHealth = (int) ceil(living.get()->GetHealth()); + //float maxRiderHealth = living->GetMaxHealth(); + //int hearts = (int) (maxRiderHealth + .5f) / 2; + //if (hearts > 30) + //{ + // hearts = 30; + //} + // + //int yo = yLine1; + //int baseHealth = 0; + // + //while (hearts > 0) + //{ + // int rowHearts = min(hearts, 10); + // hearts -= rowHearts; + // + // for (int i = 0; i < rowHearts; i++) + // { + // int texBaseX = 52; + // int bg = 0; + // + // if (foodBlink) bg = 1; + // int xo = xRight - i * 8 - 9; + // blit(xo, yo, texBaseX + bg * 9, 9 * 1, 9, 9); + // if (i * 2 + 1 + baseHealth < riderCurrentHealth) blit(xo, yo, texBaseX + 4 * 9, 9 * 1, 9, 9); + // if (i * 2 + 1 + baseHealth == riderCurrentHealth) blit(xo, yo, texBaseX + 5 * 9, 9 * 1, 9, 9); + // } + // yo -= 10; + // baseHealth += 20; + //} } // render air bubbles diff --git a/Minecraft.Client/LevelRenderer.cpp b/Minecraft.Client/LevelRenderer.cpp index 8216f1fe9..19322ce8a 100644 --- a/Minecraft.Client/LevelRenderer.cpp +++ b/Minecraft.Client/LevelRenderer.cpp @@ -396,8 +396,11 @@ void LevelRenderer::AddDLCSkinsToMemTextures() void LevelRenderer::allChanged() { - int playerIndex = mc->player->GetXboxPad(); // 4J added - allChanged(playerIndex); + if (mc->player) + { + int playerIndex = mc->player->GetXboxPad(); // 4J added + allChanged(playerIndex); + } } int LevelRenderer::activePlayers() diff --git a/Minecraft.Client/Minecraft.Client.vcxproj b/Minecraft.Client/Minecraft.Client.vcxproj index 549156369..fd776f4f5 100644 --- a/Minecraft.Client/Minecraft.Client.vcxproj +++ b/Minecraft.Client/Minecraft.Client.vcxproj @@ -1532,7 +1532,7 @@ if not exist "$(TargetDir)\savedata" mkdir "$(TargetDir)\savedata" Use Level3 - ProgramDatabase + EditAndContinue Disabled Sync false @@ -1624,7 +1624,7 @@ if not exist "$(TargetDir)\savedata" mkdir "$(TargetDir)\savedata" Use Level3 - ProgramDatabase + EditAndContinue Disabled Sync false diff --git a/Minecraft.Client/Minecraft.cpp b/Minecraft.Client/Minecraft.cpp index bc9aec3b9..1025b57a3 100644 --- a/Minecraft.Client/Minecraft.cpp +++ b/Minecraft.Client/Minecraft.cpp @@ -27,6 +27,7 @@ #include "DeathScreen.h" #include "ErrorScreen.h" #include "TitleScreen.h" +#include "PauseScreen.h" #include "InventoryScreen.h" #include "InBedChatScreen.h" #include "AchievementPopup.h" @@ -363,7 +364,7 @@ void Minecraft::init() // 4J-PB - We'll do this in a xui intro //renderLoadingScreen(); - //Keyboard::create(); + Keyboard::create(); Mouse::create(); #if 0 // 4J - removed mouseHandler = new MouseHandler(parent); @@ -515,19 +516,19 @@ void Minecraft::setScreen(Screen *screen) } else if (player != NULL && !ui.GetMenuDisplayed(player->GetXboxPad()) && player->getHealth() <= 0) { - //screen = new DeathScreen(); + screen = new DeathScreen(); // 4J Stu - If we exit from the death screen then we are saved as being dead. In the Java // game when you load the game you are still dead, but this is silly so only show the dead // screen if we have died during gameplay - if(ticks==0) - { - player->respawn(); - } - else - { - ui.NavigateToScene(player->GetXboxPad(),eUIScene_DeathMenu,NULL); - } + //if(ticks==0) + //{ + // player->respawn(); + //} + //else + //{ + // ui.NavigateToScene(player->GetXboxPad(),eUIScene_DeathMenu,NULL); + //} } if (dynamic_cast(screen)!=NULL) @@ -1757,6 +1758,7 @@ void Minecraft::run_middle() ticks++; // try { // 4J - try/catch removed bool bFirst = true; + bool bSet = false; for( int idx = 0; idx < XUSER_MAX_COUNT; idx++ ) { // 4J - If we are waiting for this connection to do something, then tick it here. @@ -1799,13 +1801,20 @@ void Minecraft::run_middle() if( setLocalPlayerIdx(idx) ) { + bSet = true; tick(bFirst, bLastTimerTick); bFirst = false; // clear the stored button downs since the tick for this player will now have actioned them - player->ullButtonsPressed=0LL; + if (player) + player->ullButtonsPressed=0LL; } } + if (!bSet) // tick anyway + { + tick(bFirst, bLastTimerTick); + } + ui.HandleGameTick(); setLocalPlayerIdx(ProfileManager.GetPrimaryPad()); @@ -1858,10 +1867,12 @@ void Minecraft::run_middle() { bool bFirst = true; int iPrimaryPad=ProfileManager.GetPrimaryPad(); + bool bSet = false; for( int i = 0; i < XUSER_MAX_COUNT; i++ ) { if( setLocalPlayerIdx(i) ) { + bSet = true; PIXBeginNamedEvent(0,"Game render player idx %d",i); RenderManager.StateSetViewport((C4JRender::eViewportType)player->m_iScreenSection); gameRenderer->render(timer->a, bFirst); @@ -1887,6 +1898,10 @@ void Minecraft::run_middle() } } } + + if (!bSet) + gameRenderer->render(timer->a, bFirst); // render anyway + // If there's an unoccupied quadrant, then clear that to black if( unoccupiedQuadrant > -1 ) { @@ -1979,7 +1994,7 @@ void Minecraft::run_middle() checkGlError(L"Post render"); MemSect(0); frames++; - //pause = !isClientSide() && screen != NULL && screen->isPauseScreen(); + pause = !isClientSide() && screen != NULL && screen->isPauseScreen(); //pause = g_NetworkManager.IsLocalGame() && g_NetworkManager.GetPlayerCount() == 1 && app.IsPauseMenuDisplayed(ProfileManager.GetPrimaryPad()); pause = app.IsAppPaused(); @@ -2132,7 +2147,7 @@ void Minecraft::pauseGame() { if (screen != NULL) return; - // setScreen(new PauseScreen()); // 4J - TODO put back in + setScreen(new PauseScreen()); // 4J - TODO put back in } void Minecraft::resize(int width, int height) @@ -2193,14 +2208,18 @@ void Minecraft::levelTickThreadInitFunc() // 4J - added bUpdateTextures, which is true if the actual renderer textures are to be updated - this will be true for the last time this tick runs with bFirst true void Minecraft::tick(bool bFirst, bool bUpdateTextures) { - int iPad=player->GetXboxPad(); - //OutputDebugString("Minecraft::tick\n"); + int iPad = -1; + if (player) + { + iPad = player->GetXboxPad(); + //OutputDebugString("Minecraft::tick\n"); - //4J-PB - only tick this player's stats - stats[iPad]->tick(iPad); + //4J-PB - only tick this player's stats + stats[iPad]->tick(iPad); - // Tick the opacity timer (to display the interface at default opacity for a certain time if the user has been navigating it) - app.TickOpacityTimer(iPad); + // Tick the opacity timer (to display the interface at default opacity for a certain time if the user has been navigating it) + app.TickOpacityTimer(iPad); + } // 4J added if( bFirst ) levelRenderer->destroyedTileManager->tick(); @@ -2254,19 +2273,16 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) { // setScreen(new InBedChatScreen()); // 4J - TODO put back in } + + player->missTime = 10000; + player->lastClickTick[0] = ticks + 10000; + player->lastClickTick[1] = ticks + 10000; } else if (screen != NULL && (dynamic_cast(screen)!=NULL) && !player->isSleeping()) { setScreen(NULL); } - if (screen != NULL) - { - player->missTime = 10000; - player->lastClickTick[0] = ticks + 10000; - player->lastClickTick[1] = ticks + 10000; - } - if (screen != NULL) { screen->updateEvents(); @@ -2277,7 +2293,7 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) } } - if (screen == NULL && !ui.GetMenuDisplayed(iPad) ) + if (screen == NULL && (player && !ui.GetMenuDisplayed(iPad)) ) { // 4J-PB - add some tooltips if required int iA=-1, iB=-1, iX, iY=IDS_CONTROLS_INVENTORY, iLT=-1, iRT=-1, iLB=-1, iRB=-1, iLS=-1, iRS=-1; @@ -3710,9 +3726,12 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) #endif ) { - app.DebugPrintf("PAUSE PRESS PROCESSING - ipad = %d, NavigateToScene\n",player->GetXboxPad()); - ui.PlayUISFX(eSFX_Press); - ui.NavigateToScene(iPad, eUIScene_PauseMenu, NULL, eUILayer_Scene); + //app.DebugPrintf("PAUSE PRESS PROCESSING - ipad = %d, NavigateToScene\n",player->GetXboxPad()); + //ui.PlayUISFX(eSFX_Press); + //ui.NavigateToScene(iPad, eUIScene_PauseMenu, NULL, eUILayer_Scene); + ui.CloseUIScenes(iPad); + ui.CloseAllPlayersScenes(); + pauseGame(); } if((player->ullButtonsPressed&(1LL<isInputAllowed(MINECRAFT_ACTION_DROP)) @@ -3758,7 +3777,7 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) else { // 4J-PB - if (InputManager.GetValue(iPad, ACTION_MENU_CANCEL) > 0 && gameMode->isInputAllowed(ACTION_MENU_CANCEL)) + if (gameMode && InputManager.GetValue(iPad, ACTION_MENU_CANCEL) > 0 && gameMode->isInputAllowed(ACTION_MENU_CANCEL)) { setScreen(NULL); } diff --git a/Minecraft.Client/PauseScreen.cpp b/Minecraft.Client/PauseScreen.cpp index 18d066b5a..6a14e3dc1 100644 --- a/Minecraft.Client/PauseScreen.cpp +++ b/Minecraft.Client/PauseScreen.cpp @@ -9,6 +9,7 @@ #include "..\Minecraft.World\net.minecraft.world.level.h" #include "..\Minecraft.World\net.minecraft.stats.h" #include "..\Minecraft.Client\LocalPlayer.h" +#include PauseScreen::PauseScreen() { @@ -41,33 +42,35 @@ void PauseScreen::init() } -void PauseScreen::buttonClicked(Button button) +void PauseScreen::buttonClicked(Button* button) { - if (button.id == 0) + if (button->id == 0) { minecraft->setScreen(new OptionsScreen(this, minecraft->options)); } - if (button.id == 1) + if (button->id == 1) { if (minecraft->isClientSide()) { minecraft->level->disconnect(); + MinecraftServer::HaltServer(); + g_NetworkManager.LeaveGame(FALSE); } minecraft->setLevel(NULL); minecraft->setScreen(new TitleScreen()); } - if (button.id == 4) + if (button->id == 4) { minecraft->setScreen(NULL); // minecraft->grabMouse(); // 4J - removed } - if (button.id == 5) + if (button->id == 5) { // minecraft->setScreen(new AchievementScreen(minecraft->stats)); // 4J TODO - put back } - if (button.id == 6) + if (button->id == 6) { // minecraft->setScreen(new StatsScreen(this, minecraft->stats)); // 4J TODO - put back } diff --git a/Minecraft.Client/PauseScreen.h b/Minecraft.Client/PauseScreen.h index 8d1c8f00d..17520c27e 100644 --- a/Minecraft.Client/PauseScreen.h +++ b/Minecraft.Client/PauseScreen.h @@ -11,7 +11,7 @@ public: virtual void init(); protected:using Screen::buttonClicked; - virtual void buttonClicked(Button button); + virtual void buttonClicked(Button* button); public: virtual void tick(); virtual void render(int xm, int ym, float a); diff --git a/Minecraft.Client/Screen.cpp b/Minecraft.Client/Screen.cpp index 6a402b04c..6af3cb2bb 100644 --- a/Minecraft.Client/Screen.cpp +++ b/Minecraft.Client/Screen.cpp @@ -65,6 +65,7 @@ void Screen::mouseClicked(int x, int y, int buttonNum) clickedButton = button; minecraft->soundEngine->playUI(eSoundType_RANDOM_CLICK, 1, 1); buttonClicked(button); + break; // we don't want this loop to continue } } } @@ -226,11 +227,12 @@ void Screen::renderBackground(int vo) void Screen::renderDirtBackground(int vo) { // 4J Unused -#if 0 +//#if 0 glDisable(GL_LIGHTING); glDisable(GL_FOG); Tesselator *t = Tesselator::getInstance(); - glBindTexture(GL_TEXTURE_2D, minecraft->textures->loadTexture(L"/gui/background.png")); + //glBindTexture(GL_TEXTURE_2D, minecraft->textures->loadTexture(L"/gui/background.png")); + glBindTexture(GL_TEXTURE_2D, minecraft->textures->loadTexture(TN_GUI_BACKGROUND)); glColor4f(1, 1, 1, 1); float s = 32; t->begin(); @@ -240,7 +242,7 @@ void Screen::renderDirtBackground(int vo) t->vertexUV((float)(width), (float)( 0), (float)( 0), (float)( width / s), (float)( 0 + vo)); t->vertexUV((float)(0), (float)( 0), (float)( 0), (float)( 0), (float)( 0 + vo)); t->end(); -#endif +//#endif } bool Screen::isPauseScreen() diff --git a/Minecraft.Client/Textures.cpp b/Minecraft.Client/Textures.cpp index ab9db75d9..52c405c7c 100644 --- a/Minecraft.Client/Textures.cpp +++ b/Minecraft.Client/Textures.cpp @@ -35,7 +35,9 @@ wchar_t *Textures::preLoaded[TN_COUNT] = L"environment/rain", L"environment/snow", L"gui/gui", + L"gui/background", L"gui/icons", + L"title/mclogo", L"item/arrows", L"item/boat", L"item/cart", diff --git a/Minecraft.Client/Textures.h b/Minecraft.Client/Textures.h index eb3d2f6d2..23ad6cac1 100644 --- a/Minecraft.Client/Textures.h +++ b/Minecraft.Client/Textures.h @@ -26,7 +26,9 @@ typedef enum _TEXTURE_NAME TN_ENVIRONMENT_RAIN, TN_ENVIRONMENT_SNOW, TN_GUI_GUI, + TN_GUI_BACKGROUND, TN_GUI_ICONS, + TN_TITLE_MCLOGO, TN_ITEM_ARROWS, TN_ITEM_BOAT, TN_ITEM_CART, diff --git a/Minecraft.Client/TileRenderer.cpp b/Minecraft.Client/TileRenderer.cpp index 2acc6170a..942557876 100644 --- a/Minecraft.Client/TileRenderer.cpp +++ b/Minecraft.Client/TileRenderer.cpp @@ -4896,7 +4896,7 @@ bool TileRenderer::tesselateBlockInWorld( Tile* tt, int x, int y, int z ) b = cb; } - if ( Tile::lightEmission[tt->id] == 0 )//4J - TODO/remove (Minecraft::useAmbientOcclusion()) + if ( Tile::lightEmission[tt->id] == 0 && Minecraft::useAmbientOcclusion()) { return tesselateBlockInWorldWithAmbienceOcclusionTexLighting(tt, x, y, z, r, g, b, 0, smoothShapeLighting); } @@ -4925,7 +4925,7 @@ bool TileRenderer::tesselateBlockInWorld( Tile* tt, int x, int y, int z, int fac b = cb; } - if ( Tile::lightEmission[tt->id] == 0 )//4J - TODO/remove (Minecraft::useAmbientOcclusion()) + if ( Tile::lightEmission[tt->id] == 0 && Minecraft::useAmbientOcclusion()) { return tesselateBlockInWorldWithAmbienceOcclusionTexLighting( tt, x, y, z, r, g, b, faceFlags, smoothShapeLighting ); } diff --git a/Minecraft.Client/TitleScreen.cpp b/Minecraft.Client/TitleScreen.cpp index 1c7d5125b..1e0d84fa0 100644 --- a/Minecraft.Client/TitleScreen.cpp +++ b/Minecraft.Client/TitleScreen.cpp @@ -21,27 +21,30 @@ TitleScreen::TitleScreen() multiplayerButton = NULL; splash = L"missingno"; -// try { // 4J - removed try/catch +// try { // 4J - removed try/catch vector splashes; - /* - BufferedReader *br = new BufferedReader(new InputStreamReader(InputStream::getResourceAsStream(L"res\\title\\splashes.txt"))); //, Charset.forName("UTF-8") - - wstring line = L""; - while ( !(line = br->readLine()).empty() ) - { - line = trimString( line ); - if (line.length() > 0) - { - splashes.push_back(line); - } - } - br->close(); - delete br; - */ - - splash = L""; //splashes.at(random->nextInt(splashes.size())); + BufferedReader *br = new BufferedReader(new InputStreamReader(InputStream::getResourceAsStream(L"Common\\res\\title\\splashes.txt"))); //, Charset.forName("UTF-8") + + if (br) + { + wstring line = L""; + while (!(line = br->readLine()).empty()) + { + line = trimString(line); + if (line.length() > 0) + { + splashes.push_back(line); + } + } + + br->close(); + delete br; + } + + + splash = splashes.at(random->nextInt(splashes.size())); // } catch (Exception e) { // } @@ -108,7 +111,8 @@ void TitleScreen::buttonClicked(Button *button) } if (button->id == 1) { - minecraft->setScreen(new SelectWorldScreen(this)); + //minecraft->setScreen(new SelectWorldScreen(this)); + ui.NavigateToScene(0, eUIScene_MainMenu); } if (button->id == 2) { @@ -127,7 +131,7 @@ void TitleScreen::buttonClicked(Button *button) void TitleScreen::render(int xm, int ym, float a) { // 4J Unused -#if 0 +//#if 0 renderBackground(); Tesselator *t = Tesselator::getInstance(); @@ -135,7 +139,8 @@ void TitleScreen::render(int xm, int ym, float a) int logoX = width / 2 - logoWidth / 2; int logoY = 30; - glBindTexture(GL_TEXTURE_2D, minecraft->textures->loadTexture(L"/title/mclogo.png")); + //glBindTexture(GL_TEXTURE_2D, minecraft->textures->loadTexture(L"/title/mclogo.png")); + glBindTexture(GL_TEXTURE_2D, minecraft->textures->loadTexture(TN_TITLE_MCLOGO)); glColor4f(1, 1, 1, 1); blit(logoX + 0, logoY + 0, 0, 0, 155, 44); blit(logoX + 155, logoY + 0, 0, 45, 155, 44); @@ -156,5 +161,5 @@ void TitleScreen::render(int xm, int ym, float a) drawString(font, msg, width - font->width(msg) - 2, height - 10, 0xffffff); Screen::render(xm, ym, a); -#endif +//#endif } diff --git a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp index b49af8535..5c05c7c7d 100644 --- a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp +++ b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp @@ -1151,24 +1151,24 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, // LeaderboardManager::Instance()->Tick(); // Render game graphics. - if(app.GetGameStarted()) - { + //if(app.GetGameStarted()) + //{ pMinecraft->applyFrameMouseLook(); // Per-frame mouse look (before ticks + render) pMinecraft->run_middle(); app.SetAppPaused( g_NetworkManager.IsLocalGame() && g_NetworkManager.GetPlayerCount() == 1 && ui.IsPauseMenuDisplayed(ProfileManager.GetPrimaryPad()) ); - } - else - { - MemSect(28); - pMinecraft->soundEngine->tick(NULL, 0.0f); - MemSect(0); - pMinecraft->textures->tick(true,false); - IntCache::Reset(); - if( app.GetReallyChangingSessionType() ) - { - pMinecraft->tickAllConnections(); // Added to stop timing out when we are waiting after converting to an offline game - } - } + //} + //else + //{ + // MemSect(28); + // pMinecraft->soundEngine->tick(NULL, 0.0f); + // MemSect(0); + // pMinecraft->textures->tick(true,false); + // IntCache::Reset(); + // if( app.GetReallyChangingSessionType() ) + // { + // pMinecraft->tickAllConnections(); // Added to stop timing out when we are waiting after converting to an offline game + // } + //} pMinecraft->soundEngine->playMusicTick(); diff --git a/Minecraft.World/Language.cpp b/Minecraft.World/Language.cpp index 2fdc47555..77ea1473d 100644 --- a/Minecraft.World/Language.cpp +++ b/Minecraft.World/Language.cpp @@ -3,23 +3,86 @@ // 4J - TODO - properly implement -Language *Language::singleton = new Language(); +Language *Language::singleton = NULL; Language::Language() { + BufferedReader* br = new BufferedReader(new InputStreamReader(InputStream::getResourceAsStream(L"Common\\res\\lang\\en_US.lang"))); + + if (br) + { + wstring prevLine = L"null"; + wstring line = L""; + while (true) + { + line = br->readLine(); + line = trimString(line); + if (line == prevLine) + break; + prevLine = line; + if (line.length() > 0) + { + std::wstring tag = line.substr(0, line.find('=')); + if (localizationTable.count(tag) == 0) + { + std::wstring string = line.substr(line.find('=') + 1); + localizationTable.insert({ tag, string }); + } + } + } + + br->close(); + delete br; + } + + br = new BufferedReader(new InputStreamReader(InputStream::getResourceAsStream(L"Common\\res\\lang\\stats_US.lang"))); + + if (br) + { + wstring prevLine = L"null"; + wstring line = L""; + while (true) + { + line = br->readLine(); + line = trimString(line); + if (line == prevLine) + break; + prevLine = line; + if (line.length() > 0) + { + std::wstring tag = line.substr(0, line.find('=')); + if (localizationTable.count(tag) == 0) + { + std::wstring string = line.substr(line.find('=') + 1); + localizationTable.insert({ tag, string }); + } + } + } + + br->close(); + delete br; + } } Language *Language::getInstance() { + if (!singleton) + singleton = new Language(); // construct return singleton; } std::wstring Language::getElementName(const std::wstring& elementId) { - return elementId; + if (localizationTable.count(elementId + L".name") > 0) + return localizationTable[elementId + L".name"]; + else + return elementId; } std::wstring Language::getElementDescription(const std::wstring& elementId) { - return elementId; + if (localizationTable.count(elementId + L".desc") > 0) + return localizationTable[elementId + L".desc"]; + else + return elementId; } \ No newline at end of file diff --git a/Minecraft.World/Language.h b/Minecraft.World/Language.h index 9c7c85244..be913ea4d 100644 --- a/Minecraft.World/Language.h +++ b/Minecraft.World/Language.h @@ -6,13 +6,20 @@ class Language { private: static Language *singleton; + std::unordered_map localizationTable; public: Language(); static Language *getInstance(); template inline std::wstring getElement(const std::wstring& elementId, Args...) { - return elementId; + if (this) + { + if (localizationTable.count(elementId)) + return localizationTable[elementId]; + else + return elementId; + } } std::wstring getElementName(const std::wstring& elementId); std::wstring getElementDescription(const std::wstring& elementId);