mirror of
https://github.com/exituser/Brewery.git
synced 2026-09-17 08:59:01 +00:00
Added config options for Sealing Table
Translations for the Sealing Table And a Data Tag for the Block
This commit is contained in:
@@ -4,6 +4,9 @@ import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.Tag;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.block.data.Directional;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
@@ -11,13 +14,14 @@ import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.RecipeChoice;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.inventory.meta.BlockStateMeta;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class BSealer implements InventoryHolder {
|
||||
public static final String TABLE_NAME = "§eBrew Sealing Table";
|
||||
public static final NamespacedKey TAG_KEY = new NamespacedKey(P.p, "SealingTable");
|
||||
public static boolean recipeRegistered = false;
|
||||
|
||||
private final Inventory inventory;
|
||||
private final Player player;
|
||||
@@ -27,7 +31,7 @@ public class BSealer implements InventoryHolder {
|
||||
|
||||
public BSealer(Player player) {
|
||||
this.player = player;
|
||||
inventory = P.p.getServer().createInventory(this, InventoryType.DISPENSER, "Brew Sealing Table");
|
||||
inventory = P.p.getServer().createInventory(this, InventoryType.DISPENSER, P.p.languageReader.get("Etc_SealingTable"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -86,12 +90,43 @@ public class BSealer implements InventoryHolder {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isBSealer(Block block) {
|
||||
if (P.use1_14 && block.getType() == Material.SMOKER) {
|
||||
Container smoker = (Container) block.getState();
|
||||
if (smoker.getCustomName() != null) {
|
||||
if (smoker.getCustomName().equals("§e" + P.p.languageReader.get("Etc_SealingTable"))) {
|
||||
return true;
|
||||
} else
|
||||
return smoker.getPersistentDataContainer().has(TAG_KEY, PersistentDataType.BYTE);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void blockPlace(ItemStack item, Block block) {
|
||||
if (item.getType() == Material.SMOKER && item.hasItemMeta()) {
|
||||
ItemMeta itemMeta = item.getItemMeta();
|
||||
assert itemMeta != null;
|
||||
if ((itemMeta.hasDisplayName() && itemMeta.getDisplayName().equals("§e" + P.p.languageReader.get("Etc_SealingTable"))) ||
|
||||
itemMeta.getPersistentDataContainer().has(BSealer.TAG_KEY, PersistentDataType.BYTE)) {
|
||||
Container smoker = (Container) block.getState();
|
||||
// Rotate the Block 180° so it doesn't look like a Smoker
|
||||
Directional dir = (Directional) smoker.getBlockData();
|
||||
dir.setFacing(dir.getFacing().getOppositeFace());
|
||||
smoker.setBlockData(dir);
|
||||
smoker.getPersistentDataContainer().set(BSealer.TAG_KEY, PersistentDataType.BYTE, (byte)1);
|
||||
smoker.update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerRecipe() {
|
||||
recipeRegistered = true;
|
||||
ItemStack sealingTableItem = new ItemStack(Material.SMOKER);
|
||||
ItemMeta meta = P.p.getServer().getItemFactory().getItemMeta(Material.SMOKER);
|
||||
if (meta == null) return;
|
||||
meta.setDisplayName(TABLE_NAME);
|
||||
meta.setDisplayName("§e" + P.p.languageReader.get("Etc_SealingTable"));
|
||||
meta.getPersistentDataContainer().set(TAG_KEY, PersistentDataType.BYTE, (byte)1);
|
||||
sealingTableItem.setItemMeta(meta);
|
||||
|
||||
ShapedRecipe recipe = new ShapedRecipe(new NamespacedKey(P.p, "SealingTable"), sealingTableItem);
|
||||
@@ -103,4 +138,9 @@ public class BSealer implements InventoryHolder {
|
||||
|
||||
P.p.getServer().addRecipe(recipe);
|
||||
}
|
||||
|
||||
public static void unregisterRecipe() {
|
||||
recipeRegistered = false;
|
||||
P.p.getServer().removeRecipe(new NamespacedKey(P.p, "SealingTable"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,10 +125,6 @@ public class P extends JavaPlugin {
|
||||
p.getServer().getScheduler().runTaskTimer(p, new BreweryRunnable(), 650, 1200);
|
||||
p.getServer().getScheduler().runTaskTimer(p, new DrunkRunnable(), 120, 120);
|
||||
|
||||
if (P.use1_14) {
|
||||
BSealer.registerRecipe();
|
||||
}
|
||||
|
||||
if (BConfig.updateCheck) {
|
||||
try {
|
||||
p.getServer().getScheduler().runTaskLaterAsynchronously(p, new UpdateChecker(), 135);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.dre.brewery.filedata;
|
||||
|
||||
import com.dre.brewery.BSealer;
|
||||
import com.dre.brewery.Brew;
|
||||
import com.dre.brewery.DistortChat;
|
||||
import com.dre.brewery.MCBarrel;
|
||||
@@ -75,6 +76,10 @@ public class BConfig {
|
||||
public static boolean alwaysShowQuality; // Always show quality stars
|
||||
public static boolean alwaysShowAlc; // Always show alc%
|
||||
|
||||
//Features
|
||||
public static boolean craftSealingTable; // Allow Crafting of Sealing Table
|
||||
public static boolean enableSealingTable; // Allow Usage of Sealing Table
|
||||
|
||||
//Item
|
||||
public static List<RecipeItem> customItems = new ArrayList<>();
|
||||
|
||||
@@ -221,6 +226,8 @@ public class BConfig {
|
||||
enablePuke = config.getBoolean("enablePuke", false);
|
||||
pukeDespawntime = config.getInt("pukeDespawntime", 60) * 20;
|
||||
homeType = config.getString("homeType", null);
|
||||
craftSealingTable = config.getBoolean("craftSealingTable", false);
|
||||
enableSealingTable = config.getBoolean("enableSealingTable", false);
|
||||
colorInBarrels = config.getBoolean("colorInBarrels", false);
|
||||
colorInBrewer = config.getBoolean("colorInBrewer", false);
|
||||
alwaysShowQuality = config.getBoolean("alwaysShowQuality", false);
|
||||
@@ -329,6 +336,15 @@ public class BConfig {
|
||||
DistortChat.log = config.getBoolean("logRealChat", false);
|
||||
DistortChat.doSigns = config.getBoolean("distortSignText", false);
|
||||
|
||||
// Register Sealing Table Recipe
|
||||
if (P.use1_14) {
|
||||
if (craftSealingTable && !BSealer.recipeRegistered) {
|
||||
BSealer.registerRecipe();
|
||||
} else if (!craftSealingTable && BSealer.recipeRegistered) {
|
||||
BSealer.unregisterRecipe();
|
||||
}
|
||||
}
|
||||
|
||||
// init SQL
|
||||
if (sqlSync != null) {
|
||||
try {
|
||||
|
||||
@@ -11,12 +11,16 @@ import org.bukkit.Material;
|
||||
import org.bukkit.Nameable;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.block.data.Directional;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.*;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
|
||||
public class BlockListener implements Listener {
|
||||
|
||||
@@ -47,17 +51,8 @@ public class BlockListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onBlockPlace(BlockPlaceEvent event) {
|
||||
if (!P.use1_14) return;
|
||||
if (event.getBlock().getType() == Material.SMOKER) {
|
||||
BlockState state = event.getBlock().getState();
|
||||
Nameable name = (Nameable) state;
|
||||
if (name.getCustomName() != null && name.getCustomName().equals(BSealer.TABLE_NAME)) {
|
||||
// Rotate the Block 180° so it doesn't look like a Smoker
|
||||
Directional dir = (Directional) state.getBlockData();
|
||||
dir.setFacing(dir.getFacing().getOppositeFace());
|
||||
event.getBlock().setBlockData(dir);
|
||||
}
|
||||
}
|
||||
if (!P.use1_14 || event.getBlock().getType() != Material.SMOKER) return;
|
||||
BSealer.blockPlace(event.getItemInHand(), event.getBlock());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
|
||||
@@ -41,14 +41,16 @@ public class PlayerListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
if (P.use1_14 && type == Material.SMOKER) {
|
||||
Nameable smoker = (Nameable) clickedBlock.getState();
|
||||
if (smoker.getCustomName() != null && smoker.getCustomName().equals(BSealer.TABLE_NAME)) {
|
||||
event.setCancelled(true);
|
||||
|
||||
if (BSealer.isBSealer(clickedBlock)) {
|
||||
event.setCancelled(true);
|
||||
if (BConfig.enableSealingTable) {
|
||||
BSealer sealer = new BSealer(player);
|
||||
event.getPlayer().openInventory(sealer.getInventory());
|
||||
return;
|
||||
} else {
|
||||
P.p.msg(player, P.p.languageReader.get("Error_SealingTableDisabled"));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not process Off Hand for Barrel interaction
|
||||
|
||||
@@ -274,20 +274,6 @@ public class BrewLore {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the Seal-bars |*****| around the Lore Quality-Stars
|
||||
*/
|
||||
/*public void showSeal() {
|
||||
int starsLine = Type.STARS.findInLore(lore);
|
||||
if (starsLine > -1) {
|
||||
StringBuilder lineEdit = new StringBuilder(lore.get(starsLine));
|
||||
int index = Type.STARS.id.length();
|
||||
lineEdit.insert(index, "§8[");
|
||||
lineEdit.append("§8]");
|
||||
lore.set(starsLine, lineEdit.toString());
|
||||
}
|
||||
}*/
|
||||
|
||||
public void updateAlc(boolean inDistiller) {
|
||||
if (!brew.isUnlabeled() && (inDistiller || BConfig.alwaysShowAlc) && (!brew.hasRecipe() || brew.getCurrentRecipe().getAlcohol() > 0)) {
|
||||
int alc = brew.getOrCalcAlc();
|
||||
|
||||
Reference in New Issue
Block a user