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] # Zeit (in Tagen) die Trunkenheitsdaten nach offlinegehen eines Spielers im Speicher verbleiben, um z.B. Kater-Effekte anzuwenden. [7]
hangoverDays: 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] # 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 colorInBarrels: true
colorInBrewer: 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] # Time (in days) that drunkeness-data stays in memory after a player goes offline, to apply hangover etc. [7]
hangoverDays: 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] # 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 colorInBarrels: true
colorInBrewer: true colorInBrewer: true

View File

@ -34,6 +34,7 @@ CMD_NonStatic: '&eTrank ist wieder veränderlich und kann normal gereift oder de
# Error # Error
Error_ConfigUpdate: 'Unbekannte Brewery Config Version: v&v1, Config wurde nicht geupdated!' 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_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_SealedAlwaysStatic: 'Versiegelte Tränke sind immer unveränderlich!'
Error_AlreadyUnlabeled: '&cDer Trank in deiner Hand ist bereits Entlabelt!' Error_AlreadyUnlabeled: '&cDer Trank in deiner Hand ist bereits Entlabelt!'
Error_NoBarrelAccess: '&cDu hast keine Rechte dieses Fass zu öffnen!' 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_Page: Seite
Etc_Usage: 'Benutzung:' Etc_Usage: 'Benutzung:'
Etc_Barrel: Fass Etc_Barrel: Fass
Etc_SealingTable: Trankversiegler
# Help # Help
Help_Copy: '&6/brew Copy [Anzahl]&9 Kopiert den Trank in deiner Hand' 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
Error_ConfigUpdate: 'Unknown Brewery config version: v&v1, config was not updated!' 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_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_SealedAlwaysStatic: 'Sealed Brews are always static!'
Error_AlreadyUnlabeled: '&cThe Brew in your hand is already unlabeled!' Error_AlreadyUnlabeled: '&cThe Brew in your hand is already unlabeled!'
Error_NoBarrelAccess: '&cYou don''t have permissions to access this barrel!' 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_Barrel: Barrel
Etc_Page: Page Etc_Page: Page
Etc_Usage: 'Usage:' Etc_Usage: 'Usage:'
Etc_SealingTable: Brew Sealing Table
# Help # Help
Help_Copy: '&6/brew copy [Quantity]&9 Copies the potion in your hand' 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.NamespacedKey;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.Tag; 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.entity.Player;
import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
@ -11,13 +14,14 @@ import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.RecipeChoice; import org.bukkit.inventory.RecipeChoice;
import org.bukkit.inventory.ShapedRecipe; import org.bukkit.inventory.ShapedRecipe;
import org.bukkit.inventory.meta.BlockStateMeta;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.scheduler.BukkitTask; import org.bukkit.scheduler.BukkitTask;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class BSealer implements InventoryHolder { 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 Inventory inventory;
private final Player player; private final Player player;
@ -27,7 +31,7 @@ public class BSealer implements InventoryHolder {
public BSealer(Player player) { public BSealer(Player player) {
this.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 @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() { public static void registerRecipe() {
recipeRegistered = true;
ItemStack sealingTableItem = new ItemStack(Material.SMOKER); ItemStack sealingTableItem = new ItemStack(Material.SMOKER);
ItemMeta meta = P.p.getServer().getItemFactory().getItemMeta(Material.SMOKER); ItemMeta meta = P.p.getServer().getItemFactory().getItemMeta(Material.SMOKER);
if (meta == null) return; 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); sealingTableItem.setItemMeta(meta);
ShapedRecipe recipe = new ShapedRecipe(new NamespacedKey(P.p, "SealingTable"), sealingTableItem); ShapedRecipe recipe = new ShapedRecipe(new NamespacedKey(P.p, "SealingTable"), sealingTableItem);
@ -103,4 +138,9 @@ public class BSealer implements InventoryHolder {
P.p.getServer().addRecipe(recipe); 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 BreweryRunnable(), 650, 1200);
p.getServer().getScheduler().runTaskTimer(p, new DrunkRunnable(), 120, 120); p.getServer().getScheduler().runTaskTimer(p, new DrunkRunnable(), 120, 120);
if (P.use1_14) {
BSealer.registerRecipe();
}
if (BConfig.updateCheck) { if (BConfig.updateCheck) {
try { try {
p.getServer().getScheduler().runTaskLaterAsynchronously(p, new UpdateChecker(), 135); p.getServer().getScheduler().runTaskLaterAsynchronously(p, new UpdateChecker(), 135);

View File

@ -1,5 +1,6 @@
package com.dre.brewery.filedata; package com.dre.brewery.filedata;
import com.dre.brewery.BSealer;
import com.dre.brewery.Brew; import com.dre.brewery.Brew;
import com.dre.brewery.DistortChat; import com.dre.brewery.DistortChat;
import com.dre.brewery.MCBarrel; import com.dre.brewery.MCBarrel;
@ -75,6 +76,10 @@ public class BConfig {
public static boolean alwaysShowQuality; // Always show quality stars public static boolean alwaysShowQuality; // Always show quality stars
public static boolean alwaysShowAlc; // Always show alc% 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 //Item
public static List<RecipeItem> customItems = new ArrayList<>(); public static List<RecipeItem> customItems = new ArrayList<>();
@ -221,6 +226,8 @@ public class BConfig {
enablePuke = config.getBoolean("enablePuke", false); enablePuke = config.getBoolean("enablePuke", false);
pukeDespawntime = config.getInt("pukeDespawntime", 60) * 20; pukeDespawntime = config.getInt("pukeDespawntime", 60) * 20;
homeType = config.getString("homeType", null); homeType = config.getString("homeType", null);
craftSealingTable = config.getBoolean("craftSealingTable", false);
enableSealingTable = config.getBoolean("enableSealingTable", false);
colorInBarrels = config.getBoolean("colorInBarrels", false); colorInBarrels = config.getBoolean("colorInBarrels", false);
colorInBrewer = config.getBoolean("colorInBrewer", false); colorInBrewer = config.getBoolean("colorInBrewer", false);
alwaysShowQuality = config.getBoolean("alwaysShowQuality", false); alwaysShowQuality = config.getBoolean("alwaysShowQuality", false);
@ -329,6 +336,15 @@ public class BConfig {
DistortChat.log = config.getBoolean("logRealChat", false); DistortChat.log = config.getBoolean("logRealChat", false);
DistortChat.doSigns = config.getBoolean("distortSignText", 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 // init SQL
if (sqlSync != null) { if (sqlSync != null) {
try { try {

View File

@ -11,12 +11,16 @@ import org.bukkit.Material;
import org.bukkit.Nameable; import org.bukkit.Nameable;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.block.Container;
import org.bukkit.block.data.Directional; import org.bukkit.block.data.Directional;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.*; 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 { public class BlockListener implements Listener {
@ -47,17 +51,8 @@ public class BlockListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPlace(BlockPlaceEvent event) { public void onBlockPlace(BlockPlaceEvent event) {
if (!P.use1_14) return; if (!P.use1_14 || event.getBlock().getType() != Material.SMOKER) return;
if (event.getBlock().getType() == Material.SMOKER) { BSealer.blockPlace(event.getItemInHand(), event.getBlock());
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);
}
}
} }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)

View File

@ -41,14 +41,16 @@ public class PlayerListener implements Listener {
return; return;
} }
if (P.use1_14 && type == Material.SMOKER) {
Nameable smoker = (Nameable) clickedBlock.getState(); if (BSealer.isBSealer(clickedBlock)) {
if (smoker.getCustomName() != null && smoker.getCustomName().equals(BSealer.TABLE_NAME)) { event.setCancelled(true);
event.setCancelled(true); if (BConfig.enableSealingTable) {
BSealer sealer = new BSealer(player); BSealer sealer = new BSealer(player);
event.getPlayer().openInventory(sealer.getInventory()); 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 // 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) { public void updateAlc(boolean inDistiller) {
if (!brew.isUnlabeled() && (inDistiller || BConfig.alwaysShowAlc) && (!brew.hasRecipe() || brew.getCurrentRecipe().getAlcohol() > 0)) { if (!brew.isUnlabeled() && (inDistiller || BConfig.alwaysShowAlc) && (!brew.hasRecipe() || brew.getCurrentRecipe().getAlcohol() > 0)) {
int alc = brew.getOrCalcAlc(); int alc = brew.getOrCalcAlc();