2019-07-06 04:03:15 +00:00
package io.izzel.taboolib.common.listener ;
2019-07-05 16:17:54 +00:00
2020-03-08 08:31:34 +00:00
import com.google.common.collect.Lists ;
2020-03-24 16:24:44 +00:00
import io.izzel.taboolib.TabooLib ;
2019-07-05 16:17:54 +00:00
import io.izzel.taboolib.TabooLibAPI ;
2020-03-24 16:24:44 +00:00
import io.izzel.taboolib.common.loader.Startup ;
2020-04-16 14:39:47 +00:00
import io.izzel.taboolib.module.ai.SimpleAiSelector ;
2020-03-24 16:24:44 +00:00
import io.izzel.taboolib.module.command.lite.CommandBuilder ;
2019-07-06 10:50:05 +00:00
import io.izzel.taboolib.module.db.local.Local ;
import io.izzel.taboolib.module.db.local.LocalPlayer ;
2020-03-08 08:31:34 +00:00
import io.izzel.taboolib.module.hologram.Hologram ;
import io.izzel.taboolib.module.hologram.THologram ;
2019-07-05 16:17:54 +00:00
import io.izzel.taboolib.module.inject.TListener ;
2020-04-02 10:18:50 +00:00
import io.izzel.taboolib.module.light.TLight ;
2020-04-16 14:39:47 +00:00
import io.izzel.taboolib.module.lite.SimpleReflection ;
2019-07-06 04:03:15 +00:00
import io.izzel.taboolib.module.locale.logger.TLogger ;
2020-04-02 10:18:50 +00:00
import io.izzel.taboolib.module.nms.impl.Type ;
2019-07-05 16:17:54 +00:00
import io.izzel.taboolib.module.tellraw.TellrawJson ;
2020-01-23 10:14:06 +00:00
import io.izzel.taboolib.util.Files ;
2020-03-24 16:24:44 +00:00
import io.izzel.taboolib.util.book.BookFormatter ;
2019-07-06 10:50:05 +00:00
import io.izzel.taboolib.util.item.Items ;
2020-01-14 14:35:46 +00:00
import io.izzel.taboolib.util.lite.Signs ;
2020-01-23 10:14:06 +00:00
import org.bukkit.Bukkit ;
2020-03-08 08:31:34 +00:00
import org.bukkit.Location ;
2020-03-24 16:24:44 +00:00
import org.bukkit.entity.Player ;
2020-04-16 14:39:47 +00:00
import org.bukkit.entity.Skeleton ;
2019-07-05 16:17:54 +00:00
import org.bukkit.event.EventHandler ;
2020-01-24 05:56:12 +00:00
import org.bukkit.event.EventPriority ;
2019-07-05 16:17:54 +00:00
import org.bukkit.event.Listener ;
import org.bukkit.event.server.ServerCommandEvent ;
2020-03-24 16:24:44 +00:00
import org.bukkit.inventory.meta.BookMeta ;
2019-07-05 16:17:54 +00:00
2020-01-23 10:14:06 +00:00
import java.io.File ;
2020-01-14 14:35:46 +00:00
import java.util.Arrays ;
2020-03-24 16:24:44 +00:00
import java.util.List ;
import java.util.stream.Collectors ;
2020-01-14 14:35:46 +00:00
2019-07-05 16:17:54 +00:00
/ * *
* @author sky
* /
@TListener
2020-01-23 10:14:06 +00:00
public class ListenerCommand implements Listener {
2019-07-05 16:17:54 +00:00
2020-04-17 12:06:52 +00:00
abstract static class Module {
2020-03-24 16:24:44 +00:00
abstract public String [ ] name ( ) ;
abstract public void run ( Player player ) ;
}
List < Module > testUtil = Lists . newArrayList (
new Module ( ) {
@Override
public String [ ] name ( ) {
return new String [ ] { "json" , "tellrawJson" } ;
}
@Override
public void run ( Player player ) {
TellrawJson . create ( )
. append ( "§8[§fTabooLib§8] §7TellrawJson: §f[" )
. append ( Items . getName ( player . getItemInHand ( ) ) ) . hoverItem ( player . getItemInHand ( ) )
. append ( "§f]" )
. send ( player ) ;
}
} ,
new Module ( ) {
@Override
public String [ ] name ( ) {
return new String [ ] { "sign" , "fakeSign" } ;
}
@Override
public void run ( Player player ) {
Signs . fakeSign ( player , lines - > player . sendMessage ( "§8[§fTabooLib§8] §7FakeSign: §f" + Arrays . toString ( lines ) ) ) ;
}
} ,
new Module ( ) {
@Override
public String [ ] name ( ) {
return new String [ ] { "hd" , "hologram" } ;
}
@Override
public void run ( Player player ) {
player . sendMessage ( "§8[§fTabooLib§8] §7Hologram." ) ;
Location location = player . getEyeLocation ( ) . add ( player . getLocation ( ) . getDirection ( ) ) ;
Hologram hologram = THologram . create ( location , "TabooLib" , player )
. flash ( Lists . newArrayList (
"§bT§fabooLib" ,
"§bTa§fbooLib" ,
"§bTab§fooLib" ,
"§bTabo§foLib" ,
"§bTaboo§fLib" ,
"§bTabooL§fib" ,
"§bTabooLi§fb" ,
"§bTabooLib" ,
"§bTabooLi§fb" ,
"§bTabooL§fib" ,
"§bTaboo§fLib" ,
"§bTabo§foLib" ,
"§bTab§fooLib" ,
"§bTa§fbooLib" ,
"§bT§fabooLib" ,
"§fTabooLib"
) , 1 ) . deleteOn ( 30 ) ;
}
} ,
new Module ( ) {
@Override
public String [ ] name ( ) {
return new String [ ] { "book" , "bookBuilder" } ;
}
@Override
public void run ( Player player ) {
BookFormatter . writtenBook ( )
. generation ( BookMeta . Generation . COPY_OF_COPY )
. addPage ( TellrawJson . create ( )
. append ( "BookBuilder" )
. hoverText ( "HoverText" ) )
. open ( player ) ;
}
2020-04-02 10:18:50 +00:00
} ,
new Module ( ) {
@Override
public String [ ] name ( ) {
return new String [ ] { "light" } ;
}
@Override
public void run ( Player player ) {
player . sendMessage ( "§8[§fTabooLib§8] §7Lighting. §a(+)" ) ;
TLight . create ( player . getLocation ( ) . getBlock ( ) , Type . BLOCK , 15 ) ;
2020-04-12 07:04:54 +00:00
TabooLib . getPlugin ( ) . runTask ( ( ) - > {
2020-04-02 10:18:50 +00:00
TLight . create ( player . getLocation ( ) . getBlock ( ) , Type . BLOCK , 5 ) ;
player . sendMessage ( "§8[§fTabooLib§8] §7Lighting. §c(-)" ) ;
} , 20 ) ;
2020-04-12 07:04:54 +00:00
TabooLib . getPlugin ( ) . runTask ( ( ) - > {
2020-04-02 10:18:50 +00:00
TLight . delete ( player . getLocation ( ) . getBlock ( ) , Type . BLOCK ) ;
player . sendMessage ( "§8[§fTabooLib§8] §7Lighting. §8(-)" ) ;
} , 40 ) ;
}
2020-04-16 14:39:47 +00:00
} ,
new Module ( ) {
@Override
public String [ ] name ( ) {
return new String [ ] { "simpleAI" , "ai" } ;
}
@Override
public void run ( Player player ) {
player . sendMessage ( "§8[§fTabooLib§8] §7SimpleAI." ) ;
Skeleton skeleton = player . getWorld ( ) . spawn ( player . getLocation ( ) , Skeleton . class , c - > {
c . setCustomName ( "Fearless Skeleton" ) ;
c . setCustomNameVisible ( true ) ;
} ) ;
TabooLib . getPlugin ( ) . runTask ( ( ) - > {
SimpleAiSelector . getExecutor ( ) . getGoalAi ( skeleton ) . forEach ( ai - > {
player . sendMessage ( "§8[§fTabooLib§8] §7AI (Origin): §8" + SimpleReflection . getFieldValueChecked ( ai . getClass ( ) , ai , "a" , true ) ) ;
} ) ;
SimpleAiSelector . getExecutor ( ) . removeGoalAi ( skeleton , 3 ) ;
SimpleAiSelector . getExecutor ( ) . getGoalAi ( skeleton ) . forEach ( ai - > {
player . sendMessage ( "§8[§fTabooLib§8] §7AI (After): §8" + SimpleReflection . getFieldValueChecked ( ai . getClass ( ) , ai , "a" , true ) ) ;
} ) ;
} , 20 ) ;
}
2020-05-05 17:39:21 +00:00
} ,
new Module ( ) {
@Override
public String [ ] name ( ) {
return new String [ ] { "local" } ;
}
@Override
public void run ( Player player ) {
TellrawJson . create ( ) . append ( "§8[§fTabooLib§8] §7LocalPlayer: " ) . append ( "§c[...]" ) . hoverText ( LocalPlayer . get ( player ) . saveToString ( ) ) . send ( player ) ;
}
2020-01-14 14:35:46 +00:00
} ) ;
2020-03-24 16:24:44 +00:00
2020-04-02 10:18:50 +00:00
2020-03-24 16:24:44 +00:00
@Startup.Starting
public void init ( ) {
// 版本命令
CommandBuilder . create ( "taboolib" , TabooLib . getPlugin ( ) )
. aliases ( "lib" )
. execute ( ( sender , args ) - > {
sender . sendMessage ( "§8[§fTabooLib§8] §7Currently Version: §fv" + TabooLib . getVersion ( ) ) ;
} ) . build ( ) ;
// 调试命令
CommandBuilder . create ( "taboolibtest" , TabooLib . getPlugin ( ) )
. permission ( "*" )
. aliases ( "libtest" )
. tab ( ( sender , args ) - > testUtil . stream ( ) . flatMap ( module - > Arrays . stream ( module . name ( ) ) ) . filter ( name - > name . toLowerCase ( ) . startsWith ( args [ 0 ] ) ) . collect ( Collectors . toList ( ) ) )
. execute ( ( sender , args ) - > {
if ( sender instanceof Player ) {
if ( args . length = = 0 ) {
sender . sendMessage ( "§8[§fTabooLib§8] §7/libtest §8[...]" ) ;
return ;
}
for ( Module module : testUtil ) {
for ( String name : module . name ( ) ) {
if ( name . equalsIgnoreCase ( args [ 0 ] ) ) {
module . run ( ( Player ) sender ) ;
return ;
}
}
}
}
} ) . build ( ) ;
2019-07-08 13:23:49 +00:00
}
2020-01-24 05:56:12 +00:00
@EventHandler ( priority = EventPriority . LOWEST )
2019-07-05 16:17:54 +00:00
public void cmd ( ServerCommandEvent e ) {
if ( e . getCommand ( ) . equalsIgnoreCase ( "saveFiles" ) ) {
2019-07-06 10:50:05 +00:00
Local . saveFiles ( ) ;
LocalPlayer . saveFiles ( ) ;
2019-07-05 16:17:54 +00:00
TLogger . getGlobalLogger ( ) . info ( "Successfully." ) ;
} else if ( e . getCommand ( ) . equalsIgnoreCase ( "tDebug" ) ) {
if ( TabooLibAPI . isDebug ( ) ) {
2019-07-09 12:00:16 +00:00
TabooLibAPI . debug ( false ) ;
2019-07-05 16:17:54 +00:00
TLogger . getGlobalLogger ( ) . info ( "&cDisabled." ) ;
} else {
2019-07-09 12:00:16 +00:00
TabooLibAPI . debug ( true ) ;
2019-07-05 16:17:54 +00:00
TLogger . getGlobalLogger ( ) . info ( "&aEnabled." ) ;
}
2020-02-02 07:30:29 +00:00
} else if ( e . getCommand ( ) . equalsIgnoreCase ( "libUpdate" ) ) {
2020-01-24 05:56:12 +00:00
e . setCancelled ( true ) ;
2020-02-02 07:30:29 +00:00
e . getSender ( ) . sendMessage ( "§8[§fTabooLib§8] §cWARNING §7| §4Update TabooLib will force to restart your server. Please confirm this action by type §c/libupdateconfirm" ) ;
} else if ( e . getCommand ( ) . equalsIgnoreCase ( "libUpdateConfirm" ) | | e . getCommand ( ) . equalsIgnoreCase ( "libUpdate confirm" ) ) {
2020-01-24 05:56:12 +00:00
e . getSender ( ) . sendMessage ( "§8[§fTabooLib§8] §7Downloading TabooLib file..." ) ;
2020-01-23 10:14:06 +00:00
Files . downloadFile ( "https://skymc.oss-cn-shanghai.aliyuncs.com/plugins/TabooLib.jar" , new File ( "libs/TabooLib.jar" ) ) ;
2020-01-24 05:56:12 +00:00
e . getSender ( ) . sendMessage ( "§8[§fTabooLib§8] §2Download completed, the server will restart in 3 secs" ) ;
2020-01-23 10:14:06 +00:00
try {
Thread . sleep ( 3000L ) ;
} catch ( InterruptedException e1 ) {
e1 . printStackTrace ( ) ;
}
Bukkit . shutdown ( ) ;
2019-07-05 16:17:54 +00:00
}
}
}