Skip to content

Commit

Permalink
Merge pull request #254 from VolmitSoftware/Development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
NextdoorPsycho authored Oct 5, 2022
2 parents 411fe74 + e0d494b commit b09beeb
Show file tree
Hide file tree
Showing 33 changed files with 398 additions and 84 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ plugins {
}


version '1.4.1-1.19.2' // Needs to be version specific
version '1.4.2-1.19.2' // Needs to be version specific
def nmsVersion = "1.19.2" //[NMS]
def apiVersion = '1.19'
def specialSourceVersion = '1.11.0' //[NMS]
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/volmit/adapt/Adapt.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.volmit.adapt.api.data.WorldData;
import com.volmit.adapt.api.potion.BrewingListener;
import com.volmit.adapt.api.tick.Ticker;
import com.volmit.adapt.api.value.MaterialValue;
import com.volmit.adapt.api.world.AdaptServer;
Expand Down Expand Up @@ -138,6 +139,7 @@ public void start() {
sqlManager.establishConnection();
}
adaptServer = new AdaptServer();
registerListener(new BrewingListener());
setupMetrics();
startupPrint(); // Splash screen
}
Expand Down
1 change: 1 addition & 0 deletions src/main/java/com/volmit/adapt/AdaptConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public class AdaptConfig {
private boolean loginBonus = true;
private boolean advancements = true;
private boolean useSql = false;
private boolean useEnchantmentTableParticleForActiveEffects = true;
private boolean escClosesAllGuis = false;
private boolean guiBackButton = false;
private int learnUnlearnButtonDelayTicks = 14;
Expand Down
13 changes: 10 additions & 3 deletions src/main/java/com/volmit/adapt/api/Component.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
package com.volmit.adapt.api;

import com.google.common.collect.Lists;
import com.volmit.adapt.AdaptConfig;
import com.volmit.adapt.api.data.WorldData;
import com.volmit.adapt.api.value.MaterialValue;
import com.volmit.adapt.api.xp.XP;
Expand Down Expand Up @@ -234,7 +235,9 @@ default void vfxZuck(Location from, Location to) {
Vector v = from.clone().subtract(to).toVector();
double l = v.length();
v.normalize();
from.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE, to, 1, 6, 6, 6, 0.6);
if (AdaptConfig.get().isUseEnchantmentTableParticleForActiveEffects()) {
from.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE, to, 1, 6, 6, 6, 0.6);
}
}

default void vfxParticleLine(Location start, Location end, Particle particle, int pointsPerLine, int particleCount, double offsetX, double offsetY, double offsetZ, double extra, @Nullable Double data, boolean forceDisplay,
Expand Down Expand Up @@ -444,11 +447,15 @@ default void riftResistCheckAndTrigger(Player p, int duration, int amplifier) {
}

default void vfxXP(Player p, Location l, int amt) {
p.spawnParticle(Particle.ENCHANTMENT_TABLE, l, Math.min(amt / 10, 20), 0.5, 0.5, 0.5, 1);
if (AdaptConfig.get().isUseEnchantmentTableParticleForActiveEffects()) {
p.spawnParticle(Particle.ENCHANTMENT_TABLE, l, Math.min(amt / 10, 20), 0.5, 0.5, 0.5, 1);
}
}

default void vfxXP(Location l) {
l.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE, l.add(0, 1.7, 0), 3, 0.1, 0.1, 0.1, 3);
if (AdaptConfig.get().isUseEnchantmentTableParticleForActiveEffects()) {
l.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE, l.add(0, 1.7, 0), 3, 0.1, 0.1, 0.1, 3);
}
}

default void damageHand(Player p, int damage) {
Expand Down
26 changes: 26 additions & 0 deletions src/main/java/com/volmit/adapt/api/potion/BrewingListener.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.volmit.adapt.api.potion;

import com.google.common.collect.Maps;
import org.bukkit.Location;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.BrewerInventory;

import java.util.Map;

public class BrewingListener implements Listener {

private static final Map<String, BrewingRecipe> recipes = Maps.newHashMap();
private static final Map<Location, BrewingTask> activeTasks = Maps.newHashMap();

@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
if(e.getClickedInventory().getType() != InventoryType.BREWING)
return;

BrewerInventory inv = (BrewerInventory)e.getClickedInventory();
}
}
6 changes: 6 additions & 0 deletions src/main/java/com/volmit/adapt/api/potion/BrewingRecipe.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.volmit.adapt.api.potion;


import org.bukkit.inventory.ItemStack;

public record BrewingRecipe(ItemStack basePotion, ItemStack ingredient, ItemStack result, int brewingTime, int fuelCost) { }
85 changes: 85 additions & 0 deletions src/main/java/com/volmit/adapt/api/potion/BrewingTask.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package com.volmit.adapt.api.potion;

import com.volmit.adapt.Adapt;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.BrewingStand;
import org.bukkit.entity.Player;
import org.bukkit.inventory.BrewerInventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;

