Compare commits

...
16 Commits
Author SHA1 Message Date
NotAlexNoyle c67e16fbbf Update canonical Gitea link 2026-10-27 22:27:58 -04:00
NotAlexNoyle 5be4051a71 Exclude CODEOWNERS from language statistics 2026-10-27 08:25:16 -04:00
NotAlexNoyle 2249a4d393 Add CODEOWNERS (one staff approval) 2026-10-27 08:25:16 -04:00
NotAlexNoyle 1077a204cf Update regions.yml 2026-09-14 01:49:53 -04:00
NotAlexNoyle 7477ce5db5 Fix warzone creepers 2026-09-14 00:53:45 -04:00
NotAlexNoyle e8c1ea6459 Remove WGamemode-OG flag 2026-08-19 07:42:59 -04:00
NotAlexNoyle bdc08756cc Fix shop flags 2026-07-29 10:38:26 -04:00
NotAlexNoyle 66b4ffbb92 Update flags for QuickShop-OG 2026-07-22 08:33:21 -04:00
NotAlexNoyle 03dcdf5e82 Update worldguard flags 2026-07-16 19:48:39 -04:00
NotAlexNoyle b8a3272994 Fix /rg bypass 2026-06-17 05:37:07 -04:00
NotAlexNoyle 38c1d84f9e Fix hunger 2026-06-15 10:08:44 -04:00
NotAlexNoyle 9ee9d70730 Update configs 2026-06-07 09:19:49 -04:00
NotAlexNoyle cf8bca82ab FireFight-OG compatibility 2026-05-31 09:45:45 -04:00
NotAlexNoyle 46ae6c9c5e Use live TrueOG Network config files 2026-04-01 06:41:33 -04:00
NotAlexNoyle c7f1ae25d2 Update gradle to 8.14.3 2025-09-25 03:39:32 -04:00
NotAlexNoyle 58690eede0 Rebase 2025-01-01 23:50:04 -05:00
15 changed files with 2194 additions and 121 deletions

No files matched your search

