From ac997c23d32c8b5153230f24d4b698a3547fc7a7 Mon Sep 17 00:00:00 2001 From: tenkuma Date: Thu, 13 Mar 2025 15:19:52 -0300 Subject: [PATCH] Initial commit. --- .classpath | 7 + .project | 17 +++ META-INF/MANIFEST.MF | 2 + config.yml | 17 +++ gd/rf/adrianvictor/freezer/ConfigUtil.class | Bin 0 -> 4173 bytes gd/rf/adrianvictor/freezer/ConfigUtil.java | 135 ++++++++++++++++++ gd/rf/adrianvictor/freezer/Freezer.class | Bin 0 -> 6692 bytes gd/rf/adrianvictor/freezer/Freezer.java | 117 +++++++++++++++ .../freezer/FreezerBlockListener.class | Bin 0 -> 1359 bytes .../freezer/FreezerBlockListener.java | 24 ++++ .../freezer/FreezerPlayerListener.class | Bin 0 -> 1758 bytes .../freezer/FreezerPlayerListener.java | 35 +++++ gd/rf/adrianvictor/freezer/Logger.class | Bin 0 -> 802 bytes gd/rf/adrianvictor/freezer/Logger.java | 16 +++ plugin.yml | 9 ++ 15 files changed, 379 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 META-INF/MANIFEST.MF create mode 100644 config.yml create mode 100644 gd/rf/adrianvictor/freezer/ConfigUtil.class create mode 100644 gd/rf/adrianvictor/freezer/ConfigUtil.java create mode 100644 gd/rf/adrianvictor/freezer/Freezer.class create mode 100644 gd/rf/adrianvictor/freezer/Freezer.java create mode 100644 gd/rf/adrianvictor/freezer/FreezerBlockListener.class create mode 100644 gd/rf/adrianvictor/freezer/FreezerBlockListener.java create mode 100644 gd/rf/adrianvictor/freezer/FreezerPlayerListener.class create mode 100644 gd/rf/adrianvictor/freezer/FreezerPlayerListener.java create mode 100644 gd/rf/adrianvictor/freezer/Logger.class create mode 100644 gd/rf/adrianvictor/freezer/Logger.java create mode 100644 plugin.yml diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..287ce19 --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..e2ba937 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + Freezer.jar_Decompiler.com + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000..58630c0 --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/config.yml b/config.yml new file mode 100644 index 0000000..52be8a0 --- /dev/null +++ b/config.yml @@ -0,0 +1,17 @@ +message: "You should have refrigerated your food..." +# ID of the items that will rot in the unrefrigerated chest +rottableItens: + - 319 + - 320 + - 354 + - 260 + - 297 + - 357 +# ID of the blocks that will refrigerate the chest +coldMaterials: + - 79 + - 80 +# ID of the itens to turn the rotten food into +turnInto: + - 39 + - 40 \ No newline at end of file diff --git a/gd/rf/adrianvictor/freezer/ConfigUtil.class b/gd/rf/adrianvictor/freezer/ConfigUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..5b1538293fa4d0dc08f6f203a7f5ee1c1fa7e35d GIT binary patch literal 4173 zcmX^0Z`VEs1_nolE$j?Tj0~#jDf&fe`iUt;nTdI2naL&jMfzz)si{?|Mf%S9d1;yH zp(U9)>H0~f+1Z&T`lThAIr_<9d8o3|qQsKS{5(bmE{L#OW=<+21D{V; zVp*boX1+d%Z_UWSRghDfo|)&Dn48MTAOw-kNz6;v4=yRn%uBasWMH$&%*!mXV`Q+< z@IkT>qE8=eoL6F5VgT42YfKX~!x$M@obyvs*%^2l8F;`Np!Rby@G}UqGYBv;C=xW8 zhe3!zn2~`uJ+;Iou_VzgKPM%%h><}+Lla^p)JSVC1|9}c9tKVZF-8Vu4OBS@57~Q~ zVO$K%3=$yql8g+3XzDe?I2jljqmE~cOV~}TL-~%}#wK%ybvj7st+8UZz z!Uhr~E(nF-Fy~@WWKd>jP-0|I$MiH-Ej$b=462L_?CGf`ka!Y-c^cU(Ag8MHFt9Ul zFf#D_Wag#%mF6a;7KJ1xfg)bWCqFqcCoHij6U2uKvXo?G7Be!a`w*4rKxqLI>x>M_ zSiB34S)`=E$iR`7nUe}}GD}W=VhSSzvj!-{85xXt7>pSV7#YNqi&7IyQUel;Qu9h& zGK*3{2|hEm7!-@9JPc+G=8Oz%sTG;UCB~?Ty`X^!qBLi=6Nn&!g zZ(;#B&49usoQEL-mK7lp2TIo8W|CMTsS;3Mr6;2uoin(8OE` zN@QFN8K9Ju3G+o}zP_hFJd_z3L?MBXDr_ypz`&5h!;s66$H*X_o0y&IoS&DRSQ4ID zlHr`6S6q^q2g(&{P>&)f60GUQo}qw;p^%}7k%1#UwZu6mvACF#K^PW8VC`T*Yc7To zhB9`BQbq=Ta2z3|co@nVDi|4r(^E@=Qj7CTi;`0vi-SvwQWJ9-88mS_1mv;2g3=O* zQfm%|Dn|M1LfpS9)>PZ7G=rIOUvhC=waw% zXXu4_6&&s%8AbW!pfa0>p`T#_BLi<@N=k5PK|xV!adB!2BZCCg52%W*HN!XCsK`jRcMh1`@7Ba9hFflMN*lTTLFx1+@ zAhnIbWEKOv);0zUt?dlf%NaC$glyUNGT28lYi(gr3yx%gC~^#rWYylr;1s-r!F>mV z??whj1|bG921y2I24)73^W+%V85kH07+4sL82A{B8H5H6c3^d8BhlbF@VC)g+YkHl|hWbjlqDy1IbZ_P)CU|NHGL6 zWI-Lp&cGDP&X6I+zyxZVLEOZ+l7W?hm4Sib3^ZhRF=R6^_%Ql1`e|)r$k*P+P;A8_ z$#R@QTc{Gnbx`F{2THOWW8jcv*~U=4Q4$))Ag?v-U}%aEYQwFu1Eet+tZ_Mmw=akX zF-B*+JUxnusGlb&!LLjX|2hmZ6z}fx&~J3``3$ zxHC)u^Cy65UIurDWegb%9t_LCG$h{jz{x6vftMkSL7E|)L4hHH!ImM8!JQ$J!Gj@& zA(A1Mp^PDpVL3xQ!)b;@aFA<(qv8xS$axv|GfZaS0Cha{gyvWMG1*0V&K-VPIsK z#$W)6HipH}q~xWwjbXab3_KxBN+w`nP-IYnX96*B!pLG^VaR4sWXNGqWyodlWXK15 z8j|?Epq^F*dk~iR*%_Epz-gb6VHVuMOP~(+*4oA}J6vcUAr~*e5zT1XmVrTuK^4u# z6%4Ell?+M@RSaqj)eK$?wMZ`ZhPqe{-NmU;7cXKEh6b@d10%TLVFe}i4e*kS4J_CS sHj@X;W`&x`%&-`&Y6-(qa1p@Bu$qC9VGYAN1_p4cxt?Jo!)69a0H}^D!2kdN literal 0 HcmV?d00001 diff --git a/gd/rf/adrianvictor/freezer/ConfigUtil.java b/gd/rf/adrianvictor/freezer/ConfigUtil.java new file mode 100644 index 0000000..b4c2ecb --- /dev/null +++ b/gd/rf/adrianvictor/freezer/ConfigUtil.java @@ -0,0 +1,135 @@ +package gd.rf.adrianvictor.freezer; + +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.util.config.Configuration; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; + +/** + * Utility class for managing plugin configuration files. + *

