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

Update the api and much more #302

Merged
merged 83 commits into from
Nov 17, 2023
Merged
Changes from 1 commit
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
fd8b116
Moved most api related stuff to the api package
Thorinwasher Jun 17, 2023
fb43aaa
.
Thorinwasher Jun 17, 2023
963da7a
Moves some stuff and adds some interfaces / enums
Thorinwasher Jun 23, 2023
3ed9c83
Adds logic for removing and adding BlockHandlerInterfaces
Thorinwasher Jun 30, 2023
d930f1b
Changes how blockHandlerInterfaces are dealt with also...
Thorinwasher Jul 12, 2023
7327552
Adds some tests to Gate
Thorinwasher Jul 12, 2023
9da3699
Update StargateRegistryTest.java
Thorinwasher Jul 12, 2023
74d3184
Update BlockEventListenerTest.java
Thorinwasher Jul 12, 2023
c27dd34
Fixes some security issues with dependencies
Thorinwasher Jul 14, 2023
a8717b8
Adds some unittests
Thorinwasher Jul 14, 2023
b5bf545
Allows for unrecognised flags ( I think )
Thorinwasher Jul 17, 2023
de01ff2
fixes some test failures
Thorinwasher Jul 17, 2023
3cd8ea3
Fixes the all unittests
Thorinwasher Jul 19, 2023
14ee1dc
(just a small refactor)
Thorinwasher Jul 20, 2023
00b91ce
Clears up and renames stuff
Thorinwasher Jul 20, 2023
8659ecd
Increases the scale of some tests
Thorinwasher Jul 20, 2023
1581db0
Adds more tests
Thorinwasher Jul 21, 2023
05f26ee
Inserts a new column in the portal position table
Thorinwasher Jul 29, 2023
bc11f90
Fixes a severe infinite loop issue and sql issues
Thorinwasher Jul 30, 2023
46708d6
Fixes unit tests
Thorinwasher Jul 30, 2023
acf2ec6
Fixes startup issue
Thorinwasher Jul 30, 2023
d8a0246
fix: MaterialHandlerResolver not initialized
Thorinwasher Jul 30, 2023
dff211b
rename MaterialHandlerResolver -> BlockHandlerResolver
Thorinwasher Jul 30, 2023
291fcc9
Does a lot which can't be described in one line
Thorinwasher Aug 4, 2023
64e8e10
Fixes a bug in a unittest.
Thorinwasher Aug 4, 2023
dbb4149
Nothing special
Thorinwasher Aug 12, 2023
5631fca
Moved some classes
Thorinwasher Aug 26, 2023
5ef4b9e
Refactored StargateRegistry to store HashMaps of portalPositions
Thorinwasher Aug 26, 2023
0b7e264
Fixes unit tests
Thorinwasher Aug 26, 2023
a454b41
Fixes a bug where intruducing new sign material breaks coloring
Thorinwasher Aug 27, 2023
9b3d2ed
Splits enum GateStructureType into two enums
Thorinwasher Aug 27, 2023
03e25a8
Adds a check for empty default network names
Thorinwasher Aug 27, 2023
b28834c
.
Thorinwasher Aug 27, 2023
3d1f491
Fixes stupid default config name that contains newlines
Thorinwasher Aug 27, 2023
ea246d3
Update jacoco (avoids classfileversion error spamm)
Thorinwasher Aug 27, 2023
8b1f902
Mostly moved some classes to api branch
Thorinwasher Aug 29, 2023
5a1d933
Fixes a bug where portal positions where created when loading a porta…
Thorinwasher Aug 29, 2023
2e4dce5
Fixes a stupid bug
Thorinwasher Aug 29, 2023
6061a5b
Moves a class, fixes a bug
Thorinwasher Aug 29, 2023
b544db4
Fixes duplicate portalpositions
Thorinwasher Aug 30, 2023
6cd16dc
Removes spamm
Thorinwasher Aug 30, 2023
c8a3a0b
Avoids nullpointer exception
Thorinwasher Aug 31, 2023
446d52e
Forgot to remove portal position from the gate
Thorinwasher Aug 31, 2023
daf68df
Adds a stargate reload event
Thorinwasher Aug 31, 2023
b7046b9
Opens the method `activate` to the api
Thorinwasher Aug 31, 2023
1e9dc3a
.
Thorinwasher Aug 31, 2023
5fb9ad8
Added some NotNull notations for portalposition
Thorinwasher Aug 31, 2023
939e74a
Fixes bug where plugin portal positions does not get unregistered pro…
Thorinwasher Aug 31, 2023
58b0bbd
Fixes typo
Thorinwasher Sep 2, 2023
e5a13a0
FIxes not redrawing the sign on destruction
Thorinwasher Sep 3, 2023
9600030
Adds flag registration
Thorinwasher Sep 3, 2023
848a064
Moved events into the api
Thorinwasher Sep 3, 2023
bf7a8ec
Adds some missing handlerlists
Thorinwasher Sep 8, 2023
f445ce2
API additions for formatting signs
Thorinwasher Sep 10, 2023
d25c553
Major untested refactor of sign formatting.
Thorinwasher Sep 11, 2023
71cf9ad
.
Thorinwasher Sep 11, 2023
f3b6a29
Update StargateSignDyeChangePortalEvent.java
Thorinwasher Sep 11, 2023
a1f7f01
Minor fixes
Thorinwasher Sep 11, 2023
df2f4c1
Minor fix
Thorinwasher Sep 11, 2023
86b9cd7
Removes null SignLines for fixed portals
Thorinwasher Sep 12, 2023
c7de0f3
Add and remove flags from portal without modifying storage
Thorinwasher Sep 13, 2023
56a8399
Clarifications
Thorinwasher Sep 13, 2023
8573e1f
Adds a new event
Thorinwasher Sep 13, 2023
1f31703
Moved BypassPermission to the api
Thorinwasher Sep 13, 2023
eefedb7
Implement new event, made to move the flag Q from core
Thorinwasher Sep 13, 2023
4dd4659
Adds more places to throw StargateSendMessagePortalEvent
Thorinwasher Sep 13, 2023
fae6610
Untested code for generating gate structures
Thorinwasher Sep 13, 2023
dc20ffb
Adds a test for generating structures
Thorinwasher Sep 14, 2023
4df6f9a
Minor refactor on the StargateOpenPortalEvent
Thorinwasher Sep 14, 2023
220caf2
Ignores flag arguments when determining flags
Thorinwasher Sep 30, 2023
9edf9b2
Add gateformat registry
Thorinwasher Oct 3, 2023
bdd19b4
Refactor portal and gate creation
Thorinwasher Oct 12, 2023
937f588
Fixes getNetworkManager returning null
Thorinwasher Oct 13, 2023
8cf9785
Fixes invalid button generation from alwayson flag
Thorinwasher Oct 13, 2023
796612a
Minor modifications on explicitgatebuilder
Thorinwasher Oct 13, 2023
964efaf
Properly closes connections
Thorinwasher Oct 16, 2023
0b8fefa
Move GateStructure and expose methods
Thorinwasher Oct 16, 2023
b2020de
Saves metadata from create event
Thorinwasher Nov 3, 2023
a10d94f
Load metadata on start up
Thorinwasher Nov 3, 2023
26dc36b
Major refactor on network and portal handling
Thorinwasher Nov 11, 2023
fdf393f
Fix unit tests
Thorinwasher Nov 17, 2023
258b61c
Update GateFrame.java
Thorinwasher Nov 17, 2023
160772e
Update GateFrame.java
Thorinwasher Nov 17, 2023
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
Implement new event, made to move the flag Q from core
Thorinwasher committed Sep 13, 2023
commit eefedb7bb79faea8356d52152c653d55a69eff56
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package org.sgrewritten.stargate.api.event.portal;

