Update BA Plugins, Update from RL master (#226)
* xp tracker: display >1m exp with thousandths precision * fishing plugin: fix trawler timer with one tick left * Remove gray pixel from Dragon Scimitar cursor (#8725) * client: add smelting plugin Co-authored-by: Adam <Adam@sigterm.info> * constants: add GAME_TICK_LENGTH and use where needed Also update many usages of 20ms to CLIENT_TICK_LENGTH * regenmeter: add option to notify before next hp regen * barrows plugin: add prayer drain timer * chat: ensure queued messages are always cleared after adding Mark queued message type as non null because addChatMessage will throw if it is. This was causing the client to get stuck trying to add the same broken message each loop. * party plugin: add partyinfo debug command * party service: check joins are for the current party The server can resume party membership on handshake to parties other than the current client party (eg. if the client is restarted or for any other reason the current party changes). This desyncs otherwise if the joins aren't checked to be in the current party. * Updated barbassault/ba tools * Update
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Stephen <stepzhu@umich.edu>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.plugins.smelting;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.testing.fieldbinder.Bind;
|
||||
import com.google.inject.testing.fieldbinder.BoundFieldModule;
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.runners.MockitoJUnitRunner;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class SmeltingPluginTest
|
||||
{
|
||||
private static final String SMELT_CANNONBALL = "You remove the cannonballs from the mould";
|
||||
private static final String SMELT_BAR = "You retrieve a bar of steel.";
|
||||
|
||||
@Inject
|
||||
SmeltingPlugin smeltingPlugin;
|
||||
|
||||
@Mock
|
||||
@Bind
|
||||
SmeltingConfig config;
|
||||
|
||||
@Mock
|
||||
@Bind
|
||||
SmeltingOverlay smeltingOverlay;
|
||||
|
||||
@Mock
|
||||
@Bind
|
||||
OverlayManager overlayManager;
|
||||
|
||||
@Before
|
||||
public void before()
|
||||
{
|
||||
Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCannonballs()
|
||||
{
|
||||
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.SPAM, "", SMELT_CANNONBALL, "", 0);
|
||||
smeltingPlugin.onChatMessage(chatMessage);
|
||||
|
||||
SmeltingSession smeltingSession = smeltingPlugin.getSession();
|
||||
assertNotNull(smeltingSession);
|
||||
assertEquals(4, smeltingSession.getCannonBallsSmelted());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBars()
|
||||
{
|
||||
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.SPAM, "", SMELT_BAR, "", 0);
|
||||
smeltingPlugin.onChatMessage(chatMessage);
|
||||
|
||||
SmeltingSession smeltingSession = smeltingPlugin.getSession();
|
||||
assertNotNull(smeltingSession);
|
||||
assertEquals(1, smeltingSession.getBarsSmelted());
|
||||
}
|
||||
}
|
||||
@@ -97,6 +97,31 @@ public class StackFormatterTest
|
||||
assertEquals("-400B", StackFormatter.quantityToStackSize(-400_000_000_000L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void quantityToPreciseStackSize()
|
||||
{
|
||||
assertEquals("0", StackFormatter.quantityToRSDecimalStack(0));
|
||||
assertEquals("8500", StackFormatter.quantityToRSDecimalStack(8_500, true));
|
||||
assertEquals("10K", StackFormatter.quantityToRSDecimalStack(10_000, true));
|
||||
assertEquals("21.7K", StackFormatter.quantityToRSDecimalStack(21_710, true));
|
||||
assertEquals("100K", StackFormatter.quantityToRSDecimalStack(100_000, true));
|
||||
assertEquals("100.3K", StackFormatter.quantityToRSDecimalStack(100_310, true));
|
||||
assertEquals("1M", StackFormatter.quantityToRSDecimalStack(1_000_000, true));
|
||||
assertEquals("8.45M", StackFormatter.quantityToRSDecimalStack(8_450_000, true));
|
||||
assertEquals("8.451M", StackFormatter.quantityToRSDecimalStack(8_451_000, true));
|
||||
assertEquals("10M", StackFormatter.quantityToRSDecimalStack(10_000_000, true));
|
||||
assertEquals("12.8M", StackFormatter.quantityToRSDecimalStack(12_800_000, true));
|
||||
assertEquals("12.85M", StackFormatter.quantityToRSDecimalStack(12_850_000, true));
|
||||
assertEquals("12.851M", StackFormatter.quantityToRSDecimalStack(12_851_000, true));
|
||||
assertEquals("100M", StackFormatter.quantityToRSDecimalStack(100_000_000, true));
|
||||
assertEquals("250.1M", StackFormatter.quantityToRSDecimalStack(250_100_000, true));
|
||||
assertEquals("250.151M", StackFormatter.quantityToRSDecimalStack(250_151_000, true));
|
||||
assertEquals("1B", StackFormatter.quantityToRSDecimalStack(1_000_000_000, true));
|
||||
assertEquals("1.5B", StackFormatter.quantityToRSDecimalStack(1500_000_000, true));
|
||||
assertEquals("1.55B", StackFormatter.quantityToRSDecimalStack(1550_000_000, true));
|
||||
assertEquals("2.147B", StackFormatter.quantityToRSDecimalStack(Integer.MAX_VALUE, true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void stackSizeToQuantity() throws ParseException
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user