use server built in texturepack download
All checks were successful
Gitea Actions Demo / Build-Gradle (push) Successful in 2m50s

This commit is contained in:
Your Name
2025-07-29 01:33:18 +02:00
parent 7905dc816c
commit d1eb737578
19 changed files with 167 additions and 106 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -15,3 +15,5 @@ TO RELEASE: Autocrafter
TO RELEASE: jukeboxes können mit Redstone gesteuert werden + crafted music
TO RELEASE: Squids won't spawn + GLOWSTONE DUST für Rahmen
TO RELEASE: MUTE FUNCTION FOR TAGGED MOBS
r3load command?
TO RELEASE: SHIFT RIGHT CLICK INV SORT

View File

@@ -1,2 +1,2 @@
Command: /opt/homebrew/Cellar/openjdk/23.0.2/libexec/openjdk.jdk/Contents/Home/bin/java -Xmx1G -classpath /Users/janik/.gradle/caches/modules-2/files-2.1/net.fabricmc/tiny-remapper/0.11.1/6c1f29838864ba8f495855edfc8ef17706fedb5d/tiny-remapper-0.11.1-fat.jar net.fabricmc.tinyremapper.Main /Users/janik/Desktop/MCPlugins/environmentex-1.0-SNAPSHOT.jar /Users/janik/Desktop/MCPlugins/environmentex/build/libs/environmentex-1.0-SNAPSHOT-reobf.jar /Users/janik/Desktop/MCPlugins/environmentex/.gradle/caches/paperweight/taskCache/reobfMappings.tiny mojang spigot /Users/janik/Desktop/MCPlugins/environmentex/.gradle/caches/paperweight/taskCache/mappedServerJar.jar --threads=1
[INFO] Finished after 974,94 ms.
[INFO] Finished after 900,45 ms.

View File

@@ -24,4 +24,7 @@ commands:
usage: /<command>
ignorevote:
description: Setzt den Ignorevote Status
usage: /<command>
r3load:
description: ----
usage: /<command>

View File