import org.bukkit.entity.Entity;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import org.sgrewritten.stargate.api.network.portal.Portal;

public class StargateSendMessagePortalEvent extends CancellableStargatePortalEvent {
private static HandlerList handlers = new HandlerList();
private final MessageType type;
private final Entity entity;

/**
* Instantiates a new stargate player event
*
* @param portal <p>The portal involved in this stargate event</p>
* @param entity <p>The entity receiving the message</p>
* @param type <p>The type of message being sent</p>
*/
public StargateSendMessagePortalEvent(Portal portal, Entity entity, MessageType type) {
super(portal);
this.type = type;
this.entity = entity;
}

public MessageType getType() {
return type;
}

public Entity getEntity(){
return entity;
}
@Override
public @NotNull HandlerList getHandlers() {
return handlers;
}

public static HandlerList getHandlerList(){
return StargateSendMessagePortalEvent.handlers;
}

public enum MessageType {
DESTROY, DESTINATION_EMPTY, DENY, TELEPORT
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.sgrewritten.stargate.listener;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.data.Directional;
@@ -36,6 +37,7 @@
import org.sgrewritten.stargate.Stargate;
import org.sgrewritten.stargate.api.BlockHandlerResolver;
import org.sgrewritten.stargate.api.StargateAPI;
import org.sgrewritten.stargate.api.event.portal.StargateSendMessagePortalEvent;
import org.sgrewritten.stargate.api.gate.GateStructureType;
import org.sgrewritten.stargate.config.ConfigurationHelper;
import org.sgrewritten.stargate.api.config.ConfigurationOption;
@@ -54,6 +56,7 @@
import org.sgrewritten.stargate.api.network.portal.RealPortal;
import org.sgrewritten.stargate.property.BlockEventType;
import org.sgrewritten.stargate.util.BlockEventHelper;
import org.sgrewritten.stargate.util.MessageUtils;
import org.sgrewritten.stargate.util.NetworkCreationHelper;
import org.sgrewritten.stargate.util.TranslatableMessageFormatter;
import org.sgrewritten.stargate.util.portal.PortalCreationHelper;
@@ -103,7 +106,7 @@ public void onBlockBreak(BlockBreakEvent event) {
if (portal != null) {
Runnable destroyAction = () -> {
String msg = languageManager.getErrorMessage(TranslatableMessage.DESTROY);
event.getPlayer().sendMessage(msg);
MessageUtils.sendMessageFromPortal(portal,event.getPlayer(),msg,StargateSendMessagePortalEvent.MessageType.DESTROY);

portal.destroy();
Stargate.log(Level.FINE, "Broke portal " + portal.getName());
@@ -123,6 +126,8 @@ public void onBlockBreak(BlockBreakEvent event) {
if (portalFromIris != null) {
if (BlockEventType.BLOCK_BREAK.canDestroyPortal()) {
String msg = languageManager.getErrorMessage(TranslatableMessage.DESTROY);
MessageUtils.sendMessageFromPortal(portalFromIris,event.getPlayer(),msg,StargateSendMessagePortalEvent.MessageType.DESTROY);

event.getPlayer().sendMessage(msg);
portalFromIris.destroy();
return;
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@
import org.sgrewritten.stargate.Stargate;
import org.sgrewritten.stargate.action.ConditionalDelayedAction;
import org.sgrewritten.stargate.action.ConditionalRepeatedTask;
import org.sgrewritten.stargate.api.event.portal.StargateSendMessagePortalEvent;
import org.sgrewritten.stargate.config.ConfigurationHelper;
import org.sgrewritten.stargate.api.config.ConfigurationOption;
import org.sgrewritten.stargate.exception.database.StorageWriteException;
@@ -30,6 +31,7 @@
import org.sgrewritten.stargate.api.network.portal.PortalPosition;
import org.sgrewritten.stargate.property.PluginChannel;
import org.sgrewritten.stargate.util.ButtonHelper;
import org.sgrewritten.stargate.util.MessageUtils;
import org.sgrewritten.stargate.util.colors.ColorConverter;

import java.io.ByteArrayOutputStream;
@@ -136,7 +138,8 @@ private boolean dyePortalSignText(PlayerInteractEvent event, RealPortal portal)
StargatePermissionManager permissionManager = new StargatePermissionManager(event.getPlayer(), languageManager);
boolean hasPermission = permissionManager.hasCreatePermissions(portal);
if (!hasPermission) {
event.getPlayer().sendMessage(permissionManager.getDenyMessage());
String message = permissionManager.getDenyMessage();
MessageUtils.sendMessageFromPortal(portal,event.getPlayer(),message,StargateSendMessagePortalEvent.MessageType.DENY);
}
return hasPermission;
}
Original file line number Diff line number Diff line change
@@ -44,6 +44,7 @@
import org.sgrewritten.stargate.api.permission.BypassPermission;
import org.sgrewritten.stargate.property.NonLegacyMethod;
import org.sgrewritten.stargate.util.ExceptionHelper;
import org.sgrewritten.stargate.util.MessageUtils;
import org.sgrewritten.stargate.util.NameHelper;
import org.sgrewritten.stargate.util.portal.PortalHelper;

@@ -367,14 +368,15 @@ public void onButtonClick(PlayerInteractEvent event) {

Portal destination = getDestination();
if (destination == null) {
player.sendMessage(languageManager.getErrorMessage(TranslatableMessage.INVALID));
String message = languageManager.getErrorMessage(TranslatableMessage.INVALID);
MessageUtils.sendMessageFromPortal(this,event.getPlayer(),message,StargateSendMessagePortalEvent.MessageType.DESTINATION_EMPTY);
return;
}
StargatePermissionManager permissionManager = new StargatePermissionManager(player, languageManager);
StargateOpenPortalEvent stargateOpenEvent = new StargateOpenPortalEvent(player, this, false);
Bukkit.getPluginManager().callEvent(stargateOpenEvent);
if (!permissionManager.hasOpenPermissions(this, destination)) {
event.getPlayer().sendMessage(permissionManager.getDenyMessage());
MessageUtils.sendMessageFromPortal(this,player,permissionManager.getDenyMessage(),StargateSendMessagePortalEvent.MessageType.DENY);
return;
}
if (stargateOpenEvent.isCancelled()) {
@@ -512,7 +514,7 @@ public void onSignClick(PlayerInteractEvent event) {
permissionManager.getDenyMessage());
Bukkit.getPluginManager().callEvent(accessEvent);
if (accessEvent.getDeny()) {
event.getPlayer().sendMessage(accessEvent.getDenyReason());
MessageUtils.sendMessageFromPortal(this,event.getPlayer(),accessEvent.getDenyReason(),StargateSendMessagePortalEvent.MessageType.DENY);
return;
}

Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.sgrewritten.stargate.Stargate;
import org.sgrewritten.stargate.api.event.portal.StargateSendMessagePortalEvent;
import org.sgrewritten.stargate.api.network.portal.Portal;
import org.sgrewritten.stargate.api.network.portal.PortalFlag;
import org.sgrewritten.stargate.api.network.portal.format.*;
@@ -20,6 +21,7 @@
import org.sgrewritten.stargate.manager.StargatePermissionManager;
import org.sgrewritten.stargate.api.network.Network;
import org.sgrewritten.stargate.network.portal.formatting.HighlightingStyle;
import org.sgrewritten.stargate.util.MessageUtils;

import java.util.*;
import java.util.logging.Level;
@@ -75,7 +77,8 @@ public void onSignClick(PlayerInteractEvent event) {
activate(actor);
if (destinations.size() < 1) {
String message = super.languageManager.getErrorMessage(TranslatableMessage.DESTINATION_EMPTY);
event.getPlayer().sendMessage(message);
MessageUtils.sendMessageFromPortal(this,event.getPlayer(),message,StargateSendMessagePortalEvent.MessageType.DESTINATION_EMPTY);

this.isActive = false;
return;
}
@@ -275,11 +278,13 @@ private boolean hasActivatePermissions(Player player, StargatePermissionManager
permissionManager.getDenyMessage());
Bukkit.getPluginManager().callEvent(accessEvent);
if (accessEvent.getDeny()) {
String message = null;
if (accessEvent.getDenyReason() == null) {
player.sendMessage(super.languageManager.getErrorMessage(TranslatableMessage.ADDON_INTERFERE));
message = super.languageManager.getErrorMessage(TranslatableMessage.ADDON_INTERFERE);
} else if (!accessEvent.getDenyReason().isEmpty()) {
player.sendMessage(accessEvent.getDenyReason());
message = accessEvent.getDenyReason();
}
MessageUtils.sendMessageFromPortal(this,player,message,StargateSendMessagePortalEvent.MessageType.DENY);
if (hasPermission) {
Stargate.log(Level.CONFIG, " Access event was denied externally");
}
Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@
import org.sgrewritten.stargate.action.DelayedAction;
import org.sgrewritten.stargate.action.SimpleAction;
import org.sgrewritten.stargate.action.SupplierAction;
import org.sgrewritten.stargate.api.event.portal.StargateSendMessagePortalEvent;
import org.sgrewritten.stargate.api.network.portal.PortalFlag;
import org.sgrewritten.stargate.api.network.portal.RealPortal;
import org.sgrewritten.stargate.config.ConfigurationHelper;
@@ -25,6 +26,7 @@
import org.sgrewritten.stargate.formatting.TranslatableMessage;
import org.sgrewritten.stargate.manager.StargatePermissionManager;
import org.sgrewritten.stargate.property.NonLegacyMethod;
import org.sgrewritten.stargate.util.MessageUtils;
import org.sgrewritten.stargate.util.portal.TeleportationHelper;
import org.sgrewritten.stargate.vectorlogic.VectorUtils;

@@ -389,8 +391,7 @@ private void teleport(Entity target, Location exitPoint) {
target.teleport(exitPoint);
boatsTeleporting.remove(target);
if (origin != null && !origin.hasFlag(PortalFlag.SILENT)) {
Stargate.log(Level.FINE, "Sending player teleport message" + teleportMessage);
target.sendMessage(teleportMessage);
MessageUtils.sendMessageFromPortal(origin,target,teleportMessage,StargateSendMessagePortalEvent.MessageType.DENY);
}
}

20 changes: 20 additions & 0 deletions src/main/java/org/sgrewritten/stargate/util/MessageUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.sgrewritten.stargate.util;

import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.sgrewritten.stargate.api.event.portal.StargateSendMessagePortalEvent;
import org.sgrewritten.stargate.api.network.portal.Portal;

public class MessageUtils {

public static void sendMessageFromPortal(Portal portal, Entity receiver, String message, StargateSendMessagePortalEvent.MessageType type){
if(message == null || message.isBlank()){
return;
}
StargateSendMessagePortalEvent sendMessageEvent = new StargateSendMessagePortalEvent(portal,receiver,type);
Bukkit.getPluginManager().callEvent(sendMessageEvent);
if(!sendMessageEvent.isCancelled()){
receiver.sendMessage(message);
}
}
}
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@
import org.bukkit.entity.Player;
import org.bukkit.util.BlockVector;
import org.sgrewritten.stargate.Stargate;
import org.sgrewritten.stargate.api.event.portal.StargateSendMessagePortalEvent;
import org.sgrewritten.stargate.api.gate.GateAPI;
import org.sgrewritten.stargate.api.StargateAPI;
import org.sgrewritten.stargate.api.gate.GateStructureType;
@@ -35,11 +36,7 @@
import org.sgrewritten.stargate.network.portal.portaldata.PortalData;
import org.sgrewritten.stargate.api.network.portal.RealPortal;
import org.sgrewritten.stargate.api.permission.BypassPermission;
import org.sgrewritten.stargate.util.EconomyHelper;
import org.sgrewritten.stargate.util.NameHelper;
import org.sgrewritten.stargate.util.NetworkCreationHelper;
import org.sgrewritten.stargate.util.SpawnDetectionHelper;
import org.sgrewritten.stargate.util.TranslatableMessageFormatter;
import org.sgrewritten.stargate.util.*;
import org.sgrewritten.stargate.vectorlogic.VectorUtils;

import java.util.*;
@@ -141,11 +138,13 @@ public static void tryPortalCreation(Network selectedNetwork, String[] lines, Bl
//If the create event has been denied, tell the user and abort
if (portalCreateEvent.getDeny()) {
Stargate.log(Level.CONFIG, " Event was denied due to lack of permission or an add-on");
String message = null;
if (portalCreateEvent.getDenyReason() == null) {
player.sendMessage(stargateAPI.getLanguageManager().getErrorMessage(TranslatableMessage.ADDON_INTERFERE));
message = stargateAPI.getLanguageManager().getErrorMessage(TranslatableMessage.ADDON_INTERFERE);
} else if (!portalCreateEvent.getDenyReason().isEmpty()) {
player.sendMessage(portalCreateEvent.getDenyReason());
message = portalCreateEvent.getDenyReason();
}
MessageUtils.sendMessageFromPortal(portal,player,message, StargateSendMessagePortalEvent.MessageType.DENY);
return;
}

Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.sgrewritten.stargate.api.event.portal.StargateSendMessagePortalEvent;
import org.sgrewritten.stargate.config.ConfigurationHelper;
import org.sgrewritten.stargate.api.config.ConfigurationOption;
import org.sgrewritten.stargate.economy.StargateEconomyAPI;
@@ -13,6 +14,7 @@
import org.sgrewritten.stargate.api.network.portal.RealPortal;
import org.sgrewritten.stargate.api.permission.BypassPermission;
import org.sgrewritten.stargate.util.EconomyHelper;
import org.sgrewritten.stargate.util.MessageUtils;

/**
* A helper class for removing an existing portal
@@ -42,12 +44,13 @@ public static boolean destroyPortalIfHasPermissionAndCanPay(Player player, Porta

// Inform the player why the destruction was denied
if (portalDestroyEvent.getDeny()) {
String message = null;
if (portalDestroyEvent.getDenyReason() == null) {
player.sendMessage(
languageManager.getErrorMessage(TranslatableMessage.ADDON_INTERFERE));
message = languageManager.getErrorMessage(TranslatableMessage.ADDON_INTERFERE);
} else if (!portalDestroyEvent.getDenyReason().isEmpty()) {
player.sendMessage(portalDestroyEvent.getDenyReason());
message = portalDestroyEvent.getDenyReason();
}
MessageUtils.sendMessageFromPortal(portal,player,message, StargateSendMessagePortalEvent.MessageType.DENY);
return true;
}