Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/credits - Refactor Resource logic to suit Currency implementation. #531

Closed
wants to merge 27 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
d50b9ad
add bank and resource system
OwnerAli Aug 29, 2024
758d409
Create scoreboard for player.
oschwa Aug 30, 2024
d3eae0a
add scoreboard for resources
OwnerAli Aug 30, 2024
86848a2
Add listener for player getting resources.
oschwa Aug 30, 2024
a796462
- add scoreboard updates when a user acquires resources
OwnerAli Aug 30, 2024
5d5f21d
Delete src/main/resources/blueprints/island.blu
oschwa Aug 30, 2024
f79c456
Add new island.blu file.
oschwa Aug 30, 2024
174eef6
- add 45x45 plot blueprint for starter plot
OwnerAli Aug 31, 2024
aa45f0f
[WIP] Add new system to calculate accessible land for player
OwnerAli Aug 31, 2024
bb45586
block players from moving/placing/breaking outside their accessible land
OwnerAli Sep 1, 2024
8839f26
- add basic upgrade system with levelling type upgrades
OwnerAli Sep 2, 2024
d084c8f
- add description to upgrades to display on gui items
OwnerAli Sep 2, 2024
a86ea03
- recode entire levelled upgrade system
OwnerAli Sep 3, 2024
382d587
- update method and class names for PlayerMoveListener.java
OwnerAli Sep 3, 2024
f2be66f
Create level 3 upgrade for player land space.
oschwa Sep 4, 2024
d94469a
- begin implementing generators
OwnerAli Sep 4, 2024
bcfb4e0
Create dynamically-coded solution for upgrade sound and chat message …
oschwa Sep 6, 2024
dc62bb1
- add basic code structure for creating manual generators
OwnerAli Sep 7, 2024
9355290
Merge remote-tracking branch 'origin/feature/upgrades' into feature/u…
OwnerAli Sep 7, 2024
eacef57
Implement fundamental Generator upgrade abstraction for future resour…
oschwa Sep 12, 2024
21b210c
Incorporate GeneratorUpgrade object usage in UpgradeManager
oschwa Sep 12, 2024
625f16f
Revert GeneratorUpgrade usage in UpgradeManager for future upgrade re…
oschwa Sep 12, 2024
0a77a25
Create a system in which credits are managed per-player via a CreditB…
oschwa Sep 13, 2024
f100171
Create fundamental system for currencies in minigame, staged upon exi…
oschwa Sep 18, 2024
a67f002
Create fundamental system for currencies in minigame, staged upon exi…
oschwa Sep 18, 2024
babfc8e
Rename CreditBank to CurrencyBank.
oschwa Sep 18, 2024
6e21122
Rename CreditBank to CurrencyBank.
oschwa Sep 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add listener for player getting resources.
oschwa committed Aug 30, 2024
commit 86848a286da4a7f2be25c045143cb297eb3a4651
3 changes: 3 additions & 0 deletions src/main/java/dev/viaduct/factories/FactoriesPlugin.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.viaduct.factories;

import dev.viaduct.factories.listeners.PlayerGetResourceListener;
import dev.viaduct.factories.listeners.PlayerJoinListener;
import dev.viaduct.factories.registries.FactoryPlayerRegistry;
import dev.viaduct.factories.registries.RegistryManager;
@@ -35,6 +36,8 @@ public void onEnable() {
initRegistries();
getServer().getPluginManager()
.registerEvents(new PlayerJoinListener(), this);
getServer().getPluginManager().registerEvents(
new PlayerGetResourceListener(registryManager.getRegistry(FactoryPlayerRegistry.class)), this);
}