@@ -56,8 +56,6 @@ public class App extends JavaPlugin {
public static boolean coordinateRunner = false;
public PluginManager pM = Bukkit.getPluginManager();
public HashMap<Player, Boolean> hmActionbar = new HashMap<Player, Boolean>();
public File tpYml = new File(this.getDataFolder() + "/texturepack.yml");
public FileConfiguration tpConfig = YamlConfiguration.loadConfiguration(tpYml);
public NamespacedKey nskLockedChest = new NamespacedKey(this, "R3SLockedChest");
public NamespacedKey nskLockedChestRecipe = new NamespacedKey(this, "R3SLockedChestRecipe");
@@ -66,16 +64,6 @@ public class App extends JavaPlugin {
@Override
public void onEnable() {
tpConfig.addDefault("url", "https://mc.hessj.de/texturepack/CUSTOM.zip");
tpConfig.addDefault("sha1", "a7f7bde9e54279b502d65435877d251aa522cabc");
// Copy defaults and save if the file doesn't have these values
tpConfig.options().copyDefaults(true);
try {
tpConfig.save(tpYml);
} catch (IOException e) {
e.printStackTrace();
}
SquidPrevention.removeSquidReceipes();
SquidPrevention.addCustomSquidRecipes();
@@ -491,6 +479,7 @@ public class App extends JavaPlugin {
getCommand("pin").setExecutor(new EnvironmentExCommands());
getCommand("pin").setTabCompleter(new PinFeature());
getCommand("ignorevote").setExecutor(new EnvironmentExCommands());
getCommand("r3load").setExecutor(new EnvironmentExCommands());
}
public void log(Object msg) {

View File

@@ -1,6 +1,7 @@
package de.hessj.environmentex;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@@ -8,15 +9,20 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Chest;
import org.bukkit.block.DoubleChest;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.persistence.PersistentDataType;
@@ -25,7 +31,6 @@ import de.hessj.helper.Helper.Type;
public class ChestEx implements Listener {
public Boolean lastPlacedIsSafeChest = false;
public de.hessj.helper.Helper helper= new de.hessj.helper.Helper();
@EventHandler
public void onJoin(PlayerJoinEvent e) {
@@ -34,7 +39,7 @@ public class ChestEx implements Listener {
@EventHandler
public void onInteract(PlayerInteractEvent e) {
if (e.getAction() == Action.RIGHT_CLICK_BLOCK && !helper.isInteractable(e.getClickedBlock())) {
if (e.getAction() == Action.RIGHT_CLICK_BLOCK && !App.helper.isInteractable(e.getClickedBlock())) {
if (e.getPlayer().getInventory().getItemInMainHand() != null
&& e.getPlayer().getInventory().getItemInMainHand().hasItemMeta() && e.getPlayer().getInventory()
.getItemInMainHand().getItemMeta().getPersistentDataContainer() != null) {
@@ -43,7 +48,7 @@ public class ChestEx implements Listener {
lastPlacedIsSafeChest = true;
}
}
} else if (e.getAction() == Action.RIGHT_CLICK_BLOCK && helper.isInteractable(e.getClickedBlock())) {
} else if (e.getAction() == Action.RIGHT_CLICK_BLOCK && App.helper.isInteractable(e.getClickedBlock())) {
Location loc = e.getClickedBlock().getLocation();
String locStr = loc.getBlockX() + "~" + loc.getBlockY() + "~" + loc.getBlockZ();
if (App.main.getConfig().getStringList("chests." + e.getPlayer().getUniqueId().toString())
@@ -55,7 +60,8 @@ public class ChestEx implements Listener {
List<String> chestList = App.main.getConfig().getStringList("chests." + uuid);
if (chestList.contains(locStr)) {
e.setCancelled(true);
e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Dies ist nicht deine Truhe!"));
e.getPlayer().sendMessage(
App.helper.R3SMessage(Type.ERROR, "[ChestEx] Dies ist nicht deine Truhe!"));
return;
}
}
@@ -113,7 +119,8 @@ public class ChestEx implements Listener {
}
}
e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst diese Truhe nicht mit einer verschlossenen Truhe erweitern!"));
e.getPlayer().sendMessage(App.helper.R3SMessage(Type.ERROR,
"[ChestEx] Du kannst diese Truhe nicht mit einer verschlossenen Truhe erweitern!"));
return;
}
@@ -146,7 +153,8 @@ public class ChestEx implements Listener {
}
}
e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst diese Truhe nicht mit einer verschlossenen Truhe erweitern!"));
e.getPlayer().sendMessage(App.helper.R3SMessage(Type.ERROR,
"[ChestEx] Du kannst diese Truhe nicht mit einer verschlossenen Truhe erweitern!"));
return;
}
}
@@ -209,7 +217,8 @@ public class ChestEx implements Listener {
e.getPlayer().updateInventory();
}
}
e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst eine verschlossene Truhe nicht mit einer anderen Truhe erweitern!"));
e.getPlayer().sendMessage(App.helper.R3SMessage(Type.ERROR,
"[ChestEx] Du kannst eine verschlossene Truhe nicht mit einer anderen Truhe erweitern!"));
}
@@ -240,7 +249,8 @@ public class ChestEx implements Listener {
e.getPlayer().updateInventory();
}
}
e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Du kannst eine verschlossene Truhe nicht mit einer anderen Truhe erweitern!"));
e.getPlayer().sendMessage(App.helper.R3SMessage(Type.ERROR,
"[ChestEx] Du kannst eine verschlossene Truhe nicht mit einer anderen Truhe erweitern!"));
}
}
}
@@ -307,12 +317,140 @@ public class ChestEx implements Listener {
List<String> chestList = App.main.getConfig().getStringList("chests." + uuid);
if (chestList.contains(locStr)) {
e.setCancelled(true);
e.getPlayer().sendMessage(helper.R3SMessage(Type.ERROR, "[ChestEx] Dies ist nicht deine Truhe!"));
e.getPlayer()
.sendMessage(
App.helper.R3SMessage(Type.ERROR, "[ChestEx] Dies ist nicht deine Truhe!"));
return;
}
}
}
}
}
@EventHandler
public void onInvClick(InventoryClickEvent e) {
if (e.getClick().toString().equals("DOUBLE_CLICK") && e.getCursor().getType().equals(Material.AIR)
&& e.getCurrentItem().getType().equals(Material.AIR)
&& e.getClickedInventory().getType().equals(InventoryType.PLAYER)) {
if (e.getWhoClicked().getOpenInventory().getTopInventory().getType() == InventoryType.CHEST
|| e.getWhoClicked().getOpenInventory().getTopInventory().getType() == InventoryType.ENDER_CHEST
|| e.getWhoClicked().getOpenInventory().getTopInventory().getType() == InventoryType.SHULKER_BOX) {
// WENN IN INVENTAR GEKLICKT SCHIEBE VON OPEN NACH INV
int i = 0;
for (ItemStack is : e.getWhoClicked().getOpenInventory().getTopInventory().getStorageContents()) {
if (e.getWhoClicked().getInventory().firstEmpty() == -1) {
return;
}
if (is != null) {
e.getWhoClicked().getOpenInventory().getTopInventory().setItem(i, null);
e.getWhoClicked().getInventory().addItem(is);
}
i++;
}
}
} else if (e.getClick().toString().equals("DOUBLE_CLICK") && e.getCursor().getType().equals(Material.AIR)
&& e.getCurrentItem().getType().equals(Material.AIR) &&
(e.getClickedInventory().getType().equals(InventoryType.CHEST)
|| e.getWhoClicked().getOpenInventory().getTopInventory()
.getType() == InventoryType.ENDER_CHEST)) {
// WENN OPEN GEKLICKT SCHIEBE VON INV NACH OPEN
int i = 0;
for (ItemStack is : e.getWhoClicked().getInventory().getStorageContents()) {
if (e.getWhoClicked().getOpenInventory().getTopInventory().firstEmpty() == -1) {
return;
}
if (is != null) {
e.getWhoClicked().getInventory().setItem(i, null);
e.getWhoClicked().getOpenInventory().getTopInventory().addItem(is);
}
i++;
}
} else if (e.getClick().toString().equals("DOUBLE_CLICK") && e.getCursor().getType().equals(Material.AIR)
&& e.getCurrentItem().getType().equals(Material.AIR)
&& e.getWhoClicked().getOpenInventory().getTopInventory().getType() == InventoryType.SHULKER_BOX) {
int i = 0;
for (ItemStack is : e.getWhoClicked().getInventory().getStorageContents()) {
if (e.getWhoClicked().getOpenInventory().getTopInventory().firstEmpty() == -1) {
return;
}
if (is != null && (e.getWhoClicked().getOpenInventory().getTopInventory().getType()
.equals(InventoryType.SHULKER_BOX) && !is.getType().toString().contains("SHULKER_BOX"))) {
e.getWhoClicked().getInventory().setItem(i, null);
e.getWhoClicked().getOpenInventory().getTopInventory().addItem(is);
}
i++;
}
}
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (event.getClick() != ClickType.SHIFT_RIGHT)
return;
Inventory inv = event.getClickedInventory();
if (inv == null)
return;
event.setCancelled(true); // prevent default behavior
if (inv.getType() == InventoryType.PLAYER || inv.getHolder() instanceof Player) {
Player player = (Player) event.getWhoClicked();
sortPlayerInventory(inv, player);
} else {
sortInventory(inv);
}
}
private void sortPlayerInventory(Inventory inventory, Player player) {
// Only sort if it's a PLAYER inventory
List<ItemStack> items = new ArrayList<>();
// Only collect main inventory slots (935 in Bukkit indexing)
for (int i = 9; i <= 35; i++) {
ItemStack item = player.getInventory().getItem(i);
if (item != null && item.getType() != Material.AIR) {
items.add(item.clone());
}
}
// Clear main inventory slots only
for (int i = 9; i <= 35; i++) {
player.getInventory().clear(i);
}
// Sort items
items.sort(Comparator.comparing(i -> i.getType().toString()));
// Re-add sorted items to main inventory
for (ItemStack item : items) {
player.getInventory().addItem(item);
}
}
private void sortInventory(Inventory inventory) {
List<ItemStack> items = new ArrayList<>();
// Collect items
for (ItemStack item : inventory.getContents()) {
if (item != null && item.getType() != Material.AIR) {
items.add(item.clone());
}
}
// Clear inventory
inventory.clear();
// Sort items (you can customize this)
items.sort(Comparator.comparing(i -> i.getType().toString()));
// Re-add sorted items
for (ItemStack item : items) {
inventory.addItem(item);
}
}
}

