Added config options for Sealing Table

Translations for the Sealing Table
And a Data Tag for the Block
This commit is contained in:
Sn0wStorm 2020-04-06 10:51:44 +02:00
parent 12b0a3c115
commit f4bfdfa595
10 changed files with 85 additions and 38 deletions

View File

@ -46,6 +46,10 @@ drainItems:
# Zeit (in Tagen) die Trunkenheitsdaten nach offlinegehen eines Spielers im Speicher verbleiben, um z.B. Kater-Effekte anzuwenden. [7]
hangoverDays: 7
# Ob das craften und das benutzen des Trank-Versiegelungs-Tisches aktiviert ist (2 Flaschen über 4 Holz) [true, true]
craftSealingTable: true
enableSealingTable: true
# Färben der Iteminformationen je nach Qualität während sie sich 1. im Fass und/oder 2. im Braustand befinden [true, true]
colorInBarrels: true
colorInBrewer: true

View File

@ -46,6 +46,10 @@ drainItems:
# Time (in days) that drunkeness-data stays in memory after a player goes offline, to apply hangover etc. [7]
hangoverDays: 7
# If crafting and using of the Brew Sealing Table is enabled (2 Bottles over 4 Planks) [true, true]
craftSealingTable: true
enableSealingTable: true
# Color the Item information (lore) depending on quality while it is 1. in a barrel and/or 2. in a brewing stand [true, true]
colorInBarrels: true
colorInBrewer: true

View File

@ -34,6 +34,7 @@ CMD_NonStatic: '&eTrank ist wieder veränderlich und kann normal gereift oder de
# Error
Error_ConfigUpdate: 'Unbekannte Brewery Config Version: v&v1, Config wurde nicht geupdated!'
Error_ItemNotPotion: '&cDas Item in deiner Hand konnte nicht als Trank identifiziert werden'
Error_SealingTableDisabled: '&cDer Trankversiegler ist deaktiviert'
Error_SealedAlwaysStatic: 'Versiegelte Tränke sind immer unveränderlich!'
Error_AlreadyUnlabeled: '&cDer Trank in deiner Hand ist bereits Entlabelt!'
Error_NoBarrelAccess: '&cDu hast keine Rechte dieses Fass zu öffnen!'
@ -49,6 +50,7 @@ Error_YmlRead: 'config.yml konnte nicht gelesen werden, ist die Datei im korrekt
Etc_Page: Seite
Etc_Usage: 'Benutzung:'
Etc_Barrel: Fass
Etc_SealingTable: Trankversiegler
# Help
Help_Copy: '&6/brew Copy [Anzahl]&9 Kopiert den Trank in deiner Hand'

View File

@ -34,6 +34,7 @@ CMD_UnLabel: '&aLabel removed!'
# Error
Error_ConfigUpdate: 'Unknown Brewery config version: v&v1, config was not updated!'
Error_ItemNotPotion: '&cThe item in your hand could not be identified as a potion!'
Error_SealingTableDisabled: '&cThe Sealing Table is disabled'
Error_SealedAlwaysStatic: 'Sealed Brews are always static!'
Error_AlreadyUnlabeled: '&cThe Brew in your hand is already unlabeled!'
Error_NoBarrelAccess: '&cYou don''t have permissions to access this barrel!'
@ -49,6 +50,7 @@ Error_YmlRead: 'Could not read file config.yml, please make sure the file is in
Etc_Barrel: Barrel
Etc_Page: Page
Etc_Usage: 'Usage:'
Etc_SealingTable: Brew Sealing Table
# Help
Help_Copy: '&6/brew copy [Quantity]&9 Copies the potion in your hand'

View File

@ -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"));
}
}

View File

@ -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);

View File

@ -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 {

View File

@ -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)

View File

@ -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

View File

@ -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();