feat: loot tables (#43)

self-explanatory

Reviewed-on: https://git.neolegacy.dev/neoStudiosLCE/neoLegacy/pulls/43
This commit is contained in:
Fireblade
2026-07-12 02:05:06 +01:00
parent 0449af2be6
commit 54528fac16
146 changed files with 6397 additions and 1277 deletions
+13
View File
@@ -133,6 +133,19 @@ set(ASSET_FOLDER_PAIRS
)
setup_asset_folder_copy(Minecraft.Client "${ASSET_FOLDER_PAIRS}")
set(LOOT_TABLES_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/Common/Media/MediaWindows64/Structures/loot_tables")
set(LOOT_TABLES_DEST "$<TARGET_FILE_DIR:Minecraft.Client>/Common/Media/MediaWindows64/Structures/loot_tables")
add_custom_target(AssetLootTablesCopy_Minecraft.Client ALL
COMMAND ${CMAKE_COMMAND} -E make_directory "${LOOT_TABLES_DEST}"
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different
"${LOOT_TABLES_SOURCE}"
"${LOOT_TABLES_DEST}"
COMMENT "Copying loot table XML assets into build folder..."
VERBATIM
)
add_dependencies(Minecraft.Client AssetLootTablesCopy_Minecraft.Client)
set_property(TARGET AssetLootTablesCopy_Minecraft.Client PROPERTY FOLDER "Build")
# copy prebuilt loc folder and use it lmao
if(PLATFORM_NAME STREQUAL "Windows64")
add_custom_target(AssetLocalizationCopy_Minecraft.Client ALL
+26 -2
View File
@@ -57,6 +57,7 @@ void SoundEngine::playUI(int iSound, float volume, float pitch) {}
void SoundEngine::updateMusicVolume(float fVal) {}
void SoundEngine::updateSoundEffectVolume(float fVal) {}
void SoundEngine::stopStreamingNow() {}
void SoundEngine::add(const wstring& name, File *file) {}
void SoundEngine::addMusic(const wstring& name, File *file) {}
@@ -66,6 +67,22 @@ bool SoundEngine::isStreamingWavebankReady() { return true; }
void SoundEngine::playMusicTick() {};
#else
void SoundEngine::stopStreamingNow()
{
if (m_musicStreamActive)
{
ma_sound_stop(&m_musicStream);
ma_sound_uninit(&m_musicStream);
m_musicStreamActive = false;
}
SetIsPlayingStreamingCDMusic(false);
SetIsPlayingStreamingGameMusic(false);
m_StreamState = eMusicStreamState_Idle;
m_musicID = -1;
m_iMusicDelay = 0;
}
#ifdef _WINDOWS64
char SoundEngine::m_szSoundPath[]={"Windows64Media\\Sound\\"};
@@ -904,8 +921,15 @@ void SoundEngine::playStreaming(const wstring& name, float x, float y, float z,
{
// jukebox
m_StreamingAudioInfo.bIs3D=true;
m_musicID=getMusicID(name);
m_iMusicDelay=0;
m_musicID = getMusicID(name);
m_iMusicDelay = 0;
if (m_StreamState == eMusicStreamState_Playing || m_StreamState == eMusicStreamState_Opening || m_musicStreamActive)
{
m_StreamState = eMusicStreamState_Fading;
m_musicFadeSecondsRemaining = MUSIC_FADE_DURATION_SECONDS;
m_musicFadeLastUpdateTime = std::chrono::steady_clock::now();
}
}
}
@@ -135,6 +135,7 @@ public:
void startElytraSound(float x, float y, float z, float volume, float pitch);
void stopElytraSound();
void playStreaming(const wstring& name, float x, float y , float z, float volume, float pitch, bool bMusicDelay=true) override;
void stopStreamingNow();
void playUI(int iSound, float volume, float pitch) override;
void playMusicTick() override;
void updateMusicVolume(float fVal) override;
@@ -0,0 +1,277 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:golden_apple</name>
<weight>20</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_apple</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>1</data>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:name_tag</name>
<weight>30</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:book</name>
<weight>10</weight>
<functions>
<function>
<function>enchant_randomly</function>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_pickaxe</name>
<weight>5</weight>
</entry>
<entry>
<type>empty</type>
<weight>5</weight>
</entry>
</entries>
</pool>
<pool>
<rolls>
<min>2</min>
<max>4</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>5</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:gold_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:redstone</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>4</min>
<max>9</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:dye</name>
<functions>
<function>
<function>set_data</function>
<data>4</data>
</function>
<function>
<function>set_count</function>
<count>
<min>4</min>
<max>9</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>2</max>
</count>
</function>
</functions>
<weight>3</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:coal</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>3</min>
<max>8</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:bread</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:melon_seeds</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>4</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:pumpkin_seeds</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>4</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:beetroot_seeds</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>4</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
</entries>
</pool>
<pool>
<rolls>3</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:rail</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>4</min>
<max>8</max>
</count>
</function>
</functions>
<weight>20</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_rail</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>4</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:detector_rail</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>4</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:activator_rail</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>4</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:torch</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>16</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,236 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>2</min>
<max>4</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:diamond</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>5</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:gold_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>7</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:emerald</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:bone</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>4</min>
<max>6</max>
</count>
</function>
</functions>
<weight>25</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:spider_eye</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>25</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:rotten_flesh</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>3</min>
<max>7</max>
</count>
</function>
</functions>
<weight>25</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:saddle</name>
<weight>20</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_horse_armor</name>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_horse_armor</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_horse_armor</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:book</name>
<weight>20</weight>
<functions>
<function>
<function>enchant_randomly</function>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_apple</name>
<weight>20</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_apple</name>
<weight>2</weight>
<functions>
<function>
<function>set_data</function>
<data>1</data>
</function>
</functions>
</entry>
<entry>
<type>empty</type>
<weight>15</weight>
</entry>
</entries>
</pool>
<pool>
<rolls>4</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:bone</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>8</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:gunpowder</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>8</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:rotten_flesh</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>8</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:string</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>8</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:sand</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>8</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,313 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>2</min>
<max>6</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:diamond</name>
<weight>5</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>7</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>4</min>
<max>8</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:gold_ingot</name>
<weight>15</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>7</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:emerald</name>
<weight>2</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>6</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:beetroot_seeds</name>
<weight>5</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>10</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:saddle</name>
<weight>3</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_sword</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_boots</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_chestplate</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_leggings</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_helmet</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_pickaxe</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_shovel</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_sword</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_boots</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_chestplate</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_leggings</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_helmet</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_pickaxe</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_shovel</name>
<weight>3</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<treasure>True</treasure>
<levels>
<min>20</min>
<max>39</max>
</levels>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,94 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>2</min>
<max>8</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:apple</name>
<weight>15</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:coal</name>
<weight>15</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>4</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:gold_nugget</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:stone_axe</name>
<weight>2</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:rotten_flesh</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:emerald</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:wheat</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>3</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:golden_apple</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,129 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>2</min>
<max>6</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:diamond</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>3</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>5</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:gold_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>7</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:emerald</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>2</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:bone</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>4</min>
<max>6</max>
</count>
</function>
</functions>
<weight>20</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:rotten_flesh</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>3</min>
<max>7</max>
</count>
</function>
</functions>
<weight>16</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:saddle</name>
<weight>3</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:book</name>
<weight>1</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<levels>30</levels>
<treasure>True</treasure>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,27 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>1</min>
<max>2</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:arrow</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>7</max>
</count>
</function>
</functions>
<weight>30</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,118 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>2</min>
<max>4</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:diamond</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>5</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:gold_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_sword</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_chestplate</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:flint_and_steel</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:nether_wart</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>3</min>
<max>7</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:saddle</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_horse_armor</name>
<weight>8</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_horse_armor</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_horse_armor</name>
<weight>3</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:obsidian</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>4</max>
</count>
</function>
</functions>
<weight>2</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,265 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>1</min>
<max>3</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:saddle</name>
<weight>20</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_apple</name>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_apple</name>
<weight>2</weight>
<functions>
<function>
<function>set_data</function>
<data>1</data>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:record_13</name>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:record_cat</name>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:name_tag</name>
<weight>20</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_horse_armor</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_horse_armor</name>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_horse_armor</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:book</name>
<weight>10</weight>
<functions>
<function>
<function>enchant_randomly</function>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>
<min>1</min>
<max>4</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>4</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:gold_ingot</name>
<weight>5</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>4</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:bread</name>
<weight>20</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:wheat</name>
<weight>20</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>4</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:bucket</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:redstone</name>
<weight>15</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>4</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:coal</name>
<weight>15</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>4</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:melon_seeds</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>4</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:pumpkin_seeds</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>4</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:beetroot_seeds</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>4</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
</entries>
</pool>
<pool>
<rolls>3</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:bone</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>8</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:gunpowder</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>8</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:rotten_flesh</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>8</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:string</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>8</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,161 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:stone_axe</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:wooden_axe</name>
<weight>3</weight>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:stone_pickaxe</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:wooden_pickaxe</name>
<weight>3</weight>
</entry>
</entries>
</pool>
<pool>
<rolls>3</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:apple</name>
<weight>5</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>2</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:bread</name>
<weight>3</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>2</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:fish</name>
<weight>3</weight>
<functions>
<function>
<function>set_data</function>
<data>1</data>
</function>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>2</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>4</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:stick</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>12</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:planks</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>12</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:log</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
<function>
<function>set_data</function>
<data>
<min>0</min>
<max>3</max>
</data>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:log2</name>
<weight>10</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
<function>
<function>set_data</function>
<data>
<min>0</min>
<max>1</max>
</data>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,169 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>2</min>
<max>3</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:ender_pearl</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>3</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>5</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:gold_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:redstone</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>4</min>
<max>9</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:bread</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:apple</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_pickaxe</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_sword</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_chestplate</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_helmet</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_leggings</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_boots</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_apple</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:saddle</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:book</name>
<weight>1</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<levels>30</levels>
<treasure>True</treasure>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,114 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>1</min>
<max>4</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>5</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:gold_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:redstone</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>4</min>
<max>9</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:coal</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>3</min>
<max>8</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:bread</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:apple</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_pickaxe</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:book</name>
<weight>1</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<levels>30</levels>
<treasure>True</treasure>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,63 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>2</min>
<max>10</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:book</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>20</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:paper</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>2</min>
<max>7</max>
</count>
</function>
</functions>
<weight>20</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:map</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:compass</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:book</name>
<weight>10</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<levels>30</levels>
<treasure>True</treasure>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,161 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>3</min>
<max>8</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:diamond</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>3</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>5</max>
</count>
</function>
</functions>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:gold_ingot</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:bread</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:apple</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
</functions>
<weight>15</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_pickaxe</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_sword</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_chestplate</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_helmet</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_leggings</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_boots</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:obsidian</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>3</min>
<max>7</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:sapling</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>3</min>
<max>7</max>
</count>
</function>
</functions>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:saddle</name>
<weight>3</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:iron_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:golden_horse_armor</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:diamond_horse_armor</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table/>
@@ -0,0 +1,70 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:blaze_rod</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
</conditions>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:glowstone_dust</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
</conditions>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,62 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:string</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:spider_eye</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>-1</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
</conditions>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,62 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:feather</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:chicken</name>
<weight>1</weight>
<functions>
<function>
<function>furnace_smelt</function>
<conditions>
<condition>
<condition>entity_properties</condition>
<entity>this</entity>
<properties>
<on_fire>True</on_fire>
</properties>
</condition>
</conditions>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,69 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:leather</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:beef</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
<function>
<function>furnace_smelt</function>
<conditions>
<condition>
<condition>entity_properties</condition>
<entity>this</entity>
<properties>
<on_fire>True</on_fire>
</properties>
</condition>
</conditions>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:gunpowder</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,103 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:prismarine_shard</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:fish</name>
<weight>3</weight>
<functions>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:prismarine_crystals</name>
<weight>2</weight>
<functions>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>empty</type>
<weight>1</weight>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:sponge</name>
<weight>1</weight>
</entry>
</entries>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
</conditions>
</pool>
<pool>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
<condition>
<condition>random_chance_with_looting</condition>
<chance>0.025</chance>
<looting_multiplier>0.01</looting_multiplier>
</condition>
</conditions>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:gameplay/fishing/fish</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:ender_pearl</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table/>
@@ -0,0 +1,57 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:ghast_tear</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:gunpowder</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table/>
@@ -0,0 +1,88 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:prismarine_shard</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:fish</name>
<weight>2</weight>
<functions>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:prismarine_crystals</name>
<weight>2</weight>
<functions>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>empty</type>
<weight>1</weight>
</entry>
</entries>
</pool>
<pool>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
<condition>
<condition>random_chance_with_looting</condition>
<chance>0.025</chance>
<looting_multiplier>0.01</looting_multiplier>
</condition>
</conditions>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:gameplay/fishing/fish</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,30 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:leather</name>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:magma_cream</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>-2</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,69 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:leather</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:beef</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
<function>
<function>furnace_smelt</function>
<conditions>
<condition>
<condition>entity_properties</condition>
<entity>this</entity>
<properties>
<on_fire>True</on_fire>
</properties>
</condition>
</conditions>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table/>
@@ -0,0 +1,43 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:porkchop</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
<function>
<function>furnace_smelt</function>
<conditions>
<condition>
<condition>entity_properties</condition>
<entity>this</entity>
<properties>
<on_fire>True</on_fire>
</properties>
</condition>
</conditions>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,77 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:rotten_flesh</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:gold_nugget</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
<condition>
<condition>random_chance_with_looting</condition>
<chance>0.025</chance>
<looting_multiplier>0.01</looting_multiplier>
</condition>
</conditions>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:gold_ingot</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,60 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:fish</name>
<weight>3</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
<function>
<function>set_data</function>
<data>0</data>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:fish</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
<function>
<function>set_data</function>
<data>1</data>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,82 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:rabbit_hide</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:rabbit</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
<function>
<function>furnace_smelt</function>
<conditions>
<condition>
<condition>entity_properties</condition>
<entity>this</entity>
<properties>
<on_fire>True</on_fire>
</properties>
</condition>
</conditions>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
<condition>
<condition>random_chance_with_looting</condition>
<chance>0.1</chance>
<looting_multiplier>0.03</looting_multiplier>
</condition>
</conditions>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:rabbit_foot</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,43 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:mutton</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>2</max>
</count>
</function>
<function>
<function>furnace_smelt</function>
<conditions>
<condition>
<condition>entity_properties</condition>
<entity>this</entity>
<properties>
<on_fire>True</on_fire>
</properties>
</condition>
</conditions>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>15</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>11</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>12</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>9</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>7</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>13</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>3</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>5</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>2</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>1</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>6</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>10</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>14</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>8</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>0</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:wool</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>4</data>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:entities/sheep</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table/>
@@ -0,0 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table/>
@@ -0,0 +1,57 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:arrow</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:bone</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,14 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:bone</name>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,31 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:slime_ball</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,24 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:snowball</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>15</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,62 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:string</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:spider_eye</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>-1</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
</conditions>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,35 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:dye</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>1</min>
<max>3</max>
</count>
</function>
<function>
<function>set_data</function>
<data>0</data>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,93 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:arrow</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:bone</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:tipped_arrow</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
<limit>1</limit>
</function>
<function>
<function>set_nbt</function>
<tag>{Potion:"slowness"}</tag>
</function>
</functions>
</entry>
</entries>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
</conditions>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,43 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:red_flower</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>3</min>
<max>5</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,160 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>
<min>1</min>
<max>3</max>
</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:glowstone_dust</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:sugar</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:redstone</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:spider_eye</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:glass_bottle</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:gunpowder</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:stick</name>
<weight>2</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,83 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:coal</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>-1</min>
<max>1</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:bone</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
<condition>
<condition>random_chance_with_looting</condition>
<chance>0.025</chance>
<looting_multiplier>0.01</looting_multiplier>
</condition>
</conditions>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:skull</name>
<weight>1</weight>
<functions>
<function>
<function>set_data</function>
<data>1</data>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table/>
@@ -0,0 +1,61 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:rotten_flesh</name>
<weight>1</weight>
<functions>
<function>
<function>set_count</function>
<count>
<min>0</min>
<max>2</max>
</count>
</function>
<function>
<function>looting_enchant</function>
<count>
<min>0</min>
<max>1</max>
</count>
</function>
</functions>
</entry>
</entries>
</pool>
<pool>
<conditions>
<condition>
<condition>killed_by_player</condition>
</condition>
<condition>
<condition>random_chance_with_looting</condition>
<chance>0.025</chance>
<looting_multiplier>0.01</looting_multiplier>
</condition>
</conditions>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:iron_ingot</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:carrot</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:potato</name>
<weight>1</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,14 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:rotten_flesh</name>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,28 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>loot_table</type>
<name>minecraft:gameplay/fishing/junk</name>
<weight>10</weight>
<quality>-2</quality>
</entry>
<entry>
<type>loot_table</type>
<name>minecraft:gameplay/fishing/treasure</name>
<weight>5</weight>
<quality>2</quality>
</entry>
<entry>
<type>loot_table</type>
<name>minecraft:gameplay/fishing/fish</name>
<weight>85</weight>
<quality>-1</quality>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,54 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:fish</name>
<functions>
<function>
<function>set_data</function>
<data>0</data>
</function>
</functions>
<weight>60</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:fish</name>
<functions>
<function>
<function>set_data</function>
<data>1</data>
</function>
</functions>
<weight>25</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:fish</name>
<functions>
<function>
<function>set_data</function>
<data>2</data>
</function>
</functions>
<weight>2</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:fish</name>
<functions>
<function>
<function>set_data</function>
<data>3</data>
</function>
</functions>
<weight>13</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,89 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:leather_boots</name>
<weight>10</weight>
<functions>
<function>
<function>set_damage</function>
<damage>
<min>0</min>
<max>0.9</max>
</damage>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:leather</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:bone</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:potion</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:string</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:fishing_rod</name>
<weight>2</weight>
<functions>
<function>
<function>set_damage</function>
<damage>
<min>0</min>
<max>0.9</max>
</damage>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:bowl</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:stick</name>
<weight>5</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:dye</name>
<weight>10</weight>
<functions>
<function>
<function>set_data</function>
<data>0</data>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:tripwire_hook</name>
<weight>10</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:rotten_flesh</name>
<weight>10</weight>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -0,0 +1,75 @@
<?xml version='1.0' encoding='UTF-8'?>
<loot_table>
<pools>
<pool>
<rolls>1</rolls>
<entries>
<entry>
<type>item</type>
<name>minecraft:waterlily</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:name_tag</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:saddle</name>
<weight>1</weight>
</entry>
<entry>
<type>item</type>
<name>minecraft:bow</name>
<weight>1</weight>
<functions>
<function>
<function>set_damage</function>
<damage>
<min>0</min>
<max>0.25</max>
</damage>
</function>
<function>
<function>enchant_with_levels</function>
<levels>30</levels>
<treasure>True</treasure>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:fishing_rod</name>
<weight>1</weight>
<functions>
<function>
<function>set_damage</function>
<damage>
<min>0</min>
<max>0.25</max>
</damage>
</function>
<function>
<function>enchant_with_levels</function>
<levels>30</levels>
<treasure>True</treasure>
</function>
</functions>
</entry>
<entry>
<type>item</type>
<name>minecraft:book</name>
<weight>1</weight>
<functions>
<function>
<function>enchant_with_levels</function>
<levels>30</levels>
<treasure>True</treasure>
</function>
</functions>
</entry>
</entries>
</pool>
</pools>
</loot_table>
@@ -677,6 +677,14 @@ void IUIScene_CreativeMenu::staticCtor()
debugSword->enchant( Enchantment::damageBonus, 50 );
debugSword->setHoverName(L"Sword of Debug");
list->push_back(debugSword);
/*
shared_ptr<ItemInstance> debugRod = std::make_shared<ItemInstance>(Item::fishing_rod_Id, 1, 0);
debugRod->enchant( Enchantment::lure, 50 );
debugRod->enchant( Enchantment::luckOfTheSea, 50 );
debugRod->setHoverName(L"Rod of Debug");
list->push_back(debugRod);
*/
}
#endif
+2 -1
View File
@@ -3566,8 +3566,9 @@ void LevelRenderer::levelEvent(shared_ptr<Player> source, int type, int x, int y
else
{
// 4J-PB - only play streaming music if there isn't already some playing - the CD playing may have finished, and game music started playing already
if(!mc->soundEngine->GetIsPlayingStreamingGameMusic())
if(mc->soundEngine->GetIsPlayingStreamingCDMusic())
{
mc->soundEngine->stopStreamingNow();
level[playerIndex]->playStreamingMusic(L"", x, y, z); // 4J - used to pass nullptr, but using empty string here now instead
}
}
+148 -1
View File
@@ -3648,6 +3648,149 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
}
}
#ifdef _WINDOWS64
static bool wasMiddleMouseDown = false;
const bool middleMouseDown = (iPad == 0 && g_KBMInput.IsKBMActive() && g_KBMInput.IsMouseGrabbed() && g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_MIDDLE));
const bool pickBlockPressed = middleMouseDown && !wasMiddleMouseDown;
wasMiddleMouseDown = middleMouseDown;
if (pickBlockPressed && gameMode->hasInfiniteItems() && hitResult != nullptr)
{
int pickedId = -1;
int pickedData = 0;
if (hitResult->type == HitResult::TILE)
{
const int hitX = hitResult->x;
const int hitY = hitResult->y;
const int hitZ = hitResult->z;
const int tileId = level->getTile(hitX, hitY, hitZ);
if (tileId > 0 && tileId < Tile::TILE_NUM_COUNT && Tile::tiles[tileId] != nullptr)
{
Tile *pickedTile = Tile::tiles[tileId];
const int tileData = level->getData(hitX, hitY, hitZ);
if (pickedTile->mayPick(tileData, false))
{
pickedId = pickedTile->cloneTileId(level, hitX, hitY, hitZ);
pickedData = pickedTile->cloneTileData(level, hitX, hitY, hitZ);
}
}
}
else if (hitResult->type == HitResult::ENTITY && hitResult->entity != nullptr)
{
shared_ptr<Entity> pickedEntity = hitResult->entity;
int eggAux = EntityIO::eTypeToIoid(pickedEntity->GetType());
if (eggAux >= 0)
{
if (pickedEntity->instanceof(eTYPE_GUARDIAN))
{
shared_ptr<Guardian> pickedGuardian = dynamic_pointer_cast<Guardian>(pickedEntity);
if (pickedGuardian != nullptr && pickedGuardian->isElder())
{
eggAux = EntityIO::eTypeToIoid(eTYPE_ELDER_GUARDIAN);
}
}
else if (pickedEntity->instanceof(eTYPE_HORSE))
{
shared_ptr<EntityHorse> pickedHorse = dynamic_pointer_cast<EntityHorse>(pickedEntity);
if (pickedHorse != nullptr)
{
const int horseType = pickedHorse->getType();
if (horseType != EntityHorse::TYPE_HORSE)
{
eggAux = (eggAux & 0xFFF) | ((horseType + 1) << 12);
}
}
}
else if (pickedEntity->instanceof(eTYPE_OCELOT))
{
shared_ptr<Ocelot> pickedOcelot = dynamic_pointer_cast<Ocelot>(pickedEntity);
if (pickedOcelot != nullptr)
{
const int catType = pickedOcelot->getCatType();
if (catType != Ocelot::TYPE_OCELOT)
{
eggAux = (eggAux & 0xFFF) | ((catType + 1) << 12);
}
}
}
auto spawnEggIt = EntityIO::idsSpawnableInCreative.find(eggAux);
if (spawnEggIt == EntityIO::idsSpawnableInCreative.end())
{
const int fallbackEggAux = eggAux & 0xFFF;
auto fallbackIt = EntityIO::idsSpawnableInCreative.find(fallbackEggAux);
if (fallbackIt != EntityIO::idsSpawnableInCreative.end())
{
eggAux = fallbackEggAux;
}
else
{
eggAux = -1;
}
}
if (eggAux >= 0 && Item::spawn_egg_Id >= 0 && Item::spawn_egg_Id < Item::items.length && Item::items[Item::spawn_egg_Id] != nullptr)
{
pickedId = Item::spawn_egg_Id;
pickedData = eggAux;
}
}
}
if (pickedId >= 0 && pickedId < Item::items.length && Item::items[pickedId] != nullptr)
{
shared_ptr<Inventory> playerInventory = player->inventory;
const int previousSelected = playerInventory->selected;
const int fallbackSelected = (previousSelected >= 0 && previousSelected < Inventory::getSelectionSize()) ? previousSelected : 0;
int targetSlot = -1;
for (int slot = 0; slot < Inventory::getSelectionSize(); ++slot)
{
shared_ptr<ItemInstance> hotbarItem = playerInventory->items[slot];
if (hotbarItem != nullptr && hotbarItem->id == pickedId &&
(!hotbarItem->isStackedByData() || hotbarItem->getAuxValue() == pickedData))
{
targetSlot = slot;
break;
}
}
if (targetSlot < 0)
{
for (int slot = 0; slot < Inventory::getSelectionSize(); ++slot)
{
if (playerInventory->items[slot] == nullptr)
{
targetSlot = slot;
break;
}
}
if (targetSlot < 0)
{
targetSlot = fallbackSelected;
}
playerInventory->items[targetSlot] = std::make_shared<ItemInstance>(Item::items[pickedId], 1, pickedData);
gameMode->handleCreativeModeItemAdd(playerInventory->items[targetSlot], 36 + targetSlot);
}
playerInventory->selected = targetSlot;
if( gameMode != nullptr && gameMode->getTutorial() != nullptr )
{
gameMode->getTutorial()->onSelectedItemChanged(playerInventory->getSelected());
}
player->updateRichPresence();
}
}
#endif
if( gameMode->isInputAllowed(MINECRAFT_ACTION_ACTION) )
{
if((player->ullButtonsPressed&(1LL<<MINECRAFT_ACTION_ACTION)))
@@ -4398,7 +4541,11 @@ void Minecraft::setLevel(MultiPlayerLevel *level, int message /*=-1*/, shared_pt
#endif
// Stop menu music and transition to game music for the new level
soundEngine->playStreaming(L"", 0, 0, 0, 1, 1);
if (soundEngine != nullptr)
{
soundEngine->stopStreamingNow();
soundEngine->playStreaming(L"", 0, 0, 0, 1, 1);
}
// 4J - stop update thread from processing this level, which blocks until it is safe to move on - will be re-enabled if we set the level to be non-nullptr
gameRenderer->DisableUpdateThread();
-248
View File
@@ -1,248 +0,0 @@
#include "stdafx.h"
#include "ModelPart.h"
#include "../Minecraft.World/net.minecraft.world.entity.animal.h"
#include "../Minecraft.World/Mth.h"
#include "OzelotModel.h"
const float OzelotModel::xo = 0;
const float OzelotModel::yo = 16;
const float OzelotModel::zo = -9;
const float OzelotModel::headWalkY = -1 + yo;
const float OzelotModel::headWalkZ = 0 + zo;
const float OzelotModel::bodyWalkY = -4 + yo;
const float OzelotModel::bodyWalkZ = -1 + zo;
const float OzelotModel::tail1WalkY = -1 + yo;
const float OzelotModel::tail1WalkZ = 17 + zo;
const float OzelotModel::tail2WalkY = 4 + yo;
const float OzelotModel::tail2WalkZ = 23 + zo;
const float OzelotModel::backLegY = 2.f + yo;
const float OzelotModel::backLegZ = 14 + zo;
const float OzelotModel::frontLegY = -2.2f + yo;
const float OzelotModel::frontLegZ = 4.f + zo;
OzelotModel::OzelotModel()
{
state = WALK_STATE;
setMapTex(L"head.main", 0, 0);
setMapTex(L"head.nose", 0, 24);
setMapTex(L"head.ear1", 0, 10);
setMapTex(L"head.ear2", 6, 10);
head = new ModelPart(this, L"head");
head->addBox(L"main", -2.5f, -2, -3, 5, 4, 5);
head->addBox(L"nose", -1.5f, 0, -4, 3, 2, 2);
head->addBox(L"ear1", -2, -3, 0, 1, 1, 2);
head->addBox(L"ear2", 1, -3, 0, 1, 1, 2);
head->setPos(0 + xo, headWalkY, headWalkZ);
body = new ModelPart(this, 20, 0);
body->addBox(-2, 3, -8, 4, 16, 6, 0);
body->setPos(0 + xo, bodyWalkY, bodyWalkZ);
tail1 = new ModelPart(this, 0, 15);
tail1->addBox(-0.5f, 0, 0, 1, 8, 1);
tail1->xRot = 0.9f;
tail1->setPos(0 + xo, tail1WalkY, tail1WalkZ);
tail2 = new ModelPart(this, 4, 15);
tail2->addBox(-0.5f, 0, 0, 1, 8, 1);
tail2->setPos(0 + xo, tail2WalkY, tail2WalkZ);
backLegL = new ModelPart(this, 8, 13);
backLegL->addBox(-1, 0, 1, 2, 6, 2);
backLegL->setPos(1.1f + xo, backLegY, backLegZ);
backLegR = new ModelPart(this, 8, 13);
backLegR->addBox(-1, 0, 1, 2, 6, 2);
backLegR->setPos(-1.1f + xo, backLegY, backLegZ);
frontLegL = new ModelPart(this, 40, 0);
frontLegL->addBox(-1, 0, 0, 2, 10, 2);
frontLegL->setPos(1.2f + xo, frontLegY, frontLegZ);
frontLegR = new ModelPart(this, 40, 0);
frontLegR->addBox(-1, 0, 0, 2, 10, 2);
frontLegR->setPos(-1.2f + xo, frontLegY, frontLegZ);
// 4J added - compile now to avoid random performance hit first time cubes are rendered
head->compile(1.0f/16.0f);
body->compile(1.0f/16.0f);
tail1->compile(1.0f/16.0f);
tail2->compile(1.0f/16.0f);
backLegL->compile(1.0f/16.0f);
backLegR->compile(1.0f/16.0f);
backLegL->compile(1.0f/16.0f);
backLegR->compile(1.0f/16.0f);
}
void OzelotModel::render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled)
{
setupAnim(time, r, bob, yRot, xRot, scale);
if (young)
{
float ss = 2.0f;
glPushMatrix();
glScalef(1.5f / ss, 1.5f / ss, 1.5f / ss);
glTranslatef(0, 10 * scale, 4 * scale);
head->render(scale, usecompiled);
glPopMatrix();
glPushMatrix();
glScalef(1 / ss, 1 / ss, 1 / ss);
glTranslatef(0, 24 * scale, 0);
body->render(scale, usecompiled);
backLegL->render(scale, usecompiled);
backLegR->render(scale, usecompiled);
frontLegL->render(scale, usecompiled);
frontLegR->render(scale, usecompiled);
tail1->render(scale, usecompiled);
tail2->render(scale, usecompiled);
glPopMatrix();
}
else
{
head->render(scale, usecompiled);
body->render(scale, usecompiled);
tail1->render(scale, usecompiled);
tail2->render(scale, usecompiled);
backLegL->render(scale, usecompiled);
backLegR->render(scale, usecompiled);
frontLegL->render(scale, usecompiled);
frontLegR->render(scale, usecompiled);
}
}
void OzelotModel::render(OzelotModel *model, float scale, bool usecompiled)
{
head->yRot = model->head->yRot;
head->xRot = model->head->xRot;
head->y = model->head->y;
head->x = model->head->x;
body->yRot = model->body->yRot;
body->xRot = model->body->xRot;
tail1->yRot = model->body->yRot;
tail1->y = model->body->y;
tail1->x = model->body->x;
tail1->render(scale, usecompiled);
tail2->yRot = model->body->yRot;
tail2->y = model->body->y;
tail2->x = model->body->x;
tail2->render(scale, usecompiled);
backLegL->xRot = model->backLegL->xRot;
backLegR->xRot = model->backLegR->xRot;
backLegL->render(scale, usecompiled);
backLegR->render(scale, usecompiled);
frontLegL->xRot = model->frontLegL->xRot;
frontLegR->xRot = model->frontLegR->xRot;
frontLegL->render(scale, usecompiled);
frontLegR->render(scale, usecompiled);
head->render(scale, usecompiled);
body->render(scale, usecompiled);
}
void OzelotModel::setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, unsigned int uiBitmaskOverrideAnim)
{
head->xRot = xRot / (float) (180 / PI);
head->yRot = yRot / (float) (180 / PI);
if (state == SITTING_STATE)
{
}
else
{
body->xRot = 90 / (float) (180 / PI);
if (state == SPRINT_STATE)
{
backLegL->xRot = ((float) Mth::cos(time * 0.6662f) * 1.f) * r;
backLegR->xRot = ((float) Mth::cos(time * 0.6662f + 0.3f) * 1.f) * r;
frontLegL->xRot = ((float) Mth::cos(time * 0.6662f + PI + 0.3f) * 1.f) * r;
frontLegR->xRot = ((float) Mth::cos(time * 0.6662f + PI) * 1.f) * r;
tail2->xRot = 0.55f * PI + 0.1f * PI * Mth::cos(time) * r;
}
else
{
backLegL->xRot = ((float) Mth::cos(time * 0.6662f) * 1.f) * r;
backLegR->xRot = ((float) Mth::cos(time * 0.6662f + PI) * 1.f) * r;
frontLegL->xRot = ((float) Mth::cos(time * 0.6662f + PI) * 1.f) * r;
frontLegR->xRot = ((float) Mth::cos(time * 0.6662f) * 1.f) * r;
if (state == WALK_STATE) tail2->xRot = 0.55f * PI + 0.25f * PI * Mth::cos(time) * r;
else tail2->xRot = 0.55f * PI + 0.15f * PI * Mth::cos(time) * r;
}
}
}
void OzelotModel::prepareMobModel(shared_ptr<Mob> mob, float time, float r, float a)
{
shared_ptr<Ozelot> ozelot = dynamic_pointer_cast<Ozelot>(mob);
body->y = bodyWalkY;
body->z = bodyWalkZ;
head->y = headWalkY;
head->z = headWalkZ;
tail1->y = tail1WalkY;
tail1->z = tail1WalkZ;
tail2->y = tail2WalkY;
tail2->z = tail2WalkZ;
frontLegL->y = frontLegR->y = frontLegY;
frontLegL->z = frontLegR->z = frontLegZ;
backLegL->y = backLegR->y = backLegY;
backLegL->z = backLegR->z = backLegZ;
tail1->xRot = 0.9f;
if (ozelot->isSneaking())
{
body->y += 1;
head->y += 2;
tail1->y += 1;
tail2->y += -4;
tail2->z += 2;
tail1->xRot = 0.5f * PI;
tail2->xRot = 0.5f * PI;
state = SNEAK_STATE;
}
else if (ozelot->isSprinting())
{
tail2->y = tail1->y;
tail2->z += 2;
tail1->xRot = 0.5f * PI;
tail2->xRot = 0.5f * PI;
state = SPRINT_STATE;
}
else if (ozelot->isSitting())
{
body->xRot = 45 / (float) (180 / PI);
body->y += -4;
body->z += 5;
head->y += -3.3f;
head->z += 1;
tail1->y += 8;
tail1->z += -2;
tail2->y += 2;
tail2->z += -0.8f;
tail1->xRot = PI * 0.55f;
tail2->xRot = PI * 0.85f;
frontLegL->xRot = frontLegR->xRot = -PI * 0.05f;
frontLegL->y = frontLegR->y = frontLegY + 2;
frontLegL->z = frontLegR->z = -7;
backLegL->xRot = backLegR->xRot = -PI * 0.5f;
backLegL->y = backLegR->y = backLegY + 3;
backLegL->z = backLegR->z = backLegZ - 4;
state = SITTING_STATE;
}
else
{
state = WALK_STATE;
}
}
-43
View File
@@ -1,43 +0,0 @@
#pragma once
#include "Model.h"
class OzelotModel : public Model
{
private:
ModelPart *backLegL, *backLegR;
ModelPart *frontLegL, *frontLegR;
ModelPart *tail1, *tail2, *head, *body;
static const int SNEAK_STATE = 0;
static const int WALK_STATE = 1;
static const int SPRINT_STATE = 2;
static const int SITTING_STATE = 3;
int state;
static const float xo;
static const float yo;
static const float zo;
static const float headWalkY;
static const float headWalkZ;
static const float bodyWalkY;
static const float bodyWalkZ;
static const float tail1WalkY;
static const float tail1WalkZ;
static const float tail2WalkY;
static const float tail2WalkZ;
static const float backLegY;
static const float backLegZ;
static const float frontLegY;
static const float frontLegZ ;
public:
OzelotModel();
void render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled);
void render(OzelotModel *model, float scale, bool usecompiled);
void setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, unsigned int uiBitmaskOverrideAnim=0);
void prepareMobModel(shared_ptr<Mob> mob, float time, float r, float a);
};
-24
View File
@@ -1,24 +0,0 @@
#include "stdafx.h"
#include "../Minecraft.World/net.minecraft.world.entity.animal.h"
#include "OzelotRenderer.h"
OzelotRenderer::OzelotRenderer(Model *model, float shadow) : MobRenderer(model, shadow)
{
}
void OzelotRenderer::render(shared_ptr<Entity> _mob, double x, double y, double z, float rot, float a)
{
MobRenderer::render(_mob, x, y, z, rot, a);
}
void OzelotRenderer::scale(shared_ptr<Mob> _mob, float a)
{
// 4J - original version used generics and thus had an input parameter of type Blaze rather than shared_ptr<Entity> we have here -
// do some casting around instead
shared_ptr<Ozelot> mob = dynamic_pointer_cast<Ozelot>(_mob);
MobRenderer::scale(mob, a);
if (mob->isTame())
{
glScalef(.8f, .8f, .8f);
}
}
-14
View File
@@ -1,14 +0,0 @@
#pragma once
#include "MobRenderer.h"
class OzelotRenderer : public MobRenderer
{
public:
OzelotRenderer(Model *model, float shadow);
void render(shared_ptr<Entity> _mob, double x, double y, double z, float rot, float a);
protected:
void scale(shared_ptr<Mob> _mob, float a);
};
+1 -1
View File
@@ -1001,7 +1001,7 @@ void ServerLevel::generateBonusItemsNearSpawn()
}
}
BonusChestFeature *feature = new BonusChestFeature(RANDOM_BONUS_ITEMS, 16);
BonusChestFeature *feature = new BonusChestFeature("chests/spawn_bonus_chest");
for (int attempt = 0; attempt < 16; attempt++)
{
int x = levelData->getXSpawn() + random->nextInt(6) - random->nextInt(6);
+4
View File
@@ -41,6 +41,10 @@ void VillagerZombieModel::_init(float g, float yOffset, bool isArmor)
pants1->addBox(0, 0, 0, 0, 0, 0, g);
pants1->setPos(0, 0 + yOffset, 0);
jacket = new ModelPart(this, 40, 16);
jacket->addBox(0, 0, 0, 0, 0, 0, g);
jacket->setPos(0, 0 + yOffset, 0);
delete arm1;
arm1 = new ModelPart(this, 40, 16);
arm1->bMirror = true;