public class BrewingTask extends BukkitRunnable {

private final BrewingRecipe recipe;
private final BrewerInventory inventory;
private final BrewingStand block;

private int brewTime;

public BrewingTask(BrewingRecipe recipe, BrewerInventory inventory, BrewingStand block) {
this.recipe = recipe;
this.inventory = inventory;
this.block = block;

this.brewTime = recipe.brewingTime();

if(block.getFuelLevel() > recipe.fuelCost()) {
block.setFuelLevel(block.getFuelLevel() - recipe.fuelCost());
} else {
int rest = recipe.fuelCost() - block.getFuelLevel();
inventory.setFuel(decrease(inventory.getFuel(), rest / 20));
block.setFuelLevel(20 - rest % 20);
}

runTaskTimer(Adapt.instance, 0L, 1L);
}

@Override
public void run() {
if(brewTime <= 0) {
inventory.setIngredient(decrease(inventory.getIngredient(), 1));

for(int i = 0; i < 3; i++) {
if(recipe.basePotion().equals(inventory.getItem(i)))
inventory.setItem(i, recipe.result());
}

inventory.getViewers().forEach(e -> {
if(e instanceof Player p)
p.playSound(block.getLocation(), Sound.BLOCK_BREWING_STAND_BREW, 1, 1);
});
cancel();
return;
}

brewTime--;
block.setBrewingTime(brewTime);
block.update(true);
}

private ItemStack decrease(ItemStack source, int amount) {
if(source.getAmount() > amount) {
source.setAmount(source.getAmount() - amount);
return source;
} else
return new ItemStack(Material.AIR);
}

public static boolean isValid(BrewingRecipe recipe, BrewingStand block) {
BrewerInventory inv = block.getInventory();
if(!recipe.ingredient().equals(inv.getIngredient()))
return false;

int totalFuel = (inv.getFuel() != null && inv.getFuel().getType() != Material.AIR ? inv.getFuel().getAmount() * 20 : 0) + block.getFuelLevel();
if(totalFuel < recipe.fuelCost())
return false;

for(int i = 0; i < 3; i++) {
if(recipe.basePotion().equals(inv.getItem(i)))
return true;
}

return false;
}
}
71 changes: 71 additions & 0 deletions src/main/java/com/volmit/adapt/api/potion/PotionBuilder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.volmit.adapt.api.potion;

import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.potion.PotionData;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.potion.PotionType;

import java.util.List;

public class PotionBuilder {

private final List<PotionEffect> effects = Lists.newArrayList();

private Type type = Type.REGULAR;
private Color color = Color.WHITE;
private String name = "Mysterious Potion";
private boolean upgraded, extended;

public PotionBuilder setType(Type type) {
this.type = type;
return this;
}

public PotionBuilder setColor(Color color) {
this.color = color;
return this;
}

public PotionBuilder addEffect(PotionEffectType type, int duration, int amplifier, boolean ambient, boolean particles, boolean icon) {
effects.add(new PotionEffect(type, duration, amplifier, ambient, particles, icon));
return this;
}

public PotionBuilder setFlags(boolean extended, boolean upgraded) {
this.upgraded = upgraded;
this.extended = extended;
return this;
}

public PotionBuilder setName(String name) {
this.name = name;
return this;
}

@SuppressWarnings("ConstantConditions")
public ItemStack build() {
ItemStack stack = new ItemStack(type.material);
PotionMeta meta = (PotionMeta)stack.getItemMeta();
effects.forEach(e -> meta.addCustomEffect(e, true));
meta.setColor(color);
meta.setBasePotionData(new PotionData(PotionType.UNCRAFTABLE, extended, upgraded));
meta.setDisplayName(name);
stack.setItemMeta(meta);
return stack;
}

@AllArgsConstructor
public enum Type {
REGULAR(Material.POTION),
SPLASH(Material.SPLASH_POTION),
LINGERING(Material.LINGERING_POTION);

private final Material material;
}
}
13 changes: 12 additions & 1 deletion src/main/java/com/volmit/adapt/api/world/AdaptComponent.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ default boolean isItem(ItemStack is) {
}

default boolean isTool(ItemStack is) {
return isAxe(is) || isPickaxe(is) || isHoe(is) || isShovel(is) || isSword(is);
return isAxe(is) || isPickaxe(is) || isHoe(is) || isShovel(is) || isSword(is)|| isTrident(is);
}

