feat: add dirt to mud in cauldron; fix: filter not working in 1.21.8; fix: InfinityBucket won't fill cauldron
Some checks failed
Gitea Actions Demo / Build-Gradle (push) Has been cancelled
Some checks failed
Gitea Actions Demo / Build-Gradle (push) Has been cancelled
This commit is contained in:
@@ -6,9 +6,6 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
import org.bukkit.scoreboard.ScoreboardManager;
|
|
||||||
import de.hessj.helper.Helper.Type;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.TextDecoration;
|
import net.kyori.adventure.text.format.TextDecoration;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
@@ -26,8 +23,6 @@ import org.bukkit.inventory.RecipeChoice.MaterialChoice;
|
|||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import org.bukkit.inventory.meta.components.CustomModelDataComponent;
|
import org.bukkit.inventory.meta.components.CustomModelDataComponent;
|
||||||
import org.bukkit.persistence.PersistentDataType;
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
|
||||||
import java.util.AbstractMap.SimpleEntry;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -35,9 +30,6 @@ import java.util.Collections;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.bukkit.scoreboard.Scoreboard;
|
|
||||||
import java.time.*;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
public class App extends JavaPlugin {
|
public class App extends JavaPlugin {
|
||||||
public static de.hessj.helper.Helper helper = new de.hessj.helper.Helper();
|
public static de.hessj.helper.Helper helper = new de.hessj.helper.Helper();
|
||||||
@@ -572,7 +564,7 @@ for (Player p : Bukkit.getOnlinePlayers()) {
|
|||||||
pM.registerEvents(new MobBurner(), this);
|
pM.registerEvents(new MobBurner(), this);
|
||||||
pM.registerEvents(new AutoCrafter(), this);
|
pM.registerEvents(new AutoCrafter(), this);
|
||||||
pM.registerEvents(new AFKListener(), this);
|
pM.registerEvents(new AFKListener(), this);
|
||||||
pM.registerEvents(new CauldronConcrete(), this);
|
pM.registerEvents(new BetterCauldrons(), this);
|
||||||
pM.registerEvents(new InfinityWaterBucket(), this);
|
pM.registerEvents(new InfinityWaterBucket(), this);
|
||||||
pM.registerEvents(new ArmoredElytra(), this);
|
pM.registerEvents(new ArmoredElytra(), this);
|
||||||
pM.registerEvents(new ShulkerPreview(), this);
|
pM.registerEvents(new ShulkerPreview(), this);
|
||||||
|
|||||||
44
environmentex/src/main/java/de/hessj/environmentex/BetterCauldrons.java
Executable file
44
environmentex/src/main/java/de/hessj/environmentex/BetterCauldrons.java
Executable file
@@ -0,0 +1,44 @@
|
|||||||
|
//GPT'd
|
||||||
|
package de.hessj.environmentex;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.entity.Item;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import com.google.common.base.Enums;
|
||||||
|
import io.papermc.paper.event.entity.EntityInsideBlockEvent;
|
||||||
|
|
||||||
|
public class BetterCauldrons implements Listener {
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPowderDrop(EntityInsideBlockEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Item item))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Block block = event.getBlock();
|
||||||
|
if (block.getType() != Material.WATER_CAULDRON)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ItemStack stack = item.getItemStack();
|
||||||
|
Material type = stack.getType();
|
||||||
|
|
||||||
|
if (!type.name().endsWith("_CONCRETE_POWDER") && type != Material.DIRT && type != Material.ROOTED_DIRT
|
||||||
|
&& type != Material.COARSE_DIRT) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == Material.DIRT || type == Material.ROOTED_DIRT || type == Material.COARSE_DIRT) {
|
||||||
|
item.getWorld().dropItem(item.getLocation(), new ItemStack(Material.MUD, stack.getAmount()));
|
||||||
|
} else {
|
||||||
|
String hardenedName = type.name().replace("_POWDER", "");
|
||||||
|
Material hardened = Enums.getIfPresent(Material.class, hardenedName).orNull();
|
||||||
|
if (hardened == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
item.getWorld().dropItem(item.getLocation(), new ItemStack(hardened, stack.getAmount()));
|
||||||
|
}
|
||||||
|
item.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
//GPT'd
|
|
||||||
package de.hessj.environmentex;
|
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.entity.Item;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import com.google.common.base.Enums;
|
|
||||||
import io.papermc.paper.event.entity.EntityInsideBlockEvent;
|
|
||||||
|
|
||||||
public class CauldronConcrete implements Listener {
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onPowderDrop(EntityInsideBlockEvent event) {
|
|
||||||
if (!(event.getEntity() instanceof Item item)) return;
|
|
||||||
|
|
||||||
Block block = event.getBlock();
|
|
||||||
if (block.getType() != Material.WATER_CAULDRON) return;
|
|
||||||
|
|
||||||
ItemStack stack = item.getItemStack();
|
|
||||||
Material type = stack.getType();
|
|
||||||
|
|
||||||
if (!type.name().endsWith("_CONCRETE_POWDER")) return;
|
|
||||||
|
|
||||||
String hardenedName = type.name().replace("_POWDER", "");
|
|
||||||
Material hardened = Enums.getIfPresent(Material.class, hardenedName).orNull();
|
|
||||||
if (hardened == null) return;
|
|
||||||
|
|
||||||
item.getWorld().dropItem(item.getLocation(), new ItemStack(hardened, stack.getAmount()));
|
|
||||||
item.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,15 +1,13 @@
|
|||||||
//TODO: needs fix!
|
//GPT'd
|
||||||
package de.hessj.environmentex;
|
package de.hessj.environmentex;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.craftbukkit.v1_21_R1.entity.CraftItem;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@@ -20,94 +18,72 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import org.bukkit.inventory.meta.BookMeta;
|
import org.bukkit.inventory.meta.BookMeta;
|
||||||
|
|
||||||
import de.hessj.helper.Helper.Type;
|
import de.hessj.helper.Helper.Type;
|
||||||
import net.kyori.adventure.inventory.Book;
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
|
|
||||||
public class Filter implements Listener {
|
public class Filter implements Listener {
|
||||||
|
|
||||||
long creationTime = 0;
|
private long creationTime = 0;
|
||||||
public de.hessj.helper.Helper helper= new de.hessj.helper.Helper();
|
private final de.hessj.helper.Helper helper = new de.hessj.helper.Helper();
|
||||||
|
|
||||||
public void addToBook(Player pl, Material m, String name) {
|
public void addToBook(Player pl, Material m, String name) {
|
||||||
if (creationTime == 0) {
|
if (creationTime == 0) {
|
||||||
BookMeta bm = (BookMeta) pl.getInventory().getItemInMainHand().getItemMeta();
|
ItemStack book = pl.getInventory().getItemInMainHand();
|
||||||
|
if (!(book.getItemMeta() instanceof BookMeta bm)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (bm.getPageCount() < 100) {
|
if (bm.getPageCount() < 100) {
|
||||||
|
boolean isWritten = false;
|
||||||
|
List<Component> pages = new ArrayList<>(bm.pages());
|
||||||
|
Component matchedPage = null;
|
||||||
|
|
||||||
ItemStack b = pl.getInventory().getItemInMainHand();
|
|
||||||
Boolean isWritten = false;
|
|
||||||
List<Component> pages = new ArrayList<>();
|
|
||||||
|
|
||||||
for (Component p : bm.pages()) {
|
|
||||||
|
|
||||||
String answer = p.toString().substring(p.toString().indexOf("content=\""));
|
|
||||||
answer = answer.substring(answer.indexOf("\""));
|
|
||||||
answer = answer.substring(1, answer.indexOf("\"", answer.indexOf("\"") + 1));
|
|
||||||
|
|
||||||
if (answer != "") {
|
|
||||||
pages.add(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Component testp = null;
|
|
||||||
for (Component p : pages) {
|
for (Component p : pages) {
|
||||||
|
String content = p instanceof net.kyori.adventure.text.TextComponent tc ? tc.content() : "";
|
||||||
String answer = p.toString().substring(p.toString().indexOf("content=\""));
|
if (content.equalsIgnoreCase(m.toString())) {
|
||||||
answer = answer.substring(answer.indexOf("\""));
|
|
||||||
answer = answer.substring(1, answer.indexOf("\"", answer.indexOf("\"") + 1));
|
|
||||||
|
|
||||||
if (answer.equals(m.toString())) {
|
|
||||||
isWritten = true;
|
isWritten = true;
|
||||||
testp = p;
|
matchedPage = p;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isWritten) {
|
if (isWritten) {
|
||||||
|
pl.sendMessage(helper.R3SMessage(Type.INFO, "[ItemFilter] " + name + " wurde aus dem Buch ausgetragen!"));
|
||||||
pl
|
pages.remove(matchedPage);
|
||||||
.sendMessage(helper.R3SMessage(Type.INFO, "[ItemFilter] " + name + " wurde aus dem Buch ausgetragen!"));
|
|
||||||
pages.remove(testp);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
pages.add(Component.text(m.toString()));
|
pages.add(Component.text(m.toString()));
|
||||||
pl.sendMessage(helper.R3SMessage(Type.INFO, "[ItemFilter] " + name + " wurde in das Buch übertragen!"));
|
pl.sendMessage(helper.R3SMessage(Type.INFO, "[ItemFilter] " + name + " wurde in das Buch übertragen!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
bm.pages(pages);
|
bm.pages(pages);
|
||||||
b.setItemMeta(bm);
|
book.setItemMeta(bm);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
pl
|
pl.sendMessage(helper.R3SMessage(Type.ERROR,
|
||||||
.sendMessage(helper.R3SMessage(Type.ERROR, "[ItemFilter] Du kannst nur bis zu 100 Items filtern! Entferne ein paar Seiten aus dem Buch!"));
|
"[ItemFilter] Du kannst nur bis zu 100 Items filtern! Entferne ein paar Seiten aus dem Buch!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
creationTime = Instant.now().getEpochSecond();
|
creationTime = Instant.now().getEpochSecond();
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(App.main, new Runnable() {
|
Bukkit.getScheduler().runTaskLater(App.main, () -> creationTime = 0, 15L);
|
||||||
public void run() {
|
|
||||||
creationTime = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}, 15);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void selectFilter(PlayerInteractEvent e) {
|
public void selectFilter(PlayerInteractEvent e) {
|
||||||
if (e.getAction() == Action.LEFT_CLICK_BLOCK) {
|
if (e.getAction() == Action.LEFT_CLICK_BLOCK) {
|
||||||
if (e.getPlayer().getInventory().getItemInMainHand() != null
|
ItemStack hand = e.getPlayer().getInventory().getItemInMainHand();
|
||||||
&& e.getPlayer().getInventory().getItemInMainHand().getType().equals(Material.WRITABLE_BOOK)
|
if (hand != null && hand.getType() == Material.WRITABLE_BOOK && hand.hasItemMeta()
|
||||||
&& e.getPlayer().getInventory().getItemInMainHand().hasItemMeta()
|
&& hand.getItemMeta().hasDisplayName()
|
||||||
&& e.getPlayer().getInventory().getItemInMainHand().getItemMeta().hasDisplayName() &&
|
&& Component.text("Filter").equals(hand.getItemMeta().displayName())) {
|
||||||
e.getPlayer().getInventory().getItemInMainHand().getItemMeta().displayName()
|
|
||||||
.equals(Component.text("Filter"))) {
|
|
||||||
|
|
||||||
Location loc = e.getClickedBlock().getLocation();
|
Location loc = e.getClickedBlock().getLocation();
|
||||||
|
List<Item> nearbyItems = new ArrayList<>(loc.getNearbyEntitiesByType(Item.class, 1, 2, 1));
|
||||||
|
|
||||||
if (loc.getNearbyEntitiesByType(CraftItem.class, 1, 2, 1).size() > 1) {
|
if (nearbyItems.size() > 1) {
|
||||||
e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ItemFilter] Bitte nur ein Item gleichzeitig!"));
|
e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR,
|
||||||
} else {
|
"[ItemFilter] Bitte nur ein Item gleichzeitig!"));
|
||||||
for (Entity en : loc.getNearbyEntitiesByType(CraftItem.class, 1, 2, 1)) {
|
} else if (!nearbyItems.isEmpty()) {
|
||||||
CraftItem itm = (CraftItem) en;
|
Item itm = nearbyItems.get(0);
|
||||||
addToBook(e.getPlayer(), itm.getItemStack().getType(), itm.getItemStack().getType().name());
|
addToBook(e.getPlayer(), itm.getItemStack().getType(), itm.getItemStack().getType().name());
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -115,33 +91,23 @@ public class Filter implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPickup(PlayerAttemptPickupItemEvent e) {
|
public void onPickup(PlayerAttemptPickupItemEvent e) {
|
||||||
BookMeta bm = null;
|
|
||||||
Book b = null;
|
|
||||||
|
|
||||||
for (ItemStack is : e.getPlayer().getInventory().getContents()) {
|
for (ItemStack is : e.getPlayer().getInventory().getContents()) {
|
||||||
if (is != null && is.getType().equals(Material.WRITABLE_BOOK)) {
|
if (is != null && is.getType() == Material.WRITABLE_BOOK) {
|
||||||
bm = (BookMeta) is.getItemMeta();
|
if (!(is.getItemMeta() instanceof BookMeta bm)) continue;
|
||||||
b = bm;
|
|
||||||
|
|
||||||
if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()
|
if (is.hasItemMeta() && is.getItemMeta().hasDisplayName()
|
||||||
&& is.getItemMeta().displayName().equals(Component.text("Filter"))) {
|
&& Component.text("Filter").equals(is.getItemMeta().displayName())) {
|
||||||
|
|
||||||
for (Component p : b.pages()) {
|
for (Component p : bm.pages()) {
|
||||||
|
String content = p instanceof net.kyori.adventure.text.TextComponent tc ? tc.content() : "";
|
||||||
String answer = p.toString().substring(p.toString().indexOf("content=\""));
|
if (content.equalsIgnoreCase(e.getItem().getItemStack().getType().toString())) {
|
||||||
answer = answer.substring(answer.indexOf("\""));
|
|
||||||
answer = answer.substring(1, answer.indexOf("\"", answer.indexOf("\"") + 1));
|
|
||||||
|
|
||||||
if (answer.equals(e.getItem().getItemStack().getType().toString())) {
|
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -103,13 +103,17 @@ public class InfinityWaterBucket implements Listener {
|
|||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if (player.getWorld().getEnvironment() == Environment.NETHER){
|
if (player.getWorld().getEnvironment() == Environment.NETHER) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((App.helper.isInteractable(event.getClickedBlock()) && !player.isSneaking())) {
|
if ((App.helper.isInteractable(event.getClickedBlock()) && !player.isSneaking())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (event.getClickedBlock().getType() == Material.CAULDRON
|
||||||
|
|| event.getClickedBlock().getType() == Material.WATER_CAULDRON) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
Block clickedBlock = event.getClickedBlock();
|
Block clickedBlock = event.getClickedBlock();
|
||||||
|
|||||||
Reference in New Issue
Block a user