+ * This class extends {@link Configuration} to provide custom methods for loading, saving, and managing + * configuration files. It automatically handles the creation of parent directories and copies default configuration + * files from the plugin's resources if they do not exist. + *

+ * Note: This class allows for flexible management of multiple configuration files, specified by their file name. + */ +public class ConfigUtil extends Configuration { + + private final File configFile; + private final String pluginName; + + /** + * Constructs a new instance of {@code ConfigUtil}. + * + * @param plugin the plugin instance using this configuration utility + * @param fileName the name of the configuration file to manage (e.g., "config.yml", "settings.yml") + */ + public ConfigUtil(JavaPlugin plugin, String fileName) { + super(new File(plugin.getDataFolder(), fileName)); + this.configFile = new File(plugin.getDataFolder(), fileName); + this.pluginName = plugin.getDescription().getName(); + } + + /** + * Loads the configuration file. + *

    + *
  • Creates parent directories if they do not exist.
  • + *
  • Copies the default configuration file from the plugin's resources if the configuration file does not exist.
  • + *
  • Attempts to load the configuration by calling the superclass' {@code load()} method.
  • + *
  • Logs errors if the configuration file cannot be loaded.
  • + *
+ */ + @Override + public void load() { + createParentDirectories(); + + if (!configFile.exists()) { + copyDefaultConfig(); + } + + try { + super.load(); + } catch (Exception e) { + Logger.severe(String.format("[%s] Failed to load config '%s': %s", pluginName, configFile.getName(), e.getMessage())); + } + } + + /** + * Creates the parent directories for the configuration file if they do not exist. + *

+ * Logs an error if the directories cannot be created. + */ + private void createParentDirectories() { + try { + Files.createDirectories(configFile.getParentFile().toPath()); + } catch (IOException e) { + Logger.severe(String.format("[%s] Failed to generate default config directory: %s", pluginName, e.getMessage())); + } + } + + /** + * Copies the default configuration file from the plugin's resources to the target location. + *

+ * This method looks for a file in the plugin's resources with the same name as the configuration file being managed. + * If found, it copies this file to the plugin's data folder. + *

+ * Logs an error if the default configuration file cannot be found or copied. + */ + private void copyDefaultConfig() { + // Adjust the path to ensure it's correct for your JAR structure + String resourcePath = "/" + configFile.getName(); + + try (InputStream input = getClass().getResourceAsStream(resourcePath)) { + if (input == null) { + Logger.severe(String.format("[%s] Default config '%s' wasn't found.", pluginName, configFile.getName())); + return; + } + + Files.copy(input, configFile.toPath()); + Logger.info(String.format("[%s] Default config '%s' generated successfully.", pluginName, configFile.getName())); + } catch (IOException e) { + Logger.severe(String.format("[%s] Failed to generate default config '%s': %s", pluginName, configFile.getName(), e.getMessage())); + } + } + + /** + * Loads the configuration file and logs the result. + *

+ * Logs a message indicating whether the configuration was loaded successfully. + */ + public void loadConfig() { + try { + this.load(); + Logger.info(String.format("[%s] Config '%s' loaded successfully.", pluginName, configFile.getName())); + } catch (Exception e) { + Logger.severe(String.format("[%s] Failed to load config '%s': %s", pluginName, configFile.getName(), e.getMessage())); + } + } + + /** + * Saves the configuration file and logs the result. + *

+ * Logs a message indicating whether the configuration was saved successfully. + */ + public void saveConfig() { + try { + this.save(); + Logger.info(String.format("[%s] Config '%s' saved successfully.", pluginName, configFile.getName())); + } catch (Exception e) { + Logger.severe(String.format("[%s] Failed to save config '%s': %s", pluginName, configFile.getName(), e.getMessage())); + } + } + + /** + * Returns the configuration file managed by this utility. + * + * @return the configuration file + */ + public File getConfig() { + return configFile; + } +} \ No newline at end of file diff --git a/gd/rf/adrianvictor/freezer/Freezer.class b/gd/rf/adrianvictor/freezer/Freezer.class new file mode 100644 index 0000000000000000000000000000000000000000..877abacd6d3810fd05bc275f5c122bd5c738a749 GIT binary patch literal 6692 zcmX^0Z`VEs1_nn)Pj&_-Mh2zy6#b$!{lt`_%*4F1%;b{%BK@?Y)YPifB7HXq&CbBW z$e@^Cl&+stnw_0lqF<0xnx2`bpOsjasPC0nmKXr$Gcxcd<>V)4`(zfEq~@g-F*2z6 zAZbc1OU*0M2dmI`LRM$Z$iP>SlUSKrgwUyhsS~0^KLACgH6sICa(-S~W;!E-x(^<& zID-|1mSpBwGcs^xmZatthvWz4moPF2_<;RUT9TQg4|0GtBLin}W_n&?Noi3k$W&Bm z8)TRHCYGcYWhUlW+gUR*@Iy@vDJ{zL%qz)fWZ+HC&q;x)DQ09~&rK~ZPE1c_WDtT_ znvdGH~YS zxnvfDv~w|NG3c-}XfrYhfTId2PlyQ7#Y+wkOJO6DJwO(#99+c z2pShc3=9kgJPd{mMvM&Nxry1S&iQ%Ci6!BgB^l27dBr7(c_qbYhCy{=F^r4Bgu#rR z!IY6f5l>M1??%*DXS;LgL~!Qjcrz@MI40x2mVa*Pa`8k+bb8=?%HXE_)IIT(Bx88jpF zOBISU@=J446fzRaQWc6)(~2_FQ;QNyQd1Nv^Gk~q((?0D^z`&V4)Wt+@Mj2MWZ+Cs zErA3d*stiR1e@0|eG5v_K|BnC3_|P-A&d;dU{k=QhGS7tVkM~P;9>}75C^FX=V9Px z-~q8Bc^LR1tY{tv0R|ophFC@h-lF`H5>Whkg32L~OXGPM5*QL08Mx9@OFZ*RK!!0g zm|%&1h`Yenf)v3LFG7HWA(@eZqXb$8aWDvQGo&$Ours7HGVmds4ARTPkjaq6$iR_V z0t&wTB1Q%=4QTQO8|MiXx8`QZVaQ`=$Yo>@LYM%PKPgs8JH7OQqZy$)Qy@^AYV4| zFf=o?Ffy=bBo_ODJ;bb`83jtjZ9EL^3?0yGjuaD z2qL*1BFV$h%h1QjAOOz^zKMB>=^(R|QO$zpK}dFiDzfHen7}ZJonay)gEW%Kkb2b> zRJ*E#R2HQ2Fid8c!pOkwgdhLAd4I{=sK)98KyDJU}u=l$RLly;DDmc z{G!Z~N*;!p46_&+*gZ1SGg6C77#S3C84S~5&CM`}VIDifTvWrcd60);KEnb~?nq4s zH6e&8LFaXbQ=gCIsbqg9lXIMiOJc%i3L!7!l0rhHP0U}P{w z2|}bc7-|sZm1LGwLR(nYnqk}w8yGgRGi+pJ5JO59NV<6#HZyEtWMEHEEdixGMh0=z zR1C|V)|?C#4BL1ZwlnNtWMFmna19P&WDrFTe7H)Gox6A#b~Ef@WZ(c7+leKqj12Oq z1|zv4xFoS8)ta4QA2wGygAyq>!(N61JPZdJ4ly$DfXi1cS zV_9=E9AP-d&Ty2GK@KSpu&Cr=IL>eaQYty;=ar;_n+VDpn$gJqMABE1nhTCQYc7UU z3}@IGPNS5OPWkycsfl@@2FzJd!5jrGnZXGFDrwEda2^yv7jU`_W(TMYyu`zB8B_*x zBc^Mh13J$?lm~!pOj);i>5f zGU^Tw!(C9R%~G6Ml?oEL&%^M5;UOafb9!nCsC@NAb}h7o1v&OH55p6Nr;H5j#jq43 zfs!)e$v`s<6e`bo7+!#iW1b{PXn<=7PKH+uZ`c`LGct%EMTm1oVu^EpPJR&&!&`=T zj0~*qL9VWT;0%W7x4;!y3o$S;d;m4@0=OAIF??ZX_{_*4fn;1Na#rAB_zG&2aTllN zrT9Wx@E~2^c^G~${A6U{OHVCv$t(u-Py7;dQ_(9yNW;Tgh=CbYWUzvhE+c~ka;gA} zK{`dCZUD$6P@N!!tOmtJ){G3S$)L22)gW-H2X$lMsg03A0og3LI8r)iWMC}@6(x)e ziUduxKsH#Tv;vR}wFWs* zl7~?WZp$Xr%W-SI&Cl6s&fA0vZ+Q+|F)aY<2Pfp2O_ zMt({$7o!oQ2|J@PBZCS^g+91U%gigw&rXGQhMmFPEw@C_XhbCsgCV0SBf|{j)-Y5x z#6XY4yp){OVilkK{Or;KEUkH@l!>AdRB2&R9*v|PT6iIsXHX-Y6LWHcGfPsf`Pmo^ zIT$S%8H5-WGK&@R^2-%cGQmC56h#h3D@F!ExOghK*9H={VPs%pWaMD9V`LC!RLDs! zQOL+F2KQYQit5mgG8j( zb_S`f46<6g8RS81#jOlV8^KnnFfcF(F|aT&Fo-a)Fo-e;Fo-e8Fo-ayGBAKGVqlPE zP-9SMU|?Wm&|naOT42q<2)2M%YX^hoE(U!Dh8+yX2m`qom>3usO0w=`$Yx|Xz)-l2 zq1cQ?YYRh|D9a9p@|_H|Obp>5*+xc&S^sbA;L{R;Rf{e@Em2stXl-L?-O13&$gqi_ zUuz44>?Ve(T00qLvoat_EY#YjDdkcg@KPjl|ht2jX{M$ zgF&A`lfjBXi@}van<0Qfhas9lmm!TopP_-lfT5p3pJ670F~epC6NWNy^~=lD5m%N>F#9M&&XiKBFVCo;V>v6Fz;YEX~o8D#=e|kswAr@yU{U*E>Kbc zv$rvv+sSZ|iD4!~*=~j_k=q%rS#d~m2(WEqxNgQN$~lW6UXnv=3q!?qYb)z_63yBNKzpPKIxc z47(V9fuoZJ?5GxYMp1T2)_n{AXM%DTGdOi z?hM8Z9t{2ro(vHTUJQv0-VA9BJ`80Hz6{k2ehd>C0vTp91Tm~*2xi#B5W;YX!JXkO zLo_%}(;y)RjZ+4Oa}2*3{(!UhIflOs{}`AU#2B_S{AXlfU}lhGSkK7F$i%?Hpw6(2 zk(rT&ft5j*VF4p6BO3!7g8{=_Ms|jk4D1XM3|WjEjGPP{42cYhj9d&W892dlX~n?$ zpTU@cgPnnqonZqz!zXrzz3dD}*crLm8BQ@WF#KhRWoNj;_>;ka=|2NI12bG5r~qQ* zVdRCzvjYPY11kdq!#q#~`f6=qh=SxfmgNlfpvVR1>wI5?RK;0g5$Wklo;NqgH1d!!uCo zg~Xc_0~-SaLmUGuLp*~VLjpq=Ln1>zLp;Mwh7@odXn~91dGI)x2aN+(hMA1&jBE@{ z3~~&Gj2a9(pn1Z9f%!j!Fas+rd`>|!#D9h|Br$e|3UD_0&%lBt3Q@_x$f(Jv1qn@t zlMJk2`(xPmGHi%shWj=+k_GP1;7C?@xCBSC!9y+Bm)UMPgPe}6(J=;59a$rANN-}; zx{QHcN7iUV3p1lE`@;W^88+Qdq>m z!y<;^KR7*_GN?0ZGwLufF_<$bgVPzLeBfqa{>xy+&Zx^M&cwh78Y_i*OCMTGv4W}- zko`>HJj4c0+r?nJKy@vsE{0Tb%#3=VN|8~Y(SU)0L5hKe(TstS(Hu-#f=O#IY0GF2 fmS<*kV02=1VUT2)#^}oE?jXr9fzg%G!$A@NB~t;_ literal 0 HcmV?d00001 diff --git a/gd/rf/adrianvictor/freezer/Freezer.java b/gd/rf/adrianvictor/freezer/Freezer.java new file mode 100644 index 0000000..d3c163a --- /dev/null +++ b/gd/rf/adrianvictor/freezer/Freezer.java @@ -0,0 +1,117 @@ +package gd.rf.adrianvictor.freezer; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.Chest; +import org.bukkit.entity.Player; +import org.bukkit.event.Event.Priority; +import org.bukkit.event.Event.Type; +import org.bukkit.event.block.BlockListener; +import org.bukkit.event.player.PlayerListener; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.java.JavaPlugin; + +public class Freezer extends JavaPlugin { + BlockListener blockListener = new FreezerBlockListener(this); + PlayerListener playerListener = new FreezerPlayerListener(this); + ConfigUtil config; + List itensToRot; + List itensToTurnInto; + List coldMaterials; + String message; + + @Override + public void onDisable() { + Logger.info(this + " is now disabled!"); + } + + @Override + public void onEnable() { + config = new ConfigUtil(this, "config.yml"); + config.loadConfig(); + message = this.getPluginConfig().getString("message", "You should have refrigerated your food..."); + + itensToRot = new ArrayList<>(); + itensToTurnInto = new ArrayList<>(); + coldMaterials = new ArrayList<>(); + List itensToRotID = this.getPluginConfig().getIntList("rottableItens", null); + List itensToTurnIntoID = this.getPluginConfig().getIntList("turnInto", null); + List coldMaterialsID = this.getPluginConfig().getIntList("coldMaterials", null); + + for (int itemID : itensToRotID) { + itensToRot.add(Material.getMaterial(itemID)); + } + + for (int itemID : itensToTurnIntoID) { + itensToTurnInto.add(Material.getMaterial(itemID)); + } + + for (int itemID : coldMaterialsID) { + coldMaterials.add(Material.getMaterial(itemID)); + } + + this.getServer().getPluginManager().registerEvent(Type.BLOCK_BREAK, this.blockListener, Priority.Highest, this); + this.getServer().getPluginManager().registerEvent(Type.PLAYER_INTERACT, this.playerListener, Priority.Highest, this); + Logger.info(this + " is now enabled!"); + } + + public void rottenFoodFromBlock(Block block, Player player) { + if (block.getType() == Material.CHEST) { + Chest chest = (Chest)block.getState(); + Inventory inventory = chest.getInventory(); + ItemStack[] stack = inventory.getContents(); + Boolean displayedWarning = false; + + for(int i = 0; i < stack.length; ++i) { + if (stack[i] != null && itensToRot.contains(stack[i].getType())) { + Random rand = new Random(); + int randNumber = rand.nextInt(6); + if (randNumber == 0) { + randNumber = rand.nextInt(itensToTurnInto.size()); + if (randNumber == 0) { + stack[i].setType(itensToTurnInto.get(randNumber)); + } + + if (!displayedWarning) { + player.sendMessage(ChatColor.GREEN + message); + Logger.info(player.getDisplayName() + " let his food rot."); + displayedWarning = true; + } + } + } + } + + } + } + + public boolean isBlockFrozen(Block block) { + Boolean hasColdBlock = false; + for (Material coldMaterial : coldMaterials) { + if (block.getRelative(BlockFace.DOWN).getType() == coldMaterial || block.getRelative(BlockFace.UP).getType() == coldMaterial || block.getRelative(BlockFace.EAST).getType() == coldMaterial|| block.getRelative(BlockFace.WEST).getType() == coldMaterial || block.getRelative(BlockFace.NORTH).getType() == coldMaterial || block.getRelative(BlockFace.SOUTH).getType() == coldMaterial) { + hasColdBlock = true; + } + } + return hasColdBlock; + } + + public Block getNeighbourChest(Block chest) { + Block[] neighbours = new Block[]{chest.getRelative(BlockFace.NORTH), chest.getRelative(BlockFace.SOUTH), chest.getRelative(BlockFace.WEST), chest.getRelative(BlockFace.EAST)}; + + for(int i = 0; i < 4; ++i) { + if (neighbours[i] != null && neighbours[i].getType() == Material.CHEST) { + return neighbours[i]; + } + } + + return null; + } + public ConfigUtil getPluginConfig() { + return config; + } +} diff --git a/gd/rf/adrianvictor/freezer/FreezerBlockListener.class b/gd/rf/adrianvictor/freezer/FreezerBlockListener.class new file mode 100644 index 0000000000000000000000000000000000000000..fac0976ce947f778864bb1f43a4d6490798eaa68 GIT binary patch literal 1359 zcmX^0Z`VEs1_nn42X+P~Mh5-#6#b$!{lt`_%*4F1%;b{%BK@?Y)YPifB7HXq?Ua+B zob8iYT#}lXTEx!4!pNYKUzDz&RGOWgS)!j>mYP?hp9E5)kD`*1fvq5?G(9tqkwL|W zur1b%3~V-;d6^}4j11};#AwhAV`N})&QD3@Vqj+A=3!uG;9+E7*3b;&WME|A<6&TB zU}I$9_sPsl^()OyN-YXWOv*`RWDxSnPfpAUODxI+@u7k&B^jB;j0}cE*o)#xYeoj1 z{5-IbQ&DPSHY0lWq2558RQrlIMY*00&)^7Q;QfGWKgxF=9OfYRO&-yt+^Q#7?ju< z6d4)Bkeq~MEDwV+g9;-9dwOa~NM%7PBZD}qalVNqsYRKIIo6yEY783e4C;&w!bm2; zqZewJSKsFgH2FX{T3{n7%LMdc5sJ1gQ@CKJ8CTII5 z7J$<>JA*AFg9K6xpeSc#;0n$!ElN&x%LL^ONo-kOFDtPukwKAxk%5_kfq{{M36!%K z7#Nrs7#Y|ZI2afiI2jli+!&Y`m>3usxU{x2aA|38W#HWiR>RN0z`zIA$-}_Hz{|kN zz{eoKz`!5|QOzL8AjALyTwqff85kLa8APCF&R}3>U}0cj(AVC^AnL2VjX~N^=NN;s z&Q1n-Mutrcs>>L}wYD(u>TF}sp2ffeX6kNZFa%l5%mA`jjDeMbfkBXgl|hJsi$Rz{ zl|h6-k3k&l04<2oa0lo!m@=3#Ffy<*Xfc>GSTHa#a51PdSTa~KFf&*)Ffed4F#ZLl QMg?{T8wN%OJFxHU0mG?e`~Uy| literal 0 HcmV?d00001 diff --git a/gd/rf/adrianvictor/freezer/FreezerBlockListener.java b/gd/rf/adrianvictor/freezer/FreezerBlockListener.java new file mode 100644 index 0000000..981ec94 --- /dev/null +++ b/gd/rf/adrianvictor/freezer/FreezerBlockListener.java @@ -0,0 +1,24 @@ +package gd.rf.adrianvictor.freezer; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockListener; + +public class FreezerBlockListener extends BlockListener { + private Freezer plugin; + + public FreezerBlockListener(Freezer plugin) { + this.plugin = plugin; + } + + public void onBlockBreak(BlockBreakEvent event) { + Block block = event.getBlock(); + Player player = event.getPlayer(); + if (block != null && block.getType() == Material.CHEST && !this.plugin.isBlockFrozen(block)) { + this.plugin.rottenFoodFromBlock(block, player); + } + + } +} diff --git a/gd/rf/adrianvictor/freezer/FreezerPlayerListener.class b/gd/rf/adrianvictor/freezer/FreezerPlayerListener.class new file mode 100644 index 0000000000000000000000000000000000000000..a322920ff82b389f4927ac92792195e0f626cb2e GIT binary patch literal 1758 zcmX^0Z`VEs1_nn4e|82YMh1iQ6#b$!{lt`_%*4F1%;b{%BK@?Y)YPifB7HXq9gve) znOfwNSzMBums-Tmz{1F&mS2>vpH!NiomrxvT9%quqF(@3q>rkWk%6rsr!+k?kC8#e zhpWY$xlwq2}>->1o5GQEF~G4#f%I_MA(b!OKV03 zf&4s(m}g!|YEfcx2_u7nh7bNgf+=+cg`c%%7#D*Wg9JN+I3t5L2^x7ABpIX_8Tivv zOPq5ule1G(oO1G$vl$trG&GSNkOUId2g_N5Y?9$&kY$i#WZ+CsErB?lkwFGkOKM(8 zW=SP9O2L{Gco-BJlpvZMlS?x5^B5Tv(KLa4qYtqSqQsh$L4`q$ok5k6K^DVf$O?HF z)EP7w83cno-919$oqar=z2lvH{GGiS8RU_@0!eVlI<2`Gv>0^Q8MGN0#E`6jC;|JK zhe4M?kCA~rJ+&mHvLKa_K^)cDzKJENMVW~?)|?Cm3`Xn>hKvltNG8Fgc^HftOc)th zojqKGLl_xEk(~uoW6i~2#$dtDV9v;(L^#d!Fjz8JF)|3Ir$|o8FW#UffETzk%5{U7#Uc>{$*s4 zK-LEqgC=5d*#at<7#XCH)u1|ok%7B7H90>o1sbNj!6k{w*}jPd;7rfX;KRruffUau zni(0mg7Zs@l2hF>L4}4C*5XhvE3qt*L6L!xfti7Ufsug;ROT=+FfcJNGO#mnFfcN3 zGB7Z>F)%SOF)%Q2X>DiV($e0_z`GHwhM$3ffe);cmw|E} zh#|=WVl8Lj0daIdY>@Mr89>fAV&Gw5U=U(pWe{fIVh~|aVGw1|V-RDoWDsYtV~}77 zWsqcuV~}FVV31+RW{_nlVNe2l(S!l)c(@l!8Jrnh7#JB?844I&!2!m_kj>!E;K9Jm qpvU0G;K|^|z{23gz`!8L!1RwHo1H<6oxz)(LF*SdlzqYB=?4IbZ`kz! literal 0 HcmV?d00001 diff --git a/gd/rf/adrianvictor/freezer/FreezerPlayerListener.java b/gd/rf/adrianvictor/freezer/FreezerPlayerListener.java new file mode 100644 index 0000000..3986228 --- /dev/null +++ b/gd/rf/adrianvictor/freezer/FreezerPlayerListener.java @@ -0,0 +1,35 @@ +package gd.rf.adrianvictor.freezer; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerListener; + +public class FreezerPlayerListener extends PlayerListener { + private Freezer plugin; + + public FreezerPlayerListener(Freezer plugin) { + this.plugin = plugin; + } + + public void onPlayerInteract(PlayerInteractEvent event) { + Block block = event.getClickedBlock(); + Player player = event.getPlayer(); + if (event.getAction() == Action.RIGHT_CLICK_BLOCK && block != null && block.getType() == Material.CHEST) { + Block secondChest = this.plugin.getNeighbourChest(block); + if (!this.plugin.isBlockFrozen(block)) { + if (secondChest != null) { + if (!this.plugin.isBlockFrozen(secondChest) && !this.plugin.isBlockFrozen(block)) { + this.plugin.rottenFoodFromBlock(block, player); + this.plugin.rottenFoodFromBlock(secondChest, player); + } + } else { + this.plugin.rottenFoodFromBlock(block, player); + } + } + } + + } +} diff --git a/gd/rf/adrianvictor/freezer/Logger.class b/gd/rf/adrianvictor/freezer/Logger.class new file mode 100644 index 0000000000000000000000000000000000000000..4ac56b3a01e76792911982d0720d48ce9c31f780 GIT binary patch literal 802 zcmX^0Z`VEs1_nn4Ep`SbMh3<76#b$!{lt`_%*4F1%;b{%BK@?Y)YPifB7L9y^z_ss zb_Nzk27#=^vPAuy#JqHU|D>$cP96qU z1~x_pexJ;|RKL>Pq|~C2#H5^5Mg}3D{N%)(u*9NF5FaYYQj(Eb%*deZL(n1Cj0`N9 zd1?8K45Au72=@e+6lLb6TWf}KF$gjUvoi=WG6?1urRyh^W@l%X=sSTa9tIHxQAP&N z^wg5z)S|M~B9I}PK1k{y!q(gj;tZ1P3=*h@KqPq>q!^?jhCqUbkwHd76XKN8lFS_a zoc#3k%)E4Hz*%!K$TG;YGsrPANPwM-MGX%F9|J!l1AA_2adBcgIE=tb!66Ox86yLG zd16ssW?nkTKouSaC6E@j;?%O#qEwKOIuC;?NQf&qzqBYh)h!bg*xV2&>Vb@7P-I|a zU}gXT76wL8^e`|ourn|)=rb@fFfuSOuxf2*;MmB(z`(@7#lXP81{P#t;AUW8-~qE) z8F(0Y85kHiLGFcWwq{@g%kl1D5ZK8e#>k+xjX?%s2p0nr*eD(bb|iy%859^4!3HTY n@Z&K^8QmZ*1|9}(tOlv#HAoHJAU*~j27W9CF*0a?13(i1tb>|Z literal 0 HcmV?d00001 diff --git a/gd/rf/adrianvictor/freezer/Logger.java b/gd/rf/adrianvictor/freezer/Logger.java new file mode 100644 index 0000000..c32ef7b --- /dev/null +++ b/gd/rf/adrianvictor/freezer/Logger.java @@ -0,0 +1,16 @@ +package gd.rf.adrianvictor.freezer; +import static org.bukkit.Bukkit.getServer; + +public class Logger { + public static void info(String message) { + getServer().getLogger().info(message); + } + + public static void warning(String message) { + getServer().getLogger().warning(message); + } + + public static void severe(String message) { + getServer().getLogger().severe(message); + } +} diff --git a/plugin.yml b/plugin.yml new file mode 100644 index 0000000..d1b4dbd --- /dev/null +++ b/plugin.yml @@ -0,0 +1,9 @@ +author: tenkuma +database: false +description: You'd better refrigerate your meat... Reborn by tenkuma +generator: http://dinnerbone.com/minecraft/tools/pluginator/ +main: gd.rf.adrianvictor.freezer.Freezer +name: teFreezer +startup: postworld +url: https://adrianvictor.rf.gd +version: '1.0'