+1
View File
@@ -1,2 +1,3 @@
*.java diff=java
.gitea/CODEOWNERS linguist-detectable=false
+3
View File
@@ -0,0 +1,3 @@
# Pull requests request review from the eligible staff team(s).
# One approval from either an Admin or Developer satisfies branch protection.
* @trueog/Admins @trueog/Developers
+14 -3
View File
@@ -2,7 +2,17 @@
<img src="worldguard-logo.svg" alt="WorldGuard" width="400" />
</h1>
WorldGuard lets you and players guard areas of land against griefers and undesirables, as well as tweak and disable various gameplay features of Minecraft.
A fork of [WorldGuard](https://github.com/EngineHub/WorldGuard) 7.0.8 maintained by [TrueOG Network](https://true-og.net) for 1.19.4. WorldGuard lets you and players guard areas of land against griefers and undesirables, as well as tweak and disable various gameplay features of Minecraft.
## Changes over WorldGuard:
- Gradle 8.0.2 -> 8.14.3.
- `build` copies the shaded jar to `build/libs/WorldGuard-<version>.jar` via `copyjar.sh`.
- Ships the live TrueOG Network `config.yml`, `config_world.yml`, and `worlds/world/regions.yml` as defaults. The world regions file is created on first run alongside the main config.
- New region flag `creeper-block-damage` (default allow). Set it to deny with `creeper-explosion` allowed to keep creeper blasts from breaking blocks while still damaging entities. This is how the spawn warzone is configured.
- Bucket use no longer plays the deny effect when a partner plugin's `safe-fluids` flag allows the action (FireFight-OG compatibility).
## Upstream description:
* Block creeper and wither block damage, falling damage, etc.
* Disable fire spread, lava fire spread, ice formation, Endermen picking up blocks, etc.
@@ -23,8 +33,8 @@ A Bukkit server implementation (such as [Paper](https://papermc.io)) and the [Wo
Compiling
---------
The project is written for Java 16 and our build process makes use of
[Gradle](http://gradle.org).
The project is written for Java 17 and our build process makes use of
[Gradle](http://gradle.org). Run `./gradlew build` and pick up the plugin jar from `build/libs/`.
Dependencies are automatically handled by Gradle.
@@ -40,6 +50,7 @@ Submissions must be licensed under the GNU Lesser General Public License v3.
Links
-----
* [TrueOG fork](https://git.trueog.net/trueog/WorldGuard)
* [Homepage](http://enginehub.org/worldguard)
* [Discord](https://discord.gg/enginehub)
* [Issue tracker](https://github.com/EngineHub/WorldGuard/issues)
Executable
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
VERSION="$1"
# Ensure the target directory exists
mkdir -p build/libs
# Copy and rename the jar, using $VERSION in the final filename
cp worldguard-bukkit/build/libs/*-dist.jar "build/libs/WorldGuard-${VERSION}.jar"
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Vendored
+92 -92
View File
@@ -1,92 +1,92 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
+11
View File
@@ -67,3 +67,14 @@ tasks.named<ShadowJar>("shadowJar") {
tasks.named("assemble").configure {
dependsOn("shadowJar")
}
tasks.register("runCopyJarScript", Exec::class) {
group = "build"
description = "Runs the copyjar.sh script after build completion."
workingDir(rootDir)
commandLine("sh", "copyjar.sh", project.version.toString())
}
tasks.named("build") {
finalizedBy("runCopyJarScript")
}
@@ -67,6 +67,7 @@ public class BukkitConfigurationManager extends YamlConfigurationManager {
public void copyDefaults() {
// Create the default configuration file
plugin.createDefaultConfiguration(new File(plugin.getDataFolder(), "config.yml"), "config.yml");
plugin.createDefaultConfiguration(new File(plugin.getDataFolder(), "worlds/world/regions.yml"), "world/regions.yml");
}
@Override
@@ -22,6 +22,7 @@ package com.sk89q.worldguard.bukkit.listener;
import static com.sk89q.worldguard.bukkit.cause.Cause.create;
import com.destroystokyo.paper.event.entity.EntityZapEvent;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.bukkit.cause.Cause;
import com.sk89q.worldguard.bukkit.event.DelegateEvent;
@@ -44,8 +45,12 @@ import com.sk89q.worldguard.bukkit.util.Blocks;
import com.sk89q.worldguard.bukkit.util.Entities;
import com.sk89q.worldguard.bukkit.util.Events;
import com.sk89q.worldguard.bukkit.util.Materials;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.config.WorldConfiguration;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.Flag;
import com.sk89q.worldguard.protection.flags.Flags;
import com.sk89q.worldguard.protection.flags.StateFlag;
import io.papermc.lib.PaperLib;
import org.bukkit.Bukkit;
import org.bukkit.Effect;
@@ -636,7 +641,7 @@ public class EventAbstractionListener extends AbstractListener {
Events.fireToCancel(event, new PlaceBlockEvent(event, create(player), blockAffected.getLocation(), blockMaterial).setAllowed(allowed));
Events.fireToCancel(event, new UseItemEvent(event, create(player), player.getWorld(), item).setAllowed(allowed));
if (event.isCancelled()) {
if (event.isCancelled() && !isOverridingFlagAllow("safe-fluids", blockAffected.getLocation())) {
playDenyEffect(event.getPlayer(), blockAffected.getLocation().add(0.5, 0.5, 0.5));
}
}
@@ -656,11 +661,23 @@ public class EventAbstractionListener extends AbstractListener {
Events.fireToCancel(event, new BreakBlockEvent(event, create(player), blockAffected).setAllowed(allowed));
Events.fireToCancel(event, new UseItemEvent(event, create(player), player.getWorld(), item).setAllowed(allowed));
if (event.isCancelled()) {
if (event.isCancelled() && !isOverridingFlagAllow("safe-fluids", blockAffected.getLocation())) {
playDenyEffect(event.getPlayer(), blockAffected.getLocation().add(0.5, 0.5, 0.5));
}
}
// Lets partner plugins (e.g. FireFight-OG) suppress WG's deny effect when a
// higher-priority listener will re-allow the action via a registered StateFlag.
private static boolean isOverridingFlagAllow(String flagName, Location location) {
Flag<?> flag = WorldGuard.getInstance().getFlagRegistry().get(flagName);
if (!(flag instanceof StateFlag)) {
return false;
}
ApplicableRegionSet set = WorldGuard.getInstance().getPlatform().getRegionContainer()
.createQuery().getApplicableRegions(BukkitAdapter.adapt(location));
return set.testState(null, (StateFlag) flag);
}
// TODO: Handle EntityPortalEnterEvent
//-------------------------------------------------------------------------
@@ -94,6 +94,8 @@ public class RegionFlagsListener extends AbstractListener {
if (event.getCause().find(EntityType.CREEPER) != null) { // Creeper
event.filter(testState(query, Flags.CREEPER_EXPLOSION), config.explosionFlagCancellation);
// Strips blocks from the blast without cancelling it, so entity damage still lands.
event.filter(testState(query, Flags.CREEPER_BLOCK_DAMAGE), false);
}
if (event.getCause().find(EntityType.ENDER_DRAGON) != null) { // Enderdragon
@@ -0,0 +1,12 @@
#
# WorldGuard regions file
#
# WARNING: THIS FILE IS AUTOMATICALLY GENERATED. If you modify this file by
# hand, be aware that A SINGLE MISTYPED CHARACTER CAN CORRUPT THE FILE. If
# WorldGuard is unable to parse the file, your regions will FAIL TO LOAD and
# the contents of this file will reset. Please use a YAML validator such as
# http://yaml-online-parser.appspot.com (for smaller files).
#
# REMEMBER TO KEEP PERIODICAL BACKUPS.
#
regions: {}
@@ -1,5 +1,9 @@
#
# WorldGuard's configuration file
# WorldGuard's main configuration file
#
# This is the global configuration file. Anything placed into here will
# be applied to all worlds. However, each world has its own configuration
# file to allow you to replace most settings in here for that world only.
#
# About editing this file:
# - DO NOT USE TABS. You MUST use spaces or Bukkit will complain. If
@@ -12,11 +16,167 @@
# - If you want to check the format of this file before putting it
# into WorldGuard, paste it into http://yaml-online-parser.appspot.com/
# and see if it gives "ERROR:".
# - Lines starting with # are commentsand so they are ignored.
#
# WARNING:
# Remember to check the compatibility spreadsheet for WorldGuard to see
# if any features are currently broken in your version of Bukkit.
# - Lines starting with # are comments and so they are ignored.
#
# -- This should be automatically replaced by the plugin in-game --
regions:
uuid-migration:
perform-on-next-start: false
keep-names-that-lack-uuids: true
use-creature-spawn-event: true
disable-bypass-by-default: true
announce-bypass-status: true
use-paper-entity-origin: true
enable: true
invincibility-removes-mobs: true
cancel-chat-without-recipients: true
nether-portal-protection: true
fake-player-build-override: true
explosion-flags-block-entity-damage: true
high-frequency-flags: true
protect-against-liquid-flow: true
wand: minecraft:leather
max-claim-volume: 30000
claim-only-inside-existing-regions: false
set-parent-on-claim: ''
location-flags-only-inside-regions: false
max-region-count-per-player:
default: 7
auto-invincible: false
auto-invincible-group: false
auto-no-drowning-group: false
use-player-move-event: true
use-player-teleports: true
use-particle-effects: true
disable-permission-cache: false
security:
deop-everyone-on-join: true
block-in-game-op-command: true
host-keys-allow-forge-clients: true
host-keys: {}
summary-on-start: true
op-permissions: false
build-permission-nodes:
enable: false
deny-message: '&cERROR: &6You don''t have permission to do that here.'
event-handling:
block-entity-spawns-with-untraceable-cause: false
interaction-whitelist: []
emit-block-use-at-feet: []
ignore-hopper-item-move-events: false
break-hoppers-on-denied-move: false
protection:
item-durability: true
remove-infinite-stacks: true
disable-xp-orb-drops: false
use-max-priority-association: true
gameplay:
block-potions: []
block-potions-overly-reliably: false
disable-conduit-effects: false
default:
pumpkin-scuba: false
disable-health-regain: false
physics:
no-physics-gravel: false
no-physics-sand: false
vine-like-rope-ladders: false
allow-portal-anywhere: false
disable-water-damage-blocks: []
ignition:
block-tnt: false
block-tnt-block-damage: false
block-lighter: false
fire:
disable-lava-fire-spread: false
disable-all-fire-spread: false
disable-fire-spread-blocks: []
lava-spread-blocks: []
mobs:
block-creeper-explosions: false
block-creeper-block-damage: false
block-wither-explosions: false
block-wither-block-damage: false
block-wither-skull-explosions: false
block-wither-skull-block-damage: false
block-enderdragon-block-damage: false
block-enderdragon-portal-creation: false
block-fireball-explosions: false
block-fireball-block-damage: false
anti-wolf-dumbness: true
allow-tamed-spawns: true
disable-enderman-griefing: false
disable-snowman-trails: false
block-painting-destroy: false
block-item-frame-destroy: false
block-armor-stand-destroy: false
block-plugin-spawning: true
block-above-ground-slimes: false
block-other-explosions: false
block-zombie-door-destruction: false
block-vehicle-entry: false
block-creature-spawn: []
player-damage:
disable-fall-damage: false
disable-lava-damage: false
disable-fire-damage: false
disable-lightning-damage: false
disable-drowning-damage: false
disable-suffocation-damage: false
disable-contact-damage: false
teleport-on-suffocation: false
disable-void-damage: false
teleport-on-void-falling: false
reset-fall-on-void-teleport: false
disable-explosion-damage: false
disable-mob-damage: false
disable-death-messages: false
crops:
disable-creature-trampling: false
disable-player-trampling: false
turtle-egg:
disable-creature-trampling: false
disable-player-trampling: false
weather:
prevent-lightning-strike-blocks: []
disable-lightning-strike-fire: false
disable-thunderstorm: false
disable-weather: false
disable-pig-zombification: false
disable-villager-witchification: false
disable-powered-creepers: false
always-raining: false
always-thundering: false
dynamics:
disable-mushroom-spread: false
disable-ice-melting: false
disable-snow-melting: false
disable-snow-formation: false
disable-ice-formation: false
disable-leaf-decay: false
disable-grass-growth: false
disable-mycelium-spread: false
disable-vine-growth: false
disable-rock-growth: false
disable-sculk-growth: false
disable-crop-growth: false
disable-soil-dehydration: false
disable-coral-block-fade: false
disable-copper-block-fade: false
snow-fall-blocks: []
blacklist:
use-as-whitelist: false
logging:
console:
enable: true
database:
enable: false
dsn: jdbc:mysql://localhost:3306/minecraft
user: root
pass: ''
table: blacklist_events
file:
enable: false
path: worldguard/logs/%Y-%m-%d.log
open-files: 10
custom-metrics-charts: false
@@ -1,21 +1,13 @@
#
# WorldGuard's configuration file.
# WorldGuard's world configuration file
#
# This is the a per-world configuration file. It only affects one
# corresponding world.
# This is a world configuration file. Anything placed into here will only
# affect this world. If you don't put anything in this file, then the
# settings will be inherited from the main configuration file.
#
# About editing this file:
# - DO NOT USE TABS. You MUST use spaces or Bukkit will complain. If
# you use an editor like Notepad++ (recommended for Windows users), you
# must configure it to "replace tabs with spaces." In Notepad++, this can
# be changed in Settings > Preferences > Language Menu.
# - Don't get rid of the indents. They are indented so some entries are
# in categories (like "enforce-single-session" is in the "protection"
# category.
# - If you want to check the format of this file before putting it
# into WorldGuard, paste it into http://yaml-online-parser.appspot.com/
# and see if it gives "ERROR:".
# - Lines starting with # are comments and so they are ignored.
# If you see {} below, that means that there are NO entries in this file.
# Remove the {} and add your own entries.
#
# -- This should be automatically replaced by the plugin in-game --
regions:
titles-always-use-default-times: true
File diff suppressed because it is too large. Load diff
@@ -91,6 +91,7 @@ public final class Flags {
public static final StateFlag MOB_DAMAGE = register(new StateFlag("mob-damage", true));
public static final StateFlag CREEPER_EXPLOSION = register(new StateFlag("creeper-explosion", true));
public static final StateFlag ENDERDRAGON_BLOCK_DAMAGE = register(new StateFlag("enderdragon-block-damage", true));
public static final StateFlag CREEPER_BLOCK_DAMAGE = register(new StateFlag("creeper-block-damage", true));
public static final StateFlag GHAST_FIREBALL = register(new StateFlag("ghast-fireball", true));
public static final StateFlag OTHER_EXPLOSION = register(new StateFlag("other-explosion", true));
public static final StateFlag WITHER_DAMAGE = register(new StateFlag("wither-damage", true));