unrevert some stuff

This commit is contained in:
ThatGamerBlue
2021-02-26 19:35:19 +00:00
parent 77d881ac61
commit 2a755eb7ed
7 changed files with 213 additions and 2 deletions

View File

@@ -1637,6 +1637,34 @@ public interface Client extends GameEngine
*/
void setHideSpecificPlayers(List<String> names);
/**
* Get the list of NPC indices that are currently hidden
*
* @return all of the current hidden NPC Indices
*/
List<Integer> getHiddenNpcIndices();
/**
* If an NPC index is in this List then do not render it
*
* @param npcIndices the npc indices to hide
*/
void setHiddenNpcIndices(List<Integer> npcIndices);
/**
* Increments the counter for how many times this npc has been selected to be hidden
*
* @param name npc name
*/
void addHiddenNpcName(String name);
/**
* Decrements the counter for how many times this npc has been selected to be hidden
*
* @param name npc name
*/
void removeHiddenNpcName(String name);
/**
* Sets whether projectiles are hidden.
*

View File

@@ -66,6 +66,7 @@ import net.runelite.client.discord.DiscordService;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.externalplugins.ExternalPluginManager;
import net.runelite.client.game.WorldService;
import net.runelite.client.game.XpDropManager;
import net.runelite.client.plugins.OPRSExternalPluginManager;
import net.runelite.client.rs.ClientLoader;
import net.runelite.client.rs.ClientUpdateCheckMode;
@@ -139,6 +140,9 @@ public class RuneLite
@Inject
private Provider<WorldMapOverlay> worldMapOverlay;
@Inject
private Provider<XpDropManager> xpDropManager;
@Inject
private WorldService worldService;
@@ -382,6 +386,9 @@ public class RuneLite
WidgetOverlay.createOverlays(client).forEach(overlayManager::add);
overlayManager.add(worldMapOverlay.get());
overlayManager.add(tooltipOverlay.get());
// legacy method, i cant figure out how to make it work without garbage
eventBus.register(xpDropManager.get());
}
// Start plugins

View File

@@ -0,0 +1,35 @@
/*
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* 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.events;
import lombok.Value;
import net.runelite.api.Skill;
@Value
public class XpDropEvent
{
Skill skill;
int exp;
}

View File

@@ -0,0 +1,65 @@
/*
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* 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.game;
import java.util.EnumMap;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Client;
import net.runelite.api.Skill;
import net.runelite.api.events.StatChanged;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.XpDropEvent;
@Singleton
public class XpDropManager
{
private final Map<Skill, Integer> previousSkillExpTable = new EnumMap<>(Skill.class);
private final Client client;
private final EventBus eventBus;
@Inject
private XpDropManager(Client client, EventBus eventBus)
{
this.client = client;
this.eventBus = eventBus;
}
@Subscribe
private void onStatChanged(StatChanged event)
{
final Skill skill = event.getSkill();
final int xp = client.getSkillExperience(skill);
Integer previous = previousSkillExpTable.put(skill, xp);
if (previous != null)
{
int previousExpGained = xp - previous;
XpDropEvent xpDropEvent = new XpDropEvent(skill, previousExpGained);
eventBus.post(xpDropEvent);
}
}
}

View File

@@ -35,8 +35,8 @@ dependencies {
tasks {
java {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
disableAutoTargetJvm()
}
withType<JavaCompile> {

View File

@@ -25,6 +25,8 @@
*/
package net.runelite.mixins;
import java.util.HashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.rs.api.RSClient;
@@ -80,6 +82,12 @@ public abstract class EntityHiderBridgeMixin implements RSClient
@Inject
public static List<String> hideSpecificPlayers = new ArrayList<>();
@Inject
public static HashMap<String, Integer> hiddenNpcsName = new HashMap<>();
@Inject
public static List<Integer> hiddenNpcIndices = new ArrayList<>();
@Inject
@Override
public void setIsHidingEntities(boolean state)
@@ -184,4 +192,46 @@ public abstract class EntityHiderBridgeMixin implements RSClient
{
hideDeadNPCs = state;
}
@Inject
@Override
public void addHiddenNpcName(String npc)
{
npc = npc.toLowerCase();
int i = hiddenNpcsName.getOrDefault(npc, 0);
if (i == Integer.MAX_VALUE)
{
throw new RuntimeException("NPC name " + npc + " has been hidden Integer.MAX_VALUE times, is something wrong?");
}
hiddenNpcsName.put(npc, ++i);
}
@Inject
@Override
public void removeHiddenNpcName(String npc)
{
npc = npc.toLowerCase();
int i = hiddenNpcsName.getOrDefault(npc, 0);
if (i == 0)
{
return;
}
hiddenNpcsName.put(npc, --i);
}
@Inject
@Override
public void setHiddenNpcIndices(List<Integer> npcIndices)
{
hiddenNpcIndices = new ArrayList<>(npcIndices);
}
@Inject
@Override
public List<Integer> getHiddenNpcIndices()
{
return new ArrayList<>(hiddenNpcIndices);
}
}

View File

@@ -25,6 +25,8 @@
*/
package net.runelite.mixins;
import java.util.HashMap;
import java.util.Map;
import net.runelite.api.mixins.*;
import net.runelite.rs.api.*;
@@ -81,6 +83,12 @@ public abstract class EntityHiderMixin implements RSScene
@Shadow("hideDeadNPCs")
private static boolean hideDeadNPCs;
@Shadow("hiddenNpcsName")
private static HashMap<String, Integer> hiddenNpcsName;
@Shadow("hiddenNpcIndices")
private static List<Integer> hiddenNpcIndices;
@Copy("newGameObject")
@Replace("newGameObject")
boolean copy$addEntityMarker(int var1, int var2, int var3, int var4, int var5, int x, int y, int var8, RSRenderable entity, int var10, boolean var11, long var12, int var13)
@@ -171,6 +179,24 @@ public abstract class EntityHiderMixin implements RSScene
{
RSNPC npc = (RSNPC) entity;
if (hiddenNpcIndices.contains(npc.getIndex()))
{
return false;
}
for (Map.Entry<String, Integer> entry : hiddenNpcsName.entrySet())
{
String name = entry.getKey();
int count = entry.getValue();
if (name != null && !name.equals(""))
{
if (count > 0 && npc.getName() != null && npc.getName().equalsIgnoreCase(name))
{
return false;
}
}
}
if (npc.isDead() && hideDeadNPCs)
{
return false;