mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-09-27 14:59:09 +02:00
optimizations
This commit is contained in:
@@ -22,6 +22,7 @@ import com.gmail.nossr50.util.skills.SkillTools;
|
||||
import com.gmail.nossr50.util.sounds.SoundManager;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.inventory.ItemFactory;
|
||||
@@ -46,7 +47,6 @@ public abstract class MMOTestEnvironment {
|
||||
protected MockedStatic<RankUtils> mockedRankUtils;
|
||||
protected MockedStatic<UserManager> mockedUserManager;
|
||||
protected MockedStatic<Misc> mockedMisc;
|
||||
protected MockedStatic<SkillTools> mockedSkillTools;
|
||||
protected MockedStatic<EventUtils> mockedEventUtils;
|
||||
protected MockedStatic<NotificationManager> notificationManager;
|
||||
protected MockedStatic<SoundManager> mockedSoundManager;
|
||||
@@ -91,10 +91,6 @@ public abstract class MMOTestEnvironment {
|
||||
chunkManager = mock(ChunkManager.class);
|
||||
when(mcMMO.getUserBlockTracker()).thenReturn(chunkManager);
|
||||
|
||||
// shut off mod manager for woodcutting
|
||||
when(mcMMO.getModManager()).thenReturn(mock(ModManager.class));
|
||||
when(mcMMO.getModManager().isCustomLog(any())).thenReturn(false);
|
||||
|
||||
// chat config
|
||||
mockedChatConfig = mockStatic(ChatConfig.class);
|
||||
when(ChatConfig.getInstance()).thenReturn(mock(ChatConfig.class));
|
||||
@@ -154,7 +150,8 @@ public abstract class MMOTestEnvironment {
|
||||
|
||||
// wire Misc
|
||||
this.mockedMisc = mockStatic(Misc.class);
|
||||
when(Misc.getBlockCenter(any())).thenReturn(new Location(world, 0, 0, 0));
|
||||
when(Misc.getBlockCenter(any(Block.class))).thenReturn(new Location(world, 0, 0, 0));
|
||||
when(Misc.getBlockCenter(any(BlockState.class))).thenReturn(new Location(world, 0, 0, 0));
|
||||
|
||||
// setup player and player related mocks after everything else
|
||||
this.player = mock(Player.class);
|
||||
|
@@ -60,21 +60,17 @@ class ExcavationTest extends MMOTestEnvironment {
|
||||
mmoPlayer.modifySkill(PrimarySkillType.EXCAVATION, 1000);
|
||||
|
||||
// Wire block
|
||||
BlockState blockState = Mockito.mock(BlockState.class);
|
||||
BlockData blockData = Mockito.mock(BlockData.class);
|
||||
Block block = Mockito.mock(Block.class);
|
||||
when(blockState.getBlockData()).thenReturn(blockData);
|
||||
when(blockState.getType()).thenReturn(Material.SAND);
|
||||
when(blockData.getMaterial()).thenReturn(Material.SAND);
|
||||
when(blockState.getBlock()).thenReturn(block);
|
||||
when(blockState.getBlock().getDrops(any())).thenReturn(null);
|
||||
when(block.getType()).thenReturn(Material.SAND);
|
||||
when(block.getDrops(any())).thenReturn(null);
|
||||
|
||||
ExcavationManager excavationManager = Mockito.spy(new ExcavationManager(mmoPlayer));
|
||||
doReturn(getGuaranteedTreasureDrops()).when(excavationManager).getTreasures(blockState);
|
||||
excavationManager.excavationBlockCheck(blockState);
|
||||
doReturn(getGuaranteedTreasureDrops()).when(excavationManager).getTreasures(block);
|
||||
excavationManager.excavationBlockCheck(block);
|
||||
|
||||
// verify ExcavationManager.processExcavationBonusesOnBlock was called
|
||||
verify(excavationManager, atLeastOnce()).processExcavationBonusesOnBlock(any(BlockState.class), any(ExcavationTreasure.class), any(Location.class));
|
||||
verify(excavationManager, atLeastOnce()).processExcavationBonusesOnBlock(
|
||||
any(ExcavationTreasure.class), any(Location.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -82,21 +78,17 @@ class ExcavationTest extends MMOTestEnvironment {
|
||||
mmoPlayer.modifySkill(PrimarySkillType.EXCAVATION, 1000);
|
||||
|
||||
// Wire block
|
||||
BlockState blockState = Mockito.mock(BlockState.class);
|
||||
BlockData blockData = Mockito.mock(BlockData.class);
|
||||
Block block = Mockito.mock(Block.class);
|
||||
when(blockState.getBlockData()).thenReturn(blockData);
|
||||
when(blockState.getType()).thenReturn(Material.SAND);
|
||||
when(blockData.getMaterial()).thenReturn(Material.SAND);
|
||||
when(blockState.getBlock()).thenReturn(block);
|
||||
when(blockState.getBlock().getDrops(any())).thenReturn(null);
|
||||
when(block.getType()).thenReturn(Material.SAND);
|
||||
when(block.getDrops(any())).thenReturn(null);
|
||||
|
||||
ExcavationManager excavationManager = Mockito.spy(new ExcavationManager(mmoPlayer));
|
||||
doReturn(getImpossibleTreasureDrops()).when(excavationManager).getTreasures(blockState);
|
||||
excavationManager.excavationBlockCheck(blockState);
|
||||
doReturn(getImpossibleTreasureDrops()).when(excavationManager).getTreasures(block);
|
||||
excavationManager.excavationBlockCheck(block);
|
||||
|
||||
// verify ExcavationManager.processExcavationBonusesOnBlock was called
|
||||
verify(excavationManager, never()).processExcavationBonusesOnBlock(any(BlockState.class), any(ExcavationTreasure.class), any(Location.class));
|
||||
verify(excavationManager, never()).processExcavationBonusesOnBlock(any(ExcavationTreasure.class),
|
||||
any(Location.class));
|
||||
}
|
||||
|
||||
private List<ExcavationTreasure> getGuaranteedTreasureDrops() {
|
||||
|
@@ -8,7 +8,6 @@ import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||
import com.gmail.nossr50.util.skills.RankUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
@@ -62,42 +61,36 @@ class WoodcuttingTest extends MMOTestEnvironment {
|
||||
void harvestLumberShouldDoubleDrop() {
|
||||
mmoPlayer.modifySkill(PrimarySkillType.WOODCUTTING, 1000);
|
||||
|
||||
BlockState blockState = Mockito.mock(BlockState.class);
|
||||
Block block = Mockito.mock(Block.class);
|
||||
// wire block
|
||||
Mockito.when(blockState.getBlock()).thenReturn(block);
|
||||
|
||||
// return empty collection if ItemStack
|
||||
Mockito.when(blockState.getBlock().getDrops(any())).thenReturn(Collections.emptyList());
|
||||
Mockito.when(blockState.getType()).thenReturn(Material.OAK_LOG);
|
||||
woodcuttingManager.processBonusDropCheck(blockState);
|
||||
Mockito.when(block.getDrops(any())).thenReturn(Collections.emptyList());
|
||||
Mockito.when(block.getType()).thenReturn(Material.OAK_LOG);
|
||||
woodcuttingManager.processBonusDropCheck(block);
|
||||
|
||||
// verify bonus drops were spawned
|
||||
// TODO: using at least once since triple drops can also happen
|
||||
// TODO: Change the test env to disallow triple drop in the future
|
||||
Mockito.verify(woodcuttingManager, Mockito.atLeastOnce()).spawnHarvestLumberBonusDrops(blockState);
|
||||
Mockito.verify(woodcuttingManager, Mockito.atLeastOnce()).spawnHarvestLumberBonusDrops(block);
|
||||
}
|
||||
|
||||
@Test
|
||||
void harvestLumberShouldNotDoubleDrop() {
|
||||
mmoPlayer.modifySkill(PrimarySkillType.WOODCUTTING, 0);
|
||||
|
||||
BlockState blockState = Mockito.mock(BlockState.class);
|
||||
Block block = Mockito.mock(Block.class);
|
||||
// wire block
|
||||
Mockito.when(blockState.getBlock()).thenReturn(block);
|
||||
|
||||
Mockito.when(blockState.getBlock().getDrops(any())).thenReturn(null);
|
||||
Mockito.when(blockState.getType()).thenReturn(Material.OAK_LOG);
|
||||
woodcuttingManager.processBonusDropCheck(blockState);
|
||||
Mockito.when(block.getDrops(any())).thenReturn(null);
|
||||
Mockito.when(block.getType()).thenReturn(Material.OAK_LOG);
|
||||
woodcuttingManager.processBonusDropCheck(block);
|
||||
|
||||
// verify bonus drops were not spawned
|
||||
Mockito.verify(woodcuttingManager, Mockito.times(0)).spawnHarvestLumberBonusDrops(blockState);
|
||||
Mockito.verify(woodcuttingManager, Mockito.times(0)).spawnHarvestLumberBonusDrops(block);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testProcessWoodcuttingBlockXP() {
|
||||
BlockState targetBlock = Mockito.mock(BlockState.class);
|
||||
Block targetBlock = Mockito.mock(Block.class);
|
||||
Mockito.when(targetBlock.getType()).thenReturn(Material.OAK_LOG);
|
||||
// wire XP
|
||||
Mockito.when(ExperienceConfig.getInstance().getXp(PrimarySkillType.WOODCUTTING, Material.OAK_LOG)).thenReturn(5);
|
||||
|
Reference in New Issue
Block a user