Skip to content

Commit

Permalink
Merge pull request #182 from EndlessCodeGroup/release/2.4.1
Browse files Browse the repository at this point in the history
2.4.1
  • Loading branch information
osipxd committed Apr 19, 2022
2 parents 85702b1 + f9bfd44 commit 134ddc9
Show file tree
Hide file tree
Showing 13 changed files with 169 additions and 75 deletions.
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,24 @@ X changes total

## [Unreleased]

## [2.4.1] (2022-04-19)

### Added

- Support of 1.18 now is experimental
- Implemented Mimic Inventory API to make it easier to integrate RPGInventory with plugins providing custom items.

### Fixed

- Fixed `/rpginv reload` command
- Compatibility with Mimic 0.8+
- Visual dupe when press `F` on item

### Housekeeping

- Update dependencies
- Update build environment

## [2.4.0] (2021-10-19)

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# RPGInventory [![Latest Version](https://img.shields.io/badge/latest-2.3.2-blue.svg)](https://www.spigotmc.org/resources/12498/updates) [![Minecraft Vesrion](https://img.shields.io/badge/minecraft-1.14_--_1.16.x-blue.svg)](#) [![Travis](https://img.shields.io/travis/EndlessCodeGroup/RPGInventory.svg)](https://travis-ci.org/EndlessCodeGroup/RPGInventory)
# RPGInventory [![Latest Version](https://img.shields.io/badge/latest-2.4.1-blue.svg)](https://www.spigotmc.org/resources/12498/updates) [![Minecraft Vesrion](https://img.shields.io/badge/minecraft-1.14_--_1.18.x-blue.svg)](#) [![Travis](https://img.shields.io/travis/EndlessCodeGroup/RPGInventory.svg)](https://travis-ci.org/EndlessCodeGroup/RPGInventory)
[![Discord](https://img.shields.io/badge/discord-join_chat-7289da.svg)](https://discord.gg/RBDHyuu)
![Logo](http://rpginventory.endlesscode.ru/_media/ru/logo-big.png?w=780&h=290&tok=a123f9)

Expand Down
37 changes: 22 additions & 15 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import org.apache.tools.ant.filters.ReplaceTokens

plugins {
id 'com.github.johnrengelman.shadow' version '7.0.0'
id 'ru.endlesscode.bukkitgradle' version '0.10.0'
id 'com.github.ben-manes.versions' version "0.39.0"
id 'com.github.johnrengelman.shadow' version '7.1.2'
id 'ru.endlesscode.bukkitgradle' version '0.10.1'
id 'com.github.ben-manes.versions' version "0.42.0"
id 'jacoco'
}

Expand All @@ -10,7 +12,7 @@ version = pluginVersion
description = pluginDesc

bukkit {
apiVersion = '1.17.1'
apiVersion = '1.18.2'

meta {
name.set("RPGInventory")
Expand All @@ -32,7 +34,7 @@ def processSources = tasks.register("processSource", Sync) {

from(sourceSets.main.java)
inputs.property("dsn", dsn)
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [sentry_dsn: dsn])
filter(ReplaceTokens, tokens: [sentry_dsn: dsn])
into("$buildDir/src")
}

Expand All @@ -49,11 +51,16 @@ repositories {
jitpack()

// You should configure credentials for this repo
maven {
def myPetRepo = maven {
name = "githubPackages"
url = uri("https://maven.pkg.github.com/scomans/MyPet")
url = uri("https://maven.pkg.github.com/MyPetORG/MyPet")
credentials(PasswordCredentials)
}

exclusiveContent {
forRepositories(myPetRepo)
filter { includeGroup("de.keyle") }
}
}

shadowJar {
Expand Down Expand Up @@ -90,18 +97,18 @@ dependencies {
compileOnly('com.github.MilkBowl:VaultAPI:1.7.1') {
exclude group: 'org.bukkit'
}
compileOnly('com.comphenix.protocol:ProtocolLib:4.7.0')
compileOnly('org.jetbrains:annotations:22.0.0')
compileOnly('me.clip:placeholderapi:2.10.10')
compileOnly('de.keyle:mypet:3.11-SNAPSHOT')
compileOnly('ru.endlesscode.mimic:mimic-bukkit-api:0.6.1')
compileOnly('com.comphenix.protocol:ProtocolLib:4.8.0')
compileOnly('org.jetbrains:annotations:23.0.0')
compileOnly('me.clip:placeholderapi:2.11.1')
compileOnly('de.keyle:mypet:3.12-SNAPSHOT')
compileOnly('ru.endlesscode.mimic:mimic-bukkit-api:0.8.0')
implementation("ru.endlesscode.inspector:inspector-bukkit:$inspectorVersion")
implementation("ru.endlesscode.inspector:inspector-sentry-reporter:$inspectorVersion")
implementation("ru.endlesscode.inspector:sentry-bukkit:$inspectorVersion")
implementation('com.comphenix.packetwrapper:PacketWrapper:1.13-R0.1-SNAPSHOT')
implementation('org.bstats:bstats-bukkit:2.2.1')
testImplementation('junit:junit:4.12')
testImplementation('org.mockito:mockito-core:3.12.1')
implementation('org.bstats:bstats-bukkit:3.0.0')
testImplementation('junit:junit:4.13.2')
testImplementation('org.mockito:mockito-core:4.4.0')
}

jacocoTestReport {
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
pluginVersion=2.4.0
pluginVersion=2.4.1
pluginDesc=Change inventory how you need
url=https://gitlab.com/endlesscodegroup/rpginventory/rpginventory
url=https://github.com/EndlessCodeGroup/RPGInventory

org.gradle.caching=true
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
79 changes: 43 additions & 36 deletions src/main/java/ru/endlesscode/rpginventory/RPGInventory.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,19 @@
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.ServicePriority;
import org.bukkit.plugin.ServicesManager;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import ru.endlesscode.inspector.bukkit.command.TrackedCommandExecutor;
import ru.endlesscode.inspector.bukkit.plugin.PluginLifecycle;
import ru.endlesscode.inspector.bukkit.scheduler.TrackedBukkitRunnable;
import ru.endlesscode.mimic.Mimic;
import ru.endlesscode.mimic.MimicApiLevel;
import ru.endlesscode.mimic.classes.BukkitClassSystem;
import ru.endlesscode.mimic.items.BukkitItemsRegistry;
import ru.endlesscode.mimic.level.BukkitLevelSystem;
import ru.endlesscode.rpginventory.compat.VersionHandler;
import ru.endlesscode.rpginventory.compat.mimic.RPGInventoryItemsRegistry;
import ru.endlesscode.rpginventory.compat.mimic.RPGInventoryPlayerInventory;
import ru.endlesscode.rpginventory.compat.mypet.MyPetManager;
import ru.endlesscode.rpginventory.event.listener.*;
import ru.endlesscode.rpginventory.inventory.InventoryLocker;
Expand Down Expand Up @@ -69,8 +69,7 @@ public class RPGInventory extends PluginLifecycle {
private Permission perms;
private Economy economy;

private BukkitLevelSystem.Provider levelSystemProvider;
private BukkitClassSystem.Provider classSystemProvider;
private Mimic mimic;

private FileLanguage language;
private boolean placeholderApiHooked = false;
Expand Down Expand Up @@ -109,11 +108,11 @@ public static boolean isMyPetHooked() {
}

public static BukkitLevelSystem getLevelSystem(@NotNull Player player) {
return instance.levelSystemProvider.getSystem(player);
return instance.mimic.getLevelSystem(player);
}

public static BukkitClassSystem getClassSystem(@NotNull Player player) {
return instance.classSystemProvider.getSystem(player);
return instance.mimic.getClassSystem(player);
}

@Nullable
Expand All @@ -131,9 +130,10 @@ public void init() {
@Override
public void onLoad() {
if (checkMimic()) {
getServer()
.getServicesManager()
.register(BukkitItemsRegistry.class, new RPGInventoryItemsRegistry(), this, ServicePriority.High);
mimic = Mimic.getInstance();
mimic.registerItemsRegistry(new RPGInventoryItemsRegistry(), MimicApiLevel.VERSION_0_7, this, ServicePriority.High);
//noinspection UnstableApiUsage
mimic.registerPlayerInventoryProvider(RPGInventoryPlayerInventory::new, MimicApiLevel.VERSION_0_8, this, ServicePriority.High);
}
}

Expand All @@ -146,26 +146,13 @@ public void onEnable() {
loadConfigs();
Serialization.registerTypes();

if (!this.checkRequirements()) {
this.getPluginLoader().disablePlugin(this);
hookPlaceholderApi();
if (!loadModules()) {
getPluginLoader().disablePlugin(this);
return;
}

PluginManager pm = this.getServer().getPluginManager();

// Hook Placeholder API
if (pm.isPluginEnabled("PlaceholderAPI")) {
new StringUtils.Placeholders().register();
placeholderApiHooked = true;
Log.i("Placeholder API hooked!");
} else {
placeholderApiHooked = false;
}

loadModules();

this.loadPlayers();
this.startMetrics();
loadPlayers();
startMetrics();

// Enable commands
this.getCommand("rpginventory")
Expand All @@ -177,11 +164,10 @@ public void onEnable() {
private boolean initMimicSystems() {
boolean isMimicFound = checkMimic();
if (isMimicFound) {
ServicesManager servicesManager = getServer().getServicesManager();
this.levelSystemProvider = servicesManager.load(BukkitLevelSystem.Provider.class);
Log.i("Level system ''{0}'' found.", this.levelSystemProvider.getId());
this.classSystemProvider = servicesManager.load(BukkitClassSystem.Provider.class);
Log.i("Class system ''{0}'' found.", this.classSystemProvider.getId());
BukkitLevelSystem.Provider levelSystemProvider = mimic.getLevelSystemProvider();
Log.i("Level system ''{0}'' found.", levelSystemProvider.getId());
BukkitClassSystem.Provider classSystemProvider = mimic.getClassSystemProvider();
Log.i("Class system ''{0}'' found.", classSystemProvider.getId());
} else {
Log.s("Mimic is required for RPGInventory to use levels and classes from other RPG plugins!");
Log.s("Download it from SpigotMC: https://www.spigotmc.org/resources/82515/");
Expand All @@ -190,14 +176,27 @@ private boolean initMimicSystems() {
return isMimicFound;
}

private void hookPlaceholderApi() {
if (getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) {
StringUtils.Placeholders.registerPlaceholders();
placeholderApiHooked = true;
Log.i("Placeholder API hooked!");
} else {
placeholderApiHooked = false;
}
}

void reload() {
// Unload
saveData();
removeListeners();

// Load
loadConfigs();
loadModules();
if (!loadModules()) {
getPluginLoader().disablePlugin(this);
return;
}
loadPlayers();
}

Expand All @@ -207,7 +206,12 @@ private void loadConfigs() {
language = new FileLanguage(this);
}

private void loadModules() {
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
private boolean loadModules() {
if (!checkRequirements()) {
return false;
}

PluginManager pm = getServer().getPluginManager();

// Hook MyPet
Expand Down Expand Up @@ -235,6 +239,8 @@ private void loadModules() {
pm.registerEvents(new ElytraListener(), this);
}
this.resourcePackModule = ResourcePackModule.init(this);

return true;
}

private void removeListeners() {
Expand All @@ -245,10 +251,10 @@ private void removeListeners() {
private boolean checkMimic() {
if (getServer().getPluginManager().getPlugin("Mimic") == null) {
return false;
} else if (MimicApiLevel.checkApiLevel(MimicApiLevel.VERSION_0_6)) {
} else if (MimicApiLevel.checkApiLevel(MimicApiLevel.VERSION_0_8)) {
return true;
} else {
Log.w("At least Mimic 0.6.1 required for RPGInventory.");
Log.w("At least Mimic 0.8 required for RPGInventory.");
return false;
}
}
Expand Down Expand Up @@ -286,6 +292,7 @@ private boolean checkRequirements() {

@Override
public void onDisable() {
StringUtils.Placeholders.unregisterPlaceholders();
saveData();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,18 @@ public class VersionHandler {
public static final int VERSION_1_16 = 1_16_00;
public static final int VERSION_1_17 = 1_17_00;
public static final int VERSION_1_18 = 1_18_00;
public static final int VERSION_1_19 = 1_19_00;

private static final Pattern pattern = Pattern.compile("(?<version>\\d\\.\\d{1,2}(\\.\\d)?)-.*");

private static int versionCode = -1;

public static boolean isNotSupportedVersion() {
return getVersionCode() < VERSION_1_14 || getVersionCode() >= VERSION_1_18;
return getVersionCode() < VERSION_1_14 || getVersionCode() >= VERSION_1_19;
}

public static boolean isExperimentalSupport() {
return getVersionCode() == VERSION_1_17;
return getVersionCode() == VERSION_1_18;
}

public static boolean isLegacy() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,13 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import ru.endlesscode.mimic.items.BukkitItemsRegistry;
import ru.endlesscode.rpginventory.RPGInventory;
import ru.endlesscode.rpginventory.item.CustomItem;
import ru.endlesscode.rpginventory.item.ItemManager;

import java.util.Collection;

public class RPGInventoryItemsRegistry implements BukkitItemsRegistry {

public static String ID = "rpginventory";

@NotNull
@Override
public String getId() {
return ID;
}

@Override
public boolean isEnabled() {
return RPGInventory.getInstance().isEnabled();
}

@NotNull
@Override
public Collection<String> getKnownIds() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package ru.endlesscode.rpginventory.compat.mimic;

import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import ru.endlesscode.mimic.inventory.BukkitPlayerInventory;
import ru.endlesscode.rpginventory.api.InventoryAPI;
import ru.endlesscode.rpginventory.inventory.slot.Slot;
import ru.endlesscode.rpginventory.inventory.slot.SlotManager;

import java.util.List;
import java.util.stream.Collectors;

@SuppressWarnings("UnstableApiUsage")
public class RPGInventoryPlayerInventory extends BukkitPlayerInventory {

public RPGInventoryPlayerInventory(@NotNull Player player) {
super(player);
}

@NotNull
@Override
public List<ItemStack> getEquippedItems() {
List<ItemStack> passiveItems = InventoryAPI.getPassiveItems(getPlayer());
return collectEquippedItems(passiveItems);
}

@NotNull
@Override
public List<ItemStack> getStoredItems() {
List<Slot> quickSlots = SlotManager.instance().getQuickSlots();

return collectStoredItems()
.stream()
.filter(item -> quickSlots.stream().noneMatch(slot -> slot.isCup(item)))
.collect(Collectors.toList());
}
}
Loading

0 comments on commit 134ddc9

Please sign in to comment.