From a63b11b741d1b136aa6e3670b0a598067a52ef9d Mon Sep 17 00:00:00 2001 From: Aviortheking <2bazert@gmail.com> Date: Sat, 30 Jul 2016 20:38:10 +0200 Subject: [PATCH] =?UTF-8?q?Premi=C3=A8re=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Menoria/.classpath | 9 ++ Menoria/.project | 17 ++ Menoria/.settings/org.eclipse.jdt.core.prefs | 11 ++ .../Nemoria/API/MinecraftToJSON.class | Bin 0 -> 4990 bytes .../Nemoria/Commands/PlayerInfos.class | Bin 0 -> 3359 bytes .../Nemoria/Listeners/ChatListener.class | Bin 0 -> 2138 bytes Menoria/bin/net/DeltaWings/Nemoria/Main.class | Bin 0 -> 2308 bytes Menoria/plugin.yml | 42 +++++ .../Nemoria/API/MinecraftToJSON.java | 145 ++++++++++++++++++ .../Nemoria/Commands/PlayerInfos.java | 48 ++++++ .../Nemoria/Listeners/ChatListener.java | 26 ++++ Menoria/src/net/DeltaWings/Nemoria/Main.java | 53 +++++++ 12 files changed, 351 insertions(+) create mode 100644 Menoria/.classpath create mode 100644 Menoria/.project create mode 100644 Menoria/.settings/org.eclipse.jdt.core.prefs create mode 100644 Menoria/bin/net/DeltaWings/Nemoria/API/MinecraftToJSON.class create mode 100644 Menoria/bin/net/DeltaWings/Nemoria/Commands/PlayerInfos.class create mode 100644 Menoria/bin/net/DeltaWings/Nemoria/Listeners/ChatListener.class create mode 100644 Menoria/bin/net/DeltaWings/Nemoria/Main.class create mode 100644 Menoria/plugin.yml create mode 100644 Menoria/src/net/DeltaWings/Nemoria/API/MinecraftToJSON.java create mode 100644 Menoria/src/net/DeltaWings/Nemoria/Commands/PlayerInfos.java create mode 100644 Menoria/src/net/DeltaWings/Nemoria/Listeners/ChatListener.java create mode 100644 Menoria/src/net/DeltaWings/Nemoria/Main.java diff --git a/Menoria/.classpath b/Menoria/.classpath new file mode 100644 index 0000000..ff427bf --- /dev/null +++ b/Menoria/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Menoria/.project b/Menoria/.project new file mode 100644 index 0000000..cdaf3d1 --- /dev/null +++ b/Menoria/.project @@ -0,0 +1,17 @@ + + + Menoria + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/Menoria/.settings/org.eclipse.jdt.core.prefs b/Menoria/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..838bd9d --- /dev/null +++ b/Menoria/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Menoria/bin/net/DeltaWings/Nemoria/API/MinecraftToJSON.class b/Menoria/bin/net/DeltaWings/Nemoria/API/MinecraftToJSON.class new file mode 100644 index 0000000000000000000000000000000000000000..a1b24ca5dc630aed1da5b16da61e8354d2193201 GIT binary patch literal 4990 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 D2W|<~ literal 0 HcmV?d00001 diff --git a/Menoria/bin/net/DeltaWings/Nemoria/Commands/PlayerInfos.class b/Menoria/bin/net/DeltaWings/Nemoria/Commands/PlayerInfos.class new file mode 100644 index 0000000000000000000000000000000000000000..e419b95bf6fd649df15bf955ee5f5072209ef412 GIT binary patch literal 3359 zcmb7GS$7mg6#goiq$iU`Wgx&nq5(k@1GFn@22ml22D6~SAd5@SP?>bn(;a(yV&c9p zxbK1+u5rNy)PaC{)JLB@$6w$-@ZEF7uev8@CY#5H>8YxF>$|t^{qC*$_3x8E0=NV} zXs8fqainjwN!vGfSxzQr^vJC1S*Eeg&1Ow!f6mxpo8!{!bOzjwtOQUZk>W?ACu|4?|K5&n=Qxkw+K`=HTMfdwz>Od43((W zp&=@8W|!s2o_sbXy`5&tmICoEH*MPeCOzW3xES#Vt(?GyuK(eBQlQ3liiZ*yXzH5Z z;Xdi?mtJxKjbzt!5c+(NflKb4z0|x%!xDiNC6=V)TmE=4rZLoExrSu|D@#;nL{G;G zBm}gK^n1)KL$b7~dA6x2RteOO1gWxAs$yusIU3F`%U9^Cjz+BJy1X-Q+PTh*<9c$N znIm*v(`@ACJu#e%bsE+REG}_#YmjRl=iz*YmfrPAZ&WhLb@Z=9FI-O6q8Tk3E+_{H zg*w(_105nruVa$}A?29j6;o%;`<6{U**5uRxennBT%_Sbh9k(t47rYrafv|G@}*}6 z)LT}D)LC37&SkhQxL*P9Qox-H0q+)AqJZ1SMxKz!Eu83rFkf{+J zcdDKc_1&-nPsQS%G{ta z${@9ua7o%aghG=y(i|vm=EL?eN@;$H1|_upN~3i!LkYGqX>s zp7WHz8PmN&Ni;kyu>L=dmf%P6EKQJ-j6 zsuR63Pa?{cqj)W>;>MCHj^O}qisE2chK)1IP)Xm^@s{cyDuL7DDBj`q#IqPdb31^; zI^I*QK=t!(b8K2uHQNt#e29;@VbIL=1bvlnfjvB}qOGFcn$pXIF;$O{sh33YVrD(2 zvuug=3#jtGud>aQ>O=8aU6R6x>1BAqEScll77%PPD@(!4Nl9-2+j~zKwHMQCU7pm_gT;mA`q$N2cCA*UYf8`TrqrA@-s^-%Jm8nka(Dcy zpUjpF2xa^~&g z)F5>6J$q!U#hOYzl%~$6PGqXgLymNjCDk1uM~uRrnnBbhZJ% z@s(JI25}DWlxA!QcI{K)7cIqC&@CB_d67~2JUy%h{ z@CUx;sG1fsIErKB!*6KEH~5yw-xZS{$_kVn=gK{(I?Z=mRD;lPLPMQ~1`Q`QUTzvY n2TtQf)Xo-CPO--39BBQ89j9qx0hAh4%|M}Xfm8fe;QN07Y7V2L literal 0 HcmV?d00001 diff --git a/Menoria/bin/net/DeltaWings/Nemoria/Listeners/ChatListener.class b/Menoria/bin/net/DeltaWings/Nemoria/Listeners/ChatListener.class new file mode 100644 index 0000000000000000000000000000000000000000..aec8c236e4c1235f0f81eb51f57c267473430310 GIT binary patch literal 2138 zcmb7FX>$`t5Pf5W7by!4U_+E(j)cULueCW6upwXz8=J^SEJp-#I3sx?7O!SiyCYXA zzbAhnsg$8eRVttJqf&XhD_@b1a&7I-&P-4D>+aV*|NQ&zF95euvCt(jqLp!;D9^~} zuC9g7qN@9WE1jYn8l_bbI)zu#Y|kvD1m1rwH>KlAU2~QyuT|Ap=oZNOLCvW&H#S`3 zs75=wsZp@QJ|SA!(Reo_7|Q&}txmHmm-#($b=hPw^QOUze^Hc%19Ra=5_*fTxke zpoRQCE|ywkY~98XhDkKP$wc=hc3j_KbhV+|O4jMYD8?)}0vF?u?BBLAj$6zDGp3D4 zw0#Gl&6lIt-LY{OpOappG6kut%JbAZz0AFg_U~cB!hL~9QJCu6@o+*FY^uQ79A6tB zTU!}-<|9r{%TN{kdc)V`+s$aDq)2_w{Y3>fChJ@}Z@9sJ|rOv!HsRW<8IH^ljfl-u{xXatjmIM4h9 z1y6>d3N8G^EFB%{PK*NQ_Lm=SfYIQ4nzv>bN8VWcra5ys3XZ1--yri_ylwN_9WVCa zEdT990O!!d8Ht4RRC0m;XF0pbw^yMLmtuXt(oSS$VrUDO`S!oXjfLMaFuaA4q0|;` z55L71i+|$bi;*{YG?9u#{>Jncp8SEiECm*KL0lzH(149ze*4(1E}gd=l)r~HNTmM*E6ZP; literal 0 HcmV?d00001 diff --git a/Menoria/bin/net/DeltaWings/Nemoria/Main.class b/Menoria/bin/net/DeltaWings/Nemoria/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..6d7d6a8cee2f8d9a4b00899b35d54a2c7d1fc3c5 GIT binary patch literal 2308 zcmb7FZBrXn6n<_9Y+e>9DMjdup#^LbN>{BGG)QZKDm74SYOt-f-fS*mVYAEZZle4J ze@j0oouPxBas1Q|{Y{SJxw{+K)PS0qALV%j+b5OJ5V6 zzQQ(kC>0eH7-mlBPP><`wz$Q;_AZ4yhSQjVrrA*vTU%Bu&OT2PbFj%xA=!}JL?36)&3i6k(G;S}bvpx`s=YosDwBdEBA+k}B= zvHX+Jo1RVGy4q2Xwp|#mtw!*ZxPv7Hi`4Q6xIHRuL&Y-g62I)GM@$N^8@9Giz&(O5 zc%zuWmkd{)1j&!DG&XIg!9Byao(44-7e0GyDcnOz!B-4t{V1JoRIFl+LD`j_O-s_Y zOQq>*CT(lUaOHhS;A>*!DS>N&UQKentl}ZQp=%r73_}<05v`}X(puh>h#ECBp=pIeY!ElfsE6#MeWG83HFw!|g z_jcQJwETY@&HtAnzd#B1mp!iUtn%G(TBpi()6vCUL(cQ0e5kHVm^4C(@$~IQjHW*g zVS470@*SYHk9KLOblOk5DO%;Hm%YHiuk-u%Fl&bUM>)(=StO#Qbh_T*G(|_i1Oc6lI7x<1V)C&Iq5n*pQa2yu|A1;*ImEXy zl%`*!fBFF5|A7j1VIKpp(Hno>^PH69emgR>g5INb2-&izG?J{zO*6Glc{O31Zm(8(fG~VgLXD literal 0 HcmV?d00001 diff --git a/Menoria/plugin.yml b/Menoria/plugin.yml new file mode 100644 index 0000000..f80356e --- /dev/null +++ b/Menoria/plugin.yml @@ -0,0 +1,42 @@ +name: Nemoria-Plugin +version: 1.0.0 +main: net.DeltaWings.Nemoria.Main +author: Aviortheking +depend: [Vault, Jobs] +commands: + playerinfos: + aliases: [pi, pinfos] +permissions: + delta.pi.prefix.color.black: + default: false + delta.pi.prefix.color.dark_blue: + default: false + delta.pi.prefix.color.dark_aqua: + default: false + delta.pi.prefix.color.dark_red: + default: false + delta.pi.prefix.color.dark_purple: + default: false + delta.pi.prefix.color.gold: + default: false + delta.pi.prefix.color.gray: + default: false + delta.pi.prefix.color.dark_gray: + default: false + delta.pi.prefix.color.blue: + default: false + delta.pi.prefix.color.green: + default: false + delta.pi.prefix.color.aqua: + default: false + delta.pi.prefix.color.red: + default: false + delta.pi.prefix.color.light_purple: + default: false + delta.pi.prefix.color.yellow: + default: false + delta.pi.prefix.color.white: + default: false + delta.pi.color: + default: false + diff --git a/Menoria/src/net/DeltaWings/Nemoria/API/MinecraftToJSON.java b/Menoria/src/net/DeltaWings/Nemoria/API/MinecraftToJSON.java new file mode 100644 index 0000000..cbf0f06 --- /dev/null +++ b/Menoria/src/net/DeltaWings/Nemoria/API/MinecraftToJSON.java @@ -0,0 +1,145 @@ +package net.DeltaWings.Nemoria.API; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.entity.Player; + +public class MinecraftToJSON { + + public static String colors(String color){ + if(color.equalsIgnoreCase("0")) return "black"; + if(color.equalsIgnoreCase("1")) return "dark_blue"; + if(color.equalsIgnoreCase("2")) return "dark_green"; + if(color.equalsIgnoreCase("3")) return "dark_aqua"; + if(color.equalsIgnoreCase("4")) return "dark_red"; + if(color.equalsIgnoreCase("5")) return "dark_purple"; + if(color.equalsIgnoreCase("6")) return "gold"; + if(color.equalsIgnoreCase("7")) return "gray"; + if(color.equalsIgnoreCase("8")) return "dark_gray"; + if(color.equalsIgnoreCase("9")) return "blue"; + if(color.equalsIgnoreCase("a")) return "green"; + if(color.equalsIgnoreCase("b")) return "aqua"; + if(color.equalsIgnoreCase("c")) return "red"; + if(color.equalsIgnoreCase("d")) return "light_purple"; + if(color.equalsIgnoreCase("e")) return "yellow"; + if(color.equalsIgnoreCase("f")) return "white"; + return "none"; + } + + public static String special(String code){ + if(code.equalsIgnoreCase("k")) return "obfuscated"; + if(code.equalsIgnoreCase("l")) return "bold"; + if(code.equalsIgnoreCase("m")) return "strikethrough"; + if(code.equalsIgnoreCase("n")) return "underline"; + if(code.equalsIgnoreCase("o")) return "italic"; + if(code.equalsIgnoreCase("r")) return "reset"; + return "none"; + } + + public static String main(String string, Player player){ + //split de la phrase en lettres + String[] parts = string.split(""); + //set result + List result = new ArrayList();; + //set couleur de base + String color = ",\"color\":\"white\""; + //set specials de base + String[] special = { + ",\"bold\":false", + ",\"italic\":false", + ",\"strikethrough\":false", + ",\"underlined\":false", + ",\"obfuscated\":false", + }; + Boolean yolo = false; + String one = ""; + /* + * for nombre de lettre de la phrase + * si yolo = true + * check si lettre est dans liste + * si oui + * on vire la lettre et on ferme le truc actuel + * check si c'est une couleur + * check si c'est un special + * on en reouvre un autre + * si non + * on remet le & + * set yolo = false + * si lettre actuel = & + * set yolo true + * sinon + * ont les mets les une a cotés des autre + */ + for(int a=0;a \",\"bold\":true,\"color\":\"gold\"},"; + for(int a = 0;a jobs = Jobs.getPlayerManager().getJobsPlayer(player).getJobProgression(); + for (JobProgression OneJob : jobs) { + p.sendMessage("§bJob actuel: §6"+OneJob.getJob().getName()+ "§b Niveau: §6"+OneJob.getLevel()+"§b Experience: §6"+OneJob.getExperience()+"§b/§6"+OneJob.getMaxExperience()); + } + } + + } + } + } + + + //get money + //get job + //get job level + //say Comtniark et de métier mineur niveaux 13 posséde 50 Crédit et actuellement lv 50(xp du joueur) vie actuel : 10 coeurs + + } + return false; + } + +} diff --git a/Menoria/src/net/DeltaWings/Nemoria/Listeners/ChatListener.java b/Menoria/src/net/DeltaWings/Nemoria/Listeners/ChatListener.java new file mode 100644 index 0000000..dc100c7 --- /dev/null +++ b/Menoria/src/net/DeltaWings/Nemoria/Listeners/ChatListener.java @@ -0,0 +1,26 @@ +package net.DeltaWings.Nemoria.Listeners; + +import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; + +import net.DeltaWings.Nemoria.API.MinecraftToJSON; + +import net.minecraft.server.v1_10_R1.IChatBaseComponent; +import net.minecraft.server.v1_10_R1.IChatBaseComponent.ChatSerializer; +import net.minecraft.server.v1_10_R1.PacketPlayOutChat; + +public class ChatListener implements Listener { + + @EventHandler(priority=EventPriority.HIGHEST) + public void onPlayerChat(AsyncPlayerChatEvent e){ + String msg = MinecraftToJSON.main(e.getMessage(), e.getPlayer()); + System.out.println(msg); + e.setCancelled(true); + IChatBaseComponent link = ChatSerializer.a(msg); + PacketPlayOutChat packet = new PacketPlayOutChat(link); + ((CraftPlayer) e.getPlayer()).getHandle().playerConnection.sendPacket(packet); + } +} \ No newline at end of file diff --git a/Menoria/src/net/DeltaWings/Nemoria/Main.java b/Menoria/src/net/DeltaWings/Nemoria/Main.java new file mode 100644 index 0000000..baa9c11 --- /dev/null +++ b/Menoria/src/net/DeltaWings/Nemoria/Main.java @@ -0,0 +1,53 @@ +package net.DeltaWings.Nemoria; + +import org.bukkit.event.Listener; +import org.bukkit.plugin.RegisteredServiceProvider; +import org.bukkit.plugin.java.JavaPlugin; + +import net.DeltaWings.Nemoria.Commands.PlayerInfos; +import net.DeltaWings.Nemoria.Listeners.ChatListener; +import net.milkbowl.vault.economy.Economy; + +public class Main extends JavaPlugin implements Listener{ + //creation de l'instance + public static Main instance; + public static Main getInstance() { + return instance; + } + public static Economy eco = null; + + public void onEnable(){ + //creation de l'instance + instance = this; + setupEconomy(); + //create chatlistener + getServer().getPluginManager().registerEvents(new ChatListener(), this); + getCommand("PlayerInfos").setExecutor(new PlayerInfos()); + + //plugin enabled + System.out.println("[Player Imformation]Plugin enabled"); + } + + public void onDisable(){ + + + //plugin disabled + System.out.println("[Player Imformation]Plugin disabled"); + } + private boolean setupEconomy() + { + RegisteredServiceProvider economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); + if (economyProvider != null) { + eco = economyProvider.getProvider(); + } + + return (eco != null); + } +} + + +/* + * OBJECTIF: + * quand le joueur se trouve a x coordonné dans x monde + * ouvrir un chest + */ \ No newline at end of file