Compare commits

..

2 Commits

Author SHA1 Message Date
Trollfury21
03b8340e28 Correct absorption not given 2025-07-21 17:55:06 +02:00
Trollfury21
3e70f8347b Add Custom sentence when boy milk is drain.
Correct absorption not given
2025-07-21 17:52:49 +02:00
19 changed files with 190 additions and 7 deletions

Binary file not shown.

Binary file not shown.

1
.idea/gradle.xml generated
View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings"> <component name="GradleSettings">
<option name="linkedExternalProjectsSettings"> <option name="linkedExternalProjectsSettings">
<GradleProjectSettings> <GradleProjectSettings>

View File

@@ -4,7 +4,7 @@ plugins {
} }
group = 'fr.trollfury' group = 'fr.trollfury'
version = '1.0' version = '1.3'
repositories { repositories {
mavenCentral() mavenCentral()

Binary file not shown.

View File

@@ -0,0 +1 @@
{"stats":{"minecraft:picked_up":{"minecraft:andesite":1,"minecraft:granite":4,"minecraft:iron_ore":9,"minecraft:diorite":3,"minecraft:redstone":27,"minecraft:iron_sword":1,"minecraft:dirt":17,"minecraft:cobblestone":83},"minecraft:dropped":{"minecraft:iron_sword":1},"minecraft:used":{"minecraft:cobblestone":1,"minecraft:iron_pickaxe":110},"minecraft:custom":{"minecraft:time_since_rest":26439,"minecraft:open_chest":26,"minecraft:play_one_minute":26439,"minecraft:interact_with_furnace":4,"minecraft:damage_taken":105,"minecraft:walk_one_cm":78683,"minecraft:walk_under_water_one_cm":612,"minecraft:drop":1,"minecraft:jump":74,"minecraft:leave_game":2,"minecraft:walk_on_water_one_cm":7041,"minecraft:time_since_death":26439,"minecraft:climb_one_cm":107,"minecraft:swim_one_cm":647,"minecraft:fall_one_cm":1762,"minecraft:fly_one_cm":770},"minecraft:mined":{"minecraft:granite":4,"minecraft:redstone_ore":6,"minecraft:dirt":17,"minecraft:iron_ore":9,"minecraft:stone":83,"minecraft:andesite":1,"minecraft:diorite":3}},"DataVersion":1631}

View File

@@ -1,7 +1,10 @@
package fr.trollfury.femboy; package fr.trollfury.femboy;
import fr.trollfury.femboy.commands.PingCommand; import fr.trollfury.femboy.commands.PingCommand;
import fr.trollfury.femboy.commands.UpdateScoreboard;
import fr.trollfury.femboy.listeners.BoyMilkListeners; import fr.trollfury.femboy.listeners.BoyMilkListeners;
import fr.trollfury.femboy.listeners.BoyMilkDrinkedListener;
import fr.trollfury.femboy.utils.CustomSentenceBoyMilk;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
public final class Main extends JavaPlugin { public final class Main extends JavaPlugin {
@@ -10,6 +13,9 @@ public final class Main extends JavaPlugin {
public void onEnable() { public void onEnable() {
getCommand("ping").setExecutor(new PingCommand()); getCommand("ping").setExecutor(new PingCommand());
getServer().getPluginManager().registerEvents(new BoyMilkListeners(), this); getServer().getPluginManager().registerEvents(new BoyMilkListeners(), this);
getServer().getPluginManager().registerEvents(new BoyMilkDrinkedListener(), this);
getCommand("updatescoreboard").setExecutor(new UpdateScoreboard());
getCommand("updatescoreboard").setTabCompleter(new UpdateScoreboard());
} }
@Override @Override

View File

@@ -0,0 +1,102 @@
package fr.trollfury.femboy.commands;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.Statistic;
import org.bukkit.command.*;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.Objective;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class UpdateScoreboard implements CommandExecutor, TabExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if(sender instanceof Player){
Player p = (Player) sender;
if(args.length > 1) {
return false;
}
if(args.length == 1) {
switch (args[0].toLowerCase()) {
case "beacon":
Arrays.stream(p.getServer().getOfflinePlayers()).toList().forEach(oPLayer -> {
int beaconStat = oPLayer.getStatistic(Statistic.CRAFT_ITEM, Material.BEACON);
if(oPLayer.getName() != null) {
if(p.getScoreboard().getObjective("rwby").getScore(oPLayer.getName()) != null) {
p.getScoreboard().getObjective("rwby").getScore(oPLayer.getName()).setScore(beaconStat);
}
}
});
p.getWorld().getPlayers().forEach(player -> {
int beaconStat = player.getStatistic(Statistic.CRAFT_ITEM, Material.BEACON);
player.getScoreboard().getObjective("rwby").getScore(player.getName()).setScore(beaconStat);
});
break;
case "netherite":
Arrays.stream(p.getServer().getOfflinePlayers()).toList().forEach(oPLayer -> {
int beaconStat = oPLayer.getStatistic(Statistic.MINE_BLOCK, Material.ANCIENT_DEBRIS);
if(oPLayer.getName() != null) {
if(p.getScoreboard().getObjective("netherite").getScore(oPLayer.getName()) != null) {
p.getScoreboard().getObjective("netherite").getScore(oPLayer.getName()).setScore(beaconStat);
}
}
});
p.getWorld().getPlayers().forEach(player -> {
int beaconStat = player.getStatistic(Statistic.MINE_BLOCK, Material.ANCIENT_DEBRIS);
player.getScoreboard().getObjective("netherite").getScore(player.getName()).setScore(beaconStat);
});
break;
case "rolex":
Arrays.stream(p.getServer().getOfflinePlayers()).toList().forEach(oPLayer -> {
int beaconStat = oPLayer.getStatistic(Statistic.CRAFT_ITEM, Material.DIAMOND_HOE);
if(oPLayer.getName() != null) {
if(p.getScoreboard().getObjective("netherite").getScore(oPLayer.getName()) != null) {
p.getScoreboard().getObjective("netherite").getScore(oPLayer.getName()).setScore(beaconStat);
}
}
});
p.getWorld().getPlayers().forEach(player -> {
int beaconStat = player.getStatistic(Statistic.CRAFT_ITEM, Material.DIAMOND_HOE);
player.getScoreboard().getObjective("rolex").getScore(player.getName()).setScore(beaconStat);
});
break;
case "time":
Arrays.stream(p.getServer().getOfflinePlayers()).toList().forEach(oPLayer -> {
int beaconStat = oPLayer.getStatistic(Statistic.TOTAL_WORLD_TIME);
if(oPLayer.getName() != null) {
if(p.getScoreboard().getObjective("total_time").getScore(oPLayer.getName()) != null) {
p.getScoreboard().getObjective("total_time").getScore(oPLayer.getName()).setScore(beaconStat);
}
}
});
p.getWorld().getPlayers().forEach(player -> {
int beaconStat = player.getStatistic(Statistic.TOTAL_WORLD_TIME);
player.getScoreboard().getObjective("total_time").getScore(player.getName()).setScore(beaconStat);
});
break;
default:break;
}
}
return true;
} else sender.sendMessage("Cette commande ne peux pas etre effectuer en console.");
return false;
}
@Nullable
@Override
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if(args.length == 1) {
return Arrays.asList("beacon","netherite","rolex","time");
}
return new ArrayList<>();
}
}

View File

@@ -0,0 +1,22 @@
package fr.trollfury.femboy.listeners;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerItemConsumeEvent;
public class BoyMilkDrinkedListener implements Listener {
@EventHandler
public void onBoyMilkDrinked(PlayerItemConsumeEvent e) {
if(e.getPlayer() instanceof Player) {
Player p = (Player) e.getPlayer();
if(e.getItem().getType().equals(Material.MILK_BUCKET) && e.getItem().getItemMeta().getItemName().equals("§dBoy Milk")) {
p.setFoodLevel(20);
p.setSaturation(10);
p.setAbsorptionAmount(10);
}
}
}
}

View File

@@ -1,19 +1,18 @@
package fr.trollfury.femboy.listeners; package fr.trollfury.femboy.listeners;
import fr.trollfury.femboy.utils.CustomSentenceBoyMilk;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
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;
import org.bukkit.event.player.PlayerInteractAtEntityEvent; import org.bukkit.event.player.PlayerInteractAtEntityEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import java.util.Collections; import java.util.Collections;
import java.util.List;
public class BoyMilkListeners implements Listener { public class BoyMilkListeners implements Listener {
@@ -28,14 +27,22 @@ public class BoyMilkListeners implements Listener {
ItemStack item = new ItemStack(Material.MILK_BUCKET); ItemStack item = new ItemStack(Material.MILK_BUCKET);
ItemMeta meta = item.getItemMeta(); ItemMeta meta = item.getItemMeta();
meta.setItemName("§dBoy Milk"); meta.setItemName("§dBoy Milk");
meta.setLore(Collections.singletonList("Semence récupérée sur §b§o" + target.getPlayer().getDisplayName())); meta.setLore(Collections.singletonList("Récupérée sur §b§o" + target.getPlayer().getDisplayName()));
meta.addEnchant(Enchantment.INFINITY, 1, true); meta.addEnchant(Enchantment.INFINITY, 1, true);
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS); meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
item.setItemMeta(meta); item.setItemMeta(meta);
p.getItemInHand().setAmount(p.getItemInHand().getAmount() - 1); p.getItemInHand().setAmount(p.getItemInHand().getAmount() - 1);
p.getInventory().addItem(item); p.getInventory().addItem(item);
p.getServer().broadcastMessage("§d§o" + p.getName() + " a récupéré quelque chose sur " + target.getName());
p.getServer().getWorlds().forEach(world -> {
world.getPlayers().forEach(player -> {
player.sendMessage("§d§o" + p.getName() + " a récupéré quelque chose sur " + target.getName());
CustomSentenceBoyMilk customSentence = new CustomSentenceBoyMilk();
customSentence.setupCustomSentence();
player.sendMessage(customSentence.getRandomSentence());
});
});
break; break;
default:break; default:break;
} }

View File

@@ -0,0 +1,41 @@
package fr.trollfury.femboy.utils;
import java.util.ArrayList;
import java.util.List;
public class CustomSentenceBoyMilk {
private List<String> customSentence = new ArrayList<>();
public void CustomSentenceBoyMilk() {}
public List<String> getList() {
return customSentence;
}
public void addList(String sentence) {
customSentence.add(sentence);
}
public String getRandomSentence() {
int n = (int)(Math.random() * this.customSentence.size());
return this.customSentence.get(n);
}
public void setupCustomSentence() {
this.addList("§d§oChat is it gay drain boy milk from my homies ?");
this.addList("§d§oIs it gay if I kiss my homies but I'm wearing socks ?");
this.addList("§d§oIs it gay if I like femboy on my social media feed ?");
this.addList("§d§oYou like female ? Don't forget there are male in fe§nmale§r§d§o. Think about it");
this.addList("§d§o§c#§6g§ea§ay §b#§3l§9e§1s§5b§di§ca§6n §e#§ab§bi§3s§9e§1x§5u§da§cl §dAll the gay hashtags are rainbow. Now Watch #kissingTheHommiesGoodNight See it's not gay !");
this.addList("§d§oAs long as you're wearing thigh highs...");
this.addList("§d§oAin't gay if the programming socks are on !");
this.addList("§d§oYou like kissing boys don't you?");
this.addList("§d§oBoys makes the best girls :3");
this.addList("§d§oThere's 'male' in 'female', think about it you GAY");
this.addList("§d§oProgramming socks are high, 'cuz it's for blood circulation.");
this.addList("§d§oY-you want b-boi m-milk?? >w<");
this.addList("§d§oSir, this is a Femboy Hooters !");
this.addList("§d§oDEMOCRATS are turning the frogs GAY!");
this.addList("§d§oCan I have a cup of your *special* milk?");
}
}

View File

@@ -2,5 +2,5 @@ package fr.trollfury.femboy.utils;
public class Reference { public class Reference {
public static final String NAME = "Femboy"; public static final String NAME = "Femboy";
public static final String VERSION = "1.0"; public static final String VERSION = "1.3";
} }

View File

@@ -1,8 +1,11 @@
name: femboy name: femboy
version: '1.0' version: '1.3'
main: fr.trollfury.femboy.Main main: fr.trollfury.femboy.Main
api-version: '1.21' api-version: '1.21'
commands: commands:
ping: ping:
description: "Commande par defaut" description: "Commande par defaut"
usage: /<command> usage: /<command>
updatescoreboard:
description: "Actualiser les scoreboard directement avec les stats de chaque personne"
usage: /<command>