View File

@@ -1,6 +1,5 @@
package de.hessj.environmentex;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -10,12 +9,9 @@ import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerResourcePackStatusEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
import net.kyori.adventure.text.Component;
public class CustomItems implements Listener {
@@ -33,28 +29,6 @@ public class CustomItems implements Listener {
}
}
private String url = App.main.tpConfig.getString("url");
private String sha1 = App.main.tpConfig.getString("sha1");
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) {
Player player = e.getPlayer();
Bukkit.getScheduler().scheduleSyncDelayedTask(App.main, () -> {
player.setResourcePack(url, sha1);
}, (long) 1L);
}
@EventHandler
public void onResourcepackStatusEvent(PlayerResourcePackStatusEvent event) {
if (event.getStatus() == PlayerResourcePackStatusEvent.Status.DECLINED) {
event.getPlayer().kick(Component.translatable(
"Um auf diesem Server spielen zu können, musst du die Server-Ressourcenpakete aktivieren!"));
} else if (event.getStatus() == PlayerResourcePackStatusEvent.Status.FAILED_DOWNLOAD) {
event.getPlayer().setResourcePack(url, sha1);
}
}
@EventHandler
public void onBlockBreak(BlockBreakEvent e) {
if (e.getPlayer() == null || e.getPlayer().getInventory().getItemInMainHand() == null

View File

@@ -65,7 +65,11 @@ public boolean isPlayerOnlineByName(String name) {
Player p = (Player) sender;
p.playerListName(App.helper.R3SMessage(Type.ERROR, "[AFK] " + p.getName()));
}
if (label.equalsIgnoreCase("r3load")) {
Bukkit.reload();
Player p = (Player) sender;
p.sendMessage(helper.R3SMessage(Type.SUCCESS, "Plugins neu geladen!"));
}
if (label.equalsIgnoreCase("ignorevote")) {
@@ -432,7 +436,10 @@ if (playerTasks.containsKey(uuid)) {
App.main.getLogger().info("Die angegebene UUID ist inkorrekt!");
}
}
if (label.equalsIgnoreCase("r3load")) {
Bukkit.reload();
App.main.getLogger().info("Plugins neu geladen!");
}
}
return true;
}

