Skip to content

Commit c7078b4

Browse files
committed
Added Item Configuration, Bump Version
Added item configuration for whitelist / blacklisting items for Issue #27 Tested and Confirmed on 1.21
1 parent 35ec569 commit c7078b4

4 files changed

Lines changed: 31 additions & 1 deletion

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>simplexity</groupId>
88
<artifactId>VillagerInfo</artifactId>
9-
<version>4.0.1</version>
9+
<version>4.1.0</version>
1010
<packaging>jar</packaging>
1111

1212
<name>VillagerInfo</name>

src/main/java/simplexity/villagerinfo/configurations/functionality/VillConfig.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ public static VillConfig getInstance() {
2929
private final HashMap<Material, Color> poiBlockHighlightColorsMap = new HashMap<>();
3030
String error = ServerMessage.CONFIGURATION_ERROR_PREFIX.getMessage();
3131

32+
private boolean isWhitelist;
33+
private Set<Material> itemSet = new HashSet<>();
34+
3235
private final Logger logger = VillagerInfo.getInstance().getVillagerInfoLogger();
3336

3437
public void reloadVillConfig(FileConfiguration config) {
@@ -38,6 +41,7 @@ public void reloadVillConfig(FileConfiguration config) {
3841
reloadHighlightTime(config);
3942
reloadToggles(config);
4043
reloadColors(config);
44+
reloadItemList(config);
4145
}
4246

4347
public void reloadSound(FileConfiguration config) {
@@ -128,6 +132,19 @@ public void reloadColors(FileConfiguration config) {
128132
}
129133
}
130134

135+
public void reloadItemList(FileConfiguration config) {
136+
isWhitelist = config.getBoolean("whitelist", false);
137+
for (String item : config.getStringList("items")) {
138+
Material material = Material.getMaterial(item);
139+
if (material != null) {
140+
itemSet.add(material);
141+
continue;
142+
}
143+
Logger logger = VillagerInfo.getInstance().getVillagerInfoLogger();
144+
logger.warning("Invalid material in item list: " + item);
145+
}
146+
}
147+
131148
public Sound getConfiguredSound() {
132149
return configuredSound;
133150
}
@@ -147,4 +164,8 @@ public float getConfiguredSoundVolume() {
147164
public Map<Material, Color> getPoiBlockHighlightColorsMap() {
148165
return Collections.unmodifiableMap(poiBlockHighlightColorsMap);
149166
}
167+
168+
public boolean isValidItem(Material material) {
169+
return itemSet.contains(material) == isWhitelist;
170+
}
150171
}

src/main/java/simplexity/villagerinfo/interaction/listeners/PlayerInteractEntityListener.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package simplexity.villagerinfo.interaction.listeners;
22

3+
import org.bukkit.Material;
34
import org.bukkit.entity.Player;
45
import org.bukkit.entity.Villager;
56
import org.bukkit.entity.ZombieVillager;
@@ -9,6 +10,7 @@
910
import org.bukkit.event.player.PlayerInteractEntityEvent;
1011
import org.bukkit.inventory.EquipmentSlot;
1112
import simplexity.villagerinfo.configurations.functionality.ConfigToggle;
13+
import simplexity.villagerinfo.configurations.functionality.VillConfig;
1214
import simplexity.villagerinfo.interaction.logic.HighlightLogic;
1315
import simplexity.villagerinfo.interaction.logic.OutputLogic;
1416
import simplexity.villagerinfo.interaction.logic.SoundLogic;
@@ -21,6 +23,8 @@ public class PlayerInteractEntityListener implements Listener {
2123
public void onVillagerInteract(PlayerInteractEntityEvent interactEntityEvent) {
2224
if (interactEntityEvent.getHand().equals(EquipmentSlot.OFF_HAND)) return;
2325
Player player = interactEntityEvent.getPlayer();
26+
Material material = player.getEquipment().getItemInMainHand().getType();
27+
if (!VillConfig.getInstance().isValidItem(material)) return;
2428
if (!player.isSneaking()) return;
2529
if (!((interactEntityEvent.getRightClicked() instanceof Villager) || (interactEntityEvent.getRightClicked() instanceof ZombieVillager)))
2630
return;

src/main/resources/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,8 @@ workstation-highlight-color:
4040
"BARREL": [153, 76, 0]
4141
"LOOM": [255, 255, 255]
4242
"STONECUTTER": [32, 32, 32]
43+
44+
# Item Blacklist / Whitelist
45+
# Defaults to no items blacklisted.
46+
whitelist: false
47+
items: []

0 commit comments

Comments
 (0)