default boolean isMelee(ItemStack is) {
Expand Down Expand Up @@ -67,6 +67,17 @@ default boolean isSword(ItemStack it) {
return false;
}

default boolean isTrident(ItemStack it) {
if (isItem(it)) {
return switch (it.getType()) {
case TRIDENT, SEA_PICKLE -> true;
default -> false;
};
}

return false;
}

default boolean isAxe(ItemStack it) {
if (isItem(it)) {
return switch (it.getType()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,6 @@ public void removeFoundation(Block block) {
});
block.getWorld().playSound(block.getLocation(), Sound.BLOCK_DEEPSLATE_BREAK, 1.0f, 1.0f);
if (getConfig().showParticles) {

vfxSingleCubeOutline(block, Particle.ENCHANTMENT_TABLE);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,6 @@ public void on(BlockBreakEvent e) {
}
}
l.getWorld().getBlockAt(l).setType(Material.AIR);
e.getBlock().getDrops().clear();
} else {
b.breakNaturally(p.getItemInUse());
e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.BLOCK_FUNGUS_BREAK, 0.01f, 0.25f);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,18 +113,26 @@ public void on(BlockBreakEvent e) {
for (Location l : blockMap.keySet()) {
Block b = e.getBlock().getWorld().getBlockAt(l);
xp(p, 10);
if (getPlayer(p).getData().getSkillLines() != null && getPlayer(p).getData().getSkillLines().get("axes").getAdaptations() != null && getPlayer(p).getData().getSkillLines().get("axes").getAdaptations().get("axe-drop-to-inventory") != null && getPlayer(p).getData().getSkillLines().get("axes").getAdaptations().get("axe-drop-to-inventory").getLevel() > 0) {
if (getPlayer(p).getData().getSkillLines() != null
&& getPlayer(p).getData().getSkillLines().get("axes").getAdaptations() != null
&& getPlayer(p).getData().getSkillLines().get("axes").getAdaptations().get("axe-drop-to-inventory") != null
&& getPlayer(p).getData().getSkillLines().get("axes").getAdaptations().get("axe-drop-to-inventory").getLevel() > 0) {
Collection<ItemStack> items = e.getBlock().getDrops();
for (ItemStack i : items) {
p.playSound(p.getLocation(), Sound.BLOCK_CALCITE_HIT, 0.01f, 0.01f);
xp(p, 2);
HashMap<Integer, ItemStack> extra = p.getInventory().addItem(i);
if (!extra.isEmpty()) {
p.getWorld().dropItem(p.getLocation(), extra.get(0));
if (!isLog(new ItemStack(b.getType()))) {
for (ItemStack i : items) {
p.playSound(p.getLocation(), Sound.BLOCK_CALCITE_HIT, 0.01f, 0.01f);
xp(p, 2);
HashMap<Integer, ItemStack> extra = p.getInventory().addItem(i);
if (!extra.isEmpty()) {
p.getWorld().dropItem(p.getLocation(), extra.get(0));
}
}
} else {
if (!p.getInventory().addItem(new ItemStack(b.getType())).isEmpty()) {
p.getWorld().dropItemNaturally(p.getLocation(), new ItemStack(b.getType()));
}
}
l.getWorld().getBlockAt(l).setType(Material.AIR);
e.getBlock().getDrops().clear();
} else {
b.breakNaturally(p.getItemInUse());
e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.BLOCK_FUNGUS_BREAK, 0.01f, 0.25f);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,16 @@
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.event.player.PlayerQuitEvent;

import java.util.HashMap;
import java.util.Map;


public class CraftingXP extends SimpleAdaptation<CraftingXP.Config> {
private final Map<Player, Long> cooldown = new HashMap<>();


public CraftingXP() {
super("crafting-xp");
registerConfiguration(CraftingXP.Config.class);
Expand All @@ -49,6 +56,12 @@ public void addStats(int level, Element v) {
v.addLore(C.GREEN + Adapt.dLocalize("crafting", "xp", "lore1"));
}

@EventHandler
public void on(PlayerQuitEvent e) {
Player p = e.getPlayer();
cooldown.remove(p);
}


@EventHandler(priority = EventPriority.LOW)
public void on(CraftItemEvent e) {
Expand All @@ -60,7 +73,13 @@ public void on(CraftItemEvent e) {
if (e.getInventory().getResult() != null && e.getCursor() != null && e.getCursor().getAmount() < 64) {
if (p.getInventory().addItem(e.getCurrentItem()).isEmpty()) {
p.getInventory().removeItem(e.getCurrentItem());
p.giveExp(e.getInventory().getResult().getAmount() * getLevel(p));
if (cooldown.containsKey(p) && cooldown.get(p) + 20000 < System.currentTimeMillis()) {
cooldown.remove(p);
} else if (cooldown.containsKey(p) && cooldown.get(p) + 20000 > System.currentTimeMillis()) {
return;
}
cooldown.put(p, System.currentTimeMillis());
p.getWorld().spawn(p.getLocation(), org.bukkit.entity.ExperienceOrb.class).setExperience(getLevel(p) * 2);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ public double getArmor(Location l, int level) {
if (a > 2 && M.r(0.005 * a)) {
Vector v = VectorMath.directionNoNormal(l, b.getLocation().add(0.5, 0.5, 0.5));
if (getConfig().showParticles) {

l.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE, l.clone().add(0, 1, 0), 0, v.getX(), v.getY(), v.getZ());
}
}
Expand Down
Loading

0 comments on commit b09beeb

Please sign in to comment.