View File

@@ -1097,60 +1097,5 @@ if(LoginListener.customConfig.getBoolean("players." + p.getUniqueId() + ".ignore
}
return;
}
if (e.getClick().toString().equals("DOUBLE_CLICK") && e.getCursor().getType().equals(Material.AIR)
&& e.getCurrentItem().getType().equals(Material.AIR)
&& e.getClickedInventory().getType().equals(InventoryType.PLAYER)) {
if (e.getWhoClicked().getOpenInventory().getTopInventory().getType() == InventoryType.CHEST
|| e.getWhoClicked().getOpenInventory().getTopInventory().getType() == InventoryType.ENDER_CHEST
|| e.getWhoClicked().getOpenInventory().getTopInventory().getType() == InventoryType.SHULKER_BOX) {
// WENN IN INVENTAR GEKLICKT SCHIEBE VON OPEN NACH INV
int i = 0;
for (ItemStack is : e.getWhoClicked().getOpenInventory().getTopInventory().getStorageContents()) {
if (e.getWhoClicked().getInventory().firstEmpty() == -1) {
return;
}
if (is != null) {
e.getWhoClicked().getOpenInventory().getTopInventory().setItem(i, null);
e.getWhoClicked().getInventory().addItem(is);
}
i++;
}
}
} else if (e.getClick().toString().equals("DOUBLE_CLICK") && e.getCursor().getType().equals(Material.AIR)
&& e.getCurrentItem().getType().equals(Material.AIR) &&
(e.getClickedInventory().getType().equals(InventoryType.CHEST)
|| e.getWhoClicked().getOpenInventory().getTopInventory()
.getType() == InventoryType.ENDER_CHEST)) {
// WENN OPEN GEKLICKT SCHIEBE VON INV NACH OPEN
int i = 0;
for (ItemStack is : e.getWhoClicked().getInventory().getStorageContents()) {
if (e.getWhoClicked().getOpenInventory().getTopInventory().firstEmpty() == -1) {
return;
}
if (is != null) {
e.getWhoClicked().getInventory().setItem(i, null);
e.getWhoClicked().getOpenInventory().getTopInventory().addItem(is);
}
i++;
}
} else if (e.getClick().toString().equals("DOUBLE_CLICK") && e.getCursor().getType().equals(Material.AIR)
&& e.getCurrentItem().getType().equals(Material.AIR)
&& e.getWhoClicked().getOpenInventory().getTopInventory().getType() == InventoryType.SHULKER_BOX) {
int i = 0;
for (ItemStack is : e.getWhoClicked().getInventory().getStorageContents()) {
if (e.getWhoClicked().getOpenInventory().getTopInventory().firstEmpty() == -1) {
return;
}
if (is != null && (e.getWhoClicked().getOpenInventory().getTopInventory().getType()
.equals(InventoryType.SHULKER_BOX) && !is.getType().toString().contains("SHULKER_BOX"))) {
e.getWhoClicked().getInventory().setItem(i, null);
e.getWhoClicked().getOpenInventory().getTopInventory().addItem(is);
}
i++;
}
}
}
}

View File

@@ -24,4 +24,7 @@ commands:
usage: /<command>
ignorevote:
description: Setzt den Ignorevote Status
usage: /<command>
r3load:
description: ----
usage: /<command>