Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update to ebi v0.4.0 #31

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ repositories {
dependencies {
compile group: 'net.sf.trove4j', name: 'trove4j', version: '3.0.3'
compile 'com.github.IzzelAliz:AmberCommon:master-SNAPSHOT'
shadow 'com.github.euOnmyoji:EpicBanItem---Sponge:0.3.3:pure'
shadow 'com.github.EpicBanItemTeam:EpicBanItem:0.4.0:pure'
shadow 'org.spongepowered:spongeapi:7.1.0'
shadow 'org.spongepowered:spongecommon:7.1.0:dev'
shadow 'org.projectlombok:lombok:1.18.2'
Expand Down
7 changes: 4 additions & 3 deletions src/main/java/io/izzel/ambershop/AmberShop.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@
import org.spongepowered.api.Sponge;
import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.Order;
import org.spongepowered.api.event.game.GameReloadEvent;
import org.spongepowered.api.event.game.state.GameInitializationEvent;
import org.spongepowered.api.event.game.state.GamePreInitializationEvent;
import org.spongepowered.api.event.game.state.GameStartingServerEvent;
import org.spongepowered.api.event.game.state.GameStoppingEvent;
import org.spongepowered.api.plugin.Dependency;
Expand Down Expand Up @@ -56,8 +57,8 @@ public AmberShop(Injector injector) {
@Inject private Updater updater;
@Inject private AmberLocale locale;

@Listener
public void onGameInit(GameInitializationEvent event) {
@Listener(order = Order.LATE)
public void onPreInit(GamePreInitializationEvent event) {
INJECTOR.getInstance(EbiModule.class);
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/izzel/ambershop/conf/AmberConf.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public static class Tax {
@ConfigSerializable
public static class Ebi {

@Setting(comment = "Enable item blacklist using EpicBanItem, requires version >= 0.3.2.")
@Setting(comment = "Enable item blacklist using EpicBanItem, requires version >= 0.4.0.")
public boolean enable = false;

@Setting(comment = "Check EBI when creating a shop.")
Expand Down
67 changes: 57 additions & 10 deletions src/main/java/io/izzel/ambershop/module/EbiModule.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
package io.izzel.ambershop.module;

import com.github.euonmyoji.epicbanitem.api.CheckRuleService;
import com.github.euonmyoji.epicbanitem.api.CheckRuleTrigger;
import com.google.common.reflect.TypeToken;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import io.izzel.amber.commons.i18n.AmberLocale;
import io.izzel.ambershop.AmberShop;
import io.izzel.ambershop.conf.AmberConfManager;
import lombok.SneakyThrows;
import lombok.val;
import org.slf4j.Logger;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.event.game.GameRegistryEvent;
import org.spongepowered.api.item.inventory.ItemStack;
import org.spongepowered.api.service.permission.Subject;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.util.annotation.NonnullByDefault;
import org.spongepowered.api.world.World;
import team.ebi.epicbanitem.api.CheckRuleService;
import team.ebi.epicbanitem.api.CheckRuleTrigger;

@Singleton
public class EbiModule {

private final EbiInterface impl;

@Inject
public EbiModule(AmberConfManager acm, Logger logger) {
public EbiModule(AmberConfManager acm, AmberLocale locale, Logger logger) {
val ebi = acm.get().shopSettings.blacklistSettings;
if (ebi.enable && checkEbiVersion(logger)) {
impl = new EbiImpl(ebi.checkCreate, ebi.checkTrade);
impl = new EbiImpl(locale ,ebi.checkCreate, ebi.checkTrade);
logger.info("Using EpicBanItem for item blacklist.");
} else {
impl = new AbstractImpl();
Expand All @@ -30,10 +37,10 @@ public EbiModule(AmberConfManager acm, Logger logger) {

private boolean checkEbiVersion(Logger logger) {
try {
Class.forName("com.github.euonmyoji.epicbanitem.api.CheckRuleService");
Class.forName("team.ebi.epicbanitem.api.CheckRuleService");
return true;
} catch (Exception e) {
logger.error("Item blacklist module requires EpicBanItem 0.3.2+ .");
logger.error("Item blacklist module requires EpicBanItem 0.4.0+ .");
return false;
}
}
Expand Down Expand Up @@ -74,12 +81,18 @@ private static class EbiImpl implements EbiInterface {
private final CheckRuleTrigger tradeTrigger;

@SneakyThrows
public EbiImpl(boolean create, boolean trade) {
public EbiImpl(AmberLocale locale, boolean create, boolean trade) {
this.create = create;
this.trade = trade;
service = CheckRuleService.instance();
createTrigger = service.getTrigger("as_create", true).orElseThrow(Exception::new);
tradeTrigger = service.getTrigger("as_trade", true).orElseThrow(Exception::new);
service = Sponge.getServiceManager().provideUnchecked(CheckRuleService.class);
Sponge.getEventManager().registerListener(AmberShop.SINGLETON, new TypeToken<GameRegistryEvent.Register<CheckRuleTrigger>>() {}, this::onRegistryTrigger);
createTrigger = new TriggerImpl(locale, "create", "ambershop:create");
tradeTrigger = new TriggerImpl(locale, "trade", "ambershop:trade");
}

public void onRegistryTrigger(GameRegistryEvent.Register<CheckRuleTrigger> event) {
event.register(createTrigger);
event.register(tradeTrigger);
}

@Override
Expand All @@ -92,5 +105,39 @@ public boolean checkTrade(ItemStack item, World world, Subject subject) {
return trade && !service.check(item, world, tradeTrigger, subject).isBanned();
}

@NonnullByDefault
private static class TriggerImpl implements CheckRuleTrigger {

private final AmberLocale locale;
private final String name;
private final String id;

private TriggerImpl(AmberLocale locale, String name, String id) {
this.locale = locale;
this.name = name;
this.id = id;
}

@Override
public String getId() {
return id;
}

@Override
public String getName() {
return name;
}

@Override
public Text toText() {
return locale.get("module.ebi.trigger." + name).orElse(Text.of(name));
}

@Override
public String toString() {
return name;
}
}

}
}
10 changes: 9 additions & 1 deletion src/main/resources/assets/ambershop/locale/zh_cn.conf
Original file line number Diff line number Diff line change
Expand Up @@ -230,4 +230,12 @@ updater = [
"AmberShop 有更新了"
"版本 {0} 发布于 {1}"
"前往 {2} 下载"
]
]
module: {
ebi: {
trigger: {
create: "create"
trade: "trade"
}
}
}