Update Minecraft Wiki links to new domain (#5532)
* Update Minecraft Wiki links to new domain * Added Spongecade to contributors * Sorted Spongecade
This commit is contained in:
parent
1d4e036e39
commit
ebeb164d2b
@ -79,6 +79,7 @@ Seadragon91 (Lukas Pioch)
|
|||||||
Sofapriester
|
Sofapriester
|
||||||
Spekdrum (Pablo Beltran)
|
Spekdrum (Pablo Beltran)
|
||||||
SphinxC0re
|
SphinxC0re
|
||||||
|
Spongecade (Updated wiki links)
|
||||||
steve-nzr
|
steve-nzr
|
||||||
structinf (xdot)
|
structinf (xdot)
|
||||||
sweetgiorni
|
sweetgiorni
|
||||||
|
@ -24,7 +24,7 @@ I'd say that the important topics are:
|
|||||||
Useful Resources
|
Useful Resources
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
- [Minecraft Wiki](https://minecraft.gamepedia.com/Minecraft_Wiki)
|
- [Minecraft Wiki](https://minecraft.wiki/w/Minecraft_Wiki)
|
||||||
- [Minecraft Protocol Wiki](http://wiki.vg/Main_Page)
|
- [Minecraft Protocol Wiki](http://wiki.vg/Main_Page)
|
||||||
- [Lua API Documentation](https://api.cuberite.org/)
|
- [Lua API Documentation](https://api.cuberite.org/)
|
||||||
- [Visual Studio Community Edition Download](https://www.visualstudio.com/downloads/)
|
- [Visual Studio Community Edition Download](https://www.visualstudio.com/downloads/)
|
||||||
@ -127,7 +127,7 @@ Special Things
|
|||||||
|
|
||||||
[1]: https://book.cuberite.org/
|
[1]: https://book.cuberite.org/
|
||||||
[2]: https://github.com/cuberite/cuberite/blob/master/TESTING.md
|
[2]: https://github.com/cuberite/cuberite/blob/master/TESTING.md
|
||||||
[3]: https://minecraft.gamepedia.com/Minecraft_Wiki
|
[3]: https://minecraft.wiki/w/Minecraft_Wiki
|
||||||
[4]: https://github.com/cuberite/cuberite/blob/master/CONTRIBUTING.md
|
[4]: https://github.com/cuberite/cuberite/blob/master/CONTRIBUTING.md
|
||||||
[5]: https://github.com/cuberite/cuberite/blob/master/COMPILING.md
|
[5]: https://github.com/cuberite/cuberite/blob/master/COMPILING.md
|
||||||
[6]: https://github.com/cuberite/cuberite/issues?q=is%3Aopen+is%3Aissue+label%3Aeffort%2Feasy
|
[6]: https://github.com/cuberite/cuberite/issues?q=is%3Aopen+is%3Aissue+label%3Aeffort%2Feasy
|
||||||
|
@ -9746,7 +9746,7 @@ a_Player:OpenWindow(Window);
|
|||||||
Type = "Vector3i",
|
Type = "Vector3i",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Notes = "Function to find suitable teleport destination in or below box. Returns true and places result in Destination if found, otherwise returns false. Details at: {{https://minecraft.fandom.com/wiki/Enderman#Teleportation}}.",
|
Notes = "Function to find suitable teleport destination in or below box. Returns true and places result in Destination if found, otherwise returns false. Details at: {{https://minecraft.wiki/w/Enderman#Teleportation}}.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Params =
|
Params =
|
||||||
@ -9772,7 +9772,7 @@ a_Player:OpenWindow(Window);
|
|||||||
Type = "cBoundingBox",
|
Type = "cBoundingBox",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Notes = "Function to find suitable teleport destination in or below box. Returns true and places result in Destination if found, otherwise returns false. Details at: {{https://minecraft.fandom.com/wiki/Enderman#Teleportation}}.",
|
Notes = "Function to find suitable teleport destination in or below box. Returns true and places result in Destination if found, otherwise returns false. Details at: {{https://minecraft.wiki/w/Enderman#Teleportation}}.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Params =
|
Params =
|
||||||
@ -9798,7 +9798,7 @@ a_Player:OpenWindow(Window);
|
|||||||
Type = "number",
|
Type = "number",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Notes = "Function to find suitable teleport destination in or below box. Returns true and places result in Destination if found, otherwise returns false. Details at: {{https://minecraft.fandom.com/wiki/Enderman#Teleportation}}.",
|
Notes = "Function to find suitable teleport destination in or below box. Returns true and places result in Destination if found, otherwise returns false. Details at: {{https://minecraft.wiki/w/Enderman#Teleportation}}.",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
HasEntityEffect =
|
HasEntityEffect =
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# The time for a brewing recipe is always 20 seconds (400 ticks).
|
# The time for a brewing recipe is always 20 seconds (400 ticks).
|
||||||
#
|
#
|
||||||
# Minecraft-Wiki Brewing:
|
# Minecraft-Wiki Brewing:
|
||||||
# https://minecraft.gamepedia.com/Brewing
|
# https://minecraft.wiki/w/Brewing
|
||||||
#
|
#
|
||||||
# A brewing recipe has this format:
|
# A brewing recipe has this format:
|
||||||
# Data Value + Ingredient = Potion
|
# Data Value + Ingredient = Potion
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<p>We're seeing an increased need to store "prefabs" - little areas with predefined block contents, such as village houses or fortress rooms - in collections. We have one collection of village houses for the plains village, one collection for the desert village, one collection for the nether fortress... And there are plans in the future to use even more collections - trees, overworld fortresses, more village types and even custom structures. The point that they have in common is that they need to store not only the prefabs, but also metadata for those prefabs - how often they generate, how they connect together. There's even need for metadata for the entire collection, such as what the accepted biomes are, what block should village roads use, and various other generator parameters. So we need a file format that could store all this information together.</p>
|
<p>We're seeing an increased need to store "prefabs" - little areas with predefined block contents, such as village houses or fortress rooms - in collections. We have one collection of village houses for the plains village, one collection for the desert village, one collection for the nether fortress... And there are plans in the future to use even more collections - trees, overworld fortresses, more village types and even custom structures. The point that they have in common is that they need to store not only the prefabs, but also metadata for those prefabs - how often they generate, how they connect together. There's even need for metadata for the entire collection, such as what the accepted biomes are, what block should village roads use, and various other generator parameters. So we need a file format that could store all this information together.</p>
|
||||||
<p>There are some existing formats available to consider first:
|
<p>There are some existing formats available to consider first:
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://minecraft.gamepedia.com/Schematic_file_format"><b>schematic</b></a> - file format native to MCEdit / Bukkit / WorldEdit communities. Can store the prefab, the block entities and regular entities, and any metadata. Cannot store multiple prefabs. No effort to read or write, there's already code to do that (except for the entities) in the server.</li>
|
<li><a href="https://minecraft.wiki/w/Schematic_file_format"><b>schematic</b></a> - file format native to MCEdit / Bukkit / WorldEdit communities. Can store the prefab, the block entities and regular entities, and any metadata. Cannot store multiple prefabs. No effort to read or write, there's already code to do that (except for the entities) in the server.</li>
|
||||||
<li><a href="https://dev.bukkit.org/projects/terrain-control"><b>bob / bo2 / bo3</b></a> - file format created for prefabs in the Terrain Control mod. Can store the prefab and any metadata. Support for block entities and regular entities is unknown. Cannot store multiple prefabs. Medium difficulty for reading and writing, would need new parser and serializer. Unknown (but assumed true) whether the format truly supports any metadata.</li>
|
<li><a href="https://dev.bukkit.org/projects/terrain-control"><b>bob / bo2 / bo3</b></a> - file format created for prefabs in the Terrain Control mod. Can store the prefab and any metadata. Support for block entities and regular entities is unknown. Cannot store multiple prefabs. Medium difficulty for reading and writing, would need new parser and serializer. Unknown (but assumed true) whether the format truly supports any metadata.</li>
|
||||||
<li><a href="https://github.com/cuberite/cuberite/tree/master/src/Generating/Prefabs"><b>cpp</b></a> - export from our Gallery server directly into C++ source files. Can store the prefab and any metadata, block entities and regular entities currently not implemented but could be added. Very difficult for reading, writing already implemented. Only usable when compiling directly into the server. Can store multiple prefabs and metadata for the entire set.</li>
|
<li><a href="https://github.com/cuberite/cuberite/tree/master/src/Generating/Prefabs"><b>cpp</b></a> - export from our Gallery server directly into C++ source files. Can store the prefab and any metadata, block entities and regular entities currently not implemented but could be added. Very difficult for reading, writing already implemented. Only usable when compiling directly into the server. Can store multiple prefabs and metadata for the entire set.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -48,7 +48,7 @@ public:
|
|||||||
/** Is this block solid (player cannot walk through)? */
|
/** Is this block solid (player cannot walk through)? */
|
||||||
static bool IsSolid(BLOCKTYPE Block);
|
static bool IsSolid(BLOCKTYPE Block);
|
||||||
|
|
||||||
/** Is a block transparent? (https://minecraft.gamepedia.com/Opacity) */
|
/** Is a block transparent? (https://minecraft.wiki/w/Opacity) */
|
||||||
static bool IsTransparent(BLOCKTYPE Block);
|
static bool IsTransparent(BLOCKTYPE Block);
|
||||||
|
|
||||||
/** Can a spectator interact with this block? */
|
/** Can a spectator interact with this block? */
|
||||||
|
@ -273,7 +273,7 @@ enum ENUM_BLOCK_TYPE : BLOCKTYPE
|
|||||||
E_BLOCK_STRUCTURE_BLOCK = 255,
|
E_BLOCK_STRUCTURE_BLOCK = 255,
|
||||||
|
|
||||||
// Keep these two as the last values. Update the last block value to the last block with an id less than 255 when adding another block
|
// Keep these two as the last values. Update the last block value to the last block with an id less than 255 when adding another block
|
||||||
// IsValidBlock() depends on this (255 gets checked additionally because there is a gap. See https://minecraft.gamepedia.com/Data_values#Block_IDs
|
// IsValidBlock() depends on this (255 gets checked additionally because there is a gap. See https://minecraft.wiki/w/Data_values#Block_IDs
|
||||||
E_BLOCK_NUMBER_OF_TYPES = E_BLOCK_CONCRETE_POWDER + 1, ///< Number of individual (different) blocktypes
|
E_BLOCK_NUMBER_OF_TYPES = E_BLOCK_CONCRETE_POWDER + 1, ///< Number of individual (different) blocktypes
|
||||||
E_BLOCK_MAX_TYPE_ID = E_BLOCK_NUMBER_OF_TYPES - 1, ///< Maximum BlockType number used
|
E_BLOCK_MAX_TYPE_ID = E_BLOCK_NUMBER_OF_TYPES - 1, ///< Maximum BlockType number used
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ bool cBlockBedHandler::OnUse(
|
|||||||
const Vector3i a_CursorPos
|
const Vector3i a_CursorPos
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
// Source: https://minecraft.gamepedia.com/Bed#Sleeping
|
// Source: https://minecraft.wiki/w/Bed#Sleeping
|
||||||
|
|
||||||
// Sleeping in bed only allowed in Overworld, beds explode elsewhere:
|
// Sleeping in bed only allowed in Overworld, beds explode elsewhere:
|
||||||
if (a_WorldInterface.GetDimension() != dimOverworld)
|
if (a_WorldInterface.GetDimension() != dimOverworld)
|
||||||
|
@ -65,7 +65,7 @@ private:
|
|||||||
}
|
}
|
||||||
case E_BLOCK_CROPS:
|
case E_BLOCK_CROPS:
|
||||||
{
|
{
|
||||||
// https://minecraft.fandom.com/wiki/Seeds_(Wheat)
|
// https://minecraft.wiki/w/Seeds_(Wheat)
|
||||||
Res.Add(E_ITEM_WHEAT);
|
Res.Add(E_ITEM_WHEAT);
|
||||||
const auto SeedCount = CalculateSeedCount(1, 3, ToolFortuneLevel(a_Tool));
|
const auto SeedCount = CalculateSeedCount(1, 3, ToolFortuneLevel(a_Tool));
|
||||||
Res.Add(E_ITEM_SEEDS, SeedCount);
|
Res.Add(E_ITEM_SEEDS, SeedCount);
|
||||||
@ -73,19 +73,19 @@ private:
|
|||||||
}
|
}
|
||||||
case E_BLOCK_CARROTS:
|
case E_BLOCK_CARROTS:
|
||||||
{
|
{
|
||||||
// https://minecraft.gamepedia.com/Carrot#Breaking
|
// https://minecraft.wiki/w/Carrot#Breaking
|
||||||
const auto CarrotCount = CalculateSeedCount(1, 4, ToolFortuneLevel(a_Tool));
|
const auto CarrotCount = CalculateSeedCount(1, 4, ToolFortuneLevel(a_Tool));
|
||||||
Res.Add(E_ITEM_CARROT, CarrotCount);
|
Res.Add(E_ITEM_CARROT, CarrotCount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case E_BLOCK_POTATOES:
|
case E_BLOCK_POTATOES:
|
||||||
{
|
{
|
||||||
// https://minecraft.gamepedia.com/Potato#Breaking
|
// https://minecraft.wiki/w/Potato#Breaking
|
||||||
const auto PotatoCount = CalculateSeedCount(2, 3, ToolFortuneLevel(a_Tool));
|
const auto PotatoCount = CalculateSeedCount(2, 3, ToolFortuneLevel(a_Tool));
|
||||||
Res.Add(E_ITEM_POTATO, PotatoCount);
|
Res.Add(E_ITEM_POTATO, PotatoCount);
|
||||||
if (rand.RandBool(0.02))
|
if (rand.RandBool(0.02))
|
||||||
{
|
{
|
||||||
// https://minecraft.gamepedia.com/Poisonous_Potato#Obtaining
|
// https://minecraft.wiki/w/Poisonous_Potato#Obtaining
|
||||||
// With a 2% chance, drop a poisonous potato as well:
|
// With a 2% chance, drop a poisonous potato as well:
|
||||||
Res.Add(E_ITEM_POISONOUS_POTATO);
|
Res.Add(E_ITEM_POISONOUS_POTATO);
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ private:
|
|||||||
const auto WorldPos = a_Chunk.RelativeToAbsolute(a_RelPos);
|
const auto WorldPos = a_Chunk.RelativeToAbsolute(a_RelPos);
|
||||||
|
|
||||||
// Search for water in a close proximity:
|
// Search for water in a close proximity:
|
||||||
// Ref.: https://minecraft.gamepedia.com/Farmland#Hydration
|
// Ref.: https://minecraft.wiki/w/Farmland#Hydration
|
||||||
// TODO: Rewrite this to use the chunk and its neighbors directly
|
// TODO: Rewrite this to use the chunk and its neighbors directly
|
||||||
cBlockArea Area;
|
cBlockArea Area;
|
||||||
if (!Area.Read(*a_Chunk.GetWorld(), WorldPos - Vector3i(4, 0, 4), WorldPos + Vector3i(4, 1, 4)))
|
if (!Area.Read(*a_Chunk.GetWorld(), WorldPos - Vector3i(4, 0, 4), WorldPos + Vector3i(4, 1, 4)))
|
||||||
|
@ -151,7 +151,7 @@ public:
|
|||||||
cChunk & a_Chunk
|
cChunk & a_Chunk
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
/** Returns the base colour ID of the block, as will be represented on a map, as per documentation: https://minecraft.gamepedia.com/Map_item_format */
|
/** Returns the base colour ID of the block, as will be represented on a map, as per documentation: https://minecraft.wiki/w/Map_item_format */
|
||||||
virtual ColourID GetMapBaseColourID(NIBBLETYPE a_Meta) const;
|
virtual ColourID GetMapBaseColourID(NIBBLETYPE a_Meta) const;
|
||||||
|
|
||||||
/** Rotates a given block meta counter-clockwise. Default: no change
|
/** Rotates a given block meta counter-clockwise. Default: no change
|
||||||
@ -192,7 +192,7 @@ public:
|
|||||||
a_BonusMax is the amount to increase the max of randInt by, usually the fortune level (but not always)
|
a_BonusMax is the amount to increase the max of randInt by, usually the fortune level (but not always)
|
||||||
a_DropCap is the maximum items from one block with fortune,
|
a_DropCap is the maximum items from one block with fortune,
|
||||||
if unspecified set to 25 to prevent lag or crash with high level tools.
|
if unspecified set to 25 to prevent lag or crash with high level tools.
|
||||||
Similar to uniform_bonus_count at https://minecraft.gamepedia.com/Loot_table#Functions */
|
Similar to uniform_bonus_count at https://minecraft.wiki/w/Loot_table#Functions */
|
||||||
static char FortuneDiscreteRandom(char a_MinDrop, char a_DefaultMax, unsigned char a_BonusMax, char a_DropCap = 25);
|
static char FortuneDiscreteRandom(char a_MinDrop, char a_DefaultMax, unsigned char a_BonusMax, char a_DropCap = 25);
|
||||||
|
|
||||||
// Gets the blockhandler for the given block type.
|
// Gets the blockhandler for the given block type.
|
||||||
|
@ -26,8 +26,8 @@ private:
|
|||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
Use correct percent:
|
Use correct percent:
|
||||||
https://minecraft.gamepedia.com/Melon_Seeds#Breaking
|
https://minecraft.wiki/w/Melon_Seeds#Breaking
|
||||||
https://minecraft.gamepedia.com/Pumpkin_Seeds#Breaking
|
https://minecraft.wiki/w/Pumpkin_Seeds#Breaking
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Age > 7 (Impossible)
|
// Age > 7 (Impossible)
|
||||||
@ -171,8 +171,8 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
// https://minecraft.gamepedia.com/Pumpkin_Seeds#Breaking
|
// https://minecraft.wiki/w/Pumpkin_Seeds#Breaking
|
||||||
// https://minecraft.gamepedia.com/Melon_Seeds#Breaking
|
// https://minecraft.wiki/w/Melon_Seeds#Breaking
|
||||||
/** The array describes how many seed may be dropped at which age. The inner arrays describe the probability to drop 0, 1, 2, 3 seeds.
|
/** The array describes how many seed may be dropped at which age. The inner arrays describe the probability to drop 0, 1, 2, 3 seeds.
|
||||||
The outer describes the age of the stem. */
|
The outer describes the age of the stem. */
|
||||||
static constexpr std::array<std::array<double, 4>, 8> m_AgeSeedDropProbability
|
static constexpr std::array<std::array<double, 4>, 8> m_AgeSeedDropProbability
|
||||||
|
@ -845,7 +845,7 @@ void cChunk::TickBlocks(void)
|
|||||||
m_BlockToTick = cChunkDef::IndexToCoordinate(Random.RandInt<size_t>(cChunkDef::NumBlocks - 1));
|
m_BlockToTick = cChunkDef::IndexToCoordinate(Random.RandInt<size_t>(cChunkDef::NumBlocks - 1));
|
||||||
|
|
||||||
// Choose a number of blocks for each section to randomly tick.
|
// Choose a number of blocks for each section to randomly tick.
|
||||||
// http://minecraft.fandom.com/wiki/Tick#Random_tick
|
// http://minecraft.wiki/w/Tick#Random_tick
|
||||||
for (size_t Y = 0; Y < cChunkDef::NumSections; ++Y)
|
for (size_t Y = 0; Y < cChunkDef::NumSections; ++Y)
|
||||||
{
|
{
|
||||||
const auto Section = m_BlockData.GetSection(Y);
|
const auto Section = m_BlockData.GetSection(Y);
|
||||||
@ -895,7 +895,7 @@ void cChunk::ApplyWeatherToTop()
|
|||||||
if (GetBlockLight(X, Height, Z) > 10)
|
if (GetBlockLight(X, Height, Z) > 10)
|
||||||
{
|
{
|
||||||
// Snow only generates on blocks with a block light level of 10 or less.
|
// Snow only generates on blocks with a block light level of 10 or less.
|
||||||
// Ref: https://minecraft.gamepedia.com/Snow_(layer)#Snowfall
|
// Ref: https://minecraft.wiki/w/Snow_(layer)#Snowfall
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ bool IsValidBlock(int a_BlockType)
|
|||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
((a_BlockType > -1) && (a_BlockType <= E_BLOCK_MAX_TYPE_ID)) ||
|
((a_BlockType > -1) && (a_BlockType <= E_BLOCK_MAX_TYPE_ID)) ||
|
||||||
(a_BlockType == 255) // the blocks 253-254 don't exist yet -> https://minecraft.gamepedia.com/Data_values#Block_IDs
|
(a_BlockType == 255) // the blocks 253-254 don't exist yet -> https://minecraft.wiki/w/Data_values#Block_IDs
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ Serialization will never put zero-level enchantments into the stringspec and wil
|
|||||||
class cEnchantments
|
class cEnchantments
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/** Individual enchantment IDs, corresponding to their NBT IDs: https://minecraft.gamepedia.com/Data_values#Enchantment_IDs
|
/** Individual enchantment IDs, corresponding to their NBT IDs: https://minecraft.wiki/w/Data_values#Enchantment_IDs
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum eEnchantment
|
enum eEnchantment
|
||||||
|
@ -442,7 +442,7 @@ bool cEntity::DoTakeDamage(TakeDamageInfo & a_TDI)
|
|||||||
bool MagicalCriticalHit = false;
|
bool MagicalCriticalHit = false;
|
||||||
|
|
||||||
// IsOnGround() only is false if the player is moving downwards
|
// IsOnGround() only is false if the player is moving downwards
|
||||||
// Ref: https://minecraft.gamepedia.com/Damage#Critical_Hits
|
// Ref: https://minecraft.wiki/w/Damage#Critical_Hits
|
||||||
if (!Player->IsOnGround())
|
if (!Player->IsOnGround())
|
||||||
{
|
{
|
||||||
if ((a_TDI.DamageType == dtAttack) || (a_TDI.DamageType == dtArrowAttack))
|
if ((a_TDI.DamageType == dtAttack) || (a_TDI.DamageType == dtArrowAttack))
|
||||||
@ -501,7 +501,7 @@ bool cEntity::DoTakeDamage(TakeDamageInfo & a_TDI)
|
|||||||
|
|
||||||
// The duration of the effect is a random value between 1 and 1.5 seconds at level I,
|
// The duration of the effect is a random value between 1 and 1.5 seconds at level I,
|
||||||
// increasing the max duration by 0.5 seconds each level.
|
// increasing the max duration by 0.5 seconds each level.
|
||||||
// Ref: https://minecraft.gamepedia.com/Enchanting#Bane_of_Arthropods
|
// Ref: https://minecraft.wiki/w/Enchanting#Bane_of_Arthropods
|
||||||
int Duration = 20 + GetRandomProvider().RandInt(BaneOfArthropodsLevel * 10); // Duration in ticks.
|
int Duration = 20 + GetRandomProvider().RandInt(BaneOfArthropodsLevel * 10); // Duration in ticks.
|
||||||
Monster->AddEntityEffect(cEntityEffect::effSlowness, Duration, 4);
|
Monster->AddEntityEffect(cEntityEffect::effSlowness, Duration, 4);
|
||||||
|
|
||||||
@ -614,7 +614,7 @@ bool cEntity::DoTakeDamage(TakeDamageInfo & a_TDI)
|
|||||||
int cEntity::GetRawDamageAgainst(const cEntity & a_Receiver)
|
int cEntity::GetRawDamageAgainst(const cEntity & a_Receiver)
|
||||||
{
|
{
|
||||||
// Returns the hitpoints that this pawn can deal to a_Receiver using its equipped items
|
// Returns the hitpoints that this pawn can deal to a_Receiver using its equipped items
|
||||||
// Ref: https://minecraft.gamepedia.com/Damage#Dealing_damage as of 2012_12_20
|
// Ref: https://minecraft.wiki/w/Damage#Dealing_damage as of 2012_12_20
|
||||||
switch (this->GetEquippedWeapon().m_ItemType)
|
switch (this->GetEquippedWeapon().m_ItemType)
|
||||||
{
|
{
|
||||||
case E_ITEM_WOODEN_SWORD: return 4;
|
case E_ITEM_WOODEN_SWORD: return 4;
|
||||||
@ -660,7 +660,7 @@ void cEntity::ApplyArmorDamage(int DamageBlocked)
|
|||||||
|
|
||||||
bool cEntity::ArmorCoversAgainst(eDamageType a_DamageType)
|
bool cEntity::ArmorCoversAgainst(eDamageType a_DamageType)
|
||||||
{
|
{
|
||||||
// Ref.: https://minecraft.gamepedia.com/Armor#Effects as of 2012_12_20
|
// Ref.: https://minecraft.wiki/w/Armor#Effects as of 2012_12_20
|
||||||
switch (a_DamageType)
|
switch (a_DamageType)
|
||||||
{
|
{
|
||||||
case dtOnFire:
|
case dtOnFire:
|
||||||
@ -777,7 +777,7 @@ float cEntity::GetArmorCoverAgainst(const cEntity * a_Attacker, eDamageType a_Da
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add up all armor points:
|
// Add up all armor points:
|
||||||
// Ref.: https://minecraft.gamepedia.com/Armor#Defense_points
|
// Ref.: https://minecraft.wiki/w/Armor#Defense_points
|
||||||
int ArmorValue = 0;
|
int ArmorValue = 0;
|
||||||
int Toughness = 0;
|
int Toughness = 0;
|
||||||
switch (GetEquippedHelmet().m_ItemType)
|
switch (GetEquippedHelmet().m_ItemType)
|
||||||
@ -814,7 +814,7 @@ float cEntity::GetArmorCoverAgainst(const cEntity * a_Attacker, eDamageType a_Da
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Special armor cases, such as wool, saddles, dog's collar
|
// TODO: Special armor cases, such as wool, saddles, dog's collar
|
||||||
// Ref.: https://minecraft.gamepedia.com/Armor#Mob_armor as of 2012_12_20
|
// Ref.: https://minecraft.wiki/w/Armor#Mob_armor as of 2012_12_20
|
||||||
|
|
||||||
float Reduction = std::max(ArmorValue / 5.0f, ArmorValue - a_Damage / (2.0f + Toughness / 4.0f));
|
float Reduction = std::max(ArmorValue / 5.0f, ArmorValue - a_Damage / (2.0f + Toughness / 4.0f));
|
||||||
return (a_Damage * std::min(20.0f, Reduction) / 25.0f);
|
return (a_Damage * std::min(20.0f, Reduction) / 25.0f);
|
||||||
@ -1797,7 +1797,7 @@ void cEntity::SetSize(const float a_Width, const float a_Height)
|
|||||||
|
|
||||||
void cEntity::HandleAir(void)
|
void cEntity::HandleAir(void)
|
||||||
{
|
{
|
||||||
// Ref.: https://minecraft.gamepedia.com/Chunk_format
|
// Ref.: https://minecraft.wiki/w/Chunk_format
|
||||||
// See if the entity is /submerged/ water (head is in water)
|
// See if the entity is /submerged/ water (head is in water)
|
||||||
// Get the type of block the entity is standing in:
|
// Get the type of block the entity is standing in:
|
||||||
|
|
||||||
|
@ -610,7 +610,7 @@ protected:
|
|||||||
/** Stores the air drag that is applied to the entity every tick, measured in speed ratio per tick
|
/** Stores the air drag that is applied to the entity every tick, measured in speed ratio per tick
|
||||||
Acts as air friction and slows down flight
|
Acts as air friction and slows down flight
|
||||||
Will be interpolated if the server tick rate varies
|
Will be interpolated if the server tick rate varies
|
||||||
Data: https://minecraft.gamepedia.com/Entity#Motion_of_entities */
|
Data: https://minecraft.wiki/w/Entity#Motion_of_entities */
|
||||||
float m_AirDrag;
|
float m_AirDrag;
|
||||||
|
|
||||||
/** Last position sent to client via the Relative Move or Teleport packets (not Velocity)
|
/** Last position sent to client via the Relative Move or Teleport packets (not Velocity)
|
||||||
|
@ -23,7 +23,7 @@ cEntityEffect::eType cEntityEffect::GetPotionEffectType(short a_ItemDamage)
|
|||||||
{
|
{
|
||||||
// Lowest four bits
|
// Lowest four bits
|
||||||
// Potion effect bits are different from entity effect values
|
// Potion effect bits are different from entity effect values
|
||||||
// For reference: https://minecraft.gamepedia.com/Java_Edition_data_values#.22Potion_effect.22_bits
|
// For reference: https://minecraft.wiki/w/Java_Edition_data_values#.22Potion_effect.22_bits
|
||||||
switch (a_ItemDamage & 0x0f)
|
switch (a_ItemDamage & 0x0f)
|
||||||
{
|
{
|
||||||
case 0x01: return cEntityEffect::effRegeneration;
|
case 0x01: return cEntityEffect::effRegeneration;
|
||||||
@ -112,9 +112,9 @@ int cEntityEffect::GetPotionEffectDuration(short a_ItemDamage)
|
|||||||
SplashCoeff = IsPotionDrinkable(a_ItemDamage) ? 1 : 0.75;
|
SplashCoeff = IsPotionDrinkable(a_ItemDamage) ? 1 : 0.75;
|
||||||
|
|
||||||
// Ref.:
|
// Ref.:
|
||||||
// https://minecraft.gamepedia.com/Java_Edition_data_values#.22Tier.22_bit
|
// https://minecraft.wiki/w/Java_Edition_data_values#.22Tier.22_bit
|
||||||
// https://minecraft.gamepedia.com/Java_Edition_data_values#.22Extended_duration.22_bit
|
// https://minecraft.wiki/w/Java_Edition_data_values#.22Extended_duration.22_bit
|
||||||
// https://minecraft.gamepedia.com/Java_Edition_data_values#.22Splash_potion.22_bit
|
// https://minecraft.wiki/w/Java_Edition_data_values#.22Splash_potion.22_bit
|
||||||
|
|
||||||
return static_cast<int>(base * TierCoeff * ExtCoeff * SplashCoeff);
|
return static_cast<int>(base * TierCoeff * ExtCoeff * SplashCoeff);
|
||||||
}
|
}
|
||||||
@ -127,7 +127,7 @@ bool cEntityEffect::IsPotionDrinkable(short a_ItemDamage)
|
|||||||
{
|
{
|
||||||
// Potions are drinkable if they are not splash potions.
|
// Potions are drinkable if they are not splash potions.
|
||||||
// i.e. potions are drinkable if the 14th lowest bit is not set
|
// i.e. potions are drinkable if the 14th lowest bit is not set
|
||||||
// Ref.: https://minecraft.gamepedia.com/Java_Edition_data_values#.22Splash_potion.22_bit
|
// Ref.: https://minecraft.wiki/w/Java_Edition_data_values#.22Splash_potion.22_bit
|
||||||
return ((a_ItemDamage & 0x4000) == 0);
|
return ((a_ItemDamage & 0x4000) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ void cFireChargeEntity::OnHitEntity(cEntity & a_EntityHit, Vector3d a_HitPos)
|
|||||||
|
|
||||||
if (!a_EntityHit.IsFireproof())
|
if (!a_EntityHit.IsFireproof())
|
||||||
{
|
{
|
||||||
// TODO Damage Entity with 5 damage(from https://minecraft.gamepedia.com/Blaze#Blaze_fireball)
|
// TODO Damage Entity with 5 damage(from https://minecraft.wiki/w/Blaze#Blaze_fireball)
|
||||||
a_EntityHit.StartBurning(5 * 20); // 5 seconds of burning
|
a_EntityHit.StartBurning(5 * 20); // 5 seconds of burning
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -654,7 +654,7 @@ bool cPawn::FindTeleportDestination(cWorld & a_World, const int a_HeightRequired
|
|||||||
/*
|
/*
|
||||||
Algorithm:
|
Algorithm:
|
||||||
Choose random destination.
|
Choose random destination.
|
||||||
Seek downwards, regardless of distance until the block is made of movement-blocking material: https://minecraft.fandom.com/wiki/Materials
|
Seek downwards, regardless of distance until the block is made of movement-blocking material: https://minecraft.wiki/w/Materials
|
||||||
Succeeds if no liquid or solid blocks prevents from standing at destination.
|
Succeeds if no liquid or solid blocks prevents from standing at destination.
|
||||||
*/
|
*/
|
||||||
auto & Random = GetRandomProvider();
|
auto & Random = GetRandomProvider();
|
||||||
|
@ -91,7 +91,7 @@ public:
|
|||||||
Checks for valid destinations in a cube of length 2 * a_HalfCubeWidth centred at a_Centre.
|
Checks for valid destinations in a cube of length 2 * a_HalfCubeWidth centred at a_Centre.
|
||||||
Returns true and places destination in a_Destination if successful.
|
Returns true and places destination in a_Destination if successful.
|
||||||
Returns false if destination could be found after a_NumTries attempts.
|
Returns false if destination could be found after a_NumTries attempts.
|
||||||
Details at: https://minecraft.fandom.com/wiki/Enderman#Teleportation. */
|
Details at: https://minecraft.wiki/w/Enderman#Teleportation. */
|
||||||
static bool FindTeleportDestination(cWorld & a_World, const int a_HeightRequired, const unsigned int a_NumTries, Vector3d & a_Destination, Vector3i a_Centre, const int a_HalfCubeWidth);
|
static bool FindTeleportDestination(cWorld & a_World, const int a_HeightRequired, const unsigned int a_NumTries, Vector3d & a_Destination, Vector3i a_Centre, const int a_HalfCubeWidth);
|
||||||
|
|
||||||
// tolua_end
|
// tolua_end
|
||||||
|
@ -2069,7 +2069,7 @@ void cPlayer::UseItem(int a_SlotNumber, short a_Damage)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ref: https://minecraft.gamepedia.com/Enchanting#Unbreaking
|
// Ref: https://minecraft.wiki/w/Enchanting#Unbreaking
|
||||||
unsigned int UnbreakingLevel = Item.m_Enchantments.GetLevel(cEnchantments::enchUnbreaking);
|
unsigned int UnbreakingLevel = Item.m_Enchantments.GetLevel(cEnchantments::enchUnbreaking);
|
||||||
double chance = ItemCategory::IsArmor(Item.m_ItemType)
|
double chance = ItemCategory::IsArmor(Item.m_ItemType)
|
||||||
? (0.6 + (0.4 / (UnbreakingLevel + 1))) : (1.0 / (UnbreakingLevel + 1));
|
? (0.6 + (0.4 / (UnbreakingLevel + 1))) : (1.0 / (UnbreakingLevel + 1));
|
||||||
@ -2115,7 +2115,7 @@ void cPlayer::UseItem(int a_SlotNumber, short a_Damage)
|
|||||||
|
|
||||||
void cPlayer::HandleFood(void)
|
void cPlayer::HandleFood(void)
|
||||||
{
|
{
|
||||||
// Ref.: https://minecraft.gamepedia.com/Hunger
|
// Ref.: https://minecraft.wiki/w/Hunger
|
||||||
|
|
||||||
if (IsGameModeCreative() || IsGameModeSpectator())
|
if (IsGameModeCreative() || IsGameModeSpectator())
|
||||||
{
|
{
|
||||||
@ -2606,7 +2606,7 @@ bool cPlayer::IsInsideWater()
|
|||||||
|
|
||||||
float cPlayer::GetDigSpeed(BLOCKTYPE a_Block)
|
float cPlayer::GetDigSpeed(BLOCKTYPE a_Block)
|
||||||
{
|
{
|
||||||
// Based on: https://minecraft.gamepedia.com/Breaking#Speed
|
// Based on: https://minecraft.wiki/w/Breaking#Speed
|
||||||
|
|
||||||
// Get the base speed multiplier of the equipped tool for the mined block
|
// Get the base speed multiplier of the equipped tool for the mined block
|
||||||
float MiningSpeed = GetEquippedItem().GetHandler().GetBlockBreakingStrength(a_Block);
|
float MiningSpeed = GetEquippedItem().GetHandler().GetBlockBreakingStrength(a_Block);
|
||||||
@ -2672,7 +2672,7 @@ float cPlayer::GetDigSpeed(BLOCKTYPE a_Block)
|
|||||||
|
|
||||||
float cPlayer::GetMiningProgressPerTick(BLOCKTYPE a_Block)
|
float cPlayer::GetMiningProgressPerTick(BLOCKTYPE a_Block)
|
||||||
{
|
{
|
||||||
// Based on https://minecraft.gamepedia.com/Breaking#Calculation
|
// Based on https://minecraft.wiki/w/Breaking#Calculation
|
||||||
// If we know it's instantly breakable then quit here:
|
// If we know it's instantly breakable then quit here:
|
||||||
if (cBlockInfo::IsOneHitDig(a_Block))
|
if (cBlockInfo::IsOneHitDig(a_Block))
|
||||||
{
|
{
|
||||||
@ -2695,7 +2695,7 @@ float cPlayer::GetMiningProgressPerTick(BLOCKTYPE a_Block)
|
|||||||
|
|
||||||
bool cPlayer::CanInstantlyMine(BLOCKTYPE a_Block)
|
bool cPlayer::CanInstantlyMine(BLOCKTYPE a_Block)
|
||||||
{
|
{
|
||||||
// Based on: https://minecraft.gamepedia.com/Breaking#Calculation
|
// Based on: https://minecraft.wiki/w/Breaking#Calculation
|
||||||
|
|
||||||
// If the dig speed is greater than 30 times the hardness, then the wiki says we can instantly mine:
|
// If the dig speed is greater than 30 times the hardness, then the wiki says we can instantly mine:
|
||||||
return GetDigSpeed(a_Block) > (30 * cBlockInfo::GetHardness(a_Block));
|
return GetDigSpeed(a_Block) > (30 * cBlockInfo::GetHardness(a_Block));
|
||||||
|
@ -123,12 +123,12 @@ public:
|
|||||||
float GetXpPercentage(void) const;
|
float GetXpPercentage(void) const;
|
||||||
|
|
||||||
/** Calculates the amount of XP needed for a given level
|
/** Calculates the amount of XP needed for a given level
|
||||||
Ref: https://minecraft.gamepedia.com/XP
|
Ref: https://minecraft.wiki/w/XP
|
||||||
*/
|
*/
|
||||||
static int XpForLevel(int a_Level);
|
static int XpForLevel(int a_Level);
|
||||||
|
|
||||||
/** Inverse of XpForLevel
|
/** Inverse of XpForLevel
|
||||||
Ref: https://minecraft.gamepedia.com/XP
|
Ref: https://minecraft.wiki/w/XP
|
||||||
values are as per this with pre-calculations
|
values are as per this with pre-calculations
|
||||||
*/
|
*/
|
||||||
static int CalcLevelFromXp(int a_CurrentXp);
|
static int CalcLevelFromXp(int a_CurrentXp);
|
||||||
@ -580,13 +580,13 @@ public:
|
|||||||
/** Returns the progress mined per tick for the block a_Block as a fraction
|
/** Returns the progress mined per tick for the block a_Block as a fraction
|
||||||
(1 would be completely mined)
|
(1 would be completely mined)
|
||||||
Depends on hardness values so check those are correct.
|
Depends on hardness values so check those are correct.
|
||||||
Source: https://minecraft.gamepedia.com/Breaking#Calculation */
|
Source: https://minecraft.wiki/w/Breaking#Calculation */
|
||||||
float GetMiningProgressPerTick(BLOCKTYPE a_Block);
|
float GetMiningProgressPerTick(BLOCKTYPE a_Block);
|
||||||
|
|
||||||
/** Given tool, enchantments, status effects, and world position
|
/** Given tool, enchantments, status effects, and world position
|
||||||
returns whether a_Block would be instantly mined.
|
returns whether a_Block would be instantly mined.
|
||||||
Depends on hardness values so check those are correct.
|
Depends on hardness values so check those are correct.
|
||||||
Source: https://minecraft.gamepedia.com/Breaking#Instant_breaking */
|
Source: https://minecraft.wiki/w/Breaking#Instant_breaking */
|
||||||
bool CanInstantlyMine(BLOCKTYPE a_Block);
|
bool CanInstantlyMine(BLOCKTYPE a_Block);
|
||||||
|
|
||||||
/** Adds an Item to the list of known items.
|
/** Adds an Item to the list of known items.
|
||||||
@ -779,7 +779,7 @@ private:
|
|||||||
If he has an enchanted tool with efficiency or he has a haste or mining fatique effect it gets multiplied by a specific factor depending on the strength of the effect or enchantment.
|
If he has an enchanted tool with efficiency or he has a haste or mining fatique effect it gets multiplied by a specific factor depending on the strength of the effect or enchantment.
|
||||||
In he is in water it gets divided by 5 except if his tool is enchanted with aqua affinity.
|
In he is in water it gets divided by 5 except if his tool is enchanted with aqua affinity.
|
||||||
If he is not on ground it also gets divided by 5.
|
If he is not on ground it also gets divided by 5.
|
||||||
Source: https://minecraft.gamepedia.com/Breaking#Calculation */
|
Source: https://minecraft.wiki/w/Breaking#Calculation */
|
||||||
float GetDigSpeed(BLOCKTYPE a_Block);
|
float GetDigSpeed(BLOCKTYPE a_Block);
|
||||||
|
|
||||||
/** Add the recipe Id to the known recipes.
|
/** Add the recipe Id to the known recipes.
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/*
|
/*
|
||||||
https://minecraft.gamepedia.com/End_spike
|
https://minecraft.wiki/w/End_spike
|
||||||
https://minecraft.gamepedia.com/End_Crystal
|
https://minecraft.wiki/w/End_Crystal
|
||||||
https://minecraft.gamepedia.com/Ender_Dragon
|
https://minecraft.wiki/w/Ender_Dragon
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "FinishGen.h"
|
#include "FinishGen.h"
|
||||||
|
@ -1914,7 +1914,7 @@ void cFinishGenOreNests::GenerateOre(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Gold ores are generated more often in Mesa-Type-Biomes:
|
// Gold ores are generated more often in Mesa-Type-Biomes:
|
||||||
// https://minecraft.gamepedia.com/Gold_Ore
|
// https://minecraft.wiki/w/Gold_Ore
|
||||||
if (a_OreType == E_BLOCK_GOLD_ORE)
|
if (a_OreType == E_BLOCK_GOLD_ORE)
|
||||||
{
|
{
|
||||||
const auto BiomeSampleOne = a_ChunkDesc.GetBiome( 4, 4);
|
const auto BiomeSampleOne = a_ChunkDesc.GetBiome( 4, 4);
|
||||||
|
@ -550,7 +550,7 @@ bool cItem::CanHaveEnchantment(int a_EnchantmentID)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The organization here is based on the summary at:
|
// The organization here is based on the summary at:
|
||||||
// https://minecraft.gamepedia.com/Enchanting
|
// https://minecraft.wiki/w/Enchanting
|
||||||
// as of July 2017 (Minecraft 1.12).
|
// as of July 2017 (Minecraft 1.12).
|
||||||
|
|
||||||
// Hand tool enchantments
|
// Hand tool enchantments
|
||||||
|
@ -88,7 +88,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
/** Attempts to use the bonemeal on the plant at the specified (absolute) position.
|
/** Attempts to use the bonemeal on the plant at the specified (absolute) position.
|
||||||
The effect of fertilization depends on the plant: https://minecraft.gamepedia.com/Bone_Meal#Fertilizer
|
The effect of fertilization depends on the plant: https://minecraft.wiki/w/Bone_Meal#Fertilizer
|
||||||
- grow a few stages
|
- grow a few stages
|
||||||
- grow 1 stage with a chance
|
- grow 1 stage with a chance
|
||||||
- drop pickups without destroying the plant
|
- drop pickups without destroying the plant
|
||||||
@ -270,7 +270,7 @@ public:
|
|||||||
a_World.BroadcastSoundParticleEffect(EffectID::PARTICLE_HAPPY_VILLAGER, a_Position, 0);
|
a_World.BroadcastSoundParticleEffect(EffectID::PARTICLE_HAPPY_VILLAGER, a_Position, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Grows a biome-dependent flower according to https://minecraft.gamepedia.com/Flower#Flower_biomes */
|
/** Grows a biome-dependent flower according to https://minecraft.wiki/w/Flower#Flower_biomes */
|
||||||
static void GrowFlower(cWorld & a_World, const Vector3i a_Position)
|
static void GrowFlower(cWorld & a_World, const Vector3i a_Position)
|
||||||
{
|
{
|
||||||
auto & Random = GetRandomProvider();
|
auto & Random = GetRandomProvider();
|
||||||
|
@ -21,7 +21,7 @@ public:
|
|||||||
virtual bool IsDrinkable(short a_ItemDamage) const override
|
virtual bool IsDrinkable(short a_ItemDamage) const override
|
||||||
{
|
{
|
||||||
// Drinkable potion if 13th lowest bit is set
|
// Drinkable potion if 13th lowest bit is set
|
||||||
// Ref.: https://minecraft.gamepedia.com/Potions#Data_value_table
|
// Ref.: https://minecraft.wiki/w/Potions#Data_value_table
|
||||||
return cEntityEffect::IsPotionDrinkable(a_ItemDamage);
|
return cEntityEffect::IsPotionDrinkable(a_ItemDamage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Generates a random color for the sheep like the vanilla server.
|
/** Generates a random color for the sheep like the vanilla server.
|
||||||
The percent's where used are from the wiki: https://minecraft.gamepedia.com/Sheep#Breeding */
|
The percent's where used are from the wiki: https://minecraft.wiki/w/Sheep#Breeding */
|
||||||
static NIBBLETYPE GenerateNaturalRandomColor(void);
|
static NIBBLETYPE GenerateNaturalRandomColor(void);
|
||||||
|
|
||||||
bool IsSheared(void) const { return m_IsSheared; }
|
bool IsSheared(void) const { return m_IsSheared; }
|
||||||
|
@ -41,7 +41,7 @@ namespace Explodinator
|
|||||||
|
|
||||||
/** Returns how much of an explosion Destruction Lazor's (tm) intensity the given block attenuates.
|
/** Returns how much of an explosion Destruction Lazor's (tm) intensity the given block attenuates.
|
||||||
Values are scaled as 0.3 * (0.3 + Wiki) since some compilers miss the constant folding optimisation.
|
Values are scaled as 0.3 * (0.3 + Wiki) since some compilers miss the constant folding optimisation.
|
||||||
Wiki values are https://minecraft.gamepedia.com/Explosion#Blast_resistance as of 2021-02-06. */
|
Wiki values are https://minecraft.wiki/w/Explosion#Blast_resistance as of 2021-02-06. */
|
||||||
static float GetExplosionAbsorption(const BLOCKTYPE Block)
|
static float GetExplosionAbsorption(const BLOCKTYPE Block)
|
||||||
{
|
{
|
||||||
switch (Block)
|
switch (Block)
|
||||||
@ -386,7 +386,7 @@ namespace Explodinator
|
|||||||
const int HalfSide = TraceCubeSideLength / 2;
|
const int HalfSide = TraceCubeSideLength / 2;
|
||||||
auto & Random = GetRandomProvider();
|
auto & Random = GetRandomProvider();
|
||||||
|
|
||||||
// The following loops implement the tracing algorithm described in http://minecraft.gamepedia.com/Explosion
|
// The following loops implement the tracing algorithm described in http://minecraft.wiki/w/Explosion
|
||||||
|
|
||||||
// Trace rays from the explosion centre to all points in a square of area TraceCubeSideLength * TraceCubeSideLength
|
// Trace rays from the explosion centre to all points in a square of area TraceCubeSideLength * TraceCubeSideLength
|
||||||
// for the top and bottom sides:
|
// for the top and bottom sides:
|
||||||
|
@ -3152,7 +3152,7 @@ void cProtocol_1_8_0::WriteBlockEntity(cFastNBTWriter & a_Writer, const cBlockEn
|
|||||||
a_Writer.AddByte("SkullType", MobHeadEntity.GetType() & 0xFF);
|
a_Writer.AddByte("SkullType", MobHeadEntity.GetType() & 0xFF);
|
||||||
a_Writer.AddByte("Rot", MobHeadEntity.GetRotation() & 0xFF);
|
a_Writer.AddByte("Rot", MobHeadEntity.GetRotation() & 0xFF);
|
||||||
|
|
||||||
// The new Block Entity format for a Mob Head. See: https://minecraft.gamepedia.com/Head#Block_entity
|
// The new Block Entity format for a Mob Head. See: https://minecraft.wiki/w/Head#Block_entity
|
||||||
a_Writer.BeginCompound("Owner");
|
a_Writer.BeginCompound("Owner");
|
||||||
a_Writer.AddString("Id", MobHeadEntity.GetOwnerUUID().ToShortString());
|
a_Writer.AddString("Id", MobHeadEntity.GetOwnerUUID().ToShortString());
|
||||||
a_Writer.AddString("Name", MobHeadEntity.GetOwnerName());
|
a_Writer.AddString("Name", MobHeadEntity.GetOwnerName());
|
||||||
|
@ -1697,7 +1697,7 @@ void cSlotAreaEnchanting::UpdateResult(cPlayer & a_Player)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pseudocode found at: https://minecraft.gamepedia.com/Enchanting_mechanics
|
// Pseudocode found at: https://minecraft.wiki/w/Enchanting_mechanics
|
||||||
const auto Bookshelves = std::min(GetBookshelvesCount(*a_Player.GetWorld()), 15U);
|
const auto Bookshelves = std::min(GetBookshelvesCount(*a_Player.GetWorld()), 15U);
|
||||||
|
|
||||||
// A PRNG initialised using the player's enchantment seed.
|
// A PRNG initialised using the player's enchantment seed.
|
||||||
|
@ -615,7 +615,7 @@ public:
|
|||||||
mWriter.AddByte ("SkullType", a_MobHead->GetType() & 0xFF);
|
mWriter.AddByte ("SkullType", a_MobHead->GetType() & 0xFF);
|
||||||
mWriter.AddByte ("Rot", a_MobHead->GetRotation() & 0xFF);
|
mWriter.AddByte ("Rot", a_MobHead->GetRotation() & 0xFF);
|
||||||
|
|
||||||
// The new Block Entity format for a Mob Head. See: https://minecraft.gamepedia.com/Head#Block_entity
|
// The new Block Entity format for a Mob Head. See: https://minecraft.wiki/w/Head#Block_entity
|
||||||
mWriter.BeginCompound("Owner");
|
mWriter.BeginCompound("Owner");
|
||||||
mWriter.AddString("Id", a_MobHead->GetOwnerUUID().ToShortString());
|
mWriter.AddString("Id", a_MobHead->GetOwnerUUID().ToShortString());
|
||||||
mWriter.AddString("Name", a_MobHead->GetOwnerName());
|
mWriter.AddString("Name", a_MobHead->GetOwnerName());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user