private void initRegistries() {
12 changes: 12 additions & 0 deletions src/main/java/dev/viaduct/factories/banks/Bank.java
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
import dev.viaduct.factories.registries.FactoryPlayerRegistry;
import dev.viaduct.factories.resources.Resource;
import lombok.Getter;
import org.bukkit.Material;

import java.util.HashMap;
import java.util.Map;
@@ -42,4 +43,15 @@ public double getResourceAmt(String resourceName) {
return resourceMap.get(resourceOptional.get());
}

public boolean isResourceMaterial(Material material) {
return resourceMap.keySet().stream()
.anyMatch(resource -> resource.isValidMaterial(material));
}

public Optional<Resource> getResourceByMaterial(Material material) {
return resourceMap.keySet().stream()
.filter(resource -> resource.isValidMaterial(material))
.findAny();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package dev.viaduct.factories.listeners;

import dev.viaduct.factories.banks.Bank;
import dev.viaduct.factories.players.FactoryPlayer;
import dev.viaduct.factories.registries.FactoryPlayerRegistry;
import dev.viaduct.factories.resources.ResourceManager;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;

public class PlayerGetResourceListener implements Listener {

private final FactoryPlayerRegistry factoryPlayerRegistry;

public PlayerGetResourceListener(FactoryPlayerRegistry factoryPlayerRegistry) {
this.factoryPlayerRegistry = factoryPlayerRegistry;
}

@EventHandler
public void onResourceBreak(BlockBreakEvent event) {
Block brokenBlock = event.getBlock();
// Get the material from broken block.
Material material = brokenBlock.getType();

// Check to see if the event player's bank already contains an
// amount of the resource material. If so, increment the amount.
factoryPlayerRegistry.get(event.getPlayer().getUniqueId())
.ifPresent(factoryPlayer -> {
Bank factoryPlayerBank = factoryPlayer.getBank();
factoryPlayerBank.getResourceByMaterial(material)
.ifPresent(resource -> factoryPlayerBank.addToResource(resource, 1));
});

// TODO: Update Factory Player Scoreboard

}
}
16 changes: 16 additions & 0 deletions src/main/java/dev/viaduct/factories/resources/Resource.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@
package dev.viaduct.factories.resources;

import lombok.Getter;
import org.bukkit.Material;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@Getter
public abstract class Resource {

private final String name;
private final List<Material> validMaterialsList;

protected Resource(String name) {
this.name = name;
this.validMaterialsList = new ArrayList<>();
}

protected Resource(String name, Material... materials) {
this.name = name;
this.validMaterialsList = Arrays.stream(materials).toList();
}

public boolean isValidMaterial(Material material) {
return validMaterialsList.contains(material);
}

public abstract String getFormattedName();
11 changes: 11 additions & 0 deletions src/main/java/dev/viaduct/factories/resources/ResourceManager.java
Original file line number Diff line number Diff line change
@@ -3,10 +3,12 @@
import dev.viaduct.factories.resources.impl.Stone;
import dev.viaduct.factories.resources.impl.Wood;
import lombok.Getter;
import org.bukkit.Material;

import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;

@Getter
public class ResourceManager {
@@ -32,4 +34,13 @@ public void registerResources() {
registerResource(new Stone());
}

public boolean isResourceMaterial(Material material) {
// get stream of resources in set.
return resourceSet.stream()
// for every valid material of each resource...
.map(Resource::getValidMaterialsList)
// check if it contains parameter material.
.anyMatch(materialsList -> materialsList.contains(material));
}

}
9 changes: 5 additions & 4 deletions src/main/java/dev/viaduct/factories/resources/impl/Stone.java
Original file line number Diff line number Diff line change
@@ -2,16 +2,17 @@

import dev.viaduct.factories.resources.Resource;
import dev.viaduct.factories.utils.Chat;
import org.bukkit.Material;

public class Stone extends Resource {

public Stone() {
super("Stone");
}
public Stone() { super("Stone", Material.STONE); }

public Stone(String name, Material... materials) { super(name, materials); }

@Override
public String getFormattedName() {
return Chat.colorizeHex("#bfbfbfStone: ");
return Chat.colorizeHex("#bfbfbf" + getName() + ": ");
}

}
9 changes: 7 additions & 2 deletions src/main/java/dev/viaduct/factories/resources/impl/Wood.java
Original file line number Diff line number Diff line change
@@ -2,16 +2,21 @@

import dev.viaduct.factories.resources.Resource;
import dev.viaduct.factories.utils.Chat;
import org.bukkit.Material;

public class Wood extends Resource {

public Wood() {
super("Wood");
super("Wood", Material.OAK_WOOD);
}

public Wood(String name, Material... materials) {
super(name, materials);
}

@Override
public String getFormattedName() {
return Chat.colorizeHex("#a8996fWood: ");
return Chat.colorizeHex("#a8996f" + getName() + ": ");
}

}