Showing preview only (1,251K chars total). Download the full file or copy to clipboard to get everything.
Repository: DRE2N/DungeonsXL
Branch: master
Commit: 89ab9cc3bd33
Files: 279
Total size: 1.1 MB
Directory structure:
gitextract_74xrxnj_/
├── .github/
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.md
│ ├── feature_request.md
│ └── question.md
├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── adapter/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── de/
│ └── erethon/
│ └── dungeonsxl/
│ └── adapter/
│ └── block/
│ └── BlockAdapter.java
├── addon/
│ ├── README.md
│ ├── core/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── de/
│ │ │ └── erethon/
│ │ │ └── dungeonsxxl/
│ │ │ ├── DungeonsXXL.java
│ │ │ ├── requirement/
│ │ │ │ └── FeeItemsRequirement.java
│ │ │ ├── sign/
│ │ │ │ ├── FireworkSign.java
│ │ │ │ ├── GlowingBlockSign.java
│ │ │ │ ├── InteractWallSign.java
│ │ │ │ └── ParticleSign.java
│ │ │ ├── util/
│ │ │ │ ├── FireworkUtil.java
│ │ │ │ └── GlowUtil.java
│ │ │ └── world/
│ │ │ └── block/
│ │ │ └── GlowingBlock.java
│ │ └── resources/
│ │ └── plugin.yml
│ ├── dist/
│ │ └── pom.xml
│ └── pom.xml
├── api/
│ ├── LICENSE
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── de/
│ └── erethon/
│ └── dungeonsxl/
│ └── api/
│ ├── DungeonModule.java
│ ├── DungeonsAPI.java
│ ├── Requirement.java
│ ├── Reward.java
│ ├── dungeon/
│ │ ├── BuildMode.java
│ │ ├── CollectionGameRule.java
│ │ ├── ConfigReader.java
│ │ ├── Copier.java
│ │ ├── Dungeon.java
│ │ ├── Game.java
│ │ ├── GameGoal.java
│ │ ├── GameRule.java
│ │ ├── GameRuleContainer.java
│ │ └── MapGameRule.java
│ ├── event/
│ │ ├── DataReloadEvent.java
│ │ ├── group/
│ │ │ ├── GroupCollectRewardEvent.java
│ │ │ ├── GroupCreateEvent.java
│ │ │ ├── GroupDisbandEvent.java
│ │ │ ├── GroupEvent.java
│ │ │ ├── GroupFinishDungeonEvent.java
│ │ │ ├── GroupFinishFloorEvent.java
│ │ │ ├── GroupPlayerJoinEvent.java
│ │ │ ├── GroupPlayerKickEvent.java
│ │ │ ├── GroupPlayerLeaveEvent.java
│ │ │ ├── GroupScoreEvent.java
│ │ │ └── GroupStartFloorEvent.java
│ │ ├── mob/
│ │ │ ├── DungeonMobDeathEvent.java
│ │ │ ├── DungeonMobEvent.java
│ │ │ └── DungeonMobSpawnEvent.java
│ │ ├── player/
│ │ │ ├── EditPlayerEditEvent.java
│ │ │ ├── EditPlayerEvent.java
│ │ │ ├── EditPlayerLeaveEvent.java
│ │ │ ├── GamePlayerDeathEvent.java
│ │ │ ├── GamePlayerEvent.java
│ │ │ ├── GamePlayerFinishEvent.java
│ │ │ ├── GlobalPlayerEvent.java
│ │ │ └── GlobalPlayerRewardPayOutEvent.java
│ │ ├── requirement/
│ │ │ ├── RequirementCheckEvent.java
│ │ │ ├── RequirementDemandEvent.java
│ │ │ └── RequirementEvent.java
│ │ ├── trigger/
│ │ │ ├── TriggerActionEvent.java
│ │ │ ├── TriggerEvent.java
│ │ │ ├── TriggerRegistrationEvent.java
│ │ │ └── TriggerUnregistrationEvent.java
│ │ └── world/
│ │ ├── EditWorldEvent.java
│ │ ├── EditWorldGenerateEvent.java
│ │ ├── EditWorldSaveEvent.java
│ │ ├── EditWorldUnloadEvent.java
│ │ ├── GameWorldEvent.java
│ │ ├── GameWorldStartGameEvent.java
│ │ ├── InstanceWorldEvent.java
│ │ ├── InstanceWorldPostUnloadEvent.java
│ │ ├── InstanceWorldUnloadEvent.java
│ │ ├── ResourceWorldEvent.java
│ │ └── ResourceWorldInstantiateEvent.java
│ ├── mob/
│ │ ├── DungeonMob.java
│ │ ├── ExternalMobProvider.java
│ │ └── MobSet.java
│ ├── player/
│ │ ├── EditPlayer.java
│ │ ├── GamePlayer.java
│ │ ├── GlobalPlayer.java
│ │ ├── GroupAdapter.java
│ │ ├── InstancePlayer.java
│ │ ├── PlayerCache.java
│ │ ├── PlayerClass.java
│ │ └── PlayerGroup.java
│ ├── sign/
│ │ ├── AbstractDSign.java
│ │ ├── Button.java
│ │ ├── Deactivatable.java
│ │ ├── DungeonSign.java
│ │ ├── Passive.java
│ │ ├── Rocker.java
│ │ └── Windup.java
│ ├── trigger/
│ │ ├── AbstractTrigger.java
│ │ ├── LogicalExpression.java
│ │ ├── Trigger.java
│ │ ├── TriggerListener.java
│ │ └── TriggerTypeKey.java
│ └── world/
│ ├── EditWorld.java
│ ├── GameWorld.java
│ ├── InstanceWorld.java
│ └── ResourceWorld.java
├── build.bat
├── build.sh
├── bukkit_blockdata/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── de/
│ └── erethon/
│ └── dungeonsxl/
│ └── adapter/
│ └── block/
│ └── BlockAdapterBlockData.java
├── bukkit_magicvalues/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── de/
│ └── erethon/
│ └── dungeonsxl/
│ └── adapter/
│ └── block/
│ └── BlockAdapterMagicValues.java
├── core/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── de/
│ │ └── erethon/
│ │ └── dungeonsxl/
│ │ ├── DXLModule.java
│ │ ├── DungeonsXL.java
│ │ ├── command/
│ │ │ ├── BreakCommand.java
│ │ │ ├── ChatCommand.java
│ │ │ ├── ChatSpyCommand.java
│ │ │ ├── CreateCommand.java
│ │ │ ├── DCommand.java
│ │ │ ├── DCommandRegistry.java
│ │ │ ├── DeleteCommand.java
│ │ │ ├── DungeonItemCommand.java
│ │ │ ├── EditCommand.java
│ │ │ ├── EnterCommand.java
│ │ │ ├── EscapeCommand.java
│ │ │ ├── GameCommand.java
│ │ │ ├── GroupCommand.java
│ │ │ ├── HelpCommand.java
│ │ │ ├── ImportCommand.java
│ │ │ ├── InviteCommand.java
│ │ │ ├── KickCommand.java
│ │ │ ├── LeaveCommand.java
│ │ │ ├── ListCommand.java
│ │ │ ├── LivesCommand.java
│ │ │ ├── MainCommand.java
│ │ │ ├── MsgCommand.java
│ │ │ ├── PlayCommand.java
│ │ │ ├── PortalCommand.java
│ │ │ ├── ReloadCommand.java
│ │ │ ├── RenameCommand.java
│ │ │ ├── ResourcePackCommand.java
│ │ │ ├── SaveCommand.java
│ │ │ ├── StatusCommand.java
│ │ │ ├── TestCommand.java
│ │ │ └── UninviteCommand.java
│ │ ├── config/
│ │ │ ├── DMessage.java
│ │ │ └── MainConfig.java
│ │ ├── dungeon/
│ │ │ ├── DDungeon.java
│ │ │ ├── DGame.java
│ │ │ └── DungeonConfig.java
│ │ ├── global/
│ │ │ ├── DPortal.java
│ │ │ ├── GameSign.java
│ │ │ ├── GlobalProtection.java
│ │ │ ├── GlobalProtectionCache.java
│ │ │ ├── GlobalProtectionListener.java
│ │ │ ├── GroupSign.java
│ │ │ ├── JoinSign.java
│ │ │ ├── LeaveSign.java
│ │ │ └── UnloadedProtection.java
│ │ ├── mob/
│ │ │ ├── CitizensMobProvider.java
│ │ │ ├── CustomExternalMobProvider.java
│ │ │ ├── DMob.java
│ │ │ ├── DMobListener.java
│ │ │ ├── DNPCRegistry.java
│ │ │ └── ExternalMobPlugin.java
│ │ ├── player/
│ │ │ ├── DEditPlayer.java
│ │ │ ├── DGamePlayer.java
│ │ │ ├── DGlobalPlayer.java
│ │ │ ├── DGroup.java
│ │ │ ├── DGroupTag.java
│ │ │ ├── DInstancePlayer.java
│ │ │ ├── DPermission.java
│ │ │ ├── DPlayerData.java
│ │ │ ├── DPlayerListener.java
│ │ │ ├── RespawnTask.java
│ │ │ ├── SecureModeTask.java
│ │ │ ├── TimeIsRunningTask.java
│ │ │ └── groupadapter/
│ │ │ └── PartiesAdapter.java
│ │ ├── requirement/
│ │ │ ├── FeeLevelRequirement.java
│ │ │ ├── FeeMoneyRequirement.java
│ │ │ ├── FinishedDungeonsRequirement.java
│ │ │ ├── ForbiddenItemsRequirement.java
│ │ │ ├── GroupSizeRequirement.java
│ │ │ ├── KeyItemsRequirement.java
│ │ │ ├── PermissionRequirement.java
│ │ │ ├── TimeSinceFinishRequirement.java
│ │ │ ├── TimeSinceStartRequirement.java
│ │ │ └── TimeframeRequirement.java
│ │ ├── reward/
│ │ │ ├── ItemReward.java
│ │ │ ├── LevelReward.java
│ │ │ ├── MoneyReward.java
│ │ │ └── RewardListener.java
│ │ ├── sign/
│ │ │ ├── DSignListener.java
│ │ │ ├── LocationSign.java
│ │ │ ├── button/
│ │ │ │ ├── ActionBarSign.java
│ │ │ │ ├── BossShopSign.java
│ │ │ │ ├── ChatMessageSign.java
│ │ │ │ ├── CheckpointSign.java
│ │ │ │ ├── ClassesSign.java
│ │ │ │ ├── EndSign.java
│ │ │ │ ├── LeaveSign.java
│ │ │ │ ├── LivesModifierSign.java
│ │ │ │ ├── MessageSign.java
│ │ │ │ ├── ReadySign.java
│ │ │ │ ├── ResourcePackSign.java
│ │ │ │ ├── SoundMessageSign.java
│ │ │ │ ├── TeleportSign.java
│ │ │ │ ├── TitleSign.java
│ │ │ │ └── WaveSign.java
│ │ │ ├── passive/
│ │ │ │ ├── BedSign.java
│ │ │ │ ├── ChestSign.java
│ │ │ │ ├── DungeonChestSign.java
│ │ │ │ ├── FlagSign.java
│ │ │ │ ├── HologramSign.java
│ │ │ │ ├── InteractSign.java
│ │ │ │ ├── LobbySign.java
│ │ │ │ ├── NoteSign.java
│ │ │ │ ├── PlaceSign.java
│ │ │ │ ├── ProtectionSign.java
│ │ │ │ ├── RewardChestSign.java
│ │ │ │ ├── ScriptSign.java
│ │ │ │ ├── SignScript.java
│ │ │ │ └── StartSign.java
│ │ │ ├── rocker/
│ │ │ │ ├── BlockSign.java
│ │ │ │ ├── OpenDoorSign.java
│ │ │ │ └── TriggerSign.java
│ │ │ └── windup/
│ │ │ ├── CommandScript.java
│ │ │ ├── CommandSign.java
│ │ │ ├── CommandTask.java
│ │ │ ├── DelayedPowerTask.java
│ │ │ ├── DropSign.java
│ │ │ ├── MobSign.java
│ │ │ ├── MobSpawnTask.java
│ │ │ └── RedstoneSign.java
│ │ ├── trigger/
│ │ │ ├── DistanceTrigger.java
│ │ │ ├── FortuneTrigger.java
│ │ │ ├── InteractTrigger.java
│ │ │ ├── MobTrigger.java
│ │ │ ├── PresenceTrigger.java
│ │ │ ├── ProgressTrigger.java
│ │ │ ├── RedstoneTrigger.java
│ │ │ ├── SignTrigger.java
│ │ │ ├── TriggerListener.java
│ │ │ ├── UseItemTrigger.java
│ │ │ └── WaveTrigger.java
│ │ ├── util/
│ │ │ ├── AttributeUtil.java
│ │ │ ├── BlockUtilCompat.java
│ │ │ ├── ContainerAdapter.java
│ │ │ ├── DependencyVersion.java
│ │ │ ├── LWCUtil.java
│ │ │ ├── LocationString.java
│ │ │ ├── ParsingUtil.java
│ │ │ └── PlaceholderUtil.java
│ │ └── world/
│ │ ├── DEditWorld.java
│ │ ├── DGameWorld.java
│ │ ├── DInstanceWorld.java
│ │ ├── DResourceWorld.java
│ │ ├── DWorldListener.java
│ │ ├── LWCIntegration.java
│ │ ├── SignData.java
│ │ ├── WorldConfig.java
│ │ └── block/
│ │ ├── GameBlock.java
│ │ ├── LockedDoor.java
│ │ ├── MultiBlock.java
│ │ ├── PlaceableBlock.java
│ │ ├── ProtectedBlock.java
│ │ ├── RewardChest.java
│ │ ├── TeamBed.java
│ │ ├── TeamBlock.java
│ │ └── TeamFlag.java
│ └── resources/
│ ├── languages/
│ │ ├── english.yml
│ │ ├── french.yml
│ │ └── german.yml
│ └── plugin.yml
├── dist/
│ └── pom.xml
├── mvnbt.jar
└── pom.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a bug report to help us improve
---
(Please follow this template, as doing so saves both you and me a lot of time.
Issues that don't follow the template may be closed.)
**Description**
(A clear and concise description of what the bug is, e.g.:
Every time my mob signs spawn pigs, they turn green and fly away.)
**Reproduce**
(List steps to reproduce, e.g.:
1. Create a new dungeon with /dxl create
2. Place [ready] sign, [mob]/pig/0,1/D5 sign
3. Leave edit mode with /dxl leave
4. Test with /dxl play
5. Trigger ready sign and get close to the location of the pig spawn sign)
**Expected behavior**
(A clear and concise description of what you expected to happen, e.g.:
I wanted the pigs to turn blue and dig mole-like tunnels instead X( )
**Screenshots / GIFs / videos**
(If applicable, add screenshots to help explain your problem.)
**Relevant configuration files**
(The three grave accents mark the beginning and end of a code block. If there are relevant configuration files,
please paste them in the lines between the accents sothat others can see if there are any syntax errors.)
```
```
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
---
**Please describe the use case or the problem your request is related to.**
(A clear and concise description of what the problem is. Ex. I'm always frustrated when [...];)
**Describe the solution you'd like**
(A clear and concise description of what you want to happen.)
**Describe alternatives you've considered**
(A clear and concise description of any alternative solutions or features you've considered.)
================================================
FILE: .github/ISSUE_TEMPLATE/question.md
================================================
---
name: Question
about: About things you do not understand in the documentation
---
**The feature you'd like to know more about**
(e.g. game rules)
**Link to the wiki article (in case it exists)**
**What did you already try?**
**Relevant configuration files**
(The three grave accents mark the beginning and end of a code block. If there are relevant configuration files,
please paste them in the lines between the accents sothat others can see if there are any syntax errors.)
```
```
================================================
FILE: .gitignore
================================================
*apache-maven-*
licenseheader.txt
*dependency-reduced-pom.xml
*nb-configuration.xml
*target
================================================
FILE: .travis.yml
================================================
language: java
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
================================================
FILE: README.md
================================================

[](http://erethon.de/repo/de/erethon/dungeonsxl/dungeonsxl-dist)
[](../../wiki/)
[](../../issues/)
[](http://erethon.de/javadocs/dungeonsxl/)
[](http://bstats.org/plugin/bukkit/DungeonsXL/)
[](https://travis-ci.com/DRE2N/DungeonsXL) [](https://codebeat.co/projects/github-com-dre2n-dungeonsxl-master)
DungeonsXL is a server mod that allows you to instantiate worlds.
Its main goal is to offer a way to use a world in a set state multiple times by a player (like for a jump'n'run), a group of players (e.g. for a quest dungeon, an adventure map or a PvE arena) or even by groups of groups of players (e.g. for PvP arenas).
DungeonsXL also provides custom game mechanics to make these worlds interesting. It might also be helpful if you want players to build something in creative mode quickly and uncomplicated without any influence on their main world data (inventory, levels etc.).
## Features
* Create as many dungeons as you wish!
* The instantiation system allows dungeons to be played by multiple groups of players at the same time without clashes.
* Dungeons are accessable through portals in one of your main worlds. [Read more...](../../wiki/getting-started#entering-the-dungeon)
* Invite players to edit single dungeons without the need to give them any further permissions. [Read more...](../../wiki/getting-started#editing-the-map)
* Allow players to build in creative mode safely without any influence to their game progress in the main worlds!
* Set checkpoints, breakable blocks, triggers, messages and much more through signs in the edit mode. [Read more...](../../wiki/signs)
* Per dungeon configuration (you should try that after you became familiar with the basics of this plugin). [Read more...](../../wiki/dungeon-configuration)
* Link multiple floors together to create large dungeons with multiple levels. [Read more...](../../wiki/getting-started#advanced-multi-floor-dungeons-mfds)
* Use a dungeon as a tutorial and give them a PEX group when they finish it. [Read more...](../../wiki/main-configuration)
* Players can play the dungeon with their own items or with configurable classes.
* _The classes support doges!_
* Mob waves: [Read more...](../../wiki/signs#wave)
* PvP
* Time limits
* A built-in custom mob system and support for MythicMobs. [Read more...](../../wiki/signs#mob)
* A powerful API: [Read more...](../../wiki/api-tutorial)
* Different game types allow you to use your maps dynamically for different purposes. [Read more...](../../wiki/game-types)
* Announcements sothat users can join the next match easily. [Read more...](../../wiki/announcements)
* Per dungeon resource packs
* ...and many more!
## The concept
If you want to learn how to use DungeonsXL step by step, please have a look at the [wiki](../../wiki) page [getting started](../../wiki/getting-started).
## Compatibility
### Server
DungeonsXL works with Spigot 1.8.8 and higher. However, support for new versions has a higher priority than support for 1.8-1.12. Old builds that support older versions are unusable for production environments. See [here](../../wiki/legacy-support) for detailed information. DungeonsXL works with Spigot and Paper-based server softwares. This does not include Bukkit/Forge hybrids (MCPC+, Cauldron, Mohist, Magma, ...).
### XLib
DungeonsXL requires [XLib](https://github.com/DRE2N/CaliburnAPI) to run.
### Building information and dependencies
Building DungeonsXL from source requires [Java Development Kit 8 or higher](https://www.azul.com/downloads/?package=jdk#zulu).
Both XLib and DXL can be built by running the build script in the respective root directory. Use _build.bat_ if you're on Windows and _build.sh_ on Linux, BSD or Mac. Dependencies are downloaded automatically.
### Known incompatibilities
* Corpses
* PerWorldInventory
Many incompatibilities can be fixed with [PerWorldPlugins](http://dev.bukkit.org/bukkit-plugins/perworldplugins/) ([fork for 1.8+](https://www.spigotmc.org/resources/perworldplugins-unofficial-update-version.6454/)).
Try to add the incompatible plugins only to the worlds where you need them.
================================================
FILE: adapter/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-adapter</artifactId>
<version>0.19-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-parent</artifactId>
<version>0.19-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-api</artifactId>
<version>${project.parent.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>${spigotVersion.latest}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
================================================
FILE: adapter/src/main/java/de/erethon/dungeonsxl/adapter/block/BlockAdapter.java
================================================
/*
* Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.adapter.block;
import de.erethon.dungeonsxl.api.player.PlayerGroup.Color;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
/**
* @author Daniel Saukel
*/
public interface BlockAdapter {
boolean isBedHead(Block block);
void openDoor(Block block);
void closeDoor(Block block);
void setBlockWoolColor(Block block, Color color);
BlockFace getFacing(Block block);
void setFacing(Block block, BlockFace facing);
void setAxis(Block block, boolean z);
}
================================================
FILE: addon/README.md
================================================
## DungeonsXL Donors Addon
(C) 2020-2023 Daniel Saukel, All Rights Reserved.
This module is a plugin with additional features made for donors.
The GNU LGPLv3 of the API and the GNU GPLv3 license of the other modules do not apply to this module.
================================================
FILE: addon/core/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-addon-core</artifactId>
<version>${project.parent.version}</version>
<packaging>jar</packaging>
<parent>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-addon</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<build>
<resources>
<resource>
<targetPath>.</targetPath>
<filtering>true</filtering>
<directory>src/main/resources/</directory>
<includes>
<include>plugin.yml</include>
</includes>
</resource>
</resources>
</build>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId>
<version>1.16.5-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
================================================
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/DungeonsXXL.java
================================================
/*
* Copyright (C) 2020-2026 Daniel Saukel
*
* All rights reserved.
*/
package de.erethon.dungeonsxxl;
import de.erethon.dungeonsxl.DungeonsXL;
import de.erethon.dungeonsxl.api.DungeonModule;
import de.erethon.dungeonsxl.api.Requirement;
import de.erethon.dungeonsxl.api.Reward;
import de.erethon.dungeonsxl.api.dungeon.GameRule;
import de.erethon.dungeonsxl.api.sign.DungeonSign;
import de.erethon.dungeonsxl.api.trigger.Trigger;
import de.erethon.dungeonsxxl.requirement.*;
import de.erethon.dungeonsxxl.sign.*;
import de.erethon.dungeonsxxl.util.GlowUtil;
import de.erethon.xlib.compatibility.Internals;
import de.erethon.xlib.plugin.PluginInit;
import de.erethon.xlib.plugin.DREPluginSettings;
import de.erethon.xlib.util.Registry;
/**
* @author Daniel Saukel
*/
public class DungeonsXXL extends PluginInit implements DungeonModule {
private static DungeonsXXL instance;
private DungeonsXL dxl;
private GlowUtil glowUtil;
public DungeonsXXL() {
settings = DREPluginSettings.builder()
.internals(Internals.v1_16_R3)
.metrics(false)
.spigotMCResourceId(-1)
.build();
}
@Override
public void onEnable() {
instance = this;
dxl = DungeonsXL.getInstance();
glowUtil = new GlowUtil(this);
}
/**
* Returns the instance of this plugin.
*
* @return the instance of this plugin
*/
public static DungeonsXXL getInstance() {
return instance;
}
/**
* Returns the current {@link de.erethon.dungeonsxl.DungeonsXL} singleton.
*
* @return the current {@link de.erethon.dungeonsxl.DungeonsXL} singleton
*/
public DungeonsXL getDXL() {
return dxl;
}
/**
* The loaded instance of GlowUtil.
*
* @return the loaded instance of GlowUtil
*/
public GlowUtil getGlowUtil() {
return glowUtil;
}
@Override
public void initRequirements(Registry<String, Class<? extends Requirement>> registry) {
registry.add("feeItems", FeeItemsRequirement.class);
}
@Override
public void initRewards(Registry<String, Class<? extends Reward>> registry) {
}
@Override
public void initSigns(Registry<String, Class<? extends DungeonSign>> registry) {
registry.add("FIREWORK", FireworkSign.class);
registry.add("GLOWINGBLOCK", GlowingBlockSign.class);
registry.add("INTERACTWALL", InteractWallSign.class);
registry.add("PARTICLE", ParticleSign.class);
}
@Override
public void initGameRules(Registry<String, GameRule> registry) {
}
@Override
public void initTriggers(Registry<Character, Class<? extends Trigger>> triggerRegistry) {
}
}
================================================
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/requirement/FeeItemsRequirement.java
================================================
/*
* Copyright (C) 2020-2026 Daniel Saukel
*
* All rights reserved.
*/
package de.erethon.dungeonsxxl.requirement;
import de.erethon.dungeonsxl.api.DungeonsAPI;
import de.erethon.dungeonsxl.api.Requirement;
import de.erethon.dungeonsxl.config.DMessage;
import java.util.List;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
/**
* @author Daniel Saukel
*/
public class FeeItemsRequirement implements Requirement {
private DungeonsAPI api;
private List<ItemStack> fee;
public FeeItemsRequirement(DungeonsAPI api) {
this.api = api;
}
public List<ItemStack> getFee() {
return fee;
}
@Override
public void setup(ConfigurationSection config) {
fee = api.getXLib().deserializeStackList(config, "feeItems");
}
@Override
public boolean check(Player player) {
for (ItemStack stack : fee) {
if (!player.getInventory().containsAtLeast(stack, stack.getAmount())) {
return false;
}
}
return true;
}
@Override
public BaseComponent[] getCheckMessage(Player player) {
ComponentBuilder builder = new ComponentBuilder(DMessage.REQUIREMENT_FEE_ITEMS + ": ").color(ChatColor.GOLD);
boolean first = true;
for (ItemStack stack : fee) {
String name = stack.getAmount() > 1 ? stack.getAmount() + " " : "" + api.getXLib().getExItem(stack).getName();
ChatColor color = player.getInventory().containsAtLeast(stack, stack.getAmount()) ? ChatColor.GREEN : ChatColor.DARK_RED;
if (!first) {
builder.append(", ").color(ChatColor.WHITE);
} else {
first = false;
}
builder.append(name).color(color);
}
return builder.create();
}
@Override
public void demand(Player player) {
player.getInventory().removeItem(fee.toArray(new ItemStack[]{}));
}
@Override
public String toString() {
return "FeeItemsRequirement{items=" + fee + "}";
}
}
================================================
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/sign/FireworkSign.java
================================================
/*
* Copyright (C) 2020-2026 Daniel Saukel
*
* All rights reserved.
*/
package de.erethon.dungeonsxxl.sign;
import de.erethon.dungeonsxl.api.DungeonsAPI;
import de.erethon.dungeonsxl.api.sign.Button;
import de.erethon.dungeonsxl.api.world.InstanceWorld;
import de.erethon.dungeonsxl.player.DPermission;
import de.erethon.dungeonsxxl.util.FireworkUtil;
import org.bukkit.block.Sign;
/**
* @author Daniel Saukel
*/
public class FireworkSign extends Button {
public FireworkSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWorld instance) {
super(api, sign, lines, instance);
}
@Override
public String getName() {
return "Firework";
}
@Override
public String getBuildPermission() {
return DPermission.SIGN.getNode() + ".firework";
}
@Override
public boolean isOnDungeonInit() {
return false;
}
@Override
public boolean isProtected() {
return false;
}
@Override
public boolean isSetToAir() {
return true;
}
@Override
public boolean validate() {
return true;
}
@Override
public void initialize() {
}
@Override
public void push() {
FireworkUtil.spawnRandom(getSign().getLocation());
}
}
================================================
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/sign/GlowingBlockSign.java
================================================
/*
* Copyright (C) 2020-2026 Daniel Saukel
*
* All rights reserved.
*/
package de.erethon.dungeonsxxl.sign;
import de.erethon.dungeonsxl.api.DungeonsAPI;
import de.erethon.dungeonsxl.api.sign.Rocker;
import de.erethon.dungeonsxl.api.world.InstanceWorld;
import de.erethon.dungeonsxl.player.DPermission;
import de.erethon.dungeonsxl.util.BlockUtilCompat;
import de.erethon.dungeonsxl.world.DGameWorld;
import de.erethon.dungeonsxxl.DungeonsXXL;
import de.erethon.dungeonsxxl.world.block.GlowingBlock;
import de.erethon.xlib.util.EnumUtil;
import org.bukkit.ChatColor;
import org.bukkit.block.Sign;
/**
* Turns the attached block into a glowing block.
*
* @author Daniel Saukel
*/
public class GlowingBlockSign extends Rocker {
private ChatColor color = ChatColor.DARK_RED;
private Double time;
private GlowingBlock glowingBlock;
public GlowingBlockSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWorld instance) {
super(api, sign, lines, instance);
}
/**
* Returns the glowing block.
*
* @return the glowing block
*/
public GlowingBlock getGlowingBlock() {
return glowingBlock;
}
/**
* Returns the color of the glowing block or null if it is a rainbow block.
*
* @return the color of the glowing block or null if it is a rainbow block
*/
public ChatColor getColor() {
return color;
}
@Override
public String getName() {
return "GlowingBlock";
}
@Override
public String getBuildPermission() {
return DPermission.SIGN.getNode() + ".glowingblock";
}
@Override
public boolean isOnDungeonInit() {
return false;
}
@Override
public boolean isProtected() {
return false;
}
@Override
public boolean isSetToAir() {
return true;
}
@Override
public boolean validate() {
return true;
}
@Override
public void initialize() {
if (getLine(1).equalsIgnoreCase("RAINBOW")) {
color = null;
} else {
ChatColor color = EnumUtil.getEnumIgnoreCase(ChatColor.class, getLine(1));
if (color != null) {
this.color = color;
}
}
try {
time = Double.parseDouble(getLine(2));
} catch (NumberFormatException exception) {
}
}
@Override
public void activate() {
if (active) {
return;
}
((DGameWorld) getGameWorld()).addGameBlock(
glowingBlock = new GlowingBlock(DungeonsXXL.getInstance(), BlockUtilCompat.getAttachedBlock(getSign().getBlock()), color, time));
active = true;
}
@Override
public void deactivate() {
if (!active) {
return;
}
glowingBlock.removeGlow();
active = false;
}
}
================================================
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/sign/InteractWallSign.java
================================================
/*
* Copyright (C) 2020-2026 Daniel Saukel
*
* All rights reserved.
*/
package de.erethon.dungeonsxxl.sign;
import de.erethon.dungeonsxl.api.DungeonsAPI;
import de.erethon.dungeonsxl.api.world.InstanceWorld;
import de.erethon.dungeonsxl.player.DPermission;
import de.erethon.dungeonsxl.sign.passive.InteractSign;
import de.erethon.dungeonsxl.trigger.InteractTrigger;
import de.erethon.dungeonsxl.api.trigger.LogicalExpression;
import de.erethon.dungeonsxl.util.BlockUtilCompat;
import org.bukkit.block.Sign;
/**
* This sign adds an interact trigger to an attached block, like a "suspicious wall".
*
* @author Daniel Saukel
*/
public class InteractWallSign extends InteractSign {
public InteractWallSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWorld instance) {
super(api, sign, lines, instance);
}
@Override
public String getName() {
return "InteractWall";
}
@Override
public String getBuildPermission() {
return DPermission.SIGN.getNode() + ".interactwall";
}
@Override
public boolean isOnDungeonInit() {
return false;
}
@Override
public boolean isProtected() {
return true;
}
@Override
public boolean isSetToAir() {
return true;
}
@Override
public void initialize() {
String id = getSign().getLine(1);
InteractTrigger trigger = (InteractTrigger) getGameWorld().createTrigger(this, LogicalExpression.parse("I" + id));
trigger.setInteractBlock(BlockUtilCompat.getAttachedBlock(getSign().getBlock()));
}
}
================================================
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/sign/ParticleSign.java
================================================
/*
* Copyright (C) 2020-2026 Daniel Saukel
*
* All rights reserved.
*/
package de.erethon.dungeonsxxl.sign;
import de.erethon.dungeonsxl.api.DungeonsAPI;
import de.erethon.dungeonsxl.api.sign.Button;
import de.erethon.dungeonsxl.api.world.InstanceWorld;
import de.erethon.dungeonsxl.player.DPermission;
import de.erethon.xlib.util.EnumUtil;
import de.erethon.xlib.util.NumberUtil;
import org.bukkit.Particle;
import org.bukkit.block.Sign;
/**
* Spawns particles.
*
* @author Daniel Saukel
*/
public class ParticleSign extends Button {
private Particle particle;
private int count;
private double offsetX, offsetY, offsetZ;
private double extra = 1;
public ParticleSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWorld instance) {
super(api, sign, lines, instance);
}
@Override
public String getName() {
return "Particle";
}
@Override
public String getBuildPermission() {
return DPermission.SIGN.getNode() + ".particle";
}
@Override
public boolean isOnDungeonInit() {
return false;
}
@Override
public boolean isProtected() {
return false;
}
@Override
public boolean isSetToAir() {
return true;
}
@Override
public boolean validate() {
particle = EnumUtil.getEnumIgnoreCase(Particle.class, getLine(1));
if (particle == null) {
markAsErroneous("Unknown particle type: " + getLine(1));
return false;
}
return true;
}
@Override
public void initialize() {
String[] args = getLine(2).split(",");
if (args.length == 1) {
extra = NumberUtil.parseDouble(args[0], 1);
} else if (args.length >= 3) {
offsetX = NumberUtil.parseDouble(args[0], 0);
offsetX = NumberUtil.parseDouble(args[1], 0);
offsetX = NumberUtil.parseDouble(args[2], 0);
if (args.length == 4) {
extra = NumberUtil.parseDouble(args[3], 1);
}
}
}
@Override
public void push() {
getSign().getWorld().spawnParticle(particle, getSign().getLocation(), count, offsetX, offsetY, offsetZ, extra);
}
}
================================================
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/util/FireworkUtil.java
================================================
/*
* Copyright (C) 2020-2026 Daniel Saukel
*
* All rights reserved.
*/
package de.erethon.dungeonsxxl.util;
import java.util.Random;
import org.bukkit.Color;
import static org.bukkit.Color.*;
import org.bukkit.FireworkEffect;
import org.bukkit.Location;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Firework;
import org.bukkit.inventory.meta.FireworkMeta;
/**
* Util class for randomized fireworks.
*
* @author Daniel Saukel
*/
public class FireworkUtil {
private static final Random RANDOM = new Random();
private static final Color[] COLORS = {YELLOW, AQUA, BLACK, BLUE, FUCHSIA, GRAY, GREEN, LIME, MAROON, NAVY, OLIVE, ORANGE, PURPLE, RED, SILVER, TEAL, WHITE};
/**
* Spawns a randomized firework.
*
* @param location the location where the firework is fired
* @return the Firework
*/
public static Firework spawnRandom(Location location) {
Firework firework = (Firework) location.getWorld().spawnEntity(location, EntityType.FIREWORK);
FireworkMeta meta = firework.getFireworkMeta();
Random r = new Random();
int rt = r.nextInt(4) + 1;
FireworkEffect.Type type = FireworkEffect.Type.BALL;
if (rt == 1) {
type = FireworkEffect.Type.BALL;
}
if (rt == 2) {
type = FireworkEffect.Type.BALL_LARGE;
}
if (rt == 3) {
type = FireworkEffect.Type.BURST;
}
if (rt == 4) {
type = FireworkEffect.Type.CREEPER;
}
if (rt == 5) {
type = FireworkEffect.Type.STAR;
}
FireworkEffect effect = FireworkEffect.builder().flicker(r.nextBoolean()).withColor(randomColor()).withFade(randomColor()).with(type).trail(r.nextBoolean()).build();
meta.addEffect(effect);
int rp = r.nextInt(2) + 1;
meta.setPower(rp);
firework.setFireworkMeta(meta);
return firework;
}
private static Color randomColor() {
return COLORS[RANDOM.nextInt(COLORS.length - 1)];
}
}
================================================
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/util/GlowUtil.java
================================================
/*
* Copyright (C) 2020-2026 Daniel Saukel
*
* All rights reserved.
*/
package de.erethon.dungeonsxxl.util;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import net.minecraft.server.v1_16_R3.EntityShulker;
import net.minecraft.server.v1_16_R3.EntityTypes;
import net.minecraft.server.v1_16_R3.Packet;
import net.minecraft.server.v1_16_R3.PacketPlayOutEntityDestroy;
import net.minecraft.server.v1_16_R3.PacketPlayOutSpawnEntityLiving;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.entity.Shulker;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scoreboard.Team;
/**
* @author Daniel Saukel
*/
public class GlowUtil implements Listener {
private static final Random RANDOM = new Random();
private Map<ChatColor, Team> teams = new HashMap<>();
private GlowData<org.bukkit.entity.Entity> glowingBlocks = new GlowData<>();
private Map<Player, GlowData<net.minecraft.server.v1_16_R3.Entity>> playerGlows = new HashMap<>();
private GlowRunnable runnable = new GlowRunnable();
public GlowUtil(Plugin plugin) {
runnable.runTaskTimer(plugin, 0L, 2L);
Bukkit.getPluginManager().registerEvents(this, plugin);
}
private Team getTeam(ChatColor color) {
if (!teams.containsKey(color)) {
Team team = Bukkit.getScoreboardManager().getMainScoreboard().getTeam("DXL_" + color.getChar());
if (team == null) {
team = Bukkit.getScoreboardManager().getMainScoreboard().registerNewTeam("DXL_" + color.getChar());
team.setColor(color);
}
teams.put(color, team);
}
return teams.get(color);
}
/**
* Adds a colored glow effect to the block that is visible to all players.
*
* @param block the block
* @param color the glow color
* @return the spawned entity that provides the glow effect
*/
public org.bukkit.entity.Entity addBlockGlow(Block block, ChatColor color) {
Shulker entity = block.getWorld().spawn(new Location(block.getWorld(), block.getX() + .5, block.getY(), block.getZ() + .5), Shulker.class);
entity.setAI(false);
entity.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 0));
entity.setInvulnerable(true);
addGlow(entity, color);
glowingBlocks.put(block, entity);
return entity;
}
/**
* Adds a packet-level colored glow effect to the block that is only visible to certain players.
*
* @param block the block
* @param color the glow color
* @param players the players who can see the effect
*/
public void addBlockGlow(Block block, ChatColor color, Player... players) {
EntityShulker entity = new EntityShulker(EntityTypes.SHULKER, ((CraftWorld) block.getWorld()).getHandle());
entity.setLocation(block.getX() + .5, block.getY(), block.getZ() + .5, 0, 0);
entity.setFlag(6, true);
entity.setInvisible(true);
for (Player player : players) {
sendPacket(player, new PacketPlayOutSpawnEntityLiving(entity));
if (playerGlows.get(player) == null) {
playerGlows.put(player, new GlowData<>());
}
playerGlows.get(player).put(block, entity);
}
}
/**
* Adds a rainbow colored glow effect to the block that is visible to all players.
*
* @param block the block
* @return the spawned entity that provides the glow effect
*/
public org.bukkit.entity.Entity addRainbowBlockGlow(Block block) {
return addRainbowBlockGlow(block, (Long) null);
}
/**
* Adds a rainbow colored glow effect to the block that is visible to all players.
* <p>
* The task is cancelled automatically when the entity dies.
*
* @param block the block
* @param cancelTime the time in milliseconds until the glow effect shall end; null = forever
* @return the spawned entity that provides the glow effect
*/
public org.bukkit.entity.Entity addRainbowBlockGlow(Block block, Long cancelTime) {
Shulker entity = block.getWorld().spawn(new Location(block.getWorld(), block.getX() + .5, block.getY(), block.getZ() + .5), Shulker.class);
entity.setAI(false);
entity.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 0));
entity.setInvulnerable(true);
glowingBlocks.put(block, entity);
addRainbowGlow(entity, cancelTime);
return entity;
}
/**
* Adds a packet-level rainbow colored glow effect to the block that is only visible to certain players.
* <p>
* Returns the repeating task that handles color changes.
*
* @param block the block
* @param players
*/
public void addRainbowBlockGlow(Block block, Player... players) {
addRainbowBlockGlow(block, null, players);
}
/**
* Adds a packet-level rainbow colored glow effect to the block that is only visible to certain players.
* <p>
* Returns the repeating task that handles color changes.
*
* @param block the block
* @param cancelTime the time in milliseconds until the glow effect shall end; null = forever
* @param players
*/
public void addRainbowBlockGlow(Block block, Long cancelTime, Player... players) {
EntityShulker entity = new EntityShulker(EntityTypes.SHULKER, ((CraftWorld) block.getWorld()).getHandle());
entity.setLocation(block.getX() + .5, block.getY(), block.getZ() + .5, 0, 0);
entity.setFlag(6, true);
entity.setInvisible(true);
for (Player player : players) {
sendPacket(player, new PacketPlayOutSpawnEntityLiving(entity));
if (playerGlows.get(player) == null) {
playerGlows.put(player, new GlowData<>());
}
playerGlows.get(player).put(block, entity);
}
addRainbowGlow(entity, cancelTime);
}
/**
* Removes the glow effect from a glowing block.
*
* @param block the block
*/
public void removeBlockGlow(Block block) {
org.bukkit.entity.Entity bukkitEntity = glowingBlocks.get(block);
if (bukkitEntity != null) {
bukkitEntity.remove();
glowingBlocks.remove(block);
runnable.removeEntity(bukkitEntity);
}
for (Entry<Player, GlowData<net.minecraft.server.v1_16_R3.Entity>> entry : playerGlows.entrySet()) {
net.minecraft.server.v1_16_R3.Entity nmsEntity = entry.getValue().get(block);
if (nmsEntity != null) {
sendPacket(entry.getKey(), new PacketPlayOutEntityDestroy(nmsEntity.getId()));
runnable.removeEntity(nmsEntity);
}
}
}
/**
* Adds a colored glow effect to an entity and handles its scoreboard team membership.
*
* @param entity a Bukkit Entity
* @param color the glow color
*/
public void addGlow(org.bukkit.entity.Entity entity, ChatColor color) {
getTeam(color).addEntry(asEntry(entity));
entity.setGlowing(true);
}
/**
* Adds a colored glow effect to an entity and handles its scoreboard team membership.
*
* @param entity an NMS Entity
* @param color the glow color
*/
public void addGlow(net.minecraft.server.v1_16_R3.Entity entity, ChatColor color) {
getTeam(color).addEntry(asEntry(entity));
entity.setFlag(6, true);
}
/**
* Adds a changing glow effect to an entity.
*
* @param entity an NMS Entity
*/
public void addRainbowGlow(org.bukkit.entity.Entity entity) {
addRainbowGlow(entity, null);
}
/**
* Adds a changing glow effect to an entity.
*
* @param entity an NMS Entity
* @param cancelTime the time in milliseconds until the glow effect shall end; null = forever
*/
public void addRainbowGlow(org.bukkit.entity.Entity entity, Long cancelTime) {
entity.setGlowing(true);
runnable.addEntity(entity, cancelTime != null ? System.currentTimeMillis() + cancelTime : null);
}
/**
* Adds a changing glow effect to an entity.
*
* @param entity an NMS Entity
*/
public void addRainbowGlow(net.minecraft.server.v1_16_R3.Entity entity) {
addRainbowGlow(entity, null);
}
/**
* Adds a changing glow effect to an entity.
*
* @param entity an NMS Entity
* @param cancelTime the time in milliseconds until the glow effect shall end; null = forever
*/
public void addRainbowGlow(net.minecraft.server.v1_16_R3.Entity entity, Long cancelTime) {
entity.setFlag(6, true);
runnable.addEntity(entity, cancelTime != null ? System.currentTimeMillis() + cancelTime : null);
}
/**
* Removes the glow effect from an entity and handles its scoreboard team membership.
*
* @param entity a Bukkit Entity
*/
public void removeGlow(org.bukkit.entity.Entity entity) {
entity.setGlowing(false);
teams.values().forEach(t -> t.removeEntry(asEntry(entity)));
runnable.removeEntity(entity);
}
/**
* Removes the glow effect from an entity and handles its scoreboard team membership.
*
* @param entity an NMS Entity
*/
public void removeGlow(net.minecraft.server.v1_16_R3.Entity entity) {
entity.setFlag(6, false);
teams.values().forEach(t -> t.removeEntry(asEntry(entity)));
runnable.removeEntity(entity);
}
private static String asEntry(org.bukkit.entity.Entity entity) {
return entity instanceof Player ? entity.getName() : entity.getUniqueId().toString();
}
private static String asEntry(net.minecraft.server.v1_16_R3.Entity entity) {
return entity instanceof Player ? entity.getName() : entity.getUniqueID().toString();
}
private static void sendPacket(Player player, Packet<?> packet) {
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
removeBlockGlow(event.getBlock());
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
playerGlows.remove(event.getPlayer());
}
private class GlowRunnable extends BukkitRunnable {
private Map<Object, Long> entities = new HashMap<>();
private ChatColor color;
private void addEntity(Object entity, Long cancelTime) {
entities.put(entity, cancelTime);
}
private void removeEntity(Object entity) {
entities.remove(entity);
}
@Override
public void run() {
color = ChatColor.values()[RANDOM.nextInt(ChatColor.values().length - 1)];
for (Entry<Object, Long> entry : entities.entrySet().toArray(new Entry[entities.size()])) {
if (entry.getKey() instanceof org.bukkit.entity.Entity) {
run((org.bukkit.entity.Entity) entry.getKey(), entry.getValue());
} else if (entry.getKey() instanceof net.minecraft.server.v1_16_R3.Entity) {
run((net.minecraft.server.v1_16_R3.Entity) entry.getKey(), entry.getValue());
}
}
}
private void run(org.bukkit.entity.Entity entity, Long cancelTime) {
getTeam(color).removeEntry(asEntry(entity));
if ((cancelTime != null && System.currentTimeMillis() >= cancelTime) || entity.isDead()) {
entities.remove(entity);
glowingBlocks.remove(entity);
if (!entity.isDead()) {
entity.setGlowing(false);
} else {
entity.remove();
}
return;
}
getTeam(color).addEntry(asEntry(entity));
}
private void run(net.minecraft.server.v1_16_R3.Entity entity, Long cancelTime) {
getTeam(color).removeEntry(asEntry(entity));
if (cancelTime != null && System.currentTimeMillis() >= cancelTime) {
entities.remove(entity);
for (Entry<Player, GlowData<net.minecraft.server.v1_16_R3.Entity>> entry : playerGlows.entrySet()) {
if (!entry.getValue().glowingBlocks.containsValue(entity)) {
continue;
}
Player player = entry.getKey();
sendPacket(player, new PacketPlayOutEntityDestroy(entity.getId()));
entry.getValue().remove(entity);
}
return;
}
getTeam(color).addEntry(asEntry(entity));
}
}
static class GlowData<T> {
Map<Block, T> glowingBlocks = new HashMap<>();
T get(Block block) {
return glowingBlocks.get(block);
}
void remove(Block block) {
glowingBlocks.remove(block);
}
void remove(T entity) {
for (Entry<Block, T> entry : glowingBlocks.entrySet().toArray(new Entry[glowingBlocks.size()])) {
if (entry.getValue().equals(entity)) {
glowingBlocks.remove(entry.getKey());
}
}
}
void put(Block block, T entity) {
glowingBlocks.put(block, entity);
}
}
}
================================================
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/world/block/GlowingBlock.java
================================================
/*
* Copyright (C) 2020-2026 Daniel Saukel
*
* All rights reserved.
*/
package de.erethon.dungeonsxxl.world.block;
import de.erethon.dungeonsxl.world.block.GameBlock;
import de.erethon.dungeonsxxl.DungeonsXXL;
import de.erethon.dungeonsxxl.util.GlowUtil;
import org.bukkit.ChatColor;
import org.bukkit.block.Block;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.scheduler.BukkitRunnable;
/**
* @author Daniel Saukel
*/
public class GlowingBlock extends GameBlock {
private GlowUtil glowUtil;
public GlowingBlock(DungeonsXXL plugin, Block block, ChatColor color, Double time) {
super(plugin.getDXL(), block);
glowUtil = plugin.getGlowUtil();
Long millis;
if (time != null) {
millis = (long) (time * 1000);
} else {
millis = null;
}
if (color != null) {
glowUtil.addBlockGlow(block, color);
if (millis != null) {
new BukkitRunnable() {
@Override
public void run() {
removeGlow();
}
}.runTaskLater(plugin, millis / 50);
}
} else {
glowUtil.addRainbowBlockGlow(block, millis);
}
}
public void removeGlow() {
glowUtil.removeBlockGlow(block);
}
@Override
public boolean onBreak(BlockBreakEvent event) {
return false;
}
}
================================================
FILE: addon/core/src/main/resources/plugin.yml
================================================
name: DungeonsXXL
main: de.erethon.dungeonsxxl.DungeonsXXL
version: ${project.version}${buildNo}
author: Daniel Saukel
description: ${project.description}
website: ${project.url}
depend: [DungeonsXL]
================================================
FILE: addon/dist/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-addon-dist</artifactId>
<version>${project.parent.version}</version>
<packaging>jar</packaging>
<parent>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-addon</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<build>
<finalName>${project.artifactId}-${project.version}${buildNo}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-addon-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
</dependencies>
</project>
================================================
FILE: addon/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-addon</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>DungeonsXXL</name>
<url>https://dre2n.github.io</url>
<description>Create BETTER custom dungeons and adventure maps with ease!</description>
<parent>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-parent</artifactId>
<version>0.19-SNAPSHOT</version>
</parent>
<modules>
<module>core</module>
<module>dist</module>
</modules>
<dependencies>
<dependency>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-dist</artifactId>
<version>0.19-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
================================================
FILE: api/LICENSE
================================================
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
================================================
FILE: api/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-api</artifactId>
<version>0.19-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>de.erethon.dungeonsxl</groupId>
<artifactId>dungeonsxl-parent</artifactId>
<version>0.19-SNAPSHOT</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.12.0</version>
<configuration>
<doclint>all,-missing</doclint>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>install</phase>
<goals>
<goal>javadoc</goal>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>${spigotVersion.latest}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/DungeonModule.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api;
import de.erethon.dungeonsxl.api.dungeon.GameRule;
import de.erethon.dungeonsxl.api.sign.DungeonSign;
import de.erethon.dungeonsxl.api.trigger.Trigger;
import de.erethon.xlib.util.Registry;
/**
* Class that manages initialization of several registries.
* <p>
* Addons should implement this interface and add their feature implementations to the registry in the respective method.
*
* @author Daniel Saukel
*/
public interface DungeonModule {
/**
* Initializes the {@link de.erethon.dungeonsxl.api.Requirement requirement} registry.
*
* @param requirementRegistry the registry
*/
void initRequirements(Registry<String, Class<? extends Requirement>> requirementRegistry);
/**
* Initializes the {@link de.erethon.dungeonsxl.api.Reward reward} registry.
*
* @param rewardRegistry the registry
*/
void initRewards(Registry<String, Class<? extends Reward>> rewardRegistry);
/**
* Initializes the {@link de.erethon.dungeonsxl.api.sign.DungeonSign dungeon sign} registry.
*
* @param signRegistry the registry
*/
void initSigns(Registry<String, Class<? extends DungeonSign>> signRegistry);
/**
* Initializes the {@link de.erethon.dungeonsxl.api.dungeon.GameRule game rule} registry.
*
* @param gameRuleRegistry the registry
*/
void initGameRules(Registry<String, GameRule> gameRuleRegistry);
/**
* Initializes the {@link de.erethon.dungeonsxl.api.trigger.Trigger trigger} registry.
*
* @param triggerRegistry the registry
*/
void initTriggers(Registry<Character, Class<? extends Trigger>> triggerRegistry);
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/DungeonsAPI.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api;
import de.erethon.dungeonsxl.api.dungeon.Dungeon;
import de.erethon.dungeonsxl.api.dungeon.Game;
import de.erethon.dungeonsxl.api.dungeon.GameRule;
import de.erethon.dungeonsxl.api.mob.DungeonMob;
import de.erethon.dungeonsxl.api.mob.ExternalMobProvider;
import de.erethon.dungeonsxl.api.player.GroupAdapter;
import de.erethon.dungeonsxl.api.player.PlayerCache;
import de.erethon.dungeonsxl.api.player.PlayerClass;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import de.erethon.dungeonsxl.api.sign.DungeonSign;
import de.erethon.dungeonsxl.api.trigger.Trigger;
import de.erethon.dungeonsxl.api.world.EditWorld;
import de.erethon.dungeonsxl.api.world.GameWorld;
import de.erethon.dungeonsxl.api.world.InstanceWorld;
import de.erethon.dungeonsxl.api.world.ResourceWorld;
import de.erethon.xlib.XLib;
import de.erethon.xlib.mob.ExMob;
import de.erethon.xlib.util.Registry;
import java.io.File;
import java.util.Collection;
import org.bukkit.World;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
/**
* The API main interface.
*
* @author Daniel Saukel
*/
public interface DungeonsAPI extends Plugin {
static final File PLUGIN_ROOT = new File("plugins/DungeonsXL");
static final File BACKUPS = new File(PLUGIN_ROOT, "backups");
static final File LANGUAGES = new File(PLUGIN_ROOT, "languages");
static final File MAPS = new File(PLUGIN_ROOT, "maps");
static final File PLAYERS = new File(PLUGIN_ROOT, "players");
static final File SCRIPTS = new File(PLUGIN_ROOT, "scripts");
static final File CLASSES = new File(SCRIPTS, "classes");
static final File DUNGEONS = new File(SCRIPTS, "dungeons");
/**
* Returns the loaded instance of XLib.
*
* @return the loaded instance of XLib
*/
XLib getXLib();
/**
* Returns a cache of player wrapper objects.
*
* @return a cache of player wrapper objects
*/
PlayerCache getPlayerCache();
/**
* Returns a cache of Game objects.
*
* @return a cache of Game objects
*/
Collection<Game> getGameCache();
/**
* Returns a registry of the loaded classes.
*
* @return a registry of the loaded classes
*/
Registry<String, PlayerClass> getClassRegistry();
/**
* Returns a registry of the sign types.
*
* @return a registry of the sign types
*/
Registry<String, Class<? extends DungeonSign>> getSignRegistry();
/**
* Returns a registry of the requirement types.
*
* @return a registry of the requirement types
*/
Registry<String, Class<? extends Requirement>> getRequirementRegistry();
/**
* Returns a registry of the reward types.
*
* @return a registry of the reward types
*/
Registry<String, Class<? extends Reward>> getRewardRegistry();
/**
* Returns a registry of the dungeons.
*
* @return a registry of the dungeons
*/
Registry<String, Dungeon> getDungeonRegistry();
/**
* Returns a registry of the resources worlds.
*
* @return a registry of the resources worlds
*/
Registry<String, ResourceWorld> getMapRegistry();
/**
* Returns a cache of the instance worlds.
*
* @return a cache of the instance worlds
*/
Registry<Integer, InstanceWorld> getInstanceCache();
/**
* Returns a registry of the game rules.
*
* @return a registry of the game rules
*/
Registry<String, GameRule> getGameRuleRegistry();
/**
* Returns a registry of the triggers.
*
* @return a registry of the triggers
*/
Registry<Character, Class<? extends Trigger>> getTriggerRegistry();
/**
* Returns a registry of the external mob providers.
*
* @return a registry of the external mob providers
*/
Registry<String, ExternalMobProvider> getExternalMobProviderRegistry();
/**
* Returns a cache of the player groups.
*
* @return a cache of the player groups
*/
Registry<String, PlayerGroup> getGroupCache();
/**
* Registers a DungeonModule.
*
* @param module the module to register
*/
void registerModule(DungeonModule module);
/**
* Makes DungeonsXL track external group and synchronize them with its own groups.
*
* @param groupAdapter the group adapter to register
*/
void registerGroupAdapter(GroupAdapter groupAdapter);
/* Object initialization */
/**
* Creates a new group.
*
* @param leader the leader
* @return a new group
*/
PlayerGroup createGroup(Player leader);
/**
* Creates a new group.
*
* @param leader the leader
* @param color the color that represents the group and sets the name
* @return a new group or null if values are invalid
*/
PlayerGroup createGroup(Player leader, PlayerGroup.Color color);
/**
* Creates a new group.
*
* @param leader the leader
* @param name the group's name - must be unique
* @return a new group or null if values are invalid
*/
PlayerGroup createGroup(Player leader, String name);
/**
* Creates a new group.
*
* @param leader the leader
* @param dungeon the dungeon to play
* @return a new group or null if values are invalid
*/
PlayerGroup createGroup(Player leader, Dungeon dungeon);
/**
* Creates a new group.
*
* @param leader the leader
* @param members the group members with or without the leader
* @param name the name of the group
* @param dungeon the dungeon to play
* @return a new group or null if values are invalid
*/
PlayerGroup createGroup(Player leader, Collection<Player> members, String name, Dungeon dungeon);
/**
* Wraps the given {@link LivingEntity} object in a {@link DungeonMob} object.
*
* @param entity the entity
* @param gameWorld the game world where the entity is
* @param triggerId the identifier used in mob triggers
* @return the wrapped DungeonMob
*/
DungeonMob wrapEntity(LivingEntity entity, GameWorld gameWorld, String triggerId);
/**
* Wraps the given {@link LivingEntity} object in a {@link DungeonMob} object.
*
* @param entity the entity
* @param gameWorld the game world where the entity is
* @param type the ExMob type of the entity
* @return the wrapped DungeonMob
*/
DungeonMob wrapEntity(LivingEntity entity, GameWorld gameWorld, ExMob type);
/**
* Wraps the given {@link LivingEntity} object in a {@link DungeonMob} object.
*
* @param entity the entity
* @param gameWorld the game world where the entity is
* @param type the ExMob type of the entity
* @param triggerId the identifier used in mob triggers
* @return the wrapped DungeonMob
*/
DungeonMob wrapEntity(LivingEntity entity, GameWorld gameWorld, ExMob type, String triggerId);
/* Getters */
/**
* Returns an existing {@link DungeonMob} object that wraps the given {@link LivingEntity} object or null if none exists.
*
* @param entity the entity
* @return an existing {@link DungeonMob} object that wraps the given {@link LivingEntity} object or null if none exists
*/
DungeonMob getDungeonMob(LivingEntity entity);
/**
* Returns the group the player is a member of or null if he is in none.
*
* @param member the player
* @return the group the player is a member of or null if he is in none
*/
PlayerGroup getPlayerGroup(Player member);
/**
* Returns the game the given player plays.
*
* @param player the player
* @return the game the given player plays
*/
Game getGame(Player player);
/**
* Returns the game played in the given instance world.
*
* @param world the instance world
* @return the game played in the given instance world
*/
Game getGame(World world);
/**
* Returns the GameWorld that wraps the given instance world.
*
* @param world the instance world
* @return the GameWorld that wraps the given instance world
*/
GameWorld getGameWorld(World world);
/**
* Returns the EditWorld that wraps the given instance world.
*
* @param world the instance world
* @return the EditWorld that wraps the given instance worl
*/
EditWorld getEditWorld(World world);
/**
* Returns if the given world is an instance.
*
* @param world the world
* @return if the given world is an instance
*/
boolean isInstance(World world);
/**
* Returns if the given item stack is a dungeon item.
* <p>
* Dungeon items are items that are removed from the inventory when the dungeon is finished.
*
* @param itemStack the item stack
* @return if the given item stack is a dungeon item
*/
boolean isDungeonItem(ItemStack itemStack);
/**
* Sets the given item stack to be a dungeon item and returns a copy with the updated state.
* <p>
* Dungeon items are items that are removed from the inventory when the dungeon is finished.
*
* @param itemStack the item stack
* @param dungeonItem if the item stack
* @return a copy of the item stack that is a dungeon item
*/
ItemStack setDungeonItem(ItemStack itemStack, boolean dungeonItem);
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/Requirement.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
/**
* Something a player needs to fulfill in order to be allowed to start the game (= trigger a ready sign).
*
* @author Daniel Saukel
*/
public interface Requirement {
/**
* Sets up the requirement from the given requirements {@link de.erethon.dungeonsxl.api.dungeon.GameRule} section.
*
* @param config the requirements config section
*/
void setup(ConfigurationSection config);
/**
* Returns if the given player fulfills the requirements. If true, this lets him start the game (= trigger a ready sign).
*
* @param player the player
* @return if the given player fulfills the requirements
*/
boolean check(Player player);
/**
* Returns the message that informs the player if they fulfill the requirement.
*
* @param player the player who will receive the message
* @return the error message that is sent to the player when they do not fulfill the requirement
*/
BaseComponent[] getCheckMessage(Player player);
/**
* This is fired after the {@link #check(Player)} has been accepted. It demands the requirement from the given player. This may be empty for a "key" or may
* take something away for a "fee" requirement.
*
* @param player the player
*/
void demand(Player player);
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/Reward.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api;
import org.bukkit.entity.Player;
/**
* Something players are given when they successfully finish a {@link de.erethon.dungeonsxl.api.dungeon.Dungeon}.
*
* @see de.erethon.dungeonsxl.api.player.PlayerGroup#getRewards()
* @author Daniel Saukel
*/
public interface Reward {
/**
* Gives the reward to the given player.
*
* @param player the player
*/
void giveTo(Player player);
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/BuildMode.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.dungeon;
import de.erethon.dungeonsxl.api.world.GameWorld;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
/**
* Checks for whether a block may be broken.
*
* @author Daniel Saukel
*/
public interface BuildMode {
/**
* Stores the pre-set breaking rules.
*/
static class Registry {
/**
* Entry keys must be lowercase.
*/
public static final Map<String, BuildMode> ENTRIES = new HashMap<>();
static {
ENTRIES.put("true", TRUE);
ENTRIES.put("false", FALSE);
ENTRIES.put("placed", PLACED);
}
}
/**
* All blocks except for protected ones may be broken.
*/
static final BuildMode TRUE = (Player player, GameWorld gameWorld, Block block) -> true;
/**
* Blocks may not be broken.
*/
static final BuildMode FALSE = (Player player, GameWorld gameWorld, Block block) -> false;
/**
* Blocks placed by players may be broken.
*/
static final BuildMode PLACED = (Player player, GameWorld gameWorld, Block block) -> gameWorld.getPlacedBlocks().contains(block);
/**
* Returns if the block can be broken or placed by the player.
* <p>
* The plugin protects dungeon signs before checking this.
*
* @param player the player who breaks or places the block
* @param gameWorld the world the block is in
* @param block the block
* @return if the block can be broken or placed by the player
*/
boolean check(Player player, GameWorld gameWorld, Block block);
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/CollectionGameRule.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.dungeon;
import com.google.common.base.Verify;
import de.erethon.dungeonsxl.api.DungeonsAPI;
import java.util.Collection;
import org.bukkit.configuration.ConfigurationSection;
/**
* A {@link GameRule} where the value is a {@link java.util.Collection}.
*
* @param <T> the type of the collection
* @param <V> the type of the game rule value
* @author Daniel Saukel
*/
public class CollectionGameRule<T, V extends Collection<T>> extends GameRule<V> {
protected Copier<V> copier;
/**
* @param key the configuration key of the game rule
* @param defaultValue the default value that is used when nothing is set; not null
* @param copier a method to copy the collection
*/
public CollectionGameRule(String key, V defaultValue, Copier<V> copier) {
super(null, key, defaultValue);
Verify.verifyNotNull(defaultValue, "defaultValue must not be null");
this.copier = copier;
}
/**
* @param key the configuration key of the game rule
* @param defaultValue the default value that is used when nothing is set
* @param reader a functional interface that loads the value from config
* @param copier a method to copy the collection
*/
public CollectionGameRule(String key, V defaultValue, ConfigReader<V> reader, Copier<V> copier) {
super(null, key, defaultValue, reader);
this.copier = copier;
}
/**
* This implementation uses more expensive casting + catching the ClassCastException.
* Developers should consider doing that themselves instead of wasting this cast.
*
* @param value the value
* @return if the given value is an instance of {@link V}
*/
@Override
public boolean isValidValue(Object value) {
try {
V v = (V) value;
return true;
} catch (ClassCastException exception) {
return false;
}
}
@Override
public V fromConfig(DungeonsAPI api, GameRuleContainer container, ConfigurationSection config) {
Object value = config.get(getKey());
if (reader != null) {
V v = reader.read(api, value);
setStateWithoutNull(container, v);
return v;
}
V v;
try {
v = (V) value;
} catch (ClassCastException exception) {
return null;
}
setStateWithoutNull(container, v);
return v;
}
private void setStateWithoutNull(GameRuleContainer container, V v) {
while (v != null && v.contains(null)) {
v.remove(null);
}
container.setState(this, v);
}
@Override
public void merge(GameRuleContainer overriding, GameRuleContainer subsidiary, GameRuleContainer writeTo) {
V writeToState = writeTo.getState(this);
V write = writeToState != null ? copier.copy(writeTo.getState(this)) : null;
if (subsidiary != writeTo) {
V subsidiaryState = subsidiary.getState(this);
if (subsidiaryState != null) {
if (write == null) {
write = copier.copy(subsidiaryState);
} else {
write.addAll(subsidiaryState);
}
}
}
if (overriding != writeTo) {
V overridingState = overriding.getState(this);
if (overridingState != null) {
if (write == null) {
write = copier.copy(overridingState);
} else {
write.addAll(overridingState);
}
}
}
writeTo.setState(this, write);
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/ConfigReader.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.dungeon;
import de.erethon.dungeonsxl.api.DungeonsAPI;
import de.erethon.dungeonsxl.api.world.GameWorld;
import de.erethon.xlib.item.ExItem;
import de.erethon.xlib.item.VanillaItem;
import de.erethon.xlib.mob.ExMob;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.bukkit.block.Block;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
/**
* A functional interface to deserialize a raw value read from a configuration.
*
* @param <V> the type of the object to read
* @author Daniel Saukel
*/
@FunctionalInterface
public interface ConfigReader<V> {
/**
* Reads a set of XLib items.
*/
static final ConfigReader<Set<ExItem>> EX_ITEM_SET_READER = (api, value) -> {
if (!(value instanceof Collection)) {
return null;
}
Set<ExItem> set = new HashSet<>();
for (Object entry : (Collection) value) {
set.add(api.getXLib().getExItem(entry));
}
return set;
};
/**
* Reads a set of XLib mobs.
*/
static final ConfigReader<Set<ExMob>> EX_MOB_SET_READER = (api, value) -> {
if (!(value instanceof Collection)) {
return null;
}
Set<ExMob> set = new HashSet<>();
for (Object entry : (Collection) value) {
set.add(api.getXLib().getExMob(entry));
}
return set;
};
/**
* Reads a map of XLib items as tool keys and a set of XLib items as block values.
*/
static final ConfigReader<Map<ExItem, HashSet<ExItem>>> TOOL_BLOCK_MAP_READER = (api, value) -> {
if (!(value instanceof ConfigurationSection)) {
return null;
}
ConfigurationSection section = (ConfigurationSection) value;
Map<ExItem, HashSet<ExItem>> map = new HashMap<>();
for (Map.Entry<String, Object> entry : section.getValues(false).entrySet()) {
ExItem tool = api.getXLib().getExItem(entry.getKey());
if (tool == null) {
continue;
}
HashSet<ExItem> blocks = new HashSet<>();
blocks.addAll(api.getXLib().deserializeExItemList(section, entry.getKey()));
map.put(tool, blocks);
}
return map;
};
static final ConfigReader<BuildMode> BUILD_MODE_READER = (api, value) -> {
if (value instanceof Boolean) {
return (Boolean) value ? BuildMode.TRUE : BuildMode.FALSE;
} else if (value instanceof String) {
return BuildMode.Registry.ENTRIES.get(((String) value).toLowerCase());
} else if (value instanceof List) {
return (Player p, GameWorld w, Block b) -> ((List) value).contains(VanillaItem.get(b.getType()).getId());
} else {
Map<ExItem, HashSet<ExItem>> whitelist = TOOL_BLOCK_MAP_READER.read(api, value);
if (whitelist == null) {
return null;
}
return (Player p, GameWorld w, Block b) -> {
ExItem type = VanillaItem.get(b.getType());
ExItem breakTool = api.getXLib().getExItem(p.getItemInHand());
return whitelist.containsKey(type)
&& (whitelist.get(type) == null
|| whitelist.get(type).isEmpty()
|| whitelist.get(type).contains(breakTool));
};
}
};
/**
* Reads a game rule state from the configuration.
*
* @param api the DungeonsAPI instance
* @param value the configuration object. This is the object received from using {@link org.bukkit.configuration.ConfigurationSection#get(String)}
* with the String being {@link GameRule#getKey()}.
* @return the game rule state read from configuration
*/
V read(DungeonsAPI api, Object value);
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/Copier.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.dungeon;
/**
* Copies an object.
*
* @param <T> the type of the object to copy
* @author Daniel Saukel
*/
@FunctionalInterface
public interface Copier<T> {
/**
* Returns a copy of the original.
*
* @param original the original
* @return a copy of the original
*/
T copy(T original);
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/Dungeon.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.dungeon;
import de.erethon.dungeonsxl.api.world.ResourceWorld;
import java.util.List;
/**
* A dungeon consists of floors and settings including its game rules.
* <p>
* MFD = multiple floor dungeon; SFD = single floor dungeon.
*
* @author Daniel Saukel
*/
public interface Dungeon {
/**
* Returns the name.
*
* @return the name
*/
String getName();
/**
* Sets the name to the given value.
*
* @param name the name
*/
void setName(String name);
/**
* Returns if this dungeon has multiple floors.
*
* @return if this dungeon has multiple floors
*/
boolean isMultiFloor();
/**
* Returns the map to instantiate.
* <p>
* This method is the same as {@link #getStartFloor()} but a bit more intuitive for SFDs.
*
* @return the map to instantiate
*/
default ResourceWorld getMap() {
return getStartFloor();
}
/**
* Returns the first floor of this dungeon.
*
* @return the first floor of this dungeon
*/
ResourceWorld getStartFloor();
/**
* Sets the first floor of this dungeon.
*
* @param startFloor the startFloor to set
*/
void setStartFloor(ResourceWorld startFloor);
/**
* Returns the last floor of this dungeon or null if this is an SFD.
*
* @return the last floor of this dungeon or null if this is an SFD
*/
ResourceWorld getEndFloor();
/**
* Sets the last floor of this MFD.
*
* @param endFloor the last floor
*/
void setEndFloor(ResourceWorld endFloor);
/**
* Returns a list of the floors without start and end floor.
*
* @return a list of the floors without start and end floor
*/
List<ResourceWorld> getFloors();
/**
* Adds the given floor.
*
* @param resource the resource to add
*/
void addFloor(ResourceWorld resource);
/**
* Removes the given floor.
*
* @param resource the resource to remove
*/
void removeFloor(ResourceWorld resource);
/**
* Returns the amount of floors in this dungeon including start and end floor.
* <p>
* This may be less than the size of {@link #getFloors()} + 2 if not all floors from the list are used.
*
* @return the amount of floors in this dungeon including start and end floor
*/
int getFloorCount();
/**
* Sets the amount of floors that shall be played.
*
* @param floorCount the amount of floors to set
*/
void setFloorCount(int floorCount);
/**
* Returns if floors cannot be played once if floors are selected randomly from the list.
*
* @return the removeWhenPlayed if floors cannot be played once if floors are selected randomly from the list
*/
boolean getRemoveWhenPlayed();
/**
* Sets if floors cannot be played once if floors are selected randomly from the list.
*
* @param removeWhenPlayed if floors cannot be played once if floors are selected randomly from the list
*/
void setRemoveWhenPlayed(boolean removeWhenPlayed);
/**
* The values from this game rule container will override all values of the game rule containers of the dungeon's maps.
*
* @return the override values
*/
GameRuleContainer getOverrideValues();
/**
* The values from this game rule container will be overriden by values of the game rule containers of the dungeon's maps. They will however still override
* the values from the main config.
*
* @return the default values
*/
GameRuleContainer getDefaultValues();
/**
* Returns true if the floor is either in the floors list or the start / end floor.
*
* @param resource the ResourceWorld to check
* @return true if the floor is either in the floors list or the start / end floor.
*/
default boolean containsFloor(ResourceWorld resource) {
if (isMultiFloor()) {
return getFloors().contains(resource) || getStartFloor().equals(resource) || getEndFloor().equals(resource);
} else {
return getMap().equals(resource);
}
}
/**
* Returns true if the floor is either in the floors list or the start / end floor.
*
* @param mapName the name of the map to check
* @return true if the floor is either in the floors list or the start / end floor.
*/
default boolean containsFloor(String mapName) {
for (ResourceWorld world : getFloors()) {
if (world.getName().equals(mapName)) {
return true;
}
}
return getStartFloor().getName().equals(mapName) || getEndFloor().getName().equals(mapName);
}
/**
* Returns the rules of this game.
* <p>
* This is not necessarily represented 1:1 by a config file because it is usually merged together through {@link #setupRules()}.
*
* @return the rules of this game
*/
GameRuleContainer getRules();
/**
* Sets the rules of the game.
*
* @param rules the rules
*/
void setRules(GameRuleContainer rules);
/**
* Sets up the rules with the following priority: 1. Game type 2. Dungeon config: Override values 3. Floor config 4. Dungeon config: Default values 5. Main
* config: Default values 6. The default values
*/
void setupRules();
/**
* Returns false if there are errors in the setup; true if not.
*
* @return false if there are errors in the setup; true if not
*/
boolean isSetupCorrect();
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/Game.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.dungeon;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import de.erethon.dungeonsxl.api.world.GameWorld;
import de.erethon.dungeonsxl.api.world.ResourceWorld;
import java.util.Collection;
import java.util.List;
import org.bukkit.entity.Player;
/**
* Handles the rules of playing in a dungeon.
* <p>
* Tracks the progress of groups in a dungeon and handles their interaction with each other.
*
* @author Daniel Saukel
*/
// Implementation-specific methods: wave and kill counter methods
public interface Game {
/**
* Returns if this is a tutorial game.
*
* @return if this is a tutorial game
*/
boolean isTutorial();
/**
* Sets if this is a tutorial game
*
* @param tutorial if this is a tutorial game
*/
void setTutorial(boolean tutorial);
/**
* Returns a read-only List of the groups that are playing this game.
*
* @return a read-only List of the groups that are playing this game
*/
List<PlayerGroup> getGroups();
/**
* Adds the given group to this game.
*
* @param group the group
*/
void addGroup(PlayerGroup group);
/**
* Removes the given group from this game.
*
* @param group the group
*/
void removeGroup(PlayerGroup group);
/**
* Returns if the group has started (=if the ready sign has been triggered).
*
* @return if the group has started
*/
boolean hasStarted();
/**
* Sets the status of the game to have started / not yet started.
*
* @param started if the game has started
*/
void setStarted(boolean started);
/**
* Returns the game instance in which this game takes place.
*
* @return the game instance in which this game takes place
*/
GameWorld getWorld();
/**
* Sets the game instance in which this game takes place.
*
* @param gameWorld the game instance in which this game takes place
*/
void setWorld(GameWorld gameWorld);
/**
* Returns if the game has rewards.
*
* @return if the game has rewards
*/
boolean hasRewards();
/**
* Sets if the game has rewards.
*
* @param enabled if the game has rewards
*/
void setRewards(boolean enabled);
/**
* Returns the rules of the dungeon of this game.
* <p>
* This is not necessarily represented 1:1 by a config file because it is usually merged together through {@link Dungeon#setupRules()}.
*
* @return the rules of the dungeon of this game
*/
default GameRuleContainer getRules() {
return getDungeon().getRules();
}
/**
* Returns a read-only List of the remaining floors to play.
*
* @return a read-only List of the remaining floors to play
*/
List<ResourceWorld> getUnplayedFloors();
/**
* Adds a floor to the list of floors to play.
*
* @param unplayedFloor the resource world of the floor
* @return if the addition was successful
*/
boolean addUnplayedFloor(ResourceWorld unplayedFloor);
/**
* Removes a floor from the list of floors to play.
*
* @param unplayedFloor the resource world of the floor
* @param force if the floor shall be removed even if the {@link #getDungeon() dungeon}'s floors are not to be
* {@link Dungeon#getRemoveWhenPlayed() removed when played.}
* @return if the removal was successful
*/
boolean removeUnplayedFloor(ResourceWorld unplayedFloor, boolean force);
/**
* Returns the resource of the next floor to play.
*
* @return the resource of the next floor to play
*/
ResourceWorld getNextFloor();
/**
* Sets the next floor to play.
*
* @param floor the resource world of the floor
*/
void setNextFloor(ResourceWorld floor);
/**
* Returns the amount of played floors in this game.
*
* @return the amount of played floors in this game
*/
int getFloorCount();
/**
* Returns the dungeon that "hosts" this game.
*
* @return the dungeon that "hosts" this game
*/
Dungeon getDungeon();
/**
* Returns the players playing the game.
*
* @return the players playing the game
*/
Collection<Player> getPlayers();
/**
* Returns true if there are no groups in this game; false if not.
*
* @return true if there are no groups in this game; false if not
*/
boolean isEmpty();
/**
* Returns and, if necessary, instantiates the game world.
*
* @param ignoreLimit if the instance limit set in the main config shall be ignored
* @return the game world
*/
GameWorld ensureWorldIsLoaded(boolean ignoreLimit);
/**
* Starts the game. This is what happens when the ready sign is triggered by everyone.
*
* @return if the game has started correctly
*/
boolean start();
/**
* Deletes this game.
*/
void delete();
/**
* Returns true if all groups of the game have finished it; false if not.
*
* @return true if all groups of the game have finished it; false if not
*/
default boolean isFinished() {
return getGroups().stream().allMatch(PlayerGroup::isFinished);
}
/**
* Sends a message to each player in each group.
*
* @param message the message. Supports color codes
*/
default void sendMessage(String message) {
getGroups().forEach(g -> g.sendMessage(message));
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/GameGoal.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.dungeon;
import de.erethon.xlib.util.EnumUtil;
import org.bukkit.configuration.ConfigurationSection;
/**
* A game goal defines what the players have to do in order to finish the game.
*
* @author Daniel Saukel
*/
public class GameGoal extends GameRuleContainer {
/**
* Score used for capture the flag and similar game types.
*/
public static final GameRule<Integer> INITIAL_SCORE = new GameRule<>(Integer.class, "initialScore", 3);
/**
* The amount of goals to score before the game ends. -1 = not used.
*/
public static final GameRule<Integer> SCORE_GOAL = new GameRule<>(Integer.class, "scoreGoal", -1);
/**
* The time left to finish the game; -1 if no timer is used.
*/
public static final GameRule<Integer> TIME_TO_FINISH = new GameRule<>(Integer.class, "timeToFinish", -1);
/**
* The default game goal: {@link Type#END} without TIME_TO_FINISH
*/
public static final GameGoal DEFAULT = new GameGoal(Type.END);
static {
DEFAULT.setState(TIME_TO_FINISH, TIME_TO_FINISH.getDefaultValue());
}
/**
* The reader to deserialize a game goal from a configuration.
*/
public static final ConfigReader<GameGoal> READER = (api, value) -> {
if (!(value instanceof ConfigurationSection)) {
return DEFAULT;
}
ConfigurationSection config = (ConfigurationSection) value;
Type type = EnumUtil.getEnumIgnoreCase(Type.class, config.getString("type", "END"));
GameGoal goal = new GameGoal(type);
for (GameRule rule : type.getComponents()) {
rule.fromConfig(api, goal, config);
if (!goal.rules.containsKey(rule)) {
goal.setState(rule, rule.getDefaultValue());
}
}
return goal;
};
private Type type;
public GameGoal(Type type) {
this.type = type;
}
/**
* Returns the type of the game goal.
*
* @return the type
*/
public Type getType() {
return type;
}
/**
* Determines the behavior of the game goal and which settings apply to it.
*/
public enum Type {
/**
* The default goal. The game ends when the end is reached.
*/
END(TIME_TO_FINISH),
/**
* The game ends when a player dies and only one group is left.
*/
LAST_MAN_STANDING,
/**
* SCORE_GOAL = -1: The game does not end. Instead, the goal is to survive as long as possible to beat a highscore.
* <p>
* SCORE_GOAL > 0: The game ends when a group reachs a specific score.
* <p>
* TIME_TO_FINISH != -1: The game ends after a specific time. The goal is to get the highest score until then.
*/
SCORE(INITIAL_SCORE, SCORE_GOAL, TIME_TO_FINISH),
/**
* The game ends after a specific time. The goal is to survive until then.
*/
TIME_SURVIVAL(TIME_TO_FINISH);
private GameRule[] components;
Type(GameRule... components) {
this.components = components;
}
/**
* Returns an array of the game rules that apply to game goals of this type.
*
* @return an array of the game rules that apply to game goals of this type
*/
public GameRule[] getComponents() {
return components;
}
/**
* Returns whether the given game rule applies to game goals of this type.
*
* @param component the game rule
* @return whether the given game rule applies to game goals of this type
*/
public boolean hasComponent(GameRule component) {
for (GameRule c : components) {
if (c == component) {
return true;
}
}
return false;
}
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/GameRule.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.dungeon;
import de.erethon.dungeonsxl.api.DungeonsAPI;
import de.erethon.dungeonsxl.api.Requirement;
import de.erethon.dungeonsxl.api.Reward;
import de.erethon.xlib.chat.MessageUtil;
import de.erethon.xlib.item.ExItem;
import de.erethon.xlib.mob.ExMob;
import de.erethon.xlib.util.EnumUtil;
import de.erethon.xlib.util.NumberUtil;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.bukkit.Difficulty;
import org.bukkit.GameMode;
import org.bukkit.configuration.ConfigurationSection;
/**
* Represents a game rule for a {@link Game}.
*
* @param <V> the type of the game rule value
* @author Daniel Saukel
*/
public class GameRule<V> {
/**
* Shall players play the dungeon with their own items or do you want to use classes?
*/
public static final GameRule<Boolean> KEEP_INVENTORY_ON_ENTER = new GameRule<>(Boolean.class, "keepInventoryOnEnter", false);
/**
* Shall players keep their inventory when they leave the dungeon without succeeding?
*/
public static final GameRule<Boolean> KEEP_INVENTORY_ON_ESCAPE = new GameRule<>(Boolean.class, "keepInventoryOnEscape", false);
/**
* Shall players keep their inventory when they finish the dungeon?
*/
public static final GameRule<Boolean> KEEP_INVENTORY_ON_FINISH = new GameRule<>(Boolean.class, "keepInventoryOnFinish", false);
/**
* Shall players lose their items when they die (do not mix up this with "onEscape"!)?
*/
public static final GameRule<Boolean> KEEP_INVENTORY_ON_DEATH = new GameRule<>(Boolean.class, "keepInventoryOnDeath", true);
/**
* Shall players reset their inventory to their chosen class when respawning?
*/
public static final GameRule<Boolean> RESET_CLASS_INVENTORY_ON_RESPAWN = new GameRule<>(Boolean.class, "resetClassInventoryOnRespawn", false);
/**
* The location where the players spawn when they leave the dungeon without succeeding.
*/
public static final GameRule<String> ESCAPE_LOCATION = new GameRule<>(String.class, "escapeLocation", null);
/**
* The location where the players spawn when they finish the dungeon.
*/
public static final GameRule<String> FINISH_LOCATION = new GameRule<>(String.class, "finishLocation", null);
/**
* The goal of the game that defines what makes it end.
*/
public static final GameRule<GameGoal> GAME_GOAL = new GameRule<>(GameGoal.class, "gameGoal", GameGoal.DEFAULT, GameGoal.READER);
/**
* The Vanilla game mode.
*/
public static final GameRule<GameMode> GAME_MODE = new GameRule<>(GameMode.class, "gameMode", GameMode.SURVIVAL);
/**
* The Vanilla difficulty.
*/
public static final GameRule<Difficulty> DIFFICULTY = new GameRule<>(Difficulty.class, "difficulty", Difficulty.NORMAL);
/**
* If the food levels of the players change.
*/
public static final GameRule<Boolean> FOOD_LEVEL = new GameRule<>(Boolean.class, "foodLevel", true);
/**
* Sets if death screens are enabled. If false, players that would have died are healed and teleported to the respawn location;
* their inventory and experience are dropped if {@link #KEEP_INVENTORY_ON_DEATH} is set to false.
*/
public static final GameRule<Boolean> DEATH_SCREEN = new GameRule<>(Boolean.class, "deathScreen", false);
/**
* If players may fly.
*/
public static final GameRule<Boolean> FLY = new GameRule<>(Boolean.class, "fly", false);
/**
* If players can build and destroy blocks in this world.
*/
public static final GameRule<BuildMode> BREAK_BLOCKS = new GameRule<>(BuildMode.class, "breakBlocks", BuildMode.FALSE, ConfigReader.BUILD_MODE_READER);
/**
* A blacklist of block types players cannot interact with.
*/
public static final GameRule<Map<ExItem, HashSet<ExItem>>> INTERACTION_BLACKLIST
= new MapGameRule<>("interactionBlacklist", new HashMap<>(), ConfigReader.TOOL_BLOCK_MAP_READER, HashMap::new);
/**
* A list of all entity types that shall be protected from damage.
*/
public static final GameRule<Set<ExMob>> DAMAGE_PROTECTED_ENTITIES = new CollectionGameRule<>("damageProtectedEntities", new HashSet<>(), ConfigReader.EX_MOB_SET_READER, HashSet::new);
/**
* A list of all entity types that shall be protected from interaction.
*/
public static final GameRule<Set<ExMob>> INTERACTION_PROTECTED_ENTITIES = new CollectionGameRule<>("interactionProtectedEntities", new HashSet<>(), ConfigReader.EX_MOB_SET_READER, HashSet::new);
/**
* If blocks may be placed.
*/
public static final GameRule<BuildMode> PLACE_BLOCKS = new GameRule<>(BuildMode.class, "placeBlocks", BuildMode.FALSE, ConfigReader.BUILD_MODE_READER);
/**
* A set of blocks that do not fade.
*
* @see <a href="https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/block/BlockFadeEvent.html">org.bukkit.event.block.BlockFadeEvent</a>
*/
public static final GameRule<Set<ExItem>> BLOCK_FADE_DISABLED = new CollectionGameRule<>("blockFadeDisabled", new HashSet<>(), ConfigReader.EX_ITEM_SET_READER, HashSet::new);
/**
* This does what the doFireTick Vanilla game rule does.
*/
public static final GameRule<Boolean> FIRE_TICK = new GameRule<>(Boolean.class, "fireTick", false);
/**
* If it should rain permanently in the dungeon.
* <p>
* true = permanent rain; false = permanent sun; leaving this out = random weather like in vanilla Minecraft
*/
public static final GameRule<Boolean> RAIN = new GameRule<>(Boolean.class, "rain", null);
/**
* Thunderstorms.
*
* @see #RAIN
*/
public static final GameRule<Boolean> THUNDER = new GameRule<>(Boolean.class, "thunder", null);
/**
* The time ticks (to be used like in the vanilla /time command).
*/
public static final GameRule<Long> TIME = new GameRule<>(Long.class, "time", null);
/**
* PvP
*/
public static final GameRule<Boolean> PLAYER_VERSUS_PLAYER = new GameRule<>(Boolean.class, "playerVersusPlayer", false);
/**
* Friendly fire refers just to members of the same group.
*/
public static final GameRule<Boolean> FRIENDLY_FIRE = new GameRule<>(Boolean.class, "friendlyFire", false);
/**
* Amount of lives a player initially has when he enters a dungeon.
*/
public static final GameRule<Integer> INITIAL_LIVES = new GameRule<>(Integer.class, "initialLives", -1);
/**
* Alternatively to {@link #INITIAL_LIVES player lives}, you can use group lives.
*/
public static final GameRule<Integer> INITIAL_GROUP_LIVES = new GameRule<>(Integer.class, "initialGroupLives", -1);
/**
* When loot may be taken away out of the dungeon again.
*/
public static final GameRule<Integer> TIME_TO_NEXT_LOOT = new GameRule<>(Integer.class, "timeToNextLoot", 0);
/**
* The cooldown between two mob waves.
*/
public static final GameRule<Integer> TIME_TO_NEXT_WAVE = new GameRule<>(Integer.class, "timeToNextWave", 10);
/**
* Time until a player is kicked out of a group after he leaves the server.
*/
public static final GameRule<Integer> TIME_UNTIL_KICK_OFFLINE_PLAYER = new GameRule<>(Integer.class, "timeUntilKickOfflinePlayer", 0);
/**
* A list of requirements. Note that requirements will be ignored if the player has the dxl.ignorerequirements permission node.
*/
public static final GameRule<List<Requirement>> REQUIREMENTS = new CollectionGameRule<>("requirements", new ArrayList<>(), (api, value) -> {
if (!(value instanceof ConfigurationSection)) {
return null;
}
ConfigurationSection section = (ConfigurationSection) value;
List<Requirement> requirements = new ArrayList<>();
for (String key : section.getValues(false).keySet()) {
Class<? extends Requirement> clss = api.getRequirementRegistry().get(key);
if (clss == null) {
MessageUtil.log(api, "&4Could not find requirement named \"" + key + "\".");
continue;
}
try {
Constructor constructor = clss.getConstructor(DungeonsAPI.class);
if (constructor == null) {
MessageUtil.log(api, "&4Requirement \"" + key + "\" is not implemented properly with a (DungeonsAPI) constructor.");
continue;
}
Requirement requirement = (Requirement) constructor.newInstance(api);
requirement.setup(section);
requirements.add(requirement);
} catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException
| IllegalArgumentException | InvocationTargetException exception) {
MessageUtil.log(api, "&4Requirement \"" + key + "\" is not implemented properly with a (DungeonsAPI) constructor.");
}
}
return requirements;
}, ArrayList::new);
/**
* This can be used to give rewards. The default implementation does not do this at the moment.
*/
public static final GameRule<List<Reward>> REWARDS = new CollectionGameRule<>("rewards", new ArrayList<>(), (api, value) -> {
if (!(value instanceof ConfigurationSection)) {
return null;
}
ConfigurationSection section = (ConfigurationSection) value;
List<Reward> rewards = new ArrayList<>();
for (String key : section.getValues(false).keySet()) {
Class<? extends Reward> clss = api.getRewardRegistry().get(key);
if (clss == null) {
MessageUtil.log(api, "&4Could not find reward named \"" + key + "\".");
continue;
}
try {
Constructor constructor = clss.getConstructor(DungeonsAPI.class);
if (constructor == null) {
MessageUtil.log(api, "&4Reward \"" + key + "\" is not implemented properly with a (DungeonsAPI) constructor.");
continue;
}
Reward reward = (Reward) constructor.newInstance(api);
// reward.setup();
rewards.add(reward);
} catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException
| IllegalArgumentException | InvocationTargetException exception) {
MessageUtil.log(api, "&4Reward \"" + key + "\" is not implemented properly with a (DungeonsAPI) constructor.");
}
}
return rewards;
}, ArrayList::new);
/**
* These commands can be used by all players if they are in the dungeon. DXL commands like /dxl leavecan be used by default.
*/
public static final GameRule<List<String>> GAME_COMMAND_WHITELIST = new CollectionGameRule<>("gameCommandWhitelist", new ArrayList<>(), ArrayList::new);
/**
* A list of permissions players get while they play the game. The permissions get removed as soon as the player leaves the game. Requires Vault and a
* permissions plugin like PermissionsEx.
*/
public static final GameRule<List<String>> GAME_PERMISSIONS = new CollectionGameRule<>("gamePermissions", new ArrayList<>(), ArrayList::new);
/**
* Use this to replace the default ready / new floor message. If titles are deactivated in the main config, this is not going to work.
*/
public static final GameRule<String> TITLE = new GameRule<>(String.class, "title.title", null);
/**
* Use this to replace the default ready / new floor message. If titles are deactivated in the main config, this is not going to work.
*/
public static final GameRule<String> SUBTITLE = new GameRule<>(String.class, "title.subtitle", null);
/**
* Use this to replace the default ready / new floor message. If titles are deactivated in the main config, this is not going to work.
*/
public static final GameRule<String> ACTION_BAR = new GameRule<>(String.class, "title.actionBar", null);
/**
* Use this to replace the default ready / new floor message. If titles are deactivated in the main config, this is not going to work.
*/
public static final GameRule<String> CHAT = new GameRule<>(String.class, "title.chat", null);
/**
* Use this to replace the default ready / new floor message. If titles are deactivated in the main config, this is not going to work.
*/
public static final GameRule<Integer> TITLE_FADE_IN = new GameRule<>(Integer.class, "title.fadeIn", 20);
/**
* Use this to replace the default ready / new floor message. If titles are deactivated in the main config, this is not going to work.
*/
public static final GameRule<Integer> TITLE_FADE_OUT = new GameRule<>(Integer.class, "title.fadeOut", 20);
/**
* Use this to replace the default ready / new floor message. If titles are deactivated in the main config, this is not going to work.
*/
public static final GameRule<Integer> TITLE_SHOW = new GameRule<>(Integer.class, "title.show", 60);
/**
* Messages; also to be created with /dxl msg
*/
public static final GameRule<Map<Integer, String>> MESSAGES = new MapGameRule<>("messages", new HashMap<>(), (api, value) -> {
if (!(value instanceof ConfigurationSection)) {
return null;
}
ConfigurationSection section = (ConfigurationSection) value;
Map<Integer, String> map = new HashMap<>();
for (Map.Entry<String, Object> entry : section.getValues(false).entrySet()) {
int id = NumberUtil.parseInt(entry.getKey(), -1);
if (id == -1) {
continue;
}
if (!(entry.getValue() instanceof String)) {
continue;
}
map.put(id, (String) entry.getValue());
}
return map;
}, HashMap::new);
/**
* Items you cannot drop or destroy.
*/
public static final GameRule<Set<ExItem>> SECURE_OBJECTS = new CollectionGameRule<>("secureObjects", new HashSet<>(), ConfigReader.EX_ITEM_SET_READER, HashSet::new);
/**
* If group tags are used.
*/
public static final GameRule<Boolean> GROUP_TAG_ENABLED = new GameRule<>(Boolean.class, "groupTagEnabled", false);
/**
* If Citizens NPCs should be copied to the native registry.
*/
public static final GameRule<Boolean> USE_NATIVE_CITIZENS_REGISTRY = new GameRule<>(Boolean.class, "useNativeCitizensRegistry", false);
/**
* If mobs shall drop experience or a whitelist of mobs that drop experience, while all others do not.
*/
public static final GameRule<Object> MOB_EXP_DROPS = new GameRule(Object.class, "mobExpDrops", false,
(api, value) -> value instanceof Boolean ? value : ConfigReader.EX_MOB_SET_READER.read(api, value)
);
/**
* If mobs shall drop items or a whitelist of mobs that drop items, while all others do not.
*/
public static final GameRule<Object> MOB_ITEM_DROPS = new GameRule(Object.class, "mobItemDrops", false,
(api, value) -> value instanceof Boolean ? value : ConfigReader.EX_MOB_SET_READER.read(api, value)
);
/**
* An array of all game rules that exist natively in DungeonsXL.
*/
public static final GameRule[] VALUES = values();
/**
* A container of all rules with their default value. This is used internally as the most subsidiary container that fills missing rules if they are not set.
*/
public static final GameRuleContainer DEFAULT_VALUES = new GameRuleContainer();
static {
for (GameRule rule : VALUES) {
DEFAULT_VALUES.setState(rule, rule.getDefaultValue());
}
}
private static GameRule[] values() {
Field[] fields = GameRule.class.getFields();
GameRule[] values = new GameRule[fields.length - 2];
int i = 0;
for (Field field : fields) {
try {
Object object = field.get(null);
if (object instanceof GameRule) {
values[i++] = (GameRule) object;
}
} catch (IllegalArgumentException | IllegalAccessException exception) {
exception.printStackTrace();
}
}
return values;
}
protected Class<V> type;
protected ConfigReader<V> reader;
private String key;
private V defaultValue;
/**
* @param type the class of V
* @param key the configuration key of the game rule
* @param defaultValue the default value that is used when nothing is set
*/
public GameRule(Class<V> type, String key, V defaultValue) {
this.type = type;
this.key = key;
this.defaultValue = defaultValue;
}
/**
* @param type the class of V
* @param key the configuration key of the game rule
* @param defaultValue the default value that is used when nothing is set
* @param reader a functional interface that loads the value from config
*/
public GameRule(Class<V> type, String key, V defaultValue, ConfigReader<V> reader) {
this(type, key, defaultValue);
this.reader = reader;
}
/**
* Returns the configuration key of the game rule.
*
* @return the configuration key of the game rule
*/
public String getKey() {
return key;
}
/**
* Returns the value used if nothing is specified by a game rule provider.
*
* @return the value used if nothing is specified by a game rule provider
*/
public V getDefaultValue() {
return defaultValue;
}
/**
* Returns if the given value is an instance of {@link V}.
*
* @param value the value
* @return if the given value is an instance of {@link V}
*/
public boolean isValidValue(Object value) {
return type.isInstance(value);
}
/**
* Returns the state of the game rule fetched from the config.
* <p>
* If the type of this game rule is an enum, Strings as config values that are the {@link Enum#name()} of an enum value are converted automatically.
*
* @param api the API instance
* @param container the game rule container whose state is to be set
* @param config the config to fetch the value from
* @return the value
*/
public V fromConfig(DungeonsAPI api, GameRuleContainer container, ConfigurationSection config) {
Object value = config.get(getKey());
if (reader != null) {
V v = reader.read(api, value);
container.setState(this, v);
return v;
}
if (Enum.class.isAssignableFrom(type)) {
if (!(value instanceof String)) {
return null;
}
value = EnumUtil.getEnumIgnoreCase((Class<? extends Enum>) type, (String) value);
}
if (isValidValue(value)) {
container.setState(this, (V) value);
return (V) value;
} else {
return null;
}
}
/**
* Compares the state attached to the game rule of two GameRuleContainers.
* <p>
* This may be overriden if necessary, for example if the value is a {@link java.util.Collection} and the desired behavior is to merge the values instead of
* keeping the overriding one.
*
* @param overriding the state of this container will by default be copied to the "writeTo" container if it is not null
* @param subsidiary the state of this container will by default be copied to the "writeTo" container if the state of the "overriding" container is null
* @param writeTo the state of the game rule will be set to the one of either "overriding" or "subsidiary". This container may be == to one of the
* others.
*/
public void merge(GameRuleContainer overriding, GameRuleContainer subsidiary, GameRuleContainer writeTo) {
V overridingValue = overriding.getState(this);
V subsidiaryValue = subsidiary.getState(this);
writeTo.setState(this, overridingValue != null ? overridingValue : subsidiaryValue);
}
@Override
public String toString() {
return getClass().getSimpleName() + "{key=" + key + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/GameRuleContainer.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.dungeon;
import java.util.HashMap;
import java.util.Map;
/**
* A container for {@link GameRule}s.
*
* @author Daniel Saukel
*/
public class GameRuleContainer {
protected Map<GameRule<?>, Object> rules;
/**
* Initializes an emtpy GameRuleContainer.
*/
public GameRuleContainer() {
rules = new HashMap<>();
}
/**
* Copies a GameRuleContainer.
*
* @param container the container to copy
*/
public GameRuleContainer(GameRuleContainer container) {
rules = new HashMap<>(container.rules);
}
/**
* Returns the state of the GameRule or UNDEFINED_STATE if it is not defined
*
* @param <V> the type of the value of the rule
* @param rule the rule
* @return the state of the rule
*/
public <V> V getState(GameRule<V> rule) {
if (!rules.containsKey(rule)) {
return null;
} else {
return (V) rules.get(rule);
}
}
/**
* Sets the state of the GameRule.Set it to null to remove the rule from the map sothat a subsidiary provider can set it.
*
* @param <V> the type of the value of the rule
* @param rule the rule
* @param state the new state of the rule in this container
*/
public <V> void setState(GameRule<V> rule, V state) {
if (state == null) {
rules.remove(rule);
} else if (rule.isValidValue(state)) {
rules.put(rule, state);
} else {
throw new IllegalArgumentException("state is not a valid value for rule " + rule.getKey());
}
}
/**
* Removes the rule from the map sothat a subsidiary container can set it.
*
* @param rule the GameRule to unset
*/
public void unsetState(GameRule<?> rule) {
rules.remove(rule);
}
/**
* Fills the values that are not yet set with values from a subsidiary container.
*
* @param subsidiary the GameRules that override the values that are null.
*/
public void merge(GameRuleContainer subsidiary) {
subsidiary.rules.entrySet().forEach(e -> e.getKey().merge(this, subsidiary, this));
}
@Override
public String toString() {
return "GameRuleContainer{" + rules + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/MapGameRule.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.dungeon;
import com.google.common.base.Verify;
import de.erethon.dungeonsxl.api.DungeonsAPI;
import java.util.Map;
import org.bukkit.configuration.ConfigurationSection;
/**
* A {@link GameRule} where the value is a {@link java.util.Map}.
*
* @param <TK> the type of the map key
* @param <TV> the type of the map value
* @param <V> the type of the game rule value
* @author Daniel Saukel
*/
public class MapGameRule<TK, TV, V extends Map<TK, TV>> extends GameRule<V> {
protected Copier<V> copier;
/**
* @param key the configuration key of the game rule
* @param defaultValue the default value that is used when nothing is set; not null
* @param reader a functional interface that loads the value from config
* @param copier a method to copy the map
*/
public MapGameRule(String key, V defaultValue, ConfigReader<V> reader, Copier<V> copier) {
super(null, key, defaultValue, reader);
Verify.verifyNotNull(defaultValue, "defaultValue must not be null");
this.copier = copier;
}
/**
* This implementation uses more expensive casting + catching the ClassCastException.
* Developers should consider doing that themselves instead of wasting this cast.
*
* @param value the value
* @return if the given value is an instance of {@link V}
*/
@Override
public boolean isValidValue(Object value) {
try {
V v = (V) value;
return true;
} catch (ClassCastException exception) {
return false;
}
}
@Override
public V fromConfig(DungeonsAPI api, GameRuleContainer container, ConfigurationSection config) {
if (reader == null) {
return null;
}
V v = reader.read(api, config.getConfigurationSection(getKey()));
if (v == null) {
return null;
}
v.remove(null); // Do not allow null values
container.setState(this, v);
return v;
}
@Override
public void merge(GameRuleContainer overriding, GameRuleContainer subsidiary, GameRuleContainer writeTo) {
V writeToState = writeTo.getState(this);
V write = writeToState != null ? copier.copy(writeTo.getState(this)) : null;
V subsidiaryState = subsidiary.getState(this);
if (subsidiaryState != null) {
if (write == null) {
write = copier.copy(subsidiaryState);
} else {
write.putAll(subsidiaryState);
}
}
V overridingState = overriding.getState(this);
if (overridingState != null) {
if (write == null) {
write = copier.copy(overridingState);
} else {
write.putAll(overridingState);
}
}
writeTo.setState(this, write);
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/DataReloadEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* Fired when the plugin is reloaded with /dxl reload.
*
* @author Daniel Saukel
*/
public class DataReloadEvent extends Event implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName();
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupCollectRewardEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.Reward;
import de.erethon.dungeonsxl.api.player.GamePlayer;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a group collects a reward.
* <p>
* In the default implementation, this happens when a player opens a reward chest.
*
* @author Daniel Saukel
*/
public class GroupCollectRewardEvent extends GroupEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private GamePlayer collector;
private Reward reward;
public GroupCollectRewardEvent(PlayerGroup group, GamePlayer collector, Reward reward) {
super(group);
this.collector = collector;
this.reward = reward;
}
/**
* Returns the player who collected the reward.
* <p>
* Note that this may be null if addons add a way to give rewards that cannot be attributed to one collector.
*
* @return the player who collected the reward
*/
public GamePlayer getCollector() {
return collector;
}
/**
* Returns the reward the group collected.
*
* @return the reward the group collected
*/
public Reward getReward() {
return reward;
}
/**
* Sets the reward the group collected.
*
* @param reward the reward
*/
public void setReward(Reward reward) {
this.reward = reward;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName() + "{group=" + group + "; collector=" + collector + "; reward=" + reward + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupCreateEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.player.GlobalPlayer;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a group is created explicitly or implicitly.
*
* @author Daniel Saukel
*/
public class GroupCreateEvent extends GroupEvent implements Cancellable {
/**
* The reason why the group is created.
*/
public enum Cause {
ANNOUNCER,
COMMAND,
/**
* When a group is created to mirror the state of a party plugin.
*
* @see de.erethon.dungeonsxl.api.player.GroupAdapter
*/
GROUP_ADAPTER,
GROUP_SIGN,
TUTORIAL,
/**
* When a group is created by an addon.
*/
CUSTOM
}
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private GlobalPlayer creator;
private Cause cause;
public GroupCreateEvent(PlayerGroup group, GlobalPlayer creator, Cause cause) {
super(group);
this.creator = creator;
this.cause = cause;
}
/**
* Returns the player who created the group.
*
* @return the player who created the group
*/
public GlobalPlayer getCreator() {
return creator;
}
/**
* Returns the cause for the group creation.
*
* @return the cause for the group creation
*/
public Cause getCause() {
return cause;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName() + "{group=" + group + "; creator=" + creator + "; cause=" + cause + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupDisbandEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.player.GlobalPlayer;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a group is disbanded.
*
* @author Daniel Saukel
*/
public class GroupDisbandEvent extends GroupEvent implements Cancellable {
public enum Cause {
COMMAND,
DUNGEON_FINISHED,
GROUP_ADAPTER,
GROUP_IS_EMPTY,
LOST,
CUSTOM
}
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private GlobalPlayer disbander;
private Cause cause;
public GroupDisbandEvent(PlayerGroup group, Cause cause) {
super(group);
this.cause = cause;
}
public GroupDisbandEvent(PlayerGroup group, GlobalPlayer disbander, Cause cause) {
super(group);
this.disbander = disbander;
this.cause = cause;
}
/**
* The player who disbanded the group.
* <p>
* This is null if the cause is {@link Cause#DUNGEON_FINISHED}, {@link Cause#GROUP_ADAPTER}, {@link Cause#LOST} or {@link Cause#CUSTOM}.
*
* @return the player who disbanded the group
*/
public GlobalPlayer getDisbander() {
return disbander;
}
/**
* Returns the cause for the group deletion.
*
* @return the cause for the group deletion
*/
public Cause getCause() {
return cause;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName() + "{group=" + group + "; disbander=" + disbander + "; cause=" + cause + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import org.bukkit.event.Event;
/**
* Superclass for events involving DungeonsXL groups.
*
* @author Daniel Saukel
*/
public abstract class GroupEvent extends Event {
protected PlayerGroup group;
protected GroupEvent(PlayerGroup group) {
this.group = group;
}
/**
* Returns the group involved in this event.
*
* @return the group involved in this event
*/
public PlayerGroup getGroup() {
return group;
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupFinishDungeonEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.dungeon.Dungeon;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a group finishs a {@link Dungeon}, which means the end floor of a dungeon.
* <p>
* Do not confuse this with {@link de.erethon.dungeonsxl.api.event.player.GamePlayerFinishEvent}. GamePlayerFinishEvent is fired when a player triggers an end
* sign, while GroupFinishDungeonEvent is triggered when all group members have triggered the end sign and the game actually ends.
*
* @author Daniel Saukel
*/
public class GroupFinishDungeonEvent extends GroupEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private Dungeon dungeon;
public GroupFinishDungeonEvent(PlayerGroup group, Dungeon dungeon) {
super(group);
this.dungeon = dungeon;
}
/**
* Returns the dungeon the group was playing.
*
* @return the dungeon the group was playing
*/
public Dungeon getDungeon() {
return dungeon;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName() + "{group=" + group + "; dungeon=" + dungeon + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupFinishFloorEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import de.erethon.dungeonsxl.api.world.GameWorld;
import de.erethon.dungeonsxl.api.world.ResourceWorld;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a group finishs a dungeon floor.
*
* @author Daniel Saukel
*/
public class GroupFinishFloorEvent extends GroupEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private GameWorld finished;
private ResourceWorld next;
public GroupFinishFloorEvent(PlayerGroup group, GameWorld finished, ResourceWorld next) {
super(group);
this.finished = finished;
this.next = next;
}
/**
* Returns the game world that was just finished.
*
* @return the game world that was just finished
*/
public GameWorld getFinished() {
return finished;
}
/**
* Returns the resource world of the next floor.
*
* @return the resource world of the next floor
*/
public ResourceWorld getNext() {
return next;
}
/**
* Sets the next floor to load.
* <p>
* If one has already been loaded because another group finished the floor earlier, this will not do anything.
*
* @param next the next floor to load
*/
public void setNext(ResourceWorld next) {
this.next = next;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName() + "{group=" + group + "; finished=" + finished + "; next=" + next + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupPlayerJoinEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.player.GlobalPlayer;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a player joins a DungeonsXL group.
*
* @author Daniel Saukel
*/
public class GroupPlayerJoinEvent extends GroupEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private GlobalPlayer player;
private boolean creator;
public GroupPlayerJoinEvent(PlayerGroup group, GlobalPlayer player, boolean creator) {
super(group);
this.player = player;
this.creator = creator;
}
/**
* Returns the player who is joining the group.
*
* @return the player who is joining the group
*/
public GlobalPlayer getPlayer() {
return player;
}
/**
* Returns if the player is the creator of the group.
*
* @return if the player is the creator of the group
*/
public boolean isCreator() {
return creator;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName() + "{group=" + group + "; player=" + player + "; creator=" + creator + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupPlayerKickEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.player.GlobalPlayer;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a player is kicked out of a group.
*
* @author Daniel Saukel
*/
public class GroupPlayerKickEvent extends GroupEvent implements Cancellable {
public enum Cause {
COMMAND,
/**
* When the player is kicked because he does not have any lives left.
*/
DEATH,
/**
* When a player is kicked from a group to mirror the state of a party plugin.
*
* @see de.erethon.dungeonsxl.api.player.GroupAdapter
*/
GROUP_ADAPTER,
OFFLINE,
/**
* When the time for the group to reach a certain state expired.
*/
TIME_EXPIRED,
CUSTOM
}
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private GlobalPlayer player;
private Cause cause;
public GroupPlayerKickEvent(PlayerGroup group, GlobalPlayer player, Cause cause) {
super(group);
this.player = player;
this.cause = cause;
}
/**
* Returns the player who is joining the group.
*
* @return the player who is joining the group
*/
public GlobalPlayer getPlayer() {
return player;
}
/**
* Returns the cause of the kick.
*
* @return the cause of the kick
*/
public Cause getCause() {
return cause;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName() + "{group=" + group + "; player=" + player + "; cause=" + cause + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupPlayerLeaveEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.player.GlobalPlayer;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a player leaves a group.
*
* @author Daniel Saukel
*/
public class GroupPlayerLeaveEvent extends GroupEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private GlobalPlayer player;
public GroupPlayerLeaveEvent(PlayerGroup group, GlobalPlayer player) {
super(group);
this.player = player;
}
/**
* Returns the player who left the group.
*
* @return the player who left the group
*/
public GlobalPlayer getPlayer() {
return player;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName() + "{group=" + group + "; player=" + player + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupScoreEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.player.GamePlayer;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a group scores a point.
*
* @author Daniel Saukel
*/
public class GroupScoreEvent extends GroupEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private GamePlayer scorer;
private PlayerGroup loserGroup;
public GroupScoreEvent(PlayerGroup group, GamePlayer scorer, PlayerGroup loserGroup) {
super(group);
this.scorer = scorer;
this.loserGroup = loserGroup;
}
/**
* Returns the player who scored.
*
* @return the player who scored
*/
public GamePlayer getScorer() {
return scorer;
}
/**
* Returns the group that lost a score to the scorers.
*
* @return the group that lost a score to the scorers
*/
public PlayerGroup getLoserGroup() {
return loserGroup;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName() + "{group=" + group + "; scorer=" + scorer + "; loserGroup=" + loserGroup + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupStartFloorEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.group;
import de.erethon.dungeonsxl.api.player.PlayerGroup;
import de.erethon.dungeonsxl.api.world.GameWorld;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a group starts playing a floor.
*
* @author Daniel Saukel
*/
public class GroupStartFloorEvent extends GroupEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private GameWorld gameWorld;
public GroupStartFloorEvent(PlayerGroup group, GameWorld gameWorld) {
super(group);
this.gameWorld = gameWorld;
}
/**
* Returns the game instance.
*
* @return the game instance
*/
public GameWorld getGameWorld() {
return gameWorld;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@Override
public String toString() {
return getClass().getSimpleName() + "{group=" + group + "; gameWorld=" + gameWorld + "}";
}
}
================================================
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/mob/DungeonMobDeathEvent.java
================================================
/*
* Copyright (C) 2015-2026 Daniel Saukel
*
* This library is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNULesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.erethon.dungeonsxl.api.event.mob;
import de.erethon.dungeonsxl.api.mob.DungeonMob;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
/**
* Fired when a {@link DungeonMob} dies.
*
* @author Daniel Saukel
*/
public class DungeonMobDeathEvent extends DungeonMobEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
public DungeonMobDeathEvent(DungeonMob mob) {
super(mob);
}
/**
* Returns the play
gitextract_74xrxnj_/ ├── .github/ │ └── ISSUE_TEMPLATE/ │ ├── bug_report.md │ ├── feature_request.md │ └── question.md ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── adapter/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── de/ │ └── erethon/ │ └── dungeonsxl/ │ └── adapter/ │ └── block/ │ └── BlockAdapter.java ├── addon/ │ ├── README.md │ ├── core/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── de/ │ │ │ └── erethon/ │ │ │ └── dungeonsxxl/ │ │ │ ├── DungeonsXXL.java │ │ │ ├── requirement/ │ │ │ │ └── FeeItemsRequirement.java │ │ │ ├── sign/ │ │ │ │ ├── FireworkSign.java │ │ │ │ ├── GlowingBlockSign.java │ │ │ │ ├── InteractWallSign.java │ │ │ │ └── ParticleSign.java │ │ │ ├── util/ │ │ │ │ ├── FireworkUtil.java │ │ │ │ └── GlowUtil.java │ │ │ └── world/ │ │ │ └── block/ │ │ │ └── GlowingBlock.java │ │ └── resources/ │ │ └── plugin.yml │ ├── dist/ │ │ └── pom.xml │ └── pom.xml ├── api/ │ ├── LICENSE │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── de/ │ └── erethon/ │ └── dungeonsxl/ │ └── api/ │ ├── DungeonModule.java │ ├── DungeonsAPI.java │ ├── Requirement.java │ ├── Reward.java │ ├── dungeon/ │ │ ├── BuildMode.java │ │ ├── CollectionGameRule.java │ │ ├── ConfigReader.java │ │ ├── Copier.java │ │ ├── Dungeon.java │ │ ├── Game.java │ │ ├── GameGoal.java │ │ ├── GameRule.java │ │ ├── GameRuleContainer.java │ │ └── MapGameRule.java │ ├── event/ │ │ ├── DataReloadEvent.java │ │ ├── group/ │ │ │ ├── GroupCollectRewardEvent.java │ │ │ ├── GroupCreateEvent.java │ │ │ ├── GroupDisbandEvent.java │ │ │ ├── GroupEvent.java │ │ │ ├── GroupFinishDungeonEvent.java │ │ │ ├── GroupFinishFloorEvent.java │ │ │ ├── GroupPlayerJoinEvent.java │ │ │ ├── GroupPlayerKickEvent.java │ │ │ ├── GroupPlayerLeaveEvent.java │ │ │ ├── GroupScoreEvent.java │ │ │ └── GroupStartFloorEvent.java │ │ ├── mob/ │ │ │ ├── DungeonMobDeathEvent.java │ │ │ ├── DungeonMobEvent.java │ │ │ └── DungeonMobSpawnEvent.java │ │ ├── player/ │ │ │ ├── EditPlayerEditEvent.java │ │ │ ├── EditPlayerEvent.java │ │ │ ├── EditPlayerLeaveEvent.java │ │ │ ├── GamePlayerDeathEvent.java │ │ │ ├── GamePlayerEvent.java │ │ │ ├── GamePlayerFinishEvent.java │ │ │ ├── GlobalPlayerEvent.java │ │ │ └── GlobalPlayerRewardPayOutEvent.java │ │ ├── requirement/ │ │ │ ├── RequirementCheckEvent.java │ │ │ ├── RequirementDemandEvent.java │ │ │ └── RequirementEvent.java │ │ ├── trigger/ │ │ │ ├── TriggerActionEvent.java │ │ │ ├── TriggerEvent.java │ │ │ ├── TriggerRegistrationEvent.java │ │ │ └── TriggerUnregistrationEvent.java │ │ └── world/ │ │ ├── EditWorldEvent.java │ │ ├── EditWorldGenerateEvent.java │ │ ├── EditWorldSaveEvent.java │ │ ├── EditWorldUnloadEvent.java │ │ ├── GameWorldEvent.java │ │ ├── GameWorldStartGameEvent.java │ │ ├── InstanceWorldEvent.java │ │ ├── InstanceWorldPostUnloadEvent.java │ │ ├── InstanceWorldUnloadEvent.java │ │ ├── ResourceWorldEvent.java │ │ └── ResourceWorldInstantiateEvent.java │ ├── mob/ │ │ ├── DungeonMob.java │ │ ├── ExternalMobProvider.java │ │ └── MobSet.java │ ├── player/ │ │ ├── EditPlayer.java │ │ ├── GamePlayer.java │ │ ├── GlobalPlayer.java │ │ ├── GroupAdapter.java │ │ ├── InstancePlayer.java │ │ ├── PlayerCache.java │ │ ├── PlayerClass.java │ │ └── PlayerGroup.java │ ├── sign/ │ │ ├── AbstractDSign.java │ │ ├── Button.java │ │ ├── Deactivatable.java │ │ ├── DungeonSign.java │ │ ├── Passive.java │ │ ├── Rocker.java │ │ └── Windup.java │ ├── trigger/ │ │ ├── AbstractTrigger.java │ │ ├── LogicalExpression.java │ │ ├── Trigger.java │ │ ├── TriggerListener.java │ │ └── TriggerTypeKey.java │ └── world/ │ ├── EditWorld.java │ ├── GameWorld.java │ ├── InstanceWorld.java │ └── ResourceWorld.java ├── build.bat ├── build.sh ├── bukkit_blockdata/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── de/ │ └── erethon/ │ └── dungeonsxl/ │ └── adapter/ │ └── block/ │ └── BlockAdapterBlockData.java ├── bukkit_magicvalues/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── de/ │ └── erethon/ │ └── dungeonsxl/ │ └── adapter/ │ └── block/ │ └── BlockAdapterMagicValues.java ├── core/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── de/ │ │ └── erethon/ │ │ └── dungeonsxl/ │ │ ├── DXLModule.java │ │ ├── DungeonsXL.java │ │ ├── command/ │ │ │ ├── BreakCommand.java │ │ │ ├── ChatCommand.java │ │ │ ├── ChatSpyCommand.java │ │ │ ├── CreateCommand.java │ │ │ ├── DCommand.java │ │ │ ├── DCommandRegistry.java │ │ │ ├── DeleteCommand.java │ │ │ ├── DungeonItemCommand.java │ │ │ ├── EditCommand.java │ │ │ ├── EnterCommand.java │ │ │ ├── EscapeCommand.java │ │ │ ├── GameCommand.java │ │ │ ├── GroupCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── ImportCommand.java │ │ │ ├── InviteCommand.java │ │ │ ├── KickCommand.java │ │ │ ├── LeaveCommand.java │ │ │ ├── ListCommand.java │ │ │ ├── LivesCommand.java │ │ │ ├── MainCommand.java │ │ │ ├── MsgCommand.java │ │ │ ├── PlayCommand.java │ │ │ ├── PortalCommand.java │ │ │ ├── ReloadCommand.java │ │ │ ├── RenameCommand.java │ │ │ ├── ResourcePackCommand.java │ │ │ ├── SaveCommand.java │ │ │ ├── StatusCommand.java │ │ │ ├── TestCommand.java │ │ │ └── UninviteCommand.java │ │ ├── config/ │ │ │ ├── DMessage.java │ │ │ └── MainConfig.java │ │ ├── dungeon/ │ │ │ ├── DDungeon.java │ │ │ ├── DGame.java │ │ │ └── DungeonConfig.java │ │ ├── global/ │ │ │ ├── DPortal.java │ │ │ ├── GameSign.java │ │ │ ├── GlobalProtection.java │ │ │ ├── GlobalProtectionCache.java │ │ │ ├── GlobalProtectionListener.java │ │ │ ├── GroupSign.java │ │ │ ├── JoinSign.java │ │ │ ├── LeaveSign.java │ │ │ └── UnloadedProtection.java │ │ ├── mob/ │ │ │ ├── CitizensMobProvider.java │ │ │ ├── CustomExternalMobProvider.java │ │ │ ├── DMob.java │ │ │ ├── DMobListener.java │ │ │ ├── DNPCRegistry.java │ │ │ └── ExternalMobPlugin.java │ │ ├── player/ │ │ │ ├── DEditPlayer.java │ │ │ ├── DGamePlayer.java │ │ │ ├── DGlobalPlayer.java │ │ │ ├── DGroup.java │ │ │ ├── DGroupTag.java │ │ │ ├── DInstancePlayer.java │ │ │ ├── DPermission.java │ │ │ ├── DPlayerData.java │ │ │ ├── DPlayerListener.java │ │ │ ├── RespawnTask.java │ │ │ ├── SecureModeTask.java │ │ │ ├── TimeIsRunningTask.java │ │ │ └── groupadapter/ │ │ │ └── PartiesAdapter.java │ │ ├── requirement/ │ │ │ ├── FeeLevelRequirement.java │ │ │ ├── FeeMoneyRequirement.java │ │ │ ├── FinishedDungeonsRequirement.java │ │ │ ├── ForbiddenItemsRequirement.java │ │ │ ├── GroupSizeRequirement.java │ │ │ ├── KeyItemsRequirement.java │ │ │ ├── PermissionRequirement.java │ │ │ ├── TimeSinceFinishRequirement.java │ │ │ ├── TimeSinceStartRequirement.java │ │ │ └── TimeframeRequirement.java │ │ ├── reward/ │ │ │ ├── ItemReward.java │ │ │ ├── LevelReward.java │ │ │ ├── MoneyReward.java │ │ │ └── RewardListener.java │ │ ├── sign/ │ │ │ ├── DSignListener.java │ │ │ ├── LocationSign.java │ │ │ ├── button/ │ │ │ │ ├── ActionBarSign.java │ │ │ │ ├── BossShopSign.java │ │ │ │ ├── ChatMessageSign.java │ │ │ │ ├── CheckpointSign.java │ │ │ │ ├── ClassesSign.java │ │ │ │ ├── EndSign.java │ │ │ │ ├── LeaveSign.java │ │ │ │ ├── LivesModifierSign.java │ │ │ │ ├── MessageSign.java │ │ │ │ ├── ReadySign.java │ │ │ │ ├── ResourcePackSign.java │ │ │ │ ├── SoundMessageSign.java │ │ │ │ ├── TeleportSign.java │ │ │ │ ├── TitleSign.java │ │ │ │ └── WaveSign.java │ │ │ ├── passive/ │ │ │ │ ├── BedSign.java │ │ │ │ ├── ChestSign.java │ │ │ │ ├── DungeonChestSign.java │ │ │ │ ├── FlagSign.java │ │ │ │ ├── HologramSign.java │ │ │ │ ├── InteractSign.java │ │ │ │ ├── LobbySign.java │ │ │ │ ├── NoteSign.java │ │ │ │ ├── PlaceSign.java │ │ │ │ ├── ProtectionSign.java │ │ │ │ ├── RewardChestSign.java │ │ │ │ ├── ScriptSign.java │ │ │ │ ├── SignScript.java │ │ │ │ └── StartSign.java │ │ │ ├── rocker/ │ │ │ │ ├── BlockSign.java │ │ │ │ ├── OpenDoorSign.java │ │ │ │ └── TriggerSign.java │ │ │ └── windup/ │ │ │ ├── CommandScript.java │ │ │ ├── CommandSign.java │ │ │ ├── CommandTask.java │ │ │ ├── DelayedPowerTask.java │ │ │ ├── DropSign.java │ │ │ ├── MobSign.java │ │ │ ├── MobSpawnTask.java │ │ │ └── RedstoneSign.java │ │ ├── trigger/ │ │ │ ├── DistanceTrigger.java │ │ │ ├── FortuneTrigger.java │ │ │ ├── InteractTrigger.java │ │ │ ├── MobTrigger.java │ │ │ ├── PresenceTrigger.java │ │ │ ├── ProgressTrigger.java │ │ │ ├── RedstoneTrigger.java │ │ │ ├── SignTrigger.java │ │ │ ├── TriggerListener.java │ │ │ ├── UseItemTrigger.java │ │ │ └── WaveTrigger.java │ │ ├── util/ │ │ │ ├── AttributeUtil.java │ │ │ ├── BlockUtilCompat.java │ │ │ ├── ContainerAdapter.java │ │ │ ├── DependencyVersion.java │ │ │ ├── LWCUtil.java │ │ │ ├── LocationString.java │ │ │ ├── ParsingUtil.java │ │ │ └── PlaceholderUtil.java │ │ └── world/ │ │ ├── DEditWorld.java │ │ ├── DGameWorld.java │ │ ├── DInstanceWorld.java │ │ ├── DResourceWorld.java │ │ ├── DWorldListener.java │ │ ├── LWCIntegration.java │ │ ├── SignData.java │ │ ├── WorldConfig.java │ │ └── block/ │ │ ├── GameBlock.java │ │ ├── LockedDoor.java │ │ ├── MultiBlock.java │ │ ├── PlaceableBlock.java │ │ ├── ProtectedBlock.java │ │ ├── RewardChest.java │ │ ├── TeamBed.java │ │ ├── TeamBlock.java │ │ └── TeamFlag.java │ └── resources/ │ ├── languages/ │ │ ├── english.yml │ │ ├── french.yml │ │ └── german.yml │ └── plugin.yml ├── dist/ │ └── pom.xml ├── mvnbt.jar └── pom.xml
SYMBOL INDEX (2467 symbols across 252 files)
FILE: adapter/src/main/java/de/erethon/dungeonsxl/adapter/block/BlockAdapter.java
type BlockAdapter (line 26) | public interface BlockAdapter {
method isBedHead (line 28) | boolean isBedHead(Block block);
method openDoor (line 30) | void openDoor(Block block);
method closeDoor (line 32) | void closeDoor(Block block);
method setBlockWoolColor (line 34) | void setBlockWoolColor(Block block, Color color);
method getFacing (line 36) | BlockFace getFacing(Block block);
method setFacing (line 38) | void setFacing(Block block, BlockFace facing);
method setAxis (line 40) | void setAxis(Block block, boolean z);
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/DungeonsXXL.java
class DungeonsXXL (line 26) | public class DungeonsXXL extends PluginInit implements DungeonModule {
method DungeonsXXL (line 32) | public DungeonsXXL() {
method onEnable (line 40) | @Override
method getInstance (line 52) | public static DungeonsXXL getInstance() {
method getDXL (line 61) | public DungeonsXL getDXL() {
method getGlowUtil (line 70) | public GlowUtil getGlowUtil() {
method initRequirements (line 74) | @Override
method initRewards (line 79) | @Override
method initSigns (line 83) | @Override
method initGameRules (line 91) | @Override
method initTriggers (line 95) | @Override
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/requirement/FeeItemsRequirement.java
class FeeItemsRequirement (line 22) | public class FeeItemsRequirement implements Requirement {
method FeeItemsRequirement (line 28) | public FeeItemsRequirement(DungeonsAPI api) {
method getFee (line 32) | public List<ItemStack> getFee() {
method setup (line 36) | @Override
method check (line 41) | @Override
method getCheckMessage (line 51) | @Override
method demand (line 68) | @Override
method toString (line 73) | @Override
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/sign/FireworkSign.java
class FireworkSign (line 18) | public class FireworkSign extends Button {
method FireworkSign (line 20) | public FireworkSign(DungeonsAPI api, Sign sign, String[] lines, Instan...
method getName (line 24) | @Override
method getBuildPermission (line 29) | @Override
method isOnDungeonInit (line 34) | @Override
method isProtected (line 39) | @Override
method isSetToAir (line 44) | @Override
method validate (line 49) | @Override
method initialize (line 54) | @Override
method push (line 58) | @Override
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/sign/GlowingBlockSign.java
class GlowingBlockSign (line 25) | public class GlowingBlockSign extends Rocker {
method GlowingBlockSign (line 32) | public GlowingBlockSign(DungeonsAPI api, Sign sign, String[] lines, In...
method getGlowingBlock (line 41) | public GlowingBlock getGlowingBlock() {
method getColor (line 50) | public ChatColor getColor() {
method getName (line 54) | @Override
method getBuildPermission (line 59) | @Override
method isOnDungeonInit (line 64) | @Override
method isProtected (line 69) | @Override
method isSetToAir (line 74) | @Override
method validate (line 79) | @Override
method initialize (line 84) | @Override
method activate (line 100) | @Override
method deactivate (line 111) | @Override
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/sign/InteractWallSign.java
class InteractWallSign (line 22) | public class InteractWallSign extends InteractSign {
method InteractWallSign (line 24) | public InteractWallSign(DungeonsAPI api, Sign sign, String[] lines, In...
method getName (line 28) | @Override
method getBuildPermission (line 33) | @Override
method isOnDungeonInit (line 38) | @Override
method isProtected (line 43) | @Override
method isSetToAir (line 48) | @Override
method initialize (line 53) | @Override
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/sign/ParticleSign.java
class ParticleSign (line 22) | public class ParticleSign extends Button {
method ParticleSign (line 29) | public ParticleSign(DungeonsAPI api, Sign sign, String[] lines, Instan...
method getName (line 33) | @Override
method getBuildPermission (line 38) | @Override
method isOnDungeonInit (line 43) | @Override
method isProtected (line 48) | @Override
method isSetToAir (line 53) | @Override
method validate (line 58) | @Override
method initialize (line 68) | @Override
method push (line 83) | @Override
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/util/FireworkUtil.java
class FireworkUtil (line 22) | public class FireworkUtil {
method spawnRandom (line 33) | public static Firework spawnRandom(Location location) {
method randomColor (line 62) | private static Color randomColor() {
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/util/GlowUtil.java
class GlowUtil (line 38) | public class GlowUtil implements Listener {
method GlowUtil (line 47) | public GlowUtil(Plugin plugin) {
method getTeam (line 52) | private Team getTeam(ChatColor color) {
method addBlockGlow (line 71) | public org.bukkit.entity.Entity addBlockGlow(Block block, ChatColor co...
method addBlockGlow (line 88) | public void addBlockGlow(Block block, ChatColor color, Player... playe...
method addRainbowBlockGlow (line 108) | public org.bukkit.entity.Entity addRainbowBlockGlow(Block block) {
method addRainbowBlockGlow (line 121) | public org.bukkit.entity.Entity addRainbowBlockGlow(Block block, Long ...
method addRainbowBlockGlow (line 139) | public void addRainbowBlockGlow(Block block, Player... players) {
method addRainbowBlockGlow (line 152) | public void addRainbowBlockGlow(Block block, Long cancelTime, Player.....
method removeBlockGlow (line 172) | public void removeBlockGlow(Block block) {
method addGlow (line 195) | public void addGlow(org.bukkit.entity.Entity entity, ChatColor color) {
method addGlow (line 206) | public void addGlow(net.minecraft.server.v1_16_R3.Entity entity, ChatC...
method addRainbowGlow (line 216) | public void addRainbowGlow(org.bukkit.entity.Entity entity) {
method addRainbowGlow (line 226) | public void addRainbowGlow(org.bukkit.entity.Entity entity, Long cance...
method addRainbowGlow (line 236) | public void addRainbowGlow(net.minecraft.server.v1_16_R3.Entity entity) {
method addRainbowGlow (line 246) | public void addRainbowGlow(net.minecraft.server.v1_16_R3.Entity entity...
method removeGlow (line 256) | public void removeGlow(org.bukkit.entity.Entity entity) {
method removeGlow (line 267) | public void removeGlow(net.minecraft.server.v1_16_R3.Entity entity) {
method asEntry (line 273) | private static String asEntry(org.bukkit.entity.Entity entity) {
method asEntry (line 277) | private static String asEntry(net.minecraft.server.v1_16_R3.Entity ent...
method sendPacket (line 281) | private static void sendPacket(Player player, Packet<?> packet) {
method onBlockBreak (line 285) | @EventHandler
method onPlayerQuit (line 290) | @EventHandler
class GlowRunnable (line 295) | private class GlowRunnable extends BukkitRunnable {
method addEntity (line 300) | private void addEntity(Object entity, Long cancelTime) {
method removeEntity (line 304) | private void removeEntity(Object entity) {
method run (line 308) | @Override
method run (line 320) | private void run(org.bukkit.entity.Entity entity, Long cancelTime) {
method run (line 335) | private void run(net.minecraft.server.v1_16_R3.Entity entity, Long c...
class GlowData (line 354) | static class GlowData<T> {
method get (line 358) | T get(Block block) {
method remove (line 362) | void remove(Block block) {
method remove (line 366) | void remove(T entity) {
method put (line 374) | void put(Block block, T entity) {
FILE: addon/core/src/main/java/de/erethon/dungeonsxxl/world/block/GlowingBlock.java
class GlowingBlock (line 19) | public class GlowingBlock extends GameBlock {
method GlowingBlock (line 23) | public GlowingBlock(DungeonsXXL plugin, Block block, ChatColor color, ...
method removeGlow (line 49) | public void removeGlow() {
method onBreak (line 53) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/DungeonModule.java
type DungeonModule (line 29) | public interface DungeonModule {
method initRequirements (line 36) | void initRequirements(Registry<String, Class<? extends Requirement>> r...
method initRewards (line 43) | void initRewards(Registry<String, Class<? extends Reward>> rewardRegis...
method initSigns (line 50) | void initSigns(Registry<String, Class<? extends DungeonSign>> signRegi...
method initGameRules (line 57) | void initGameRules(Registry<String, GameRule> gameRuleRegistry);
method initTriggers (line 64) | void initTriggers(Registry<Character, Class<? extends Trigger>> trigge...
FILE: api/src/main/java/de/erethon/dungeonsxl/api/DungeonsAPI.java
type DungeonsAPI (line 48) | public interface DungeonsAPI extends Plugin {
method getXLib (line 64) | XLib getXLib();
method getPlayerCache (line 71) | PlayerCache getPlayerCache();
method getGameCache (line 78) | Collection<Game> getGameCache();
method getClassRegistry (line 85) | Registry<String, PlayerClass> getClassRegistry();
method getSignRegistry (line 92) | Registry<String, Class<? extends DungeonSign>> getSignRegistry();
method getRequirementRegistry (line 99) | Registry<String, Class<? extends Requirement>> getRequirementRegistry();
method getRewardRegistry (line 106) | Registry<String, Class<? extends Reward>> getRewardRegistry();
method getDungeonRegistry (line 113) | Registry<String, Dungeon> getDungeonRegistry();
method getMapRegistry (line 120) | Registry<String, ResourceWorld> getMapRegistry();
method getInstanceCache (line 127) | Registry<Integer, InstanceWorld> getInstanceCache();
method getGameRuleRegistry (line 134) | Registry<String, GameRule> getGameRuleRegistry();
method getTriggerRegistry (line 141) | Registry<Character, Class<? extends Trigger>> getTriggerRegistry();
method getExternalMobProviderRegistry (line 148) | Registry<String, ExternalMobProvider> getExternalMobProviderRegistry();
method getGroupCache (line 155) | Registry<String, PlayerGroup> getGroupCache();
method registerModule (line 162) | void registerModule(DungeonModule module);
method registerGroupAdapter (line 169) | void registerGroupAdapter(GroupAdapter groupAdapter);
method createGroup (line 178) | PlayerGroup createGroup(Player leader);
method createGroup (line 187) | PlayerGroup createGroup(Player leader, PlayerGroup.Color color);
method createGroup (line 196) | PlayerGroup createGroup(Player leader, String name);
method createGroup (line 205) | PlayerGroup createGroup(Player leader, Dungeon dungeon);
method createGroup (line 216) | PlayerGroup createGroup(Player leader, Collection<Player> members, Str...
method wrapEntity (line 226) | DungeonMob wrapEntity(LivingEntity entity, GameWorld gameWorld, String...
method wrapEntity (line 236) | DungeonMob wrapEntity(LivingEntity entity, GameWorld gameWorld, ExMob ...
method wrapEntity (line 247) | DungeonMob wrapEntity(LivingEntity entity, GameWorld gameWorld, ExMob ...
method getDungeonMob (line 256) | DungeonMob getDungeonMob(LivingEntity entity);
method getPlayerGroup (line 264) | PlayerGroup getPlayerGroup(Player member);
method getGame (line 272) | Game getGame(Player player);
method getGame (line 280) | Game getGame(World world);
method getGameWorld (line 288) | GameWorld getGameWorld(World world);
method getEditWorld (line 296) | EditWorld getEditWorld(World world);
method isInstance (line 304) | boolean isInstance(World world);
method isDungeonItem (line 314) | boolean isDungeonItem(ItemStack itemStack);
method setDungeonItem (line 325) | ItemStack setDungeonItem(ItemStack itemStack, boolean dungeonItem);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/Requirement.java
type Requirement (line 26) | public interface Requirement {
method setup (line 33) | void setup(ConfigurationSection config);
method check (line 41) | boolean check(Player player);
method getCheckMessage (line 49) | BaseComponent[] getCheckMessage(Player player);
method demand (line 57) | void demand(Player player);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/Reward.java
type Reward (line 25) | public interface Reward {
method giveTo (line 32) | void giveTo(Player player);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/BuildMode.java
type BuildMode (line 28) | public interface BuildMode {
class Registry (line 33) | static class Registry {
method check (line 69) | boolean check(Player player, GameWorld gameWorld, Block block);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/CollectionGameRule.java
class CollectionGameRule (line 29) | public class CollectionGameRule<T, V extends Collection<T>> extends Game...
method CollectionGameRule (line 38) | public CollectionGameRule(String key, V defaultValue, Copier<V> copier) {
method CollectionGameRule (line 50) | public CollectionGameRule(String key, V defaultValue, ConfigReader<V> ...
method isValidValue (line 62) | @Override
method fromConfig (line 72) | @Override
method setStateWithoutNull (line 91) | private void setStateWithoutNull(GameRuleContainer container, V v) {
method merge (line 98) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/ConfigReader.java
type ConfigReader (line 38) | @FunctionalInterface
method read (line 118) | V read(DungeonsAPI api, Object value);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/Copier.java
type Copier (line 23) | @FunctionalInterface
method copy (line 32) | T copy(T original);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/Dungeon.java
type Dungeon (line 27) | public interface Dungeon {
method getName (line 34) | String getName();
method setName (line 41) | void setName(String name);
method isMultiFloor (line 48) | boolean isMultiFloor();
method getMap (line 57) | default ResourceWorld getMap() {
method getStartFloor (line 66) | ResourceWorld getStartFloor();
method setStartFloor (line 73) | void setStartFloor(ResourceWorld startFloor);
method getEndFloor (line 80) | ResourceWorld getEndFloor();
method setEndFloor (line 87) | void setEndFloor(ResourceWorld endFloor);
method getFloors (line 94) | List<ResourceWorld> getFloors();
method addFloor (line 101) | void addFloor(ResourceWorld resource);
method removeFloor (line 108) | void removeFloor(ResourceWorld resource);
method getFloorCount (line 117) | int getFloorCount();
method setFloorCount (line 124) | void setFloorCount(int floorCount);
method getRemoveWhenPlayed (line 131) | boolean getRemoveWhenPlayed();
method setRemoveWhenPlayed (line 138) | void setRemoveWhenPlayed(boolean removeWhenPlayed);
method getOverrideValues (line 145) | GameRuleContainer getOverrideValues();
method getDefaultValues (line 153) | GameRuleContainer getDefaultValues();
method containsFloor (line 161) | default boolean containsFloor(ResourceWorld resource) {
method containsFloor (line 175) | default boolean containsFloor(String mapName) {
method getRules (line 191) | GameRuleContainer getRules();
method setRules (line 198) | void setRules(GameRuleContainer rules);
method setupRules (line 204) | void setupRules();
method isSetupCorrect (line 211) | boolean isSetupCorrect();
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/Game.java
type Game (line 32) | public interface Game {
method isTutorial (line 39) | boolean isTutorial();
method setTutorial (line 46) | void setTutorial(boolean tutorial);
method getGroups (line 53) | List<PlayerGroup> getGroups();
method addGroup (line 60) | void addGroup(PlayerGroup group);
method removeGroup (line 67) | void removeGroup(PlayerGroup group);
method hasStarted (line 74) | boolean hasStarted();
method setStarted (line 81) | void setStarted(boolean started);
method getWorld (line 88) | GameWorld getWorld();
method setWorld (line 95) | void setWorld(GameWorld gameWorld);
method hasRewards (line 102) | boolean hasRewards();
method setRewards (line 109) | void setRewards(boolean enabled);
method getRules (line 118) | default GameRuleContainer getRules() {
method getUnplayedFloors (line 127) | List<ResourceWorld> getUnplayedFloors();
method addUnplayedFloor (line 135) | boolean addUnplayedFloor(ResourceWorld unplayedFloor);
method removeUnplayedFloor (line 145) | boolean removeUnplayedFloor(ResourceWorld unplayedFloor, boolean force);
method getNextFloor (line 152) | ResourceWorld getNextFloor();
method setNextFloor (line 159) | void setNextFloor(ResourceWorld floor);
method getFloorCount (line 166) | int getFloorCount();
method getDungeon (line 173) | Dungeon getDungeon();
method getPlayers (line 180) | Collection<Player> getPlayers();
method isEmpty (line 187) | boolean isEmpty();
method ensureWorldIsLoaded (line 195) | GameWorld ensureWorldIsLoaded(boolean ignoreLimit);
method start (line 202) | boolean start();
method delete (line 207) | void delete();
method isFinished (line 214) | default boolean isFinished() {
method sendMessage (line 223) | default void sendMessage(String message) {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/GameGoal.java
class GameGoal (line 25) | public class GameGoal extends GameRuleContainer {
method GameGoal (line 70) | public GameGoal(Type type) {
method getType (line 79) | public Type getType() {
type Type (line 86) | public enum Type {
method Type (line 110) | Type(GameRule... components) {
method getComponents (line 119) | public GameRule[] getComponents() {
method hasComponent (line 129) | public boolean hasComponent(GameRule component) {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/GameRule.java
class GameRule (line 44) | public class GameRule<V> {
method values (line 334) | private static GameRule[] values() {
method GameRule (line 361) | public GameRule(Class<V> type, String key, V defaultValue) {
method GameRule (line 373) | public GameRule(Class<V> type, String key, V defaultValue, ConfigReade...
method getKey (line 383) | public String getKey() {
method getDefaultValue (line 392) | public V getDefaultValue() {
method isValidValue (line 402) | public boolean isValidValue(Object value) {
method fromConfig (line 416) | public V fromConfig(DungeonsAPI api, GameRuleContainer container, Conf...
method merge (line 450) | public void merge(GameRuleContainer overriding, GameRuleContainer subs...
method toString (line 456) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/GameRuleContainer.java
class GameRuleContainer (line 25) | public class GameRuleContainer {
method GameRuleContainer (line 32) | public GameRuleContainer() {
method GameRuleContainer (line 41) | public GameRuleContainer(GameRuleContainer container) {
method getState (line 52) | public <V> V getState(GameRule<V> rule) {
method setState (line 67) | public <V> void setState(GameRule<V> rule, V state) {
method unsetState (line 82) | public void unsetState(GameRule<?> rule) {
method merge (line 91) | public void merge(GameRuleContainer subsidiary) {
method toString (line 95) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/dungeon/MapGameRule.java
class MapGameRule (line 30) | public class MapGameRule<TK, TV, V extends Map<TK, TV>> extends GameRule...
method MapGameRule (line 40) | public MapGameRule(String key, V defaultValue, ConfigReader<V> reader,...
method isValidValue (line 53) | @Override
method fromConfig (line 63) | @Override
method merge (line 78) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/DataReloadEvent.java
class DataReloadEvent (line 26) | public class DataReloadEvent extends Event implements Cancellable {
method getHandlers (line 31) | @Override
method getHandlerList (line 36) | public static HandlerList getHandlerList() {
method isCancelled (line 40) | @Override
method setCancelled (line 45) | @Override
method toString (line 50) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupCollectRewardEvent.java
class GroupCollectRewardEvent (line 30) | public class GroupCollectRewardEvent extends GroupEvent implements Cance...
method GroupCollectRewardEvent (line 38) | public GroupCollectRewardEvent(PlayerGroup group, GamePlayer collector...
method getCollector (line 51) | public GamePlayer getCollector() {
method getReward (line 60) | public Reward getReward() {
method setReward (line 69) | public void setReward(Reward reward) {
method getHandlers (line 73) | @Override
method getHandlerList (line 78) | public static HandlerList getHandlerList() {
method isCancelled (line 82) | @Override
method setCancelled (line 87) | @Override
method toString (line 92) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupCreateEvent.java
class GroupCreateEvent (line 27) | public class GroupCreateEvent extends GroupEvent implements Cancellable {
type Cause (line 32) | public enum Cause {
method GroupCreateEvent (line 57) | public GroupCreateEvent(PlayerGroup group, GlobalPlayer creator, Cause...
method getCreator (line 68) | public GlobalPlayer getCreator() {
method getCause (line 77) | public Cause getCause() {
method getHandlers (line 81) | @Override
method getHandlerList (line 86) | public static HandlerList getHandlerList() {
method isCancelled (line 90) | @Override
method setCancelled (line 95) | @Override
method toString (line 100) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupDisbandEvent.java
class GroupDisbandEvent (line 27) | public class GroupDisbandEvent extends GroupEvent implements Cancellable {
type Cause (line 29) | public enum Cause {
method GroupDisbandEvent (line 46) | public GroupDisbandEvent(PlayerGroup group, Cause cause) {
method GroupDisbandEvent (line 51) | public GroupDisbandEvent(PlayerGroup group, GlobalPlayer disbander, Ca...
method getDisbander (line 64) | public GlobalPlayer getDisbander() {
method getCause (line 73) | public Cause getCause() {
method getHandlers (line 77) | @Override
method getHandlerList (line 82) | public static HandlerList getHandlerList() {
method isCancelled (line 86) | @Override
method setCancelled (line 91) | @Override
method toString (line 96) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupEvent.java
class GroupEvent (line 25) | public abstract class GroupEvent extends Event {
method GroupEvent (line 29) | protected GroupEvent(PlayerGroup group) {
method getGroup (line 38) | public PlayerGroup getGroup() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupFinishDungeonEvent.java
class GroupFinishDungeonEvent (line 30) | public class GroupFinishDungeonEvent extends GroupEvent implements Cance...
method GroupFinishDungeonEvent (line 37) | public GroupFinishDungeonEvent(PlayerGroup group, Dungeon dungeon) {
method getDungeon (line 47) | public Dungeon getDungeon() {
method getHandlers (line 51) | @Override
method getHandlerList (line 56) | public static HandlerList getHandlerList() {
method isCancelled (line 60) | @Override
method setCancelled (line 65) | @Override
method toString (line 70) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupFinishFloorEvent.java
class GroupFinishFloorEvent (line 28) | public class GroupFinishFloorEvent extends GroupEvent implements Cancell...
method GroupFinishFloorEvent (line 36) | public GroupFinishFloorEvent(PlayerGroup group, GameWorld finished, Re...
method getFinished (line 47) | public GameWorld getFinished() {
method getNext (line 56) | public ResourceWorld getNext() {
method setNext (line 67) | public void setNext(ResourceWorld next) {
method getHandlers (line 71) | @Override
method getHandlerList (line 76) | public static HandlerList getHandlerList() {
method isCancelled (line 80) | @Override
method setCancelled (line 85) | @Override
method toString (line 90) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupPlayerJoinEvent.java
class GroupPlayerJoinEvent (line 27) | public class GroupPlayerJoinEvent extends GroupEvent implements Cancella...
method GroupPlayerJoinEvent (line 35) | public GroupPlayerJoinEvent(PlayerGroup group, GlobalPlayer player, bo...
method getPlayer (line 46) | public GlobalPlayer getPlayer() {
method isCreator (line 55) | public boolean isCreator() {
method getHandlers (line 59) | @Override
method getHandlerList (line 64) | public static HandlerList getHandlerList() {
method isCancelled (line 68) | @Override
method setCancelled (line 73) | @Override
method toString (line 78) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupPlayerKickEvent.java
class GroupPlayerKickEvent (line 27) | public class GroupPlayerKickEvent extends GroupEvent implements Cancella...
type Cause (line 29) | public enum Cause {
method GroupPlayerKickEvent (line 57) | public GroupPlayerKickEvent(PlayerGroup group, GlobalPlayer player, Ca...
method getPlayer (line 68) | public GlobalPlayer getPlayer() {
method getCause (line 77) | public Cause getCause() {
method getHandlers (line 81) | @Override
method getHandlerList (line 86) | public static HandlerList getHandlerList() {
method isCancelled (line 90) | @Override
method setCancelled (line 95) | @Override
method toString (line 100) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupPlayerLeaveEvent.java
class GroupPlayerLeaveEvent (line 27) | public class GroupPlayerLeaveEvent extends GroupEvent implements Cancell...
method GroupPlayerLeaveEvent (line 34) | public GroupPlayerLeaveEvent(PlayerGroup group, GlobalPlayer player) {
method getPlayer (line 44) | public GlobalPlayer getPlayer() {
method getHandlers (line 48) | @Override
method getHandlerList (line 53) | public static HandlerList getHandlerList() {
method isCancelled (line 57) | @Override
method setCancelled (line 62) | @Override
method toString (line 67) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupScoreEvent.java
class GroupScoreEvent (line 27) | public class GroupScoreEvent extends GroupEvent implements Cancellable {
method GroupScoreEvent (line 35) | public GroupScoreEvent(PlayerGroup group, GamePlayer scorer, PlayerGro...
method getScorer (line 46) | public GamePlayer getScorer() {
method getLoserGroup (line 55) | public PlayerGroup getLoserGroup() {
method getHandlers (line 59) | @Override
method getHandlerList (line 64) | public static HandlerList getHandlerList() {
method isCancelled (line 68) | @Override
method setCancelled (line 73) | @Override
method toString (line 78) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupStartFloorEvent.java
class GroupStartFloorEvent (line 27) | public class GroupStartFloorEvent extends GroupEvent implements Cancella...
method GroupStartFloorEvent (line 34) | public GroupStartFloorEvent(PlayerGroup group, GameWorld gameWorld) {
method getGameWorld (line 44) | public GameWorld getGameWorld() {
method getHandlers (line 48) | @Override
method getHandlerList (line 53) | public static HandlerList getHandlerList() {
method isCancelled (line 57) | @Override
method setCancelled (line 62) | @Override
method toString (line 67) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/mob/DungeonMobDeathEvent.java
class DungeonMobDeathEvent (line 27) | public class DungeonMobDeathEvent extends DungeonMobEvent implements Can...
method DungeonMobDeathEvent (line 32) | public DungeonMobDeathEvent(DungeonMob mob) {
method getKiller (line 41) | public Player getKiller() {
method getHandlers (line 48) | @Override
method getHandlerList (line 53) | public static HandlerList getHandlerList() {
method isCancelled (line 57) | @Override
method setCancelled (line 62) | @Override
method toString (line 67) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/mob/DungeonMobEvent.java
class DungeonMobEvent (line 26) | public abstract class DungeonMobEvent extends Event {
method DungeonMobEvent (line 30) | protected DungeonMobEvent(DungeonMob mob) {
method getDungeonMob (line 39) | public DungeonMob getDungeonMob() {
method getBukkitEntity (line 48) | public LivingEntity getBukkitEntity() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/mob/DungeonMobSpawnEvent.java
class DungeonMobSpawnEvent (line 27) | public class DungeonMobSpawnEvent extends DungeonMobEvent {
method DungeonMobSpawnEvent (line 31) | public DungeonMobSpawnEvent(DungeonMob mob) {
method getHandlers (line 35) | @Override
method getHandlerList (line 40) | public static HandlerList getHandlerList() {
method toString (line 44) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/player/EditPlayerEditEvent.java
class EditPlayerEditEvent (line 25) | public class EditPlayerEditEvent extends EditPlayerEvent {
method EditPlayerEditEvent (line 31) | public EditPlayerEditEvent(EditPlayer editPlayer, boolean newlyLoaded) {
method isNewlyLoaded (line 41) | public boolean isNewlyLoaded() {
method getHandlers (line 45) | @Override
method getHandlerList (line 50) | public static HandlerList getHandlerList() {
method toString (line 54) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/player/EditPlayerEvent.java
class EditPlayerEvent (line 24) | public abstract class EditPlayerEvent extends GlobalPlayerEvent {
method EditPlayerEvent (line 26) | protected EditPlayerEvent(EditPlayer editPlayer) {
method getEditPlayer (line 35) | public EditPlayer getEditPlayer() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/player/EditPlayerLeaveEvent.java
class EditPlayerLeaveEvent (line 26) | public class EditPlayerLeaveEvent extends EditPlayerEvent implements Can...
method EditPlayerLeaveEvent (line 34) | public EditPlayerLeaveEvent(EditPlayer editPlayer, boolean escape, boo...
method isEscape (line 45) | public boolean isEscape() {
method getUnloadIfEmpty (line 54) | public boolean getUnloadIfEmpty() {
method setUnloadIfEmpty (line 63) | public void setUnloadIfEmpty(boolean unloadIfEmpty) {
method getHandlers (line 67) | @Override
method getHandlerList (line 72) | public static HandlerList getHandlerList() {
method isCancelled (line 76) | @Override
method setCancelled (line 81) | @Override
method toString (line 86) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/player/GamePlayerDeathEvent.java
class GamePlayerDeathEvent (line 26) | public class GamePlayerDeathEvent extends GamePlayerEvent implements Can...
method GamePlayerDeathEvent (line 34) | public GamePlayerDeathEvent(GamePlayer gamePlayer, boolean keepInvento...
method isInventoryKept (line 45) | public boolean isInventoryKept() {
method setInventoryKept (line 54) | public void setInventoryKept(boolean keepInventory) {
method getLostLives (line 63) | public int getLostLives() {
method setLostLives (line 72) | public void setLostLives(int lostLives) {
method getHandlers (line 76) | @Override
method getHandlerList (line 81) | public static HandlerList getHandlerList() {
method isCancelled (line 85) | @Override
method setCancelled (line 90) | @Override
method toString (line 95) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/player/GamePlayerEvent.java
class GamePlayerEvent (line 24) | public abstract class GamePlayerEvent extends GlobalPlayerEvent {
method GamePlayerEvent (line 26) | protected GamePlayerEvent(GamePlayer gamePlayer) {
method getGamePlayer (line 35) | public GamePlayer getGamePlayer() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/player/GamePlayerFinishEvent.java
class GamePlayerFinishEvent (line 29) | public class GamePlayerFinishEvent extends GamePlayerEvent implements Ca...
method GamePlayerFinishEvent (line 36) | public GamePlayerFinishEvent(GamePlayer gamePlayer, boolean hasToWait) {
method getHasToWait (line 46) | public boolean getHasToWait() {
method getHandlers (line 50) | @Override
method getHandlerList (line 55) | public static HandlerList getHandlerList() {
method isCancelled (line 59) | @Override
method setCancelled (line 64) | @Override
method toString (line 69) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/player/GlobalPlayerEvent.java
class GlobalPlayerEvent (line 26) | public abstract class GlobalPlayerEvent extends Event {
method GlobalPlayerEvent (line 30) | protected GlobalPlayerEvent(GlobalPlayer globalPlayer) {
method getGlobalPlayer (line 39) | public GlobalPlayer getGlobalPlayer() {
method getBukkitPlayer (line 48) | public Player getBukkitPlayer() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/player/GlobalPlayerRewardPayOutEvent.java
class GlobalPlayerRewardPayOutEvent (line 29) | public class GlobalPlayerRewardPayOutEvent extends GlobalPlayerEvent imp...
method GlobalPlayerRewardPayOutEvent (line 36) | public GlobalPlayerRewardPayOutEvent(GlobalPlayer globalPlayer, List<R...
method getRewards (line 46) | public List<Reward> getRewards() {
method getHandlers (line 50) | @Override
method getHandlerList (line 55) | public static HandlerList getHandlerList() {
method isCancelled (line 59) | @Override
method setCancelled (line 64) | @Override
method toString (line 69) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/requirement/RequirementCheckEvent.java
class RequirementCheckEvent (line 31) | public class RequirementCheckEvent extends RequirementEvent implements C...
method RequirementCheckEvent (line 40) | public RequirementCheckEvent(Requirement requirement, Dungeon dungeon,...
method getPlayer (line 52) | public Player getPlayer() {
method setPlayer (line 61) | public void setPlayer(Player player) {
method getCheckMessage (line 72) | public BaseComponent[] getCheckMessage() {
method setCheckMessage (line 82) | public void setCheckMessage(BaseComponent[] checkMessage) {
method isInventoryKept (line 91) | public boolean isInventoryKept() {
method getHandlers (line 95) | @Override
method getHandlerList (line 100) | public static HandlerList getHandlerList() {
method isCancelled (line 104) | @Override
method setCancelled (line 109) | @Override
method toString (line 114) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/requirement/RequirementDemandEvent.java
class RequirementDemandEvent (line 30) | public class RequirementDemandEvent extends RequirementEvent implements ...
method RequirementDemandEvent (line 38) | public RequirementDemandEvent(Requirement requirement, Dungeon dungeon...
method getPlayer (line 49) | public Player getPlayer() {
method setPlayer (line 58) | public void setPlayer(Player player) {
method isInventoryKept (line 67) | public boolean isInventoryKept() {
method getHandlers (line 71) | @Override
method getHandlerList (line 76) | public static HandlerList getHandlerList() {
method isCancelled (line 80) | @Override
method setCancelled (line 85) | @Override
method toString (line 90) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/requirement/RequirementEvent.java
class RequirementEvent (line 26) | public abstract class RequirementEvent extends Event {
method RequirementEvent (line 31) | public RequirementEvent(Requirement requirement, Dungeon dungeon) {
method getDungeon (line 41) | public Dungeon getDungeon() {
method getRequirement (line 50) | public Requirement getRequirement() {
method setRequirement (line 59) | public void setRequirement(Requirement requirement) {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/trigger/TriggerActionEvent.java
class TriggerActionEvent (line 28) | public class TriggerActionEvent extends TriggerEvent implements Cancella...
method TriggerActionEvent (line 35) | public TriggerActionEvent(Trigger trigger, List<TriggerListener> fired) {
method getFiredListeners (line 45) | public List<TriggerListener> getFiredListeners() {
method getHandlers (line 49) | @Override
method getHandlerList (line 54) | public static HandlerList getHandlerList() {
method isCancelled (line 58) | @Override
method setCancelled (line 63) | @Override
method toString (line 68) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/trigger/TriggerEvent.java
class TriggerEvent (line 25) | public abstract class TriggerEvent extends Event {
method TriggerEvent (line 29) | protected TriggerEvent(Trigger trigger) {
method getTrigger (line 38) | public Trigger getTrigger() {
method setTrigger (line 47) | public void setTrigger(Trigger trigger) {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/trigger/TriggerRegistrationEvent.java
class TriggerRegistrationEvent (line 26) | public class TriggerRegistrationEvent extends TriggerEvent implements Ca...
method TriggerRegistrationEvent (line 31) | public TriggerRegistrationEvent(Trigger trigger) {
method getHandlers (line 35) | @Override
method getHandlerList (line 40) | public static HandlerList getHandlerList() {
method isCancelled (line 44) | @Override
method setCancelled (line 49) | @Override
method toString (line 54) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/trigger/TriggerUnregistrationEvent.java
class TriggerUnregistrationEvent (line 26) | public class TriggerUnregistrationEvent extends TriggerEvent implements ...
method TriggerUnregistrationEvent (line 31) | public TriggerUnregistrationEvent(Trigger trigger) {
method getHandlers (line 35) | @Override
method getHandlerList (line 40) | public static HandlerList getHandlerList() {
method isCancelled (line 44) | @Override
method setCancelled (line 49) | @Override
method toString (line 54) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/EditWorldEvent.java
class EditWorldEvent (line 24) | public abstract class EditWorldEvent extends InstanceWorldEvent {
method EditWorldEvent (line 26) | protected EditWorldEvent(EditWorld editWorld) {
method getEditWorld (line 35) | public EditWorld getEditWorld() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/EditWorldGenerateEvent.java
class EditWorldGenerateEvent (line 25) | public class EditWorldGenerateEvent extends EditWorldEvent {
method EditWorldGenerateEvent (line 29) | public EditWorldGenerateEvent(EditWorld editWorld) {
method getHandlers (line 33) | @Override
method getHandlerList (line 38) | public static HandlerList getHandlerList() {
method toString (line 42) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/EditWorldSaveEvent.java
class EditWorldSaveEvent (line 26) | public class EditWorldSaveEvent extends EditWorldEvent implements Cancel...
method EditWorldSaveEvent (line 31) | public EditWorldSaveEvent(EditWorld editWorld) {
method getHandlers (line 35) | @Override
method getHandlerList (line 40) | public static HandlerList getHandlerList() {
method isCancelled (line 44) | @Override
method setCancelled (line 49) | @Override
method toString (line 54) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/EditWorldUnloadEvent.java
class EditWorldUnloadEvent (line 25) | public class EditWorldUnloadEvent extends InstanceWorldUnloadEvent {
method EditWorldUnloadEvent (line 32) | public EditWorldUnloadEvent(EditWorld editWorld, boolean save) {
method getSave (line 42) | public boolean getSave() {
method setSave (line 51) | public void setSave(boolean save) {
method getHandlers (line 55) | @Override
method getHandlerList (line 60) | public static HandlerList getHandlerList() {
method isCancelled (line 64) | @Override
method setCancelled (line 69) | @Override
method toString (line 74) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/GameWorldEvent.java
class GameWorldEvent (line 25) | public abstract class GameWorldEvent extends InstanceWorldEvent {
method GameWorldEvent (line 29) | protected GameWorldEvent(GameWorld gameWorld, Dungeon dungeon) {
method getGameWorld (line 39) | public GameWorld getGameWorld() {
method getDungeon (line 48) | public Dungeon getDungeon() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/GameWorldStartGameEvent.java
class GameWorldStartGameEvent (line 27) | public class GameWorldStartGameEvent extends GameWorldEvent implements C...
method GameWorldStartGameEvent (line 34) | public GameWorldStartGameEvent(GameWorld gameWorld, Game game) {
method getGame (line 44) | public Game getGame() {
method getHandlers (line 48) | @Override
method getHandlerList (line 53) | public static HandlerList getHandlerList() {
method isCancelled (line 57) | @Override
method setCancelled (line 62) | @Override
method toString (line 67) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/InstanceWorldEvent.java
class InstanceWorldEvent (line 26) | public abstract class InstanceWorldEvent extends Event {
method InstanceWorldEvent (line 30) | protected InstanceWorldEvent(InstanceWorld instance) {
method getInstance (line 39) | public InstanceWorld getInstance() {
method getBukkitWorld (line 48) | public World getBukkitWorld() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/InstanceWorldPostUnloadEvent.java
class InstanceWorldPostUnloadEvent (line 25) | public class InstanceWorldPostUnloadEvent extends ResourceWorldEvent {
method InstanceWorldPostUnloadEvent (line 30) | public InstanceWorldPostUnloadEvent(ResourceWorld resource, String ins...
method getInstanceWorldName (line 40) | public String getInstanceWorldName() {
method wasEditInstance (line 49) | public boolean wasEditInstance() {
method getHandlers (line 53) | @Override
method getHandlerList (line 58) | public static HandlerList getHandlerList() {
method toString (line 62) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/InstanceWorldUnloadEvent.java
class InstanceWorldUnloadEvent (line 26) | public class InstanceWorldUnloadEvent extends InstanceWorldEvent impleme...
method InstanceWorldUnloadEvent (line 31) | public InstanceWorldUnloadEvent(InstanceWorld instance) {
method getHandlers (line 35) | @Override
method getHandlerList (line 40) | public static HandlerList getHandlerList() {
method isCancelled (line 44) | @Override
method setCancelled (line 49) | @Override
method toString (line 54) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/ResourceWorldEvent.java
class ResourceWorldEvent (line 25) | public abstract class ResourceWorldEvent extends Event {
method ResourceWorldEvent (line 29) | protected ResourceWorldEvent(ResourceWorld resource) {
method getResource (line 38) | public ResourceWorld getResource() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/event/world/ResourceWorldInstantiateEvent.java
class ResourceWorldInstantiateEvent (line 26) | public class ResourceWorldInstantiateEvent extends ResourceWorldEvent im...
method ResourceWorldInstantiateEvent (line 33) | public ResourceWorldInstantiateEvent(ResourceWorld resource, String in...
method isEditInstance (line 43) | public boolean isEditInstance() {
method getInstanceWorldName (line 54) | public String getInstanceWorldName() {
method getHandlers (line 58) | @Override
method getHandlerList (line 63) | public static HandlerList getHandlerList() {
method isCancelled (line 67) | @Override
method setCancelled (line 72) | @Override
method toString (line 77) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/mob/DungeonMob.java
type DungeonMob (line 25) | public interface DungeonMob {
method getEntity (line 32) | LivingEntity getEntity();
method getType (line 39) | ExMob getType();
method getTriggerId (line 46) | String getTriggerId();
FILE: api/src/main/java/de/erethon/dungeonsxl/api/mob/ExternalMobProvider.java
type ExternalMobProvider (line 25) | public interface ExternalMobProvider {
method getIdentifier (line 32) | String getIdentifier();
method getRawCommand (line 41) | String getRawCommand();
method getCommand (line 57) | default String getCommand(String mob, String world, double x, double y...
method summon (line 73) | default void summon(String mob, Location location) {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/mob/MobSet.java
class MobSet (line 26) | public class MobSet {
method MobSet (line 34) | public MobSet(String id) {
method getId (line 38) | public String getId() {
method getSize (line 42) | public int getSize() {
method getReserved (line 46) | public int getReserved() {
method allocate (line 50) | public void allocate(int amount) {
method initialize (line 55) | public void initialize() {
method getKilled (line 59) | public int getKilled() {
method spawn (line 63) | public void spawn(LivingEntity entity) {
method kill (line 67) | public void kill(LivingEntity entity) {
method checkTrigger (line 71) | public boolean checkTrigger(int amount) {
method checkTrigger (line 75) | public boolean checkTrigger(double quota) {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/player/EditPlayer.java
type EditPlayer (line 27) | public interface EditPlayer extends InstancePlayer {
method getEditWorld (line 34) | EditWorld getEditWorld();
method getCopiedLines (line 41) | String[] getCopiedLines();
method setCopiedLines (line 48) | void setCopiedLines(String[] copiedLines);
method leave (line 55) | @Override
method leave (line 65) | void leave(boolean unloadIfEmpty);
method escape (line 70) | void escape();
FILE: api/src/main/java/de/erethon/dungeonsxl/api/player/GamePlayer.java
type GamePlayer (line 30) | public interface GamePlayer extends InstancePlayer {
method getGame (line 37) | default Game getGame() {
method getGameWorld (line 46) | default GameWorld getGameWorld() {
method isReady (line 57) | boolean isReady();
method isFinished (line 68) | boolean isFinished();
method setFinished (line 75) | void setFinished(boolean finished);
method getPlayerClass (line 82) | PlayerClass getPlayerClass();
method setPlayerClass (line 89) | void setPlayerClass(PlayerClass playerClass);
method getLastCheckpoint (line 96) | Location getLastCheckpoint();
method setLastCheckpoint (line 105) | void setLastCheckpoint(Location checkpoint);
method getOfflineTimeMillis (line 112) | long getOfflineTimeMillis();
method setOfflineTimeMillis (line 119) | void setOfflineTimeMillis(long time);
method getInitialLives (line 126) | int getInitialLives();
method setInitialLives (line 133) | void setInitialLives(int lives);
method getLives (line 140) | int getLives();
method setLives (line 149) | void setLives(int lives);
method getWolf (line 157) | @Deprecated
method setWolf (line 166) | @Deprecated
method isStealingFlag (line 174) | boolean isStealingFlag();
method getRobbedGroup (line 181) | PlayerGroup getRobbedGroup();
method setRobbedGroup (line 188) | void setRobbedGroup(PlayerGroup group);
method captureFlag (line 193) | void captureFlag();
method leave (line 200) | @Override
method leave (line 210) | void leave(boolean sendMessages);
method kill (line 215) | void kill();
method ready (line 224) | boolean ready();
method respawn (line 229) | void respawn();
method finish (line 236) | default void finish() {
method finish (line 245) | void finish(boolean sendMessages);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/player/GlobalPlayer.java
type GlobalPlayer (line 35) | public interface GlobalPlayer extends PlayerWrapper {
method getGroup (line 42) | PlayerGroup getGroup();
method isInGroupChat (line 49) | boolean isInGroupChat();
method setInGroupChat (line 56) | void setInGroupChat(boolean groupChat);
method isInChatSpyMode (line 63) | boolean isInChatSpyMode();
method setInChatSpyMode (line 70) | void setInChatSpyMode(boolean chatSpyMode);
method hasPermission (line 78) | boolean hasPermission(String permission);
method getRewardItems (line 85) | List<ItemStack> getRewardItems();
method setRewardItems (line 92) | void setRewardItems(List<ItemStack> rewardItems);
method hasRewardItemsLeft (line 99) | boolean hasRewardItemsLeft();
method isInBreakMode (line 106) | boolean isInBreakMode();
method setInBreakMode (line 113) | void setInBreakMode(boolean breakMode);
method sendMessage (line 122) | default void sendMessage(String message) {
method reset (line 131) | void reset(boolean gameFinished);
method reset (line 139) | void reset(Location tpLoc, boolean keepInventory);
method checkRequirements (line 149) | boolean checkRequirements(Dungeon dungeon);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/player/GroupAdapter.java
class GroupAdapter (line 31) | public abstract class GroupAdapter<T> {
method GroupAdapter (line 39) | protected GroupAdapter(DungeonsAPI dxl) {
method createDungeonGroup (line 49) | public abstract PlayerGroup createDungeonGroup(T eGroup);
method getDungeonGroup (line 57) | public PlayerGroup getDungeonGroup(T eGroup) {
method getExternalGroup (line 75) | public T getExternalGroup(PlayerGroup dGroup) {
method getOrCreateDungeonGroup (line 88) | public PlayerGroup getOrCreateDungeonGroup(T eGroup, int maxSize) {
method getOrCreateDungeonGroup (line 107) | public PlayerGroup getOrCreateDungeonGroup(T eGroup) {
method getExternalGroup (line 124) | public abstract T getExternalGroup(Player member);
method getGroupOnlineSize (line 132) | public abstract int getGroupOnlineSize(T eGroup);
method areCorresponding (line 145) | public boolean areCorresponding(PlayerGroup dGroup, T eGroup) {
method isExternalGroupMember (line 159) | public boolean isExternalGroupMember(Player player) {
method isExternalGroupMember (line 170) | public abstract boolean isExternalGroupMember(T eGroup, Player player);
method clear (line 175) | public void clear() {
method removeReference (line 184) | public void removeReference(PlayerGroup dGroup) {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/player/InstancePlayer.java
type InstancePlayer (line 28) | public interface InstancePlayer extends GlobalPlayer {
method getWorld (line 35) | World getWorld();
method getInstanceWorld (line 42) | InstanceWorld getInstanceWorld();
method leave (line 47) | void leave();
FILE: api/src/main/java/de/erethon/dungeonsxl/api/player/PlayerCache.java
class PlayerCache (line 29) | public class PlayerCache extends Registry<Player, GlobalPlayer> {
method get (line 37) | public GlobalPlayer get(UUID uuid) {
method getInstancePlayer (line 47) | public InstancePlayer getInstancePlayer(Player player) {
method getEditPlayer (line 57) | public EditPlayer getEditPlayer(Player player) {
method getGamePlayer (line 67) | public GamePlayer getGamePlayer(Player player) {
method getFirstInstancePlayerIf (line 77) | public InstancePlayer getFirstInstancePlayerIf(Predicate<InstancePlaye...
method getFirstEditPlayerIf (line 96) | public EditPlayer getFirstEditPlayerIf(Predicate<EditPlayer> predicate) {
method getFirstGamePlayerIf (line 115) | public GamePlayer getFirstGamePlayerIf(Predicate<GamePlayer> predicate) {
method getAllInstancePlayersIf (line 134) | public Collection<InstancePlayer> getAllInstancePlayersIf(Predicate<In...
method getAllEditPlayersIf (line 154) | public Collection<EditPlayer> getAllEditPlayersIf(Predicate<EditPlayer...
method getAllGamePlayersIf (line 174) | public Collection<GamePlayer> getAllGamePlayersIf(Predicate<GamePlayer...
method getAllInstancePlayers (line 193) | public Collection<InstancePlayer> getAllInstancePlayers() {
method getAllEditPlayers (line 208) | public Collection<EditPlayer> getAllEditPlayers() {
method getAllGamePlayers (line 223) | public Collection<GamePlayer> getAllGamePlayers() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/player/PlayerClass.java
class PlayerClass (line 30) | public class PlayerClass {
method PlayerClass (line 43) | public PlayerClass(XLib xlib, File file) {
method PlayerClass (line 54) | public PlayerClass(XLib xlib, String name, FileConfiguration config) {
method PlayerClass (line 66) | public PlayerClass(String name, List<ItemStack> items, boolean dog) {
method getName (line 77) | public String getName() {
method getItems (line 86) | public List<ItemStack> getItems() {
method addItem (line 95) | public void addItem(ItemStack itemStack) {
method removeItem (line 104) | public void removeItem(ItemStack itemStack) {
method hasDog (line 114) | @Deprecated
method setDog (line 125) | @Deprecated
method toString (line 130) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/player/PlayerGroup.java
type PlayerGroup (line 38) | public interface PlayerGroup {
type Color (line 43) | public enum Color {
method Color (line 66) | Color(ChatColor chat, DyeColor dye, VanillaItem woolMaterial) {
method getChatColor (line 77) | public ChatColor getChatColor() {
method getDyeColor (line 86) | public DyeColor getDyeColor() {
method getRGBColor (line 95) | public int getRGBColor() {
method getWoolMaterial (line 104) | public VanillaItem getWoolMaterial() {
method getByChatColor (line 114) | public static Color getByChatColor(ChatColor color) {
method getByDyeColor (line 129) | public static Color getByDyeColor(DyeColor color) {
method getByWoolType (line 144) | public static Color getByWoolType(ExItem wool) {
method getId (line 160) | int getId();
method getName (line 169) | String getName();
method getRawName (line 178) | String getRawName();
method setName (line 185) | void setName(String name);
method setName (line 194) | default void setName(Color color) {
method getLeader (line 203) | Player getLeader();
method setLeader (line 210) | void setLeader(Player player);
method getMembers (line 217) | PlayerCollection getMembers();
method addMember (line 226) | default void addMember(Player player) {
method addMember (line 236) | void addMember(Player player, boolean message);
method removeMember (line 245) | default void removeMember(Player player) {
method removeMember (line 255) | void removeMember(Player player, boolean message);
method getInvitedPlayers (line 262) | PlayerCollection getInvitedPlayers();
method addInvitedPlayer (line 270) | void addInvitedPlayer(Player player, boolean message);
method removeInvitedPlayer (line 278) | void removeInvitedPlayer(Player player, boolean message);
method clearOfflineInvitedPlayers (line 283) | void clearOfflineInvitedPlayers();
method getGame (line 290) | Game getGame();
method getGameWorld (line 297) | default GameWorld getGameWorld() {
method getDungeon (line 308) | Dungeon getDungeon();
method isPlaying (line 315) | boolean isPlaying();
method getRewards (line 322) | List<Reward> getRewards();
method addReward (line 329) | void addReward(Reward reward);
method removeReward (line 336) | void removeReward(Reward reward);
method getScore (line 343) | int getScore();
method setScore (line 350) | void setScore(int score);
method getInitialLives (line 357) | int getInitialLives();
method setInitialLives (line 366) | void setInitialLives(int lives);
method getLives (line 373) | int getLives();
method setLives (line 382) | void setLives(int lives);
method isFinished (line 389) | boolean isFinished();
method delete (line 394) | void delete();
method sendMessage (line 404) | default void sendMessage(String message, Player... except) {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/sign/AbstractDSign.java
class AbstractDSign (line 36) | public abstract class AbstractDSign implements DungeonSign {
method AbstractDSign (line 53) | protected AbstractDSign(DungeonsAPI api, Sign sign, String[] lines, In...
method getSign (line 61) | @Override
method getLines (line 66) | @Override
method getLocation (line 71) | @Override
method getEditWorld (line 76) | @Override
method getGameWorld (line 81) | @Override
method getTriggerExpression (line 86) | @Override
method getTriggers (line 91) | @Override
method isInitialized (line 102) | @Override
method updateTriggers (line 107) | @Override
method setToAir (line 126) | @Override
method isErroneous (line 132) | @Override
method markAsErroneous (line 137) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/sign/Button.java
class Button (line 30) | public abstract class Button extends AbstractDSign {
method Button (line 32) | protected Button(DungeonsAPI api, Sign sign, String[] lines, InstanceW...
method push (line 44) | public void push() {
method push (line 61) | public boolean push(Player player) {
method trigger (line 71) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/sign/Deactivatable.java
class Deactivatable (line 28) | public abstract class Deactivatable extends AbstractDSign {
method Deactivatable (line 33) | protected Deactivatable(DungeonsAPI api, Sign sign, String[] lines, In...
method activate (line 46) | public void activate() {
method activate (line 62) | public boolean activate(Player player) {
method deactivate (line 76) | public void deactivate() {
method deactivate (line 92) | public boolean deactivate(Player player) {
method isActive (line 104) | public boolean isActive() {
method isActive (line 117) | public boolean isActive(Player player) {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/sign/DungeonSign.java
type DungeonSign (line 26) | public interface DungeonSign extends TriggerListener {
method getName (line 33) | String getName();
method getBuildPermission (line 40) | String getBuildPermission();
method isOnDungeonInit (line 47) | boolean isOnDungeonInit();
method isProtected (line 54) | boolean isProtected();
method isTriggerLineDisabled (line 63) | @Deprecated
method isSetToAir (line 73) | boolean isSetToAir();
method getSign (line 82) | Sign getSign();
method getLine (line 92) | default String getLine(int index) {
method getLines (line 103) | String[] getLines();
method getEditWorld (line 110) | EditWorld getEditWorld();
method setToAir (line 120) | boolean setToAir();
method validate (line 129) | boolean validate();
method isErroneous (line 136) | boolean isErroneous();
method markAsErroneous (line 143) | void markAsErroneous(String reason);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/sign/Passive.java
class Passive (line 28) | public abstract class Passive extends AbstractDSign {
method Passive (line 30) | protected Passive(DungeonsAPI api, Sign sign, String[] lines, Instance...
method updateTriggers (line 39) | @Override
method trigger (line 48) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/sign/Rocker.java
class Rocker (line 30) | public abstract class Rocker extends Deactivatable {
method Rocker (line 32) | protected Rocker(DungeonsAPI api, Sign sign, String[] lines, InstanceW...
method trigger (line 41) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/sign/Windup.java
class Windup (line 30) | public abstract class Windup extends Deactivatable {
method Windup (line 42) | protected Windup(DungeonsAPI api, Sign sign, String[] lines, InstanceW...
method getDelaySeconds (line 51) | public double getDelaySeconds() {
method getDelayTicks (line 60) | public long getDelayTicks() {
method getIntervalSeconds (line 69) | public double getIntervalSeconds() {
method getIntervalTicks (line 78) | public long getIntervalTicks() {
method getTask (line 87) | public BukkitTask getTask() {
method startTask (line 94) | public void startTask() {
method getRunnable (line 103) | public Runnable getRunnable() {
method setRunnable (line 112) | public void setRunnable(Runnable runnable) {
method getN (line 121) | public int getN() {
method setN (line 130) | public void setN(int n) {
method activate (line 134) | @Override
method deactivate (line 149) | @Override
method trigger (line 162) | @Override
method isWorldFinished (line 178) | public boolean isWorldFinished() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/trigger/AbstractTrigger.java
class AbstractTrigger (line 30) | public abstract class AbstractTrigger implements Trigger {
method AbstractTrigger (line 38) | protected AbstractTrigger(DungeonsAPI api, TriggerListener owner, Logi...
method getValue (line 46) | @Override
method getGameWorld (line 51) | @Override
method isTriggered (line 56) | @Override
method setTriggered (line 61) | @Override
method getTriggeringPlayer (line 66) | @Override
method setTriggeringPlayer (line 71) | @Override
method getListeners (line 76) | @Override
method addListener (line 81) | @Override
method removeListener (line 86) | @Override
method unregisterTrigger (line 91) | @Override
method updateListeners (line 101) | @Override
method toString (line 108) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/trigger/LogicalExpression.java
class LogicalExpression (line 37) | public class LogicalExpression {
type ComponentType (line 39) | private enum ComponentType {
method toString (line 44) | @Override
method LogicalExpression (line 65) | private LogicalExpression(ComponentType type, String text) {
method parse (line 78) | public static LogicalExpression parse(String string) {
method parse (line 94) | private static LogicalExpression parse(ComponentType type, String stri...
method getText (line 177) | public String getText() {
method isAtomic (line 186) | public boolean isAtomic() {
method setTrigger (line 190) | void setTrigger(Trigger trigger) {
method toTrigger (line 203) | public Trigger toTrigger(DungeonsAPI api, TriggerListener listener, bo...
method getContents (line 224) | public List<LogicalExpression> getContents(boolean deep) {
method isSatisfied (line 244) | public boolean isSatisfied() {
method setSatisfied (line 318) | public boolean setSatisfied(boolean satisfied) {
method toString (line 326) | @Override
FILE: api/src/main/java/de/erethon/dungeonsxl/api/trigger/Trigger.java
type Trigger (line 37) | public interface Trigger {
method construct (line 63) | static <T extends Trigger> T construct(char typeKey, DungeonsAPI api, ...
method construct (line 90) | static <T extends Trigger> T construct(Class<T> clss, DungeonsAPI api,...
method getKey (line 111) | char getKey();
method getValue (line 118) | String getValue();
method getGameWorld (line 125) | GameWorld getGameWorld();
method isTriggered (line 132) | boolean isTriggered();
method setTriggered (line 139) | void setTriggered(boolean triggered);
method getTriggeringPlayer (line 146) | Player getTriggeringPlayer();
method setTriggeringPlayer (line 153) | void setTriggeringPlayer(Player player);
method getListeners (line 160) | Set<TriggerListener> getListeners();
method addListener (line 168) | boolean addListener(TriggerListener listener);
method removeListener (line 176) | boolean removeListener(TriggerListener listener);
method unregisterTrigger (line 185) | boolean unregisterTrigger();
method updateListeners (line 190) | void updateListeners();
method trigger (line 204) | default void trigger(boolean switching, Player triggeringPlayer) {
method onTrigger (line 227) | void onTrigger(boolean switching);
method postTrigger (line 235) | default void postTrigger() {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/trigger/TriggerListener.java
type TriggerListener (line 28) | public interface TriggerListener {
method getTriggerExpression (line 35) | LogicalExpression getTriggerExpression();
method getTriggers (line 44) | List<Trigger> getTriggers();
method hasTriggers (line 51) | default boolean hasTriggers() {
method getLocation (line 60) | Location getLocation();
method getGameWorld (line 67) | GameWorld getGameWorld();
method getGame (line 74) | default Game getGame() {
method initialize (line 87) | void initialize();
method isInitialized (line 94) | boolean isInitialized();
method trigger (line 101) | void trigger(Player player);
method updateTriggers (line 108) | void updateTriggers(Trigger lastFired);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/trigger/TriggerTypeKey.java
class TriggerTypeKey (line 22) | public class TriggerTypeKey {
FILE: api/src/main/java/de/erethon/dungeonsxl/api/world/EditWorld.java
type EditWorld (line 26) | public interface EditWorld extends InstanceWorld {
method registerSign (line 33) | void registerSign(Block block);
method save (line 38) | void save();
method delete (line 40) | @Override
method delete (line 50) | void delete(boolean save);
FILE: api/src/main/java/de/erethon/dungeonsxl/api/world/GameWorld.java
type GameWorld (line 37) | public interface GameWorld extends InstanceWorld {
type Type (line 39) | enum Type {
method getType (line 50) | Type getType();
method setType (line 57) | void setType(Type type);
method getGame (line 64) | Game getGame();
method getDungeon (line 73) | Dungeon getDungeon();
method createTrigger (line 89) | Trigger createTrigger(TriggerListener owner, LogicalExpression express...
method createTriggers (line 103) | List<Trigger> createTriggers(TriggerListener owner, LogicalExpression ...
method getTriggers (line 110) | Collection<Trigger> getTriggers();
method getTriggersFromKey (line 119) | Collection<Trigger> getTriggersFromKey(char key);
method unregisterTrigger (line 127) | boolean unregisterTrigger(Trigger trigger);
method getMobs (line 134) | Collection<DungeonMob> getMobs();
method addMob (line 141) | void addMob(DungeonMob mob);
method removeMob (line 148) | public void removeMob(DungeonMob mob);
method isPlaying (line 155) | boolean isPlaying();
method getStartLocation (line 164) | Location getStartLocation(PlayerGroup group);
method areClassesEnabled (line 171) | boolean areClassesEnabled();
method setClassesEnabled (line 178) | void setClassesEnabled(boolean enabled);
method getPlacedBlocks (line 185) | Collection<Block> getPlacedBlocks();
FILE: api/src/main/java/de/erethon/dungeonsxl/api/world/InstanceWorld.java
type InstanceWorld (line 34) | public interface InstanceWorld {
method getName (line 43) | String getName();
method getResource (line 50) | ResourceWorld getResource();
method getFolder (line 57) | File getFolder();
method getWorld (line 64) | World getWorld();
method getId (line 71) | int getId();
method getDungeonSigns (line 78) | Collection<DungeonSign> getDungeonSigns();
method createDungeonSign (line 87) | DungeonSign createDungeonSign(Sign sign, String[] lines);
method removeDungeonSign (line 94) | void removeDungeonSign(DungeonSign sign);
method removeDungeonSign (line 101) | void removeDungeonSign(Block sign);
method getDungeonSign (line 109) | DungeonSign getDungeonSign(Block sign);
method getLobbyLocation (line 116) | Location getLobbyLocation();
method setLobbyLocation (line 125) | void setLobbyLocation(Location location);
method getPlayers (line 132) | Collection<InstancePlayer> getPlayers();
method sendMessage (line 139) | void sendMessage(String message);
method kickAllPlayers (line 144) | void kickAllPlayers();
method delete (line 149) | void delete();
FILE: api/src/main/java/de/erethon/dungeonsxl/api/world/ResourceWorld.java
type ResourceWorld (line 34) | public interface ResourceWorld {
method getName (line 43) | String getName();
method setName (line 50) | void setName(String name);
method getFolder (line 57) | File getFolder();
method getRules (line 68) | GameRuleContainer getRules();
method getWorldEnvironment (line 75) | Environment getWorldEnvironment();
method addInvitedPlayer (line 82) | void addInvitedPlayer(OfflinePlayer player);
method removeInvitedPlayer (line 90) | boolean removeInvitedPlayer(OfflinePlayer player);
method isInvitedPlayer (line 98) | boolean isInvitedPlayer(OfflinePlayer player);
method backup (line 103) | void backup();
method getEditWorld (line 110) | EditWorld getEditWorld();
method getOrInstantiateEditWorld (line 118) | EditWorld getOrInstantiateEditWorld(boolean ignoreLimit);
method instantiateGameWorld (line 128) | GameWorld instantiateGameWorld(Game game, boolean ignoreLimit);
method getSingleFloorDungeon (line 135) | Dungeon getSingleFloorDungeon();
FILE: bukkit_blockdata/src/main/java/de/erethon/dungeonsxl/adapter/block/BlockAdapterBlockData.java
class BlockAdapterBlockData (line 33) | public class BlockAdapterBlockData implements BlockAdapter {
method isBedHead (line 35) | @Override
method openDoor (line 43) | @Override
method closeDoor (line 53) | @Override
method setBlockWoolColor (line 63) | @Override
method getFacing (line 68) | @Override
method setFacing (line 79) | @Override
method setAxis (line 92) | @Override
FILE: bukkit_magicvalues/src/main/java/de/erethon/dungeonsxl/adapter/block/BlockAdapterMagicValues.java
class BlockAdapterMagicValues (line 31) | public class BlockAdapterMagicValues implements BlockAdapter {
method isBedHead (line 33) | @Override
method openDoor (line 42) | @Override
method closeDoor (line 47) | @Override
method setBlockWoolColor (line 52) | @Override
method getFacing (line 57) | @Override
method setFacing (line 66) | @Override
method setAxis (line 78) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/DXLModule.java
class DXLModule (line 38) | public class DXLModule implements DungeonModule {
method initRequirements (line 40) | @Override
method initRewards (line 54) | @Override
method initSigns (line 61) | @Override
method initGameRules (line 98) | @Override
method initTriggers (line 105) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/DungeonsXL.java
class DungeonsXL (line 108) | public class DungeonsXL extends JavaPlugin implements DungeonsAPI {
class SignRegistry (line 151) | @Deprecated
method get (line 154) | @Override
class GameRuleRegistry (line 164) | private class GameRuleRegistry extends Registry<String, GameRule> {
method add (line 166) | @Override
class PlayerGroupCache (line 188) | private class PlayerGroupCache extends Registry<String, PlayerGroup> {
method get (line 190) | @Override
method onEnable (line 216) | @Override
method onDisable (line 242) | @Override
method initFolders (line 255) | public void initFolders() {
method reload (line 269) | public void reload() {
method init (line 372) | public void init() {
method saveData (line 391) | public void saveData() {
method checkState (line 396) | public void checkState() {
method getInstance (line 438) | public static DungeonsXL getInstance() {
method getInitializer (line 442) | public PluginInit getInitializer() {
method getXLib (line 446) | @Override
method getPlayerCache (line 451) | @Override
method getGameCache (line 456) | @Override
method getClassRegistry (line 461) | @Override
method getSignRegistry (line 466) | @Override
method getRequirementRegistry (line 471) | @Override
method getRewardRegistry (line 476) | @Override
method getDungeonRegistry (line 481) | @Override
method getMapRegistry (line 486) | @Override
method getInstanceCache (line 491) | @Override
method getGameRuleRegistry (line 496) | @Override
method getTriggerRegistry (line 501) | @Override
method getExternalMobProviderRegistry (line 506) | @Override
method getGroupCache (line 511) | @Override
method registerModule (line 516) | @Override
method registerGroupAdapter (line 521) | @Override
method getGroupAdapters (line 535) | public Collection<GroupAdapter> getGroupAdapters() {
method isLoaded (line 544) | public boolean isLoaded() {
method isLoadingWorld (line 555) | public boolean isLoadingWorld() {
method setLoadingWorld (line 566) | public void setLoadingWorld(boolean loadingWorld) {
method getCommandRegistry (line 576) | public DCommandRegistry getCommandRegistry() {
method getMainConfig (line 583) | public MainConfig getMainConfig() {
method getGlobalProtectionCache (line 590) | public GlobalProtectionCache getGlobalProtectionCache() {
method getSignScriptRegistry (line 599) | public Registry<String, SignScript> getSignScriptRegistry() {
method getCommandScriptRegistry (line 608) | public Registry<String, CommandScript> getCommandScriptRegistry() {
method createGroup (line 613) | @Override
method createGroup (line 618) | @Override
method createGroup (line 623) | @Override
method createGroup (line 628) | @Override
method createGroup (line 633) | @Override
method wrapEntity (line 642) | @Override
method wrapEntity (line 652) | @Override
method wrapEntity (line 662) | @Override
method getDungeonMob (line 673) | @Override
method getPlayerGroup (line 687) | @Override
method getGame (line 697) | @Override
method getGame (line 707) | @Override
method getGameWorld (line 713) | @Override
method getEditWorld (line 719) | @Override
method getInstanceWorld (line 725) | public InstanceWorld getInstanceWorld(World world) {
method isInstance (line 734) | @Override
method isDungeonItem (line 739) | @Override
method setDungeonItem (line 750) | @Override
method deleteAllInstances (line 773) | public void deleteAllInstances() {
method checkPlayer (line 790) | public boolean checkPlayer(Player player) {
FILE: core/src/main/java/de/erethon/dungeonsxl/command/BreakCommand.java
class BreakCommand (line 30) | public class BreakCommand extends DCommand {
method BreakCommand (line 32) | public BreakCommand(DungeonsXL plugin) {
method onExecute (line 42) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/ChatCommand.java
class ChatCommand (line 31) | public class ChatCommand extends DCommand {
method ChatCommand (line 33) | public ChatCommand(DungeonsXL plugin) {
method onExecute (line 43) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/ChatSpyCommand.java
class ChatSpyCommand (line 30) | public class ChatSpyCommand extends DCommand {
method ChatSpyCommand (line 32) | public ChatSpyCommand(DungeonsXL plugin) {
method onExecute (line 42) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/CreateCommand.java
class CreateCommand (line 35) | public class CreateCommand extends DCommand {
method CreateCommand (line 37) | public CreateCommand(DungeonsXL plugin) {
method onExecute (line 48) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/DCommand.java
class DCommand (line 28) | public abstract class DCommand extends DRECommand {
method DCommand (line 35) | protected DCommand(DungeonsXL plugin) {
FILE: core/src/main/java/de/erethon/dungeonsxl/command/DCommandRegistry.java
class DCommandRegistry (line 29) | public class DCommandRegistry extends DRECommandRegistry {
method DCommandRegistry (line 63) | public DCommandRegistry(DungeonsXL plugin, PluginInit init) {
FILE: core/src/main/java/de/erethon/dungeonsxl/command/DeleteCommand.java
class DeleteCommand (line 39) | public class DeleteCommand extends DCommand {
method DeleteCommand (line 41) | public DeleteCommand(DungeonsXL plugin) {
method onExecute (line 52) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/DungeonItemCommand.java
class DungeonItemCommand (line 31) | public class DungeonItemCommand extends DCommand {
method DungeonItemCommand (line 33) | public DungeonItemCommand(DungeonsXL plugin) {
method onExecute (line 45) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/EditCommand.java
class EditCommand (line 38) | public class EditCommand extends DCommand {
method EditCommand (line 40) | public EditCommand(DungeonsXL plugin) {
method onExecute (line 49) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/EnterCommand.java
class EnterCommand (line 35) | public class EnterCommand extends DCommand {
method EnterCommand (line 37) | public EnterCommand(DungeonsXL plugin) {
method onExecute (line 47) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/EscapeCommand.java
class EscapeCommand (line 34) | public class EscapeCommand extends DCommand {
method EscapeCommand (line 36) | public EscapeCommand(DungeonsXL plugin) {
method onExecute (line 46) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/GameCommand.java
class GameCommand (line 32) | public class GameCommand extends DCommand {
method GameCommand (line 34) | public GameCommand(DungeonsXL plugin) {
method onExecute (line 44) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/GroupCommand.java
class GroupCommand (line 34) | public class GroupCommand extends DCommand {
method GroupCommand (line 36) | public GroupCommand(DungeonsXL plugin) {
method onExecute (line 50) | @Override
method createGroup (line 113) | public void createGroup() {
method disbandGroup (line 130) | public void disbandGroup(DGroup dGroup, String name) {
method invitePlayer (line 153) | public void invitePlayer(DGroup dGroup) {
method uninvitePlayer (line 169) | public void uninvitePlayer(DGroup dGroup) {
method joinGroup (line 192) | public void joinGroup(DGroup dGroup) {
method kickPlayer (line 217) | public void kickPlayer(DGroup dGroup) {
method showGroup (line 242) | public void showGroup(DGroup dGroup) {
method showHelp (line 267) | public void showHelp(String page) {
FILE: core/src/main/java/de/erethon/dungeonsxl/command/HelpCommand.java
class HelpCommand (line 32) | public class HelpCommand extends DCommand {
method HelpCommand (line 34) | public HelpCommand(DungeonsXL plugin) {
method onExecute (line 45) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/ImportCommand.java
class ImportCommand (line 36) | public class ImportCommand extends DCommand {
method ImportCommand (line 38) | public ImportCommand(DungeonsXL plugin) {
method onExecute (line 49) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/InviteCommand.java
class InviteCommand (line 31) | public class InviteCommand extends DCommand {
method InviteCommand (line 33) | public InviteCommand(DungeonsXL plugin) {
method onExecute (line 44) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/KickCommand.java
class KickCommand (line 30) | public class KickCommand extends DCommand {
method KickCommand (line 32) | public KickCommand(DungeonsXL plugin) {
method onExecute (line 43) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/LeaveCommand.java
class LeaveCommand (line 37) | public class LeaveCommand extends DCommand {
method LeaveCommand (line 39) | public LeaveCommand(DungeonsXL plugin) {
method onExecute (line 49) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/ListCommand.java
class ListCommand (line 39) | public class ListCommand extends DCommand {
method ListCommand (line 41) | public ListCommand(DungeonsXL plugin) {
method onExecute (line 52) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/LivesCommand.java
class LivesCommand (line 34) | public class LivesCommand extends DCommand {
method LivesCommand (line 36) | public LivesCommand(DungeonsXL plugin) {
method onExecute (line 47) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/MainCommand.java
class MainCommand (line 32) | public class MainCommand extends DCommand {
method MainCommand (line 34) | public MainCommand(DungeonsXL plugin) {
method onExecute (line 43) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/MsgCommand.java
class MsgCommand (line 37) | public class MsgCommand extends DCommand {
method MsgCommand (line 39) | public MsgCommand(DungeonsXL plugin) {
method onExecute (line 50) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/PlayCommand.java
class PlayCommand (line 38) | public class PlayCommand extends DCommand {
method PlayCommand (line 40) | public PlayCommand(DungeonsXL plugin) {
method onExecute (line 51) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/PortalCommand.java
class PortalCommand (line 35) | public class PortalCommand extends DCommand {
method PortalCommand (line 39) | public PortalCommand(DungeonsXL plugin) {
method onExecute (line 49) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/ReloadCommand.java
class ReloadCommand (line 39) | public class ReloadCommand extends DCommand {
method ReloadCommand (line 41) | public ReloadCommand(DungeonsXL plugin) {
method onExecute (line 52) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/RenameCommand.java
class RenameCommand (line 39) | public class RenameCommand extends DCommand {
method RenameCommand (line 41) | public RenameCommand(DungeonsXL plugin) {
method onExecute (line 52) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/ResourcePackCommand.java
class ResourcePackCommand (line 29) | public class ResourcePackCommand extends DCommand {
method ResourcePackCommand (line 31) | public ResourcePackCommand(DungeonsXL plugin) {
method onExecute (line 41) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/SaveCommand.java
class SaveCommand (line 31) | public class SaveCommand extends DCommand {
method SaveCommand (line 33) | public SaveCommand(DungeonsXL plugin) {
method onExecute (line 43) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/StatusCommand.java
class StatusCommand (line 38) | public class StatusCommand extends DCommand {
method StatusCommand (line 43) | public StatusCommand(DungeonsXL plugin) {
method onExecute (line 54) | @Override
method msgText (line 101) | private static String msgText(DependencyVersion dependency) {
method statusMsg (line 105) | private static BaseComponent statusMsg(DependencyVersion dependency) {
method getSymbol (line 117) | private static String getSymbol(boolean value) {
FILE: core/src/main/java/de/erethon/dungeonsxl/command/TestCommand.java
class TestCommand (line 39) | public class TestCommand extends DCommand {
method TestCommand (line 41) | public TestCommand(DungeonsXL plugin) {
method onExecute (line 51) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/command/UninviteCommand.java
class UninviteCommand (line 31) | public class UninviteCommand extends DCommand {
method UninviteCommand (line 33) | public UninviteCommand(DungeonsXL plugin) {
method onExecute (line 44) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/config/DMessage.java
type DMessage (line 29) | public enum DMessage implements Message {
method DMessage (line 248) | DMessage(String path) {
method getPath (line 252) | @Override
method getMessageHandler (line 257) | @Override
method debug (line 262) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/config/MainConfig.java
class MainConfig (line 40) | public class MainConfig extends DREConfig {
type BackupMode (line 44) | public enum BackupMode {
method MainConfig (line 117) | public MainConfig(DungeonsXL plugin, File file) {
method getLanguage (line 128) | public String getLanguage() {
method setLanguage (line 132) | public void setLanguage(String language) {
method isUpdaterEnabled (line 136) | public boolean isUpdaterEnabled() {
method setUpdaterEnabled (line 140) | public void setUpdaterEnabled(boolean enabled) {
method isEconomyEnabled (line 144) | public boolean isEconomyEnabled() {
method setEconomyEnabled (line 148) | public void setEconomyEnabled(boolean enabled) {
method areGroupAdaptersEnabled (line 152) | public boolean areGroupAdaptersEnabled() {
method setGroupAdaptersEnabled (line 156) | public void setGroupAdaptersEnabled(boolean enabled) {
method isChatEnabled (line 160) | public boolean isChatEnabled() {
method setChatEnabled (line 164) | public void setChatEnabled(boolean enabled) {
method getChatFormatEdit (line 168) | public String getChatFormatEdit() {
method setEditFormatEdit (line 172) | public void setEditFormatEdit(String string) {
method getChatFormatGame (line 176) | public String getChatFormatGame() {
method setChatFormatGame (line 180) | public void setChatFormatGame(String string) {
method getChatFormatGroup (line 184) | public String getChatFormatGroup() {
method setChatFormatGroup (line 188) | public void setChatFormatGroup(String string) {
method getChatFormatSpy (line 192) | public String getChatFormatSpy() {
method setChatFormatSpy (line 196) | public void setChatFormatSpy(String string) {
method isTutorialActivated (line 200) | public boolean isTutorialActivated() {
method setTutorialActivated (line 204) | public void setTutorialActivated(boolean activated) {
method getTutorialDungeon (line 208) | public Dungeon getTutorialDungeon() {
method setTutorialDungeon (line 215) | public void setTutorialDungeon(Dungeon dungeon) {
method getTutorialStartGroup (line 219) | public String getTutorialStartGroup() {
method setTutorialStartGroup (line 223) | public void setTutorialStartGroup(String group) {
method getTutorialEndGroup (line 227) | public String getTutorialEndGroup() {
method setTutorialEndGroup (line 231) | public void setTutorialEndGroup(String group) {
method getGroupColorPriority (line 235) | public List<Color> getGroupColorPriority() {
method getGroupColorPriority (line 239) | public Color getGroupColorPriority(int count) {
method setGroupColorPriority (line 243) | public void setGroupColorPriority(List<Color> colors) {
method getAnnouncmentInterval (line 247) | public long getAnnouncmentInterval() {
method setAnnouncementInterval (line 251) | public void setAnnouncementInterval(double interval) {
method areGlobalDeathMessagesDisabled (line 255) | public boolean areGlobalDeathMessagesDisabled() {
method setGlobalDeathMessagesDisabled (line 259) | public void setGlobalDeathMessagesDisabled(boolean disabled) {
method isSendFloorTitleEnabled (line 263) | public boolean isSendFloorTitleEnabled() {
method setSendFloorTitleEnabled (line 267) | public void setSendFloorTitleEnabled(boolean enabled) {
method getExternalMobProviders (line 271) | public Map<String, Object> getExternalMobProviders() {
method getResourcePacks (line 275) | public Map<String, Object> getResourcePacks() {
method getMaxInstances (line 279) | public int getMaxInstances() {
method setMaxInstances (line 283) | public void setMaxInstances(int maxInstances) {
method getEditInstanceRemovalDelay (line 287) | public int getEditInstanceRemovalDelay() {
method setEditInstanceRemovalDelay (line 291) | public void setEditInstanceRemovalDelay(int delay) {
method isStrictMovementCheckEnabled (line 295) | public boolean isStrictMovementCheckEnabled() {
method setStrictMovementCheckEnabled (line 299) | public void setStrictMovementCheckEnabled(boolean enabled) {
method isSecureModeEnabled (line 303) | public boolean isSecureModeEnabled() {
method setSecureModeEnabled (line 307) | public void setSecureModeEnabled(boolean enabled) {
method getOpenInventories (line 311) | public boolean getOpenInventories() {
method setOpenInventories (line 315) | public void setOpenInventories(boolean openInventories) {
method getDropItems (line 322) | public boolean getDropItems() {
method setDropItems (line 329) | public void setDropItems(boolean dropItems) {
method getSecureModeCheckInterval (line 333) | public long getSecureModeCheckInterval() {
method setSecureModeCheckInterval (line 337) | public void setSecureModeCheckInterval(double interval) {
method getEditCommandWhitelist (line 341) | public List<String> getEditCommandWhitelist() {
method getBackupMode (line 345) | public BackupMode getBackupMode() {
method setBackupMode (line 349) | public void setBackupMode(BackupMode mode) {
method areLobbyContainersEnabled (line 353) | public boolean areLobbyContainersEnabled() {
method setLobbyContainersEnabled (line 357) | public void setLobbyContainersEnabled(boolean enabled) {
method getEditPermissions (line 361) | public List<String> getEditPermissions() {
method getDefaultWorldConfig (line 365) | public WorldConfig getDefaultWorldConfig() {
method initialize (line 369) | @Override
method load (line 505) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/dungeon/DDungeon.java
class DDungeon (line 32) | public class DDungeon implements Dungeon {
method DDungeon (line 47) | public DDungeon(DungeonsXL plugin, ResourceWorld resource) {
method DDungeon (line 55) | private DDungeon() {
method create (line 65) | public static Dungeon create(DungeonsXL plugin, File file) {
method getConfig (line 84) | public DungeonConfig getConfig() {
method getName (line 91) | @Override
method setName (line 96) | @Override
method isMultiFloor (line 101) | @Override
method getStartFloor (line 106) | @Override
method setStartFloor (line 111) | @Override
method getEndFloor (line 116) | @Override
method setEndFloor (line 121) | @Override
method getFloors (line 126) | @Override
method addFloor (line 135) | @Override
method removeFloor (line 140) | @Override
method getFloorCount (line 145) | @Override
method setFloorCount (line 150) | @Override
method getRemoveWhenPlayed (line 155) | @Override
method setRemoveWhenPlayed (line 160) | @Override
method getOverrideValues (line 165) | @Override
method getDefaultValues (line 170) | @Override
method getRules (line 175) | @Override
method setRules (line 180) | @Override
method setupRules (line 185) | @Override
method isSetupCorrect (line 205) | @Override
method getFileFromName (line 216) | public static File getFileFromName(String name) {
method toString (line 220) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/dungeon/DGame.java
class DGame (line 49) | public class DGame implements Game {
method DGame (line 66) | public DGame(DungeonsXL plugin, Dungeon dungeon) {
method DGame (line 79) | public DGame(DungeonsXL plugin, Dungeon dungeon, PlayerGroup group) {
method DGame (line 84) | public DGame(DungeonsXL plugin, Dungeon dungeon, List<PlayerGroup> gro...
method isTutorial (line 89) | @Override
method setTutorial (line 94) | @Override
method getGroups (line 99) | @Override
method addGroup (line 104) | @Override
method removeGroup (line 117) | @Override
method hasStarted (line 126) | @Override
method setStarted (line 131) | @Override
method getDungeon (line 136) | @Override
method setDungeon (line 146) | public void setDungeon(Dungeon dungeon) {
method setDungeon (line 159) | public boolean setDungeon(String name) {
method getWorld (line 175) | @Override
method setWorld (line 180) | @Override
method getUnplayedFloors (line 185) | @Override
method addUnplayedFloor (line 190) | @Override
method removeUnplayedFloor (line 195) | @Override
method getNextFloor (line 203) | @Override
method setNextFloor (line 208) | @Override
method getFloorCount (line 213) | @Override
method hasRewards (line 218) | @Override
method setRewards (line 223) | @Override
method getWaveCount (line 231) | public int getWaveCount() {
method setWaveCount (line 238) | public void setWaveCount(int waveCount) {
method getGameKills (line 245) | public int getGameKills() {
method getWaveKills (line 256) | public int getWaveKills() {
method addKill (line 267) | public void addKill(String killer) {
method resetWaveKills (line 277) | public void resetWaveKills() {
method getPlayers (line 282) | @Override
method isEmpty (line 291) | @Override
method ensureWorldIsLoaded (line 296) | @Override
method start (line 305) | @Override
method delete (line 337) | @Override
method finishWave (line 352) | public void finishWave(final double mobCountIncreaseRate, final boolea...
method isFinished (line 392) | @Override
method toString (line 397) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/dungeon/DungeonConfig.java
class DungeonConfig (line 32) | public class DungeonConfig extends DREConfig {
method DungeonConfig (line 46) | public DungeonConfig(DungeonsXL plugin, File file) {
method getStartFloor (line 57) | public ResourceWorld getStartFloor() {
method setStartFloor (line 61) | public void setStartFloor(ResourceWorld startFloor) {
method getEndFloor (line 65) | public ResourceWorld getEndFloor() {
method setEndFloor (line 69) | public void setEndFloor(ResourceWorld endFloor) {
method getFloors (line 73) | public List<ResourceWorld> getFloors() {
method addFloor (line 77) | public void addFloor(ResourceWorld resource) {
method removeFloor (line 81) | public void removeFloor(ResourceWorld resource) {
method getFloorCount (line 85) | public int getFloorCount() {
method setFloorCount (line 89) | public void setFloorCount(int floorCount) {
method getRemoveWhenPlayed (line 93) | public boolean getRemoveWhenPlayed() {
method setRemoveWhenPlayed (line 97) | public void setRemoveWhenPlayed(boolean removeWhenPlayed) {
method getOverrideValues (line 101) | public WorldConfig getOverrideValues() {
method getDefaultValues (line 105) | public WorldConfig getDefaultValues() {
method containsFloor (line 109) | public boolean containsFloor(ResourceWorld resource) {
method containsFloor (line 113) | public boolean containsFloor(String mapName) {
method load (line 117) | @Override
method toString (line 134) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/global/DPortal.java
class DPortal (line 48) | public class DPortal extends GlobalProtection {
method DPortal (line 57) | public DPortal(DungeonsXL plugin, int id, World world, ExItem material...
method DPortal (line 64) | public DPortal(DungeonsXL plugin, World world, int id, ConfigurationSe...
method getBlock1 (line 82) | public Block getBlock1() {
method setBlock1 (line 89) | public void setBlock1(Block block1) {
method getBlock2 (line 96) | public Block getBlock2() {
method setBlock2 (line 103) | public void setBlock2(Block block2) {
method isActive (line 110) | public boolean isActive() {
method setActive (line 117) | public void setActive(boolean active) {
method create (line 126) | public void create(DGlobalPlayer player) {
method rotate (line 211) | public void rotate() {
method teleport (line 223) | public void teleport(Player player) {
method getBlocks (line 257) | @Override
method getDataPath (line 270) | @Override
method save (line 275) | @Override
method delete (line 295) | @Override
method getByLocation (line 353) | public static DPortal getByLocation(DungeonsXL plugin, Location locati...
method getByBlock (line 362) | public static DPortal getByBlock(DungeonsXL plugin, Block block) {
FILE: core/src/main/java/de/erethon/dungeonsxl/global/GameSign.java
class GameSign (line 39) | public class GameSign extends JoinSign {
method GameSign (line 45) | public GameSign(DungeonsXL plugin, int id, Block startSign, String ide...
method GameSign (line 49) | public GameSign(DungeonsXL plugin, World world, int id, ConfigurationS...
method getGame (line 56) | public DGame getGame() {
method setGame (line 63) | public void setGame(DGame game) {
method update (line 70) | @Override
method getDataPath (line 121) | @Override
method onPlayerInteract (line 126) | public void onPlayerInteract(Block block, Player player) {
method getByBlock (line 172) | public static GameSign getByBlock(DungeonsXL plugin, Block block) {
method getByGame (line 193) | public static GameSign getByGame(DungeonsXL plugin, DGame game) {
method tryToCreate (line 203) | public static GameSign tryToCreate(DungeonsXL plugin, SignChangeEvent ...
method tryToCreate (line 222) | public static GameSign tryToCreate(DungeonsXL plugin, Block startSign,...
FILE: core/src/main/java/de/erethon/dungeonsxl/global/GlobalProtection.java
class GlobalProtection (line 32) | public abstract class GlobalProtection {
method GlobalProtection (line 41) | protected GlobalProtection(DungeonsXL plugin, World world, int id) {
method getWorld (line 51) | public World getWorld() {
method getId (line 58) | public int getId() {
method delete (line 66) | public void delete() {
method onBreak (line 70) | public boolean onBreak(DGlobalPlayer dPlayer) {
method getDataPath (line 87) | public abstract String getDataPath();
method save (line 89) | public abstract void save(ConfigurationSection config);
method unload (line 91) | public UnloadedProtection unload() {
method getBlocks (line 105) | public abstract Collection<Block> getBlocks();
method toString (line 107) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/global/GlobalProtectionCache.java
class GlobalProtectionCache (line 40) | public class GlobalProtectionCache {
method GlobalProtectionCache (line 50) | public GlobalProtectionCache(DungeonsXL plugin) {
method getConfig (line 63) | public FileConfiguration getConfig() {
method getByLocation (line 71) | public GlobalProtection getByLocation(Location location) {
method getByBlock (line 79) | public GlobalProtection getByBlock(Block block) {
method getProtections (line 92) | public Set<GlobalProtection> getProtections() {
method getUnloadedProtections (line 99) | public Map<UnloadedProtection, String> getUnloadedProtections() {
method getProtections (line 107) | public Set<GlobalProtection> getProtections(Class<? extends GlobalProt...
method addProtection (line 120) | public void addProtection(GlobalProtection protection) {
method removeProtection (line 127) | public void removeProtection(GlobalProtection protection) {
method loadAll (line 131) | public void loadAll() {
method saveAll (line 209) | public void saveAll() {
method generateId (line 235) | public int generateId(Class<? extends GlobalProtection> type, World wo...
method isProtectedBlock (line 249) | public boolean isProtectedBlock(Block block) {
method updateGroupSigns (line 259) | public void updateGroupSigns(DGroup dGroupSearch) {
FILE: core/src/main/java/de/erethon/dungeonsxl/global/GlobalProtectionListener.java
class GlobalProtectionListener (line 57) | public class GlobalProtectionListener implements Listener {
method GlobalProtectionListener (line 61) | public GlobalProtectionListener(DungeonsXL plugin) {
method onBlockBreakWithSignOnIt (line 65) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onBlockBreak (line 89) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onBlockPlace (line 103) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onPlayerBucketFill (line 110) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onBlockSpread (line 124) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onBlockPhysics (line 131) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onEntityExplode (line 138) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onPlayerMove (line 148) | @EventHandler
method onPlayerPortal (line 171) | @EventHandler
method isPortalInNearBy (line 182) | private boolean isPortalInNearBy(Block block1) {
method onPortalCreation (line 196) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onInteract (line 231) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onSignChange (line 263) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onWorldLoad (line 302) | @EventHandler
method onWorldUnload (line 316) | @EventHandler
FILE: core/src/main/java/de/erethon/dungeonsxl/global/GroupSign.java
class GroupSign (line 39) | public class GroupSign extends JoinSign {
method GroupSign (line 46) | public GroupSign(DungeonsXL plugin, int id, Block startSign, String id...
method GroupSign (line 51) | public GroupSign(DungeonsXL plugin, World world, int id, Configuration...
method getGroup (line 59) | public DGroup getGroup() {
method setGroup (line 66) | public void setGroup(DGroup group) {
method update (line 73) | @Override
method getDataPath (line 124) | @Override
method save (line 129) | @Override
method onPlayerInteract (line 135) | public void onPlayerInteract(Block block, Player player) {
method getByBlock (line 193) | public static GroupSign getByBlock(DungeonsXL plugin, Block block) {
method tryToCreate (line 209) | public static GroupSign tryToCreate(DungeonsXL plugin, SignChangeEvent...
method tryToCreate (line 236) | public static GroupSign tryToCreate(DungeonsXL plugin, Block startSign...
FILE: core/src/main/java/de/erethon/dungeonsxl/global/JoinSign.java
class JoinSign (line 35) | public abstract class JoinSign extends GlobalProtection {
method JoinSign (line 45) | protected JoinSign(DungeonsXL plugin, int id, Block startSign, String ...
method JoinSign (line 66) | protected JoinSign(DungeonsXL plugin, World world, int id, Configurati...
method getDungeon (line 91) | public Dungeon getDungeon() {
method setDungeon (line 98) | public void setDungeon(Dungeon dungeon) {
method getMaxElements (line 105) | public int getMaxElements() {
method setMaxElements (line 112) | public void setMaxElements(int amount) {
method getStartIfElementsAtLeastAmount (line 122) | public int getStartIfElementsAtLeastAmount() {
method setStartIfElementsAtLeastAmount (line 131) | public void setStartIfElementsAtLeastAmount(int amount) {
method getBlocks (line 139) | @Override
method update (line 171) | public void update() {
method save (line 184) | @Override
method onCreation (line 198) | protected static void onCreation(DungeonsXL plugin, Block startSign, S...
FILE: core/src/main/java/de/erethon/dungeonsxl/global/LeaveSign.java
class LeaveSign (line 42) | public class LeaveSign extends GlobalProtection {
method LeaveSign (line 49) | public LeaveSign(DungeonsXL plugin, int id, Sign sign) {
method LeaveSign (line 64) | public LeaveSign(DungeonsXL plugin, World world, int id, Configuration...
method getBlocks (line 74) | @Override
method setText (line 87) | public void setText() {
method onPlayerInteract (line 99) | public void onPlayerInteract(Player player) {
method getDataPath (line 114) | @Override
method save (line 119) | @Override
method getByBlock (line 132) | public static LeaveSign getByBlock(DungeonsXL plugin, Block block) {
FILE: core/src/main/java/de/erethon/dungeonsxl/global/UnloadedProtection.java
class UnloadedProtection (line 29) | public class UnloadedProtection<T extends GlobalProtection> {
method UnloadedProtection (line 39) | private UnloadedProtection() {}
method create (line 41) | public static <T extends GlobalProtection> UnloadedProtection create(D...
method load (line 57) | public T load(World world) {
method toString (line 75) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/mob/CitizensMobProvider.java
class CitizensMobProvider (line 41) | public class CitizensMobProvider implements ExternalMobProvider, Listener {
method CitizensMobProvider (line 50) | public CitizensMobProvider(DungeonsAPI api) {
method getNPCRegistry (line 57) | public DNPCRegistry getNPCRegistry() {
method getSpawnedNPCs (line 64) | public Set<NPC> getSpawnedNPCs() {
method addSpawnedNPC (line 71) | public void addSpawnedNPC(NPC npc) {
method removeSpawnedNPC (line 78) | public void removeSpawnedNPC(NPC npc) {
method removeSpawnedNPCs (line 83) | public void removeSpawnedNPCs(World world) {
method getIdentifier (line 93) | @Override
method getRawCommand (line 98) | @Override
method getCommand (line 103) | @Override
method summon (line 108) | @Override
method onNPCDeath (line 132) | @EventHandler
FILE: core/src/main/java/de/erethon/dungeonsxl/mob/CustomExternalMobProvider.java
class CustomExternalMobProvider (line 27) | public class CustomExternalMobProvider implements ExternalMobProvider {
method CustomExternalMobProvider (line 32) | public CustomExternalMobProvider(String identifier, String command) {
method CustomExternalMobProvider (line 41) | public CustomExternalMobProvider(Entry<String, Object> entry) {
method getIdentifier (line 45) | @Override
method getRawCommand (line 50) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/mob/DMob.java
class DMob (line 43) | public class DMob implements DungeonMob {
method DMob (line 50) | public DMob(LivingEntity entity, GameWorld gameWorld, ExMob type, Stri...
method getEntity (line 75) | @Override
method getType (line 80) | @Override
method getTriggerId (line 85) | @Override
method onDeath (line 91) | public void onDeath(DungeonsXL plugin, EntityDeathEvent event) {
method getDrops (line 127) | private boolean getDrops(Object drops) {
method toString (line 140) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/mob/DMobListener.java
class DMobListener (line 39) | public class DMobListener implements Listener {
method DMobListener (line 43) | public DMobListener(DungeonsXL plugin) {
method onCreatureSpawn (line 47) | @EventHandler
method onEntityDeath (line 71) | @EventHandler
method onEntityCombust (line 90) | @EventHandler
FILE: core/src/main/java/de/erethon/dungeonsxl/mob/DNPCRegistry.java
class DNPCRegistry (line 47) | public class DNPCRegistry implements NPCRegistry {
method createNPC (line 49) | @Override
method createNPC (line 54) | @Override
method deregister (line 74) | @Override
method deregisterAll (line 79) | @Override
method getById (line 84) | @Override
method getByUniqueId (line 89) | @Override
method getByUniqueIdGlobal (line 94) | @Override
method getNPC (line 99) | @Override
method isNPC (line 104) | @Override
method sorted (line 109) | @Override
method iterator (line 114) | @Override
method createTransientClone (line 125) | public NPC createTransientClone(AbstractNPC npc) {
method save (line 137) | public void save(AbstractNPC npc, DataKey root) {
FILE: core/src/main/java/de/erethon/dungeonsxl/mob/ExternalMobPlugin.java
type ExternalMobPlugin (line 26) | public enum ExternalMobPlugin implements ExternalMobProvider {
method ExternalMobPlugin (line 35) | ExternalMobPlugin(String identifier, String command) {
method getIdentifier (line 40) | @Override
method getRawCommand (line 45) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/player/DEditPlayer.java
class DEditPlayer (line 37) | public class DEditPlayer extends DInstancePlayer implements EditPlayer {
method DEditPlayer (line 42) | public DEditPlayer(DungeonsXL plugin, Player player, EditWorld world) {
method getEditWorld (line 73) | @Override
method getCopiedLines (line 78) | @Override
method setCopiedLines (line 83) | @Override
method delete (line 89) | @Override
method escape (line 104) | @Override
method poke (line 110) | public void poke(Block block) {
method leave (line 139) | @Override
method update (line 158) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/player/DGamePlayer.java
class DGamePlayer (line 64) | public class DGamePlayer extends DInstancePlayer implements GamePlayer {
method DGamePlayer (line 86) | public DGamePlayer(DungeonsXL plugin, Player player, GameWorld world) {
method getName (line 121) | @Override
method getGroup (line 130) | @Override
method setPlayer (line 135) | public void setPlayer(Player player) {
method isInTestMode (line 142) | public boolean isInTestMode() {
method isReady (line 154) | @Override
method setReady (line 159) | public void setReady(boolean ready) {
method isFinished (line 163) | @Override
method setFinished (line 168) | @Override
method getPlayerClass (line 173) | @Override
method setPlayerClass (line 178) | @Override
method getLastCheckpoint (line 239) | @Override
method setLastCheckpoint (line 244) | @Override
method getOfflineTimeMillis (line 249) | @Override
method setOfflineTimeMillis (line 254) | @Override
method getInitialLives (line 259) | @Override
method setInitialLives (line 264) | @Override
method getLives (line 269) | @Override
method setLives (line 274) | @Override
method getWolf (line 279) | @Override
method setWolf (line 284) | @Override
method getWolfRespawnTime (line 289) | public int getWolfRespawnTime() {
method setWolfRespawnTime (line 293) | public void setWolfRespawnTime(int wolfRespawnTime) {
method isStealingFlag (line 297) | @Override
method getRobbedGroup (line 302) | @Override
method setRobbedGroup (line 307) | @Override
method getDGroupTag (line 317) | public DGroupTag getDGroupTag() {
method initDGroupTag (line 321) | public void initDGroupTag() {
method captureFlag (line 326) | @Override
method leave (line 368) | @Override
method leave (line 373) | @Override
method reward (line 449) | public void reward() {
method kill (line 478) | @Override
method ready (line 495) | @Override
method respawn (line 514) | @Override
method startGame (line 538) | public void startGame() {
method finishFloor (line 599) | public void finishFloor(DResourceWorld specifiedFloor) {
method finish (line 630) | @Override
method finish (line 635) | @Override
method onDeath (line 662) | public void onDeath(PlayerDeathEvent event) {
method update (line 769) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/player/DGlobalPlayer.java
class DGlobalPlayer (line 57) | public class DGlobalPlayer implements GlobalPlayer {
method DGlobalPlayer (line 77) | public DGlobalPlayer(DungeonsXL plugin, Player player) {
method DGlobalPlayer (line 81) | public DGlobalPlayer(DungeonsXL plugin, Player player, boolean reset) {
method DGlobalPlayer (line 95) | public DGlobalPlayer(DGlobalPlayer dPlayer) {
method getName (line 108) | @Override
method getPlayer (line 113) | @Override
method getUniqueId (line 118) | @Override
method getData (line 128) | public DPlayerData getData() {
method loadPlayerData (line 137) | public void loadPlayerData(File file) {
method getGroup (line 141) | @Override
method isInGroupChat (line 146) | @Override
method setInGroupChat (line 154) | @Override
method isInChatSpyMode (line 159) | @Override
method setInChatSpyMode (line 167) | @Override
method isInBreakMode (line 172) | @Override
method setInBreakMode (line 177) | @Override
method isCreatingPortal (line 187) | public boolean isCreatingPortal() {
method getPortal (line 196) | public DPortal getPortal() {
method setCreatingPortal (line 205) | public void setCreatingPortal(DPortal dPortal) {
method getCachedItem (line 214) | public ItemStack getCachedItem() {
method setCachedItem (line 223) | public void setCachedItem(ItemStack item) {
method isAnnouncerEnabled (line 232) | public boolean isAnnouncerEnabled() {
method setAnnouncerEnabled (line 241) | public void setAnnouncerEnabled(boolean enabled) {
method getRewardItems (line 245) | @Override
method hasRewardItemsLeft (line 250) | @Override
method setRewardItems (line 255) | @Override
method hasPermission (line 260) | @Override
method hasPermission (line 265) | public boolean hasPermission(DPermission permission) {
method checkRequirements (line 269) | @Override
method giveLoot (line 299) | public void giveLoot(Dungeon dungeon, List<Reward> rewards) {
method canLoot (line 309) | public boolean canLoot(Dungeon dungeon) {
method getTimeNextLoot (line 313) | public long getTimeNextLoot(Dungeon dungeon) {
method sendMessage (line 318) | @Override
method heal (line 323) | public void heal() {
method reset (line 336) | @Override
method reset (line 377) | @Override
method startTutorial (line 443) | public void startTutorial() {
method toString (line 471) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/player/DGroup.java
class DGroup (line 63) | public class DGroup implements PlayerGroup {
method DGroup (line 86) | private DGroup() {
method create (line 89) | public static DGroup create(DungeonsXL plugin, GroupCreateEvent.Cause ...
method getId (line 116) | @Override
method getName (line 121) | @Override
method getRawName (line 126) | @Override
method setName (line 131) | @Override
method getUntaggedName (line 139) | public String getUntaggedName() {
method getGroupSign (line 143) | public GroupSign getGroupSign() {
method setGroupSign (line 147) | public void setGroupSign(GroupSign groupSign) {
method getLeader (line 151) | @Override
method setLeader (line 156) | @Override
method getMembers (line 161) | @Override
method getDGlobalPlayers (line 169) | public Set<DGlobalPlayer> getDGlobalPlayers() {
method getDGamePlayers (line 177) | public Set<DGamePlayer> getDGamePlayers() {
method addMember (line 188) | @Override
method removeMember (line 203) | @Override
method getInvitedPlayers (line 221) | @Override
method addInvitedPlayer (line 226) | @Override
method removeInvitedPlayer (line 252) | @Override
method clearOfflineInvitedPlayers (line 279) | @Override
method getGame (line 290) | @Override
method setGame (line 295) | public void setGame(Game game) {
method getDungeon (line 299) | @Override
method setDungeon (line 309) | public void setDungeon(Dungeon dungeon) {
method setDungeon (line 319) | public boolean setDungeon(String name) {
method getDungeonName (line 323) | public String getDungeonName() {
method getMapName (line 330) | public String getMapName() {
method isPlaying (line 334) | @Override
method getRewards (line 339) | @Override
method addReward (line 344) | @Override
method removeReward (line 355) | @Override
method getTimeIsRunningTask (line 360) | public BukkitTask getTimeIsRunningTask() {
method setTimeIsRunningTask (line 364) | public void setTimeIsRunningTask(BukkitTask task) {
method isEmpty (line 368) | public boolean isEmpty() {
method isCustom (line 372) | public boolean isCustom() {
method getDColor (line 381) | public Color getDColor() {
method setDColor (line 394) | public void setDColor(Color color) {
method getScore (line 398) | @Override
method setScore (line 403) | @Override
method getInitialLives (line 408) | @Override
method setInitialLives (line 413) | @Override
method getLives (line 418) | @Override
method setLives (line 423) | @Override
method isFinished (line 428) | @Override
method teleport (line 439) | public boolean teleport() {
method finish (line 468) | public void finish() {
method finishFloor (line 485) | public void finishFloor(DResourceWorld specifiedFloor) {
method delete (line 528) | @Override
method checkStartGame (line 553) | public boolean checkStartGame(Game game) {
method startGame (line 570) | public void startGame(Game game, int index) {
method winGame (line 594) | public void winGame() {
method checkRequirements (line 604) | public boolean checkRequirements() {
method sendMessage (line 623) | public void sendMessage(String message) {
method toString (line 631) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/player/DGroupTag.java
class DGroupTag (line 26) | public class DGroupTag {
method DGroupTag (line 31) | public DGroupTag(DungeonsXL plugin, DGamePlayer player) {
method update (line 41) | public void update() {
FILE: core/src/main/java/de/erethon/dungeonsxl/player/DInstancePlayer.java
class DInstancePlayer (line 34) | public abstract class DInstancePlayer extends DGlobalPlayer implements I...
method DInstancePlayer (line 40) | DInstancePlayer(DungeonsXL plugin, Player player, InstanceWorld world) {
method getInstanceWorld (line 50) | @Override
method getWorld (line 55) | @Override
method setInstanceWorld (line 60) | public void setInstanceWorld(InstanceWorld instanceWorld) {
method isAnnouncerEnabled (line 65) | @Override
method clearPlayerData (line 76) | public void clearPlayerData() {
method delete (line 104) | public void delete() {
method chat (line 119) | public void chat(String message) {
method update (line 136) | public abstract void update();
FILE: core/src/main/java/de/erethon/dungeonsxl/player/DPermission.java
type DPermission (line 31) | public enum DPermission {
method DPermission (line 103) | DPermission(String node, PermissionDefault isDefault) {
method DPermission (line 107) | DPermission(String node, PermissionDefault isDefault, DPermission... c...
method getNode (line 118) | public String getNode() {
method isDefault (line 125) | public PermissionDefault isDefault() {
method hasChildren (line 132) | public boolean hasChildren() {
method getChildren (line 139) | public List<DPermission> getChildren() {
method getByNode (line 147) | public static DPermission getByNode(String node) {
method hasPermission (line 162) | public static boolean hasPermission(CommandSender sender, DPermission ...
method register (line 169) | public static void register() {
method unregister (line 178) | public static void unregister() {
FILE: core/src/main/java/de/erethon/dungeonsxl/player/DPlayerData.java
class DPlayerData (line 52) | public class DPlayerData extends DREConfig {
method DPlayerData (line 86) | public DPlayerData(File file) {
method wasInGame (line 99) | public boolean wasInGame() {
method getKeepInventoryAfterLogout (line 106) | public boolean getKeepInventoryAfterLogout() {
method setKeepInventoryAfterLogout (line 113) | public void setKeepInventoryAfterLogout(boolean keepInventoryAfterLogo...
method getOldLocation (line 122) | public Location getOldLocation() {
method setOldLocation (line 132) | public void setOldLocation(Location location) {
method getOldInventory (line 139) | public List<ItemStack> getOldInventory() {
method setOldInventory (line 146) | public void setOldInventory(List<ItemStack> inventory) {
method getOldArmor (line 153) | public List<ItemStack> getOldArmor() {
method setOldArmor (line 160) | public void setOldArmor(List<ItemStack> inventory) {
method getOldOffHand (line 167) | public ItemStack getOldOffHand() {
method setOldOffHand (line 174) | public void setOldOffHand(ItemStack offHand) {
method getOldLevel (line 181) | public int getOldLevel() {
method setOldLevel (line 188) | public void setOldLevel(int level) {
method getOldExp (line 195) | public float getOldExp() {
method setOldExp (line 202) | public void setOldExp(float exp) {
method getOldHealth (line 209) | public double getOldHealth() {
method setOldHealth (line 216) | public void setOldHealth(double health) {
method getOldFoodLevel (line 223) | public int getOldFoodLevel() {
method setOldFoodLevel (line 230) | public void setOldFoodLevel(int foodLevel) {
method getOldFireTicks (line 237) | public int getOldFireTicks() {
method setFireTicks (line 244) | public void setFireTicks(int fireTicks) {
method getOldGameMode (line 251) | public GameMode getOldGameMode() {
method setOldGameMode (line 258) | public void setOldGameMode(GameMode gameMode) {
method getOldPotionEffects (line 265) | public Collection<PotionEffect> getOldPotionEffects() {
method setOldPotionEffects (line 272) | public void setOldPotionEffects(Collection<PotionEffect> potionEffects) {
method getOldAttributeBases (line 279) | public Map/*<Attribute, Double>*/ getOldAttributeBases() {
method setOldAttributeBases (line 286) | public void setOldAttributeBases(Map/*<Attribute, Double>*/ attributeB...
method getOldAttributeMods (line 293) | public Multimap/*<Attribute, AttributeModifier>*/ getOldAttributeMods() {
method setOldAttributeMods (line 300) | public void setOldAttributeMods(Multimap/*<Attribute, AttributeModifie...
method getOldCollidabilityState (line 307) | public boolean getOldCollidabilityState() {
method setOldCollidabilityState (line 314) | public void setOldCollidabilityState(boolean collidableState) {
method getOldFlyingState (line 321) | public boolean getOldFlyingState() {
method setOldFlyingState (line 328) | public void setOldFlyingState(boolean flyingState) {
method getOldInvulnerabilityState (line 335) | public boolean getOldInvulnerabilityState() {
method setOldInvulnerabilityState (line 342) | public void setOldInvulnerabilityState(boolean invulnerabilityState) {
method getTimeLastStarted (line 349) | public Map<String, Long> getTimeLastStarted() {
method getTimeLastStarted (line 357) | public long getTimeLastStarted(String dungeon) {
method setTimeLastStarted (line 370) | public void setTimeLastStarted(String dungeon, long time) {
method getTimeLastFinished (line 378) | public Map<String, Long> getTimeLastFinished() {
method getTimeLastFinished (line 386) | public long getTimeLastFinished(String dungeon) {
method setTimeLastFinished (line 399) | public void setTimeLastFinished(String dungeon, long time) {
method getTimeLastLoot (line 408) | public long getTimeLastLoot(String dungeon) {
method setTimeLastLoot (line 421) | public void setTimeLastLoot(String dungeon, long time) {
method hasFinishedTutorial (line 429) | public boolean hasFinishedTutorial() {
method setFinishedTutorial (line 436) | public void setFinishedTutorial(boolean finishedTutorial) {
method logTimeLastStarted (line 445) | public void logTimeLastStarted(String dungeon) {
method logTimeLastFinished (line 453) | public void logTimeLastFinished(String dungeon) {
method logTimeLastLoot (line 461) | public void logTimeLastLoot(String dungeon) {
method initialize (line 466) | @Override
method load (line 495) | @Override
method save (line 578) | @Override
method savePlayerState (line 592) | public void savePlayerState(Player player) {
method clearPlayerState (line 664) | public void clearPlayerState() {
FILE: core/src/main/java/de/erethon/dungeonsxl/player/DPlayerListener.java
class DPlayerListener (line 71) | public class DPlayerListener implements Listener {
method DPlayerListener (line 77) | public DPlayerListener(DungeonsXL plugin) {
method onEntityDamage (line 81) | @EventHandler
method onEntityDamageByEntity (line 136) | @EventHandler
method onFoodLevelChange (line 230) | @EventHandler
method onPlayerChat (line 240) | @EventHandler(priority = EventPriority.HIGH)
method onPlayerCommandPreprocess (line 274) | @EventHandler
method onPlayerDeath (line 322) | @EventHandler
method onPlayerDropItem (line 335) | @EventHandler(priority = EventPriority.HIGH)
method onPlayerJoin (line 381) | @EventHandler
method onPlayerMove (line 403) | @EventHandler
method onPlayerQuit (line 426) | @EventHandler
method onPlayerRespawn (line 460) | @EventHandler
method onPlayerTeleport (line 504) | @EventHandler(priority = EventPriority.HIGHEST)
method isCitizensNPC (line 525) | public static boolean isCitizensNPC(LivingEntity entity) {
method onPlayerInteract (line 530) | @EventHandler
FILE: core/src/main/java/de/erethon/dungeonsxl/player/RespawnTask.java
class RespawnTask (line 27) | public class RespawnTask extends BukkitRunnable {
method RespawnTask (line 34) | public RespawnTask(Player player, GamePlayer dPlayer, Location locatio...
method run (line 41) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/player/SecureModeTask.java
class SecureModeTask (line 29) | public class SecureModeTask extends BukkitRunnable {
method SecureModeTask (line 33) | public SecureModeTask(DungeonsXL plugin) {
method run (line 37) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/player/TimeIsRunningTask.java
class TimeIsRunningTask (line 33) | public class TimeIsRunningTask extends BukkitRunnable {
method TimeIsRunningTask (line 41) | public TimeIsRunningTask(DungeonsXL plugin, PlayerGroup group, int tim...
method run (line 48) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/player/groupadapter/PartiesAdapter.java
class PartiesAdapter (line 41) | public class PartiesAdapter extends GroupAdapter<Party> implements Liste...
method PartiesAdapter (line 45) | public PartiesAdapter(DungeonsAPI api) {
method createDungeonGroup (line 51) | @Override
method getExternalGroup (line 59) | @Override
method getGroupOnlineSize (line 68) | @Override
method isExternalGroupMember (line 73) | @Override
method onDeletion (line 81) | @EventHandler
method onRename (line 90) | @EventHandler
method onJoin (line 99) | @EventHandler
method onLeave (line 113) | @EventHandler
method getPlayer (line 127) | private Player getPlayer(PartyPlayer player) {
FILE: core/src/main/java/de/erethon/dungeonsxl/requirement/FeeLevelRequirement.java
class FeeLevelRequirement (line 37) | public class FeeLevelRequirement implements Requirement {
method FeeLevelRequirement (line 43) | public FeeLevelRequirement(DungeonsAPI api) {
method getFee (line 51) | public int getFee() {
method setFee (line 58) | public void setFee(int fee) {
method setup (line 63) | @Override
method check (line 68) | @Override
method getCheckMessage (line 73) | @Override
method getRelevantLevel (line 83) | private int getRelevantLevel(Player player) {
method demand (line 92) | @Override
method isKeepInventory (line 110) | private boolean isKeepInventory(Player player) {
method toString (line 118) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/requirement/FeeMoneyRequirement.java
class FeeMoneyRequirement (line 34) | public class FeeMoneyRequirement implements Requirement {
method FeeMoneyRequirement (line 40) | public FeeMoneyRequirement(DungeonsAPI api) {
method getFee (line 48) | public double getFee() {
method setFee (line 55) | public void setFee(double fee) {
method setup (line 60) | @Override
method check (line 65) | @Override
method getCheckMessage (line 74) | @Override
method demand (line 84) | @Override
method toString (line 94) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/requirement/FinishedDungeonsRequirement.java
class FinishedDungeonsRequirement (line 39) | public class FinishedDungeonsRequirement implements Requirement {
class DungeonAndTime (line 43) | private class DungeonAndTime {
method toString (line 47) | @Override
method FinishedDungeonsRequirement (line 55) | public FinishedDungeonsRequirement(DungeonsAPI api) {
method setup (line 66) | @Override
method check (line 87) | @Override
method getCheckMessage (line 107) | @Override
method demand (line 153) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/requirement/ForbiddenItemsRequirement.java
class ForbiddenItemsRequirement (line 39) | public class ForbiddenItemsRequirement implements Requirement {
method ForbiddenItemsRequirement (line 45) | public ForbiddenItemsRequirement(DungeonsAPI api) {
method getForbiddenItems (line 53) | public Map<ExItem, Boolean> getForbiddenItems() {
method setup (line 58) | @Override
method check (line 73) | @Override
method getCheckMessage (line 95) | @Override
method containsItem (line 121) | private boolean containsItem(Set<ExItem> exInventory, ExItem forbidden...
method demand (line 130) | @Override
method toString (line 134) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/requirement/GroupSizeRequirement.java
class GroupSizeRequirement (line 32) | public class GroupSizeRequirement implements Requirement {
method GroupSizeRequirement (line 39) | public GroupSizeRequirement(DungeonsAPI api) {
method getMinimum (line 46) | public int getMinimum() {
method setMinimum (line 53) | public void setMinimum(int minimum) {
method getMaximum (line 60) | public int getMaximum() {
method setMaximum (line 67) | public void setMaximum(int maximum) {
method setup (line 72) | @Override
method check (line 78) | @Override
method getCheckMessage (line 85) | @Override
method demand (line 95) | @Override
method toString (line 99) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/requirement/KeyItemsRequirement.java
class KeyItemsRequirement (line 38) | public class KeyItemsRequirement implements Requirement {
method KeyItemsRequirement (line 44) | public KeyItemsRequirement(DungeonsAPI api) {
method getKeyItems (line 52) | public List<ExItem> getKeyItems() {
method setup (line 57) | @Override
method check (line 62) | @Override
method getCheckMessage (line 74) | @Override
method demand (line 99) | @Override
method toString (line 103) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/requirement/PermissionRequirement.java
class PermissionRequirement (line 33) | public class PermissionRequirement implements Requirement {
method PermissionRequirement (line 37) | public PermissionRequirement(DungeonsAPI api) {
method getPermissions (line 44) | public List<String> getPermissions() {
method setPermissions (line 51) | public void setPermissions(List<String> permissions) {
method setup (line 56) | @Override
method check (line 61) | @Override
method getCheckMessage (line 72) | @Override
method demand (line 87) | @Override
method toString (line 91) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/requirement/TimeSinceFinishRequirement.java
class TimeSinceFinishRequirement (line 35) | public class TimeSinceFinishRequirement implements Requirement {
method TimeSinceFinishRequirement (line 43) | public TimeSinceFinishRequirement(DungeonsAPI api) {
method setup (line 47) | @Override
method check (line 52) | @Override
method getCheckMessage (line 59) | @Override
method demand (line 77) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/requirement/TimeSinceStartRequirement.java
class TimeSinceStartRequirement (line 35) | public class TimeSinceStartRequirement implements Requirement {
method TimeSinceStartRequirement (line 43) | public TimeSinceStartRequirement(DungeonsAPI api) {
method setup (line 47) | @Override
method check (line 52) | @Override
method getCheckMessage (line 59) | @Override
method demand (line 77) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/requirement/TimeframeRequirement.java
class TimeframeRequirement (line 36) | public class TimeframeRequirement implements Requirement {
type Weekday (line 38) | public enum Weekday {
method toString (line 47) | @Override
class Timeframe (line 53) | public static class Timeframe<T> {
method Timeframe (line 57) | public Timeframe(T start, T end) {
method getStart (line 62) | public T getStart() {
method getEnd (line 66) | public T getEnd() {
method TimeframeRequirement (line 75) | public TimeframeRequirement(DungeonsAPI api) {
method setup (line 78) | @Override
method check (line 106) | @Override
method isInDayTimeframe (line 129) | private boolean isInDayTimeframe(Timeframe<Weekday> timeframe) {
method isInHourTimeframe (line 134) | private boolean isInHourTimeframe(Timeframe<Integer> timeframe) {
method getCheckMessage (line 139) | @Override
method demand (line 174) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/reward/ItemReward.java
class ItemReward (line 30) | public class ItemReward implements Reward {
method ItemReward (line 36) | public ItemReward(DungeonsAPI api) {
method getItems (line 44) | public List<ItemStack> getItems() {
method setItems (line 51) | public void setItems(List<ItemStack> items) {
method addItems (line 58) | public void addItems(ItemStack... items) {
method removeItems (line 65) | public void removeItems(ItemStack... items) {
method giveTo (line 70) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/reward/LevelReward.java
class LevelReward (line 27) | public class LevelReward implements Reward {
method getLevels (line 34) | public int getLevels() {
method addLevels (line 41) | public void addLevels(int levels) {
method setLevels (line 48) | public void setLevels(int levels) {
method giveTo (line 52) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/reward/MoneyReward.java
class MoneyReward (line 28) | public class MoneyReward implements Reward {
method MoneyReward (line 34) | public MoneyReward(Economy econ) {
method getMoney (line 41) | public double getMoney() {
method addMoney (line 48) | public void addMoney(double money) {
method setMoney (line 55) | public void setMoney(double money) {
method giveTo (line 59) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/reward/RewardListener.java
class RewardListener (line 48) | public class RewardListener implements Listener {
method RewardListener (line 52) | public RewardListener(DungeonsXL plugin) {
method onInventoryOpen (line 81) | @EventHandler
method onPlayerMove (line 117) | @EventHandler
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/DSignListener.java
class DSignListener (line 44) | public class DSignListener implements Listener {
method DSignListener (line 48) | public DSignListener(DungeonsAPI api) {
method onPlayerInteract (line 52) | @EventHandler
method onSignChange (line 81) | @EventHandler
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/LocationSign.java
type LocationSign (line 27) | public interface LocationSign extends DungeonSign {
method initialize (line 29) | @Override
method getTargetLocation (line 39) | Location getTargetLocation();
method setTargetLocation (line 41) | void setTargetLocation(Location location);
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/ActionBarSign.java
class ActionBarSign (line 29) | public class ActionBarSign extends MessageSign {
method ActionBarSign (line 31) | public ActionBarSign(DungeonsAPI api, Sign sign, String[] lines, Insta...
method getName (line 35) | @Override
method getBuildPermission (line 40) | @Override
method sendMessage (line 45) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/BossShopSign.java
class BossShopSign (line 35) | public class BossShopSign extends Button {
method BossShopSign (line 41) | public BossShopSign(DungeonsAPI api, Sign sign, String[] lines, Instan...
method getShopName (line 45) | public String getShopName() {
method setShopName (line 49) | public void setShopName(String name) {
method getName (line 53) | @Override
method getBuildPermission (line 58) | @Override
method isOnDungeonInit (line 63) | @Override
method isProtected (line 68) | @Override
method isSetToAir (line 73) | @Override
method validate (line 78) | @Override
method initialize (line 83) | @Override
method push (line 108) | @Override
method openShop (line 114) | public void openShop(Player player, String shopName) {
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/ChatMessageSign.java
class ChatMessageSign (line 29) | public class ChatMessageSign extends MessageSign {
method ChatMessageSign (line 31) | public ChatMessageSign(DungeonsAPI api, Sign sign, String[] lines, Ins...
method getName (line 35) | @Override
method getBuildPermission (line 40) | @Override
method sendMessage (line 45) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/CheckpointSign.java
class CheckpointSign (line 35) | public class CheckpointSign extends Button {
method CheckpointSign (line 39) | public CheckpointSign(DungeonsAPI api, Sign sign, String[] lines, Inst...
method getName (line 43) | @Override
method getBuildPermission (line 48) | @Override
method isOnDungeonInit (line 53) | @Override
method isProtected (line 58) | @Override
method isSetToAir (line 63) | @Override
method validate (line 68) | @Override
method initialize (line 73) | @Override
method push (line 77) | @Override
method push (line 91) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/ClassesSign.java
class ClassesSign (line 32) | public class ClassesSign extends Button {
method ClassesSign (line 36) | public ClassesSign(DungeonsAPI api, Sign sign, String[] lines, Instanc...
method getPlayerClass (line 41) | public PlayerClass getPlayerClass() {
method setPlayerClass (line 45) | public void setPlayerClass(PlayerClass playerClass) {
method getName (line 49) | @Override
method getBuildPermission (line 54) | @Override
method isOnDungeonInit (line 59) | @Override
method isProtected (line 64) | @Override
method isSetToAir (line 69) | @Override
method validate (line 74) | @Override
method initialize (line 79) | @Override
method push (line 89) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/EndSign.java
class EndSign (line 39) | public class EndSign extends Button {
method EndSign (line 43) | public EndSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWor...
method getFloor (line 47) | public ResourceWorld getFloor() {
method setFloor (line 51) | public void setFloor(ResourceWorld floor) {
method getName (line 55) | @Override
method getBuildPermission (line 60) | @Override
method isOnDungeonInit (line 65) | @Override
method isProtected (line 70) | @Override
method isSetToAir (line 75) | @Override
method validate (line 80) | @Override
method initialize (line 85) | @Override
method push (line 119) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/LeaveSign.java
class LeaveSign (line 34) | public class LeaveSign extends Button {
method LeaveSign (line 36) | public LeaveSign(DungeonsAPI api, Sign sign, String[] lines, InstanceW...
method getName (line 40) | @Override
method getBuildPermission (line 45) | @Override
method isOnDungeonInit (line 50) | @Override
method isProtected (line 55) | @Override
method isSetToAir (line 60) | @Override
method validate (line 65) | @Override
method initialize (line 70) | @Override
method push (line 79) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/LivesModifierSign.java
class LivesModifierSign (line 35) | public class LivesModifierSign extends Button {
type Target (line 37) | public enum Target {
method LivesModifierSign (line 46) | public LivesModifierSign(DungeonsAPI api, Sign sign, String[] lines, I...
method getLives (line 50) | public int getLives() {
method setLives (line 54) | public void setLives(int lives) {
method getName (line 58) | @Override
method getBuildPermission (line 63) | @Override
method isOnDungeonInit (line 68) | @Override
method isProtected (line 73) | @Override
method isSetToAir (line 78) | @Override
method validate (line 83) | @Override
method initialize (line 88) | @Override
method push (line 98) | @Override
method modifyLives (line 121) | public void modifyLives(GamePlayer dPlayer) {
method modifyLives (line 135) | public void modifyLives(PlayerGroup group) {
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/MessageSign.java
class MessageSign (line 30) | public abstract class MessageSign extends Button {
method MessageSign (line 34) | public MessageSign(DungeonsAPI api, Sign sign, String[] lines, Instanc...
method getText (line 38) | public String getText() {
method setText (line 42) | public void setText(String text) {
method isOnDungeonInit (line 46) | @Override
method isProtected (line 51) | @Override
method isSetToAir (line 56) | @Override
method validate (line 61) | @Override
method initialize (line 66) | @Override
method push (line 76) | @Override
method push (line 82) | @Override
method sendMessage (line 90) | public abstract void sendMessage(Player player);
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/ReadySign.java
class ReadySign (line 40) | public class ReadySign extends Button {
method ReadySign (line 46) | public ReadySign(DungeonsAPI api, Sign sign, String[] lines, InstanceW...
method getTimeToAutoStart (line 50) | public double getTimeToAutoStart() {
method setTimeToAutoStart (line 54) | public void setTimeToAutoStart(double time) {
method getName (line 58) | @Override
method getBuildPermission (line 63) | @Override
method isOnDungeonInit (line 68) | @Override
method isProtected (line 73) | @Override
method isSetToAir (line 78) | @Override
method validate (line 83) | @Override
method initialize (line 88) | @Override
method push (line 103) | @Override
method push (line 116) | @Override
method readyAll (line 138) | private void readyAll() {
method ready (line 155) | private void ready(GamePlayer player) {
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/ResourcePackSign.java
class ResourcePackSign (line 32) | public class ResourcePackSign extends Button {
method ResourcePackSign (line 36) | public ResourcePackSign(DungeonsAPI api, Sign sign, String[] lines, In...
method getResourcePack (line 40) | public String getResourcePack() {
method setExternalMob (line 44) | public void setExternalMob(String resourcePack) {
method getName (line 48) | @Override
method getBuildPermission (line 53) | @Override
method isOnDungeonInit (line 58) | @Override
method isProtected (line 63) | @Override
method isSetToAir (line 68) | @Override
method validate (line 73) | @Override
method initialize (line 78) | @Override
method push (line 104) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/SoundMessageSign.java
class SoundMessageSign (line 33) | public class SoundMessageSign extends Button {
method SoundMessageSign (line 40) | public SoundMessageSign(DungeonsAPI api, Sign sign, String[] lines, In...
method getName (line 44) | @Override
method getBuildPermission (line 49) | @Override
method isOnDungeonInit (line 54) | @Override
method isProtected (line 59) | @Override
method isSetToAir (line 64) | @Override
method validate (line 69) | @Override
method initialize (line 79) | @Override
method push (line 102) | @Override
method push (line 110) | @Override
method playSound (line 116) | private void playSound(Player player) {
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/TeleportSign.java
class TeleportSign (line 33) | public class TeleportSign extends Button implements LocationSign {
method TeleportSign (line 37) | public TeleportSign(DungeonsAPI api, Sign sign, String[] lines, Instan...
method getTargetLocation (line 41) | @Override
method setTargetLocation (line 46) | @Override
method getName (line 51) | @Override
method getBuildPermission (line 56) | @Override
method isOnDungeonInit (line 61) | @Override
method isProtected (line 66) | @Override
method isSetToAir (line 71) | @Override
method validate (line 76) | @Override
method initialize (line 91) | @Override
method push (line 124) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/TitleSign.java
class TitleSign (line 32) | public class TitleSign extends MessageSign {
method TitleSign (line 37) | public TitleSign(DungeonsAPI api, Sign sign, String[] lines, InstanceW...
method getName (line 41) | @Override
method getBuildPermission (line 46) | @Override
method initialize (line 51) | @Override
method sendMessage (line 85) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/button/WaveSign.java
class WaveSign (line 32) | public class WaveSign extends Button {
method WaveSign (line 37) | public WaveSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWo...
method getMobCountIncreaseRate (line 41) | public double getMobCountIncreaseRate() {
method setMobCountIncreaseRate (line 45) | public void setMobCountIncreaseRate(double mobCountIncreaseRate) {
method getTeleport (line 49) | public boolean getTeleport() {
method setTeleport (line 53) | public void setTeleport(boolean teleport) {
method getName (line 57) | @Override
method getBuildPermission (line 62) | @Override
method isOnDungeonInit (line 67) | @Override
method isProtected (line 72) | @Override
method isSetToAir (line 77) | @Override
method validate (line 82) | @Override
method initialize (line 87) | @Override
method push (line 105) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/BedSign.java
class BedSign (line 35) | public class BedSign extends Passive {
method BedSign (line 39) | public BedSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWor...
method getName (line 43) | @Override
method getBuildPermission (line 48) | @Override
method isOnDungeonInit (line 53) | @Override
method isProtected (line 58) | @Override
method isSetToAir (line 63) | @Override
method validate (line 68) | @Override
method initialize (line 73) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/ChestSign.java
class ChestSign (line 31) | public abstract class ChestSign extends Passive {
method ChestSign (line 38) | protected ChestSign(DungeonsAPI api, Sign sign, String[] lines, Instan...
method getChestContents (line 42) | public ItemStack[] getChestContents() {
method setChestContents (line 49) | public void setChestContents(ItemStack[] items) {
method getLootTable (line 53) | public LootTable getLootTable() {
method setLootTable (line 57) | public void setLootTable(LootTable lootTable) {
method isOnDungeonInit (line 61) | @Override
method isProtected (line 66) | @Override
method isSetToAir (line 71) | @Override
method validate (line 76) | @Override
method checkChest (line 84) | protected void checkChest() {
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/DungeonChestSign.java
class DungeonChestSign (line 32) | public class DungeonChestSign extends ChestSign {
method DungeonChestSign (line 34) | public DungeonChestSign(DungeonsAPI api, Sign sign, String[] lines, In...
method getName (line 38) | @Override
method getBuildPermission (line 43) | @Override
method initialize (line 48) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/FlagSign.java
class FlagSign (line 32) | public class FlagSign extends Passive {
method FlagSign (line 36) | public FlagSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWo...
method getName (line 40) | @Override
method getBuildPermission (line 45) | @Override
method isOnDungeonInit (line 50) | @Override
method isProtected (line 55) | @Override
method isSetToAir (line 60) | @Override
method validate (line 65) | @Override
method initialize (line 70) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/HologramSign.java
class HologramSign (line 37) | public class HologramSign extends Passive {
method HologramSign (line 41) | public HologramSign(DungeonsAPI api, Sign sign, String[] lines, Instan...
method getName (line 45) | @Override
method getBuildPermission (line 50) | @Override
method isOnDungeonInit (line 55) | @Override
method isProtected (line 60) | @Override
method isSetToAir (line 65) | @Override
method validate (line 70) | @Override
method initialize (line 79) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/InteractSign.java
class InteractSign (line 35) | public class InteractSign extends Passive {
method InteractSign (line 39) | public InteractSign(DungeonsAPI api, Sign sign, String[] lines, Instan...
method getName (line 43) | @Override
method getBuildPermission (line 48) | @Override
method isOnDungeonInit (line 53) | @Override
method isProtected (line 58) | @Override
method isSetToAir (line 63) | @Override
method isTriggerLineDisabled (line 68) | @Override
method validate (line 73) | @Override
method initialize (line 104) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/LobbySign.java
class LobbySign (line 30) | public class LobbySign extends Passive implements LocationSign {
method LobbySign (line 34) | public LobbySign(DungeonsAPI api, Sign sign, String[] lines, InstanceW...
method getTargetLocation (line 38) | @Override
method setTargetLocation (line 43) | @Override
method getName (line 48) | @Override
method getBuildPermission (line 53) | @Override
method isOnDungeonInit (line 58) | @Override
method isProtected (line 63) | @Override
method isSetToAir (line 68) | @Override
method validate (line 73) | @Override
method initialize (line 78) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/NoteSign.java
class NoteSign (line 28) | public class NoteSign extends Passive {
method NoteSign (line 30) | public NoteSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWo...
method getName (line 34) | @Override
method getBuildPermission (line 39) | @Override
method isOnDungeonInit (line 44) | @Override
method isProtected (line 49) | @Override
method isSetToAir (line 54) | @Override
method validate (line 59) | @Override
method initialize (line 64) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/PlaceSign.java
class PlaceSign (line 30) | public class PlaceSign extends Passive {
method PlaceSign (line 32) | public PlaceSign(DungeonsAPI api, Sign sign, String[] lines, InstanceW...
method getName (line 36) | @Override
method getBuildPermission (line 41) | @Override
method isOnDungeonInit (line 46) | @Override
method isProtected (line 51) | @Override
method isSetToAir (line 56) | @Override
method validate (line 61) | @Override
method initialize (line 66) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/ProtectionSign.java
class ProtectionSign (line 31) | public class ProtectionSign extends Passive {
method ProtectionSign (line 33) | public ProtectionSign(DungeonsAPI api, Sign sign, String[] lines, Inst...
method getName (line 37) | @Override
method getBuildPermission (line 42) | @Override
method isOnDungeonInit (line 47) | @Override
method isProtected (line 52) | @Override
method isSetToAir (line 57) | @Override
method validate (line 62) | @Override
method initialize (line 67) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/RewardChestSign.java
class RewardChestSign (line 35) | public class RewardChestSign extends ChestSign {
method RewardChestSign (line 40) | public RewardChestSign(DungeonsAPI api, Sign sign, String[] lines, Ins...
method getMoneyReward (line 44) | public double getMoneyReward() {
method setMoneyReward (line 48) | public void setMoneyReward(double amount) {
method getLevelReward (line 52) | public int getLevelReward() {
method setLevelReward (line 56) | public void setLevelReward(int amount) {
method getName (line 60) | @Override
method getBuildPermission (line 65) | @Override
method initialize (line 70) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/ScriptSign.java
class ScriptSign (line 30) | public class ScriptSign extends Passive {
method ScriptSign (line 34) | public ScriptSign(DungeonsAPI api, Sign sign, String[] lines, Instance...
method getScriptName (line 39) | public String getScriptName() {
method setScriptName (line 43) | public void setScriptName(String name) {
method getName (line 47) | @Override
method getBuildPermission (line 52) | @Override
method isOnDungeonInit (line 57) | @Override
method isProtected (line 62) | @Override
method isSetToAir (line 67) | @Override
method validate (line 72) | @Override
method initialize (line 77) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/SignScript.java
class SignScript (line 31) | public class SignScript {
method SignScript (line 40) | public SignScript(File file) {
method SignScript (line 48) | public SignScript(String name, FileConfiguration config) {
method getName (line 67) | public String getName() {
method getSigns (line 74) | public List<String[]> getSigns() {
method getLines (line 82) | public String[] getLines(int index) {
method setLines (line 90) | public void setLines(int index, String[] lines) {
method toString (line 94) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/passive/StartSign.java
class StartSign (line 31) | public class StartSign extends Passive implements LocationSign {
method StartSign (line 36) | public StartSign(DungeonsAPI api, Sign sign, String[] lines, InstanceW...
method getId (line 40) | public int getId() {
method setId (line 44) | public void setId(int id) {
method getTargetLocation (line 48) | @Override
method setTargetLocation (line 53) | @Override
method getName (line 58) | @Override
method getBuildPermission (line 63) | @Override
method isOnDungeonInit (line 68) | @Override
method isProtected (line 73) | @Override
method isSetToAir (line 78) | @Override
method validate (line 83) | @Override
method initialize (line 88) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/rocker/BlockSign.java
class BlockSign (line 37) | public class BlockSign extends Rocker {
method BlockSign (line 44) | public BlockSign(DungeonsAPI api, Sign sign, String[] lines, InstanceW...
method getName (line 48) | @Override
method getBuildPermission (line 53) | @Override
method isOnDungeonInit (line 58) | @Override
method isProtected (line 63) | @Override
method isSetToAir (line 68) | @Override
method validate (line 73) | @Override
method initialize (line 78) | @Override
method activate (line 118) | @Override
method deactivate (line 130) | @Override
method setBlockData (line 144) | private static void setBlockData(Block block, byte data) {
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/rocker/OpenDoorSign.java
class OpenDoorSign (line 34) | public class OpenDoorSign extends Rocker {
method OpenDoorSign (line 38) | public OpenDoorSign(DungeonsAPI api, Sign sign, String[] lines, Instan...
method getDoor (line 42) | public LockedDoor getDoor() {
method setDoor (line 46) | public void setDoor(LockedDoor door) {
method getName (line 50) | @Override
method getBuildPermission (line 55) | @Override
method isOnDungeonInit (line 60) | @Override
method isProtected (line 65) | @Override
method isSetToAir (line 70) | @Override
method validate (line 75) | @Override
method initialize (line 80) | @Override
method activate (line 96) | @Override
method deactivate (line 104) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/rocker/TriggerSign.java
class TriggerSign (line 35) | public class TriggerSign extends Rocker {
method TriggerSign (line 39) | public TriggerSign(DungeonsAPI api, Sign sign, String[] lines, Instanc...
method getName (line 43) | @Override
method getBuildPermission (line 48) | @Override
method isOnDungeonInit (line 53) | @Override
method isProtected (line 58) | @Override
method isSetToAir (line 63) | @Override
method validate (line 68) | @Override
method initialize (line 99) | @Override
method activate (line 104) | @Override
method activate (line 112) | @Override
method deactivate (line 122) | @Override
method deactivate (line 130) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/windup/CommandScript.java
class CommandScript (line 29) | public class CommandScript {
method CommandScript (line 35) | public CommandScript(String name, List<String> commands, Permission pe...
method CommandScript (line 42) | public CommandScript(File file) {
method getName (line 50) | public String getName() {
method getFile (line 54) | public File getFile() {
method getCommands (line 58) | public List<String> getCommands() {
method setCommands (line 62) | public void setCommands(List<String> commands) {
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/windup/CommandSign.java
class CommandSign (line 35) | public class CommandSign extends Windup {
type Executor (line 37) | public enum Executor {
method CommandSign (line 46) | public CommandSign(DungeonsAPI api, Sign sign, String[] lines, Instanc...
method getScript (line 50) | public CommandScript getScript() {
method getName (line 54) | @Override
method getBuildPermission (line 59) | @Override
method isOnDungeonInit (line 64) | @Override
method isProtected (line 69) | @Override
method isSetToAir (line 74) | @Override
method getExecutor (line 79) | public Executor getExecutor() {
method validate (line 83) | @Override
method initialize (line 89) | @Override
method activate (line 139) | @Override
method activate (line 150) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/windup/CommandTask.java
class CommandTask (line 28) | public class CommandTask extends BukkitRunnable {
method CommandTask (line 39) | public CommandTask(CommandSign sign, boolean papi) {
method setSender (line 45) | public void setSender(CommandSender sender, boolean wasOp) {
method setPlayer (line 50) | public void setPlayer(Player player) {
method run (line 54) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/windup/DelayedPowerTask.java
class DelayedPowerTask (line 25) | public class DelayedPowerTask extends BukkitRunnable {
method DelayedPowerTask (line 31) | public DelayedPowerTask(RedstoneSign sign, boolean enable) {
method run (line 37) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/windup/DropSign.java
class DropSign (line 33) | public class DropSign extends Windup {
method DropSign (line 38) | public DropSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWo...
method getItem (line 42) | public ItemStack getItem() {
method setItem (line 46) | public void setItem(ItemStack item) {
method getName (line 50) | @Override
method getBuildPermission (line 55) | @Override
method isOnDungeonInit (line 60) | @Override
method isProtected (line 65) | @Override
method isSetToAir (line 70) | @Override
method validate (line 75) | @Override
method initialize (line 80) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/windup/MobSign.java
class MobSign (line 38) | public class MobSign extends Windup {
method MobSign (line 47) | public MobSign(DungeonsAPI api, Sign sign, String[] lines, InstanceWor...
method getMob (line 52) | public String getMob() {
method setMob (line 56) | public void setMob(String mob) {
method getInitialAmount (line 65) | public int getInitialAmount() {
method getSpawnedMobs (line 69) | public Collection<LivingEntity> getSpawnedMobs() {
method getName (line 73) | @Override
method getBuildPermission (line 78) | @Override
method isOnDungeonInit (line 83) | @Override
method isProtected (line 88) | @Override
method isSetToAir (line 93) | @Override
method validate (line 98) | @Override
method initialize (line 108) | @Override
method spawn (line 126) | public LivingEntity spawn() {
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/windup/MobSpawnTask.java
class MobSpawnTask (line 26) | public class MobSpawnTask extends BukkitRunnable {
method MobSpawnTask (line 33) | public MobSpawnTask(DungeonsAPI api, MobSign sign, int n) {
method run (line 39) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/sign/windup/RedstoneSign.java
class RedstoneSign (line 31) | public class RedstoneSign extends Rocker {
method RedstoneSign (line 40) | public RedstoneSign(DungeonsAPI api, Sign sign, String[] lines, Instan...
method getEnableTask (line 44) | public BukkitTask getEnableTask() {
method setEnableTask (line 48) | public void setEnableTask(BukkitTask enableTask) {
method getDisableTask (line 52) | public BukkitTask getDisableTask() {
method setDisableTask (line 56) | public void setDisableTask(BukkitTask disableTask) {
method getDelay (line 60) | public long getDelay() {
method setDelay (line 64) | public void setDelay(long delay) {
method getOffDelay (line 68) | public long getOffDelay() {
method setOffDelay (line 72) | public void setOffDelay(long offDelay) {
method getRepeat (line 76) | public int getRepeat() {
method setRepeat (line 80) | public void setRepeat(int repeat) {
method getRepeatsToDo (line 84) | public int getRepeatsToDo() {
method setRepeatsToDo (line 88) | public void setRepeatsToDo(int repeatsToDo) {
method getName (line 92) | @Override
method getBuildPermission (line 97) | @Override
method isOnDungeonInit (line 102) | @Override
method isProtected (line 107) | @Override
method isSetToAir (line 112) | @Override
method validate (line 117) | @Override
method initialize (line 122) | @Override
method activate (line 152) | @Override
method deactivate (line 173) | @Override
method power (line 191) | public void power() {
method unpower (line 195) | public void unpower() {
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/DistanceTrigger.java
class DistanceTrigger (line 33) | public class DistanceTrigger extends AbstractTrigger {
method DistanceTrigger (line 38) | public DistanceTrigger(DungeonsAPI api, TriggerListener owner, Logical...
method getKey (line 48) | @Override
method onTrigger (line 53) | @Override
method triggerAllInDistance (line 62) | public static void triggerAllInDistance(Player player, DGameWorld game...
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/FortuneTrigger.java
class FortuneTrigger (line 30) | public class FortuneTrigger extends AbstractTrigger {
method FortuneTrigger (line 34) | public FortuneTrigger(DungeonsAPI api, TriggerListener owner, LogicalE...
method getKey (line 39) | @Override
method getChance (line 48) | public double getChance() {
method setChance (line 55) | public void setChance(double chance) {
method onTrigger (line 60) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/InteractTrigger.java
class InteractTrigger (line 35) | public class InteractTrigger extends AbstractTrigger {
method InteractTrigger (line 42) | public InteractTrigger(DungeonsAPI api, TriggerListener owner, Logical...
method InteractTrigger (line 48) | private InteractTrigger(DungeonsAPI api, TriggerListener owner) {
method getInteractBlock (line 53) | public Block getInteractBlock() {
method setInteractBlock (line 57) | public void setInteractBlock(Block block) {
method getKey (line 61) | @Override
method onTrigger (line 66) | @Override
method getByBlock (line 72) | public static InteractTrigger getByBlock(Block block, GameWorld gameWo...
method getById (line 88) | public static InteractTrigger getById(int id, GameWorld gameWorld) {
method addDefault (line 104) | public static void addDefault(DungeonsAPI api, DungeonSign dungeonSign...
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/MobTrigger.java
class MobTrigger (line 30) | public class MobTrigger extends AbstractTrigger {
method MobTrigger (line 34) | public MobTrigger(DungeonsAPI api, TriggerListener owner, LogicalExpre...
method getKey (line 39) | @Override
method onTrigger (line 44) | @Override
method getByName (line 50) | public static MobTrigger getByName(String name, GameWorld gameWorld) {
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/PresenceTrigger.java
class PresenceTrigger (line 27) | public class PresenceTrigger extends DistanceTrigger {
method PresenceTrigger (line 29) | public PresenceTrigger(DungeonsAPI api, TriggerListener owner, Logical...
method getKey (line 33) | @Override
method onTrigger (line 38) | @Override
method postTrigger (line 46) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/ProgressTrigger.java
class ProgressTrigger (line 30) | public class ProgressTrigger extends AbstractTrigger {
method ProgressTrigger (line 37) | public ProgressTrigger(DungeonsAPI api, TriggerListener owner, Logical...
method ProgressTrigger (line 41) | public ProgressTrigger(DungeonsAPI api, TriggerListener owner, Logical...
method getKey (line 47) | @Override
method getFloor (line 56) | public DResourceWorld getFloor() {
method setFloor (line 63) | public void setFloor(DResourceWorld floor) {
method getFloorCount (line 70) | public int getFloorCount() {
method setFloorCount (line 77) | public void setFloorCount(int floorCount) {
method getWaveCount (line 84) | public int getWaveCount() {
method setWaveCount (line 91) | public void setWaveCount(int waveCount) {
method onTrigger (line 96) | @Override
method getOrCreate (line 102) | public static ProgressTrigger getOrCreate(DungeonsAPI api, TriggerList...
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/RedstoneTrigger.java
class RedstoneTrigger (line 35) | public class RedstoneTrigger extends AbstractTrigger {
method RedstoneTrigger (line 39) | public RedstoneTrigger(DungeonsAPI api, TriggerListener owner, Logical...
method getKey (line 50) | @Override
method onTrigger (line 55) | @Override
method updateAll (line 84) | public static void updateAll(GameWorld gameWorld) {
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/SignTrigger.java
class SignTrigger (line 31) | public class SignTrigger extends AbstractTrigger {
method SignTrigger (line 35) | public SignTrigger(DungeonsAPI api, TriggerListener owner, LogicalExpr...
method getKey (line 42) | @Override
method onTrigger (line 47) | @Override
method getById (line 55) | public static SignTrigger getById(int id, GameWorld gameWorld) {
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/TriggerListener.java
class TriggerListener (line 36) | public class TriggerListener implements Listener {
method TriggerListener (line 40) | public TriggerListener(DungeonsXL plugin) {
method onBlockRedstone (line 44) | @EventHandler
method onPlayerInteract (line 57) | @EventHandler
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/UseItemTrigger.java
class UseItemTrigger (line 31) | public class UseItemTrigger extends AbstractTrigger {
method UseItemTrigger (line 36) | public UseItemTrigger(DungeonsAPI api, TriggerListener owner, LogicalE...
method getKey (line 45) | @Override
method onTrigger (line 50) | @Override
method getByName (line 56) | public static UseItemTrigger getByName(String name, GameWorld gameWorl...
FILE: core/src/main/java/de/erethon/dungeonsxl/trigger/WaveTrigger.java
class WaveTrigger (line 29) | public class WaveTrigger extends AbstractTrigger {
method WaveTrigger (line 33) | public WaveTrigger(DungeonsAPI api, TriggerListener owner, LogicalExpr...
method getKey (line 38) | @Override
method getMustKillRate (line 46) | public double getMustKillRate() {
method setMustKillRate (line 53) | public void setMustKillRate(double mustKillRate) {
method onTrigger (line 57) | @Override
method postTrigger (line 62) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/util/AttributeUtil.java
class AttributeUtil (line 30) | public class AttributeUtil {
method get (line 47) | public static Attribute get(String key) {
method getDefaultPlayerValue (line 71) | public static final Double getDefaultPlayerValue(AttributeInstance att...
method resetPlayerAttributes (line 80) | public static void resetPlayerAttributes(Player player) {
FILE: core/src/main/java/de/erethon/dungeonsxl/util/BlockUtilCompat.java
class BlockUtilCompat (line 29) | public class BlockUtilCompat {
method getAttachedBlock (line 37) | public static Block getAttachedBlock(Block block) {
FILE: core/src/main/java/de/erethon/dungeonsxl/util/ContainerAdapter.java
class ContainerAdapter (line 29) | public class ContainerAdapter {
method isValidContainer (line 31) | public static boolean isValidContainer(Block block) {
method isValidContainer (line 39) | public static boolean isValidContainer(Inventory inventory) {
method getHolderBlock (line 47) | public static Block getHolderBlock(InventoryHolder holder) {
method getBlockInventory (line 55) | public static Inventory getBlockInventory(Block block) {
FILE: core/src/main/java/de/erethon/dungeonsxl/util/DependencyVersion.java
type DependencyVersion (line 34) | public enum DependencyVersion {
method DependencyVersion (line 76) | DependencyVersion(String name, String version) {
method DependencyVersion (line 80) | DependencyVersion(String name, String version, Predicate<String> enabl...
method getName (line 88) | public String getName() {
method getSupportedVersion (line 92) | public String getSupportedVersion() {
method getEnabledVersion (line 96) | public String getEnabledVersion() {
method isEnabled (line 100) | public boolean isEnabled() {
method check (line 104) | public boolean check() {
method getProperties (line 108) | public static Properties getProperties() {
FILE: core/src/main/java/de/erethon/dungeonsxl/util/LWCUtil.java
class LWCUtil (line 27) | public class LWCUtil {
method removeProtection (line 29) | public static void removeProtection(Block block) {
method isLWCLoaded (line 42) | public static boolean isLWCLoaded() {
FILE: core/src/main/java/de/erethon/dungeonsxl/util/LocationString.java
class LocationString (line 26) | public class LocationString {
method LocationString (line 34) | private LocationString(String string) {
method fromString (line 38) | public static LocationString fromString(String string) {
method getLocation (line 75) | public Location getLocation() {
method toString (line 86) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/util/ParsingUtil.java
type ParsingUtil (line 25) | public enum ParsingUtil {
method ParsingUtil (line 33) | ParsingUtil(String placeholder) {
method getPlaceholder (line 41) | public String getPlaceholder() {
method toString (line 45) | @Override
method replaceChatPlaceholders (line 58) | public static String replaceChatPlaceholders(String string, GlobalPlay...
FILE: core/src/main/java/de/erethon/dungeonsxl/util/PlaceholderUtil.java
class PlaceholderUtil (line 29) | public class PlaceholderUtil extends PlaceholderExpansion {
method PlaceholderUtil (line 35) | public PlaceholderUtil(DungeonsXL plugin, String identifier) {
method getAuthor (line 40) | @Override
method getIdentifier (line 45) | @Override
method getRequiredPlugin (line 50) | @Override
method getVersion (line 55) | @Override
method persist (line 60) | @Override
method onRequest (line 65) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/world/DEditWorld.java
class DEditWorld (line 44) | public class DEditWorld extends DInstanceWorld implements EditWorld {
method DEditWorld (line 50) | DEditWorld(DungeonsXL plugin, DResourceWorld resourceWorld, File folde...
method getIdFile (line 60) | public File getIdFile() {
method generateIdFile (line 67) | public void generateIdFile() {
method registerSign (line 78) | @Override
method save (line 90) | @Override
method forceSave (line 136) | public void forceSave() {
method delete (line 151) | @Override
method delete (line 156) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/world/DGameWorld.java
class DGameWorld (line 75) | public class DGameWorld extends DInstanceWorld implements GameWorld {
method DGameWorld (line 100) | DGameWorld(DungeonsXL plugin, DResourceWorld resourceWorld, File folde...
method getType (line 109) | @Override
method setType (line 114) | @Override
method getGame (line 119) | @Override
method getStartLocation (line 124) | @Override
method areClassesEnabled (line 152) | @Override
method setClassesEnabled (line 157) | @Override
method createDungeonSign (line 162) | @Override
method createTrigger (line 198) | @Override
method createTriggers (line 245) | @Override
method getTrigger (line 256) | public Trigger getTrigger(char key, String value) {
method getPlacedBlocks (line 271) | @Override
method getGameBlocks (line 279) | public Set<GameBlock> getGameBlocks() {
method addGameBlock (line 286) | public void addGameBlock(GameBlock gameBlock) {
method removeGameBlock (line 305) | public void removeGameBlock(GameBlock gameBlock) {
method getRewardChests (line 324) | public Set<RewardChest> getRewardChests() {
method getLockedDoors (line 331) | public Set<LockedDoor> getLockedDoors() {
method getPlaceableBlocks (line 338) | public Set<PlaceableBlock> getPlaceableBlocks() {
method getTeamBeds (line 345) | public Set<TeamBed> getTeamBeds() {
method getTeamFlags (line 352) | public Set<TeamFlag> getTeamFlags() {
method getSecureObjects (line 359) | public List<ItemStack> getSecureObjects() {
method setSecureObjects (line 366) | public void setSecureObjects(List<ItemStack> secureObjects) {
method getMobs (line 370) | @Override
method addMob (line 375) | @Override
method removeMob (line 380) | @Override
method isPlaying (line 385) | @Override
method setPlaying (line 390) | public void setPlaying(boolean isPlaying) {
method getTriggers (line 394) | @Override
method getTriggersFromKey (line 399) | @Override
method unregisterTrigger (line 406) | @Override
method getMobCount (line 414) | public int getMobCount() {
method getDungeon (line 437) | @Override
method hasReadySign (line 452) | public boolean hasReadySign() {
method setReadySign (line 456) | public void setReadySign(ReadySign readySign) {
method startGame (line 463) | public void startGame() {
method delete (line 520) | @Override
method getRules (line 546) | private GameRuleContainer getRules() {
method onBreak (line 556) | public boolean onBreak(BlockBreakEvent event) {
method onPlace (line 624) | public boolean onPlace(Player player, Block block, Block against, Item...
FILE: core/src/main/java/de/erethon/dungeonsxl/world/DInstanceWorld.java
class DInstanceWorld (line 44) | public abstract class DInstanceWorld implements InstanceWorld {
method DInstanceWorld (line 58) | DInstanceWorld(DungeonsXL plugin, DResourceWorld resourceWorld, File f...
method getName (line 70) | @Override
method getResource (line 75) | @Override
method getFolder (line 80) | @Override
method getWorld (line 85) | @Override
method exists (line 98) | public boolean exists() {
method getId (line 102) | @Override
method getDungeonSigns (line 107) | @Override
method createDungeonSign (line 112) | @Override
method removeDungeonSign (line 133) | @Override
method removeDungeonSign (line 138) | @Override
method getDungeonSign (line 143) | @Override
method getLobbyLocation (line 148) | @Override
method setLobbyLocation (line 153) | @Override
method getPlayers (line 158) | @Override
method sendMessage (line 164) | @Override
method kickAllPlayers (line 169) | @Override
method setWeather (line 181) | public void setWeather(GameRuleContainer rules) {
method generateName (line 206) | public static String generateName(boolean game) {
method toString (line 223) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/world/DResourceWorld.java
class DResourceWorld (line 44) | public class DResourceWorld implements ResourceWorld {
method DResourceWorld (line 55) | public DResourceWorld(DungeonsXL plugin, String name) {
method DResourceWorld (line 71) | public DResourceWorld(DungeonsXL plugin, File folder) {
method getName (line 85) | @Override
method setName (line 90) | @Override
method getFolder (line 96) | @Override
method getRules (line 101) | @Override
method getConfig (line 112) | public WorldConfig getConfig(boolean generate) {
method getWorldEnvironment (line 128) | @Override
method addInvitedPlayer (line 133) | @Override
method removeInvitedPlayer (line 139) | @Override
method isInvitedPlayer (line 158) | @Override
method backup (line 168) | @Override
method instantiate (line 174) | public DInstanceWorld instantiate(Game game) {
method getEditWorld (line 210) | @Override
method getOrInstantiateEditWorld (line 215) | @Override
method instantiateGameWorld (line 231) | @Override
method getSingleFloorDungeon (line 242) | @Override
method getSignData (line 252) | public SignData getSignData() {
method generate (line 261) | public DEditWorld generate() {
method clearFolder (line 289) | void clearFolder() {
method deleteUnusedFiles (line 307) | public static void deleteUnusedFiles(File dir) {
method createRaw (line 318) | public static void createRaw() {
method toString (line 329) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/world/DWorldListener.java
class DWorldListener (line 66) | public class DWorldListener implements Listener {
method DWorldListener (line 71) | public DWorldListener(DungeonsXL plugin) {
method onInit (line 76) | @EventHandler(priority = EventPriority.HIGHEST)
method onBlockBreak (line 84) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onBlockInteract (line 103) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method getItemInHand (line 140) | private ItemStack getItemInHand(PlayerInteractEvent event) {
method onBlockPlace (line 149) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onBlockIgnite (line 163) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onBlockSpread (line 174) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onEntityExplode (line 183) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onEntityDamage (line 197) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onHangingBreak (line 202) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onPlayerInteractEntity (line 207) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onArmorStandManipulate (line 212) | @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
method onTouch (line 222) | public void onTouch(Cancellable event, Entity entity, boolean interact) {
method onItemSpawn (line 235) | @EventHandler
method onBlockFade (line 244) | @EventHandler
method onWeatherChange (line 265) | @EventHandler
FILE: core/src/main/java/de/erethon/dungeonsxl/world/LWCIntegration.java
class LWCIntegration (line 28) | public class LWCIntegration extends JavaModule {
method LWCIntegration (line 32) | public LWCIntegration(DungeonsXL plugin) {
method onRegisterProtection (line 37) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/world/SignData.java
class SignData (line 37) | public class SignData {
method SignData (line 43) | public SignData(File file) {
method getFile (line 55) | public File getFile() {
method updateFile (line 59) | public void updateFile(DResourceWorld resource) {
method deserializeSigns (line 68) | public void deserializeSigns(InstanceWorld instance) {
method serializeSigns (line 103) | public void serializeSigns(InstanceWorld instance) {
method serializeSigns (line 112) | public void serializeSigns(Collection<DungeonSign> signs) {
FILE: core/src/main/java/de/erethon/dungeonsxl/world/WorldConfig.java
class WorldConfig (line 38) | public class WorldConfig extends GameRuleContainer {
method WorldConfig (line 50) | public WorldConfig(DungeonsXL plugin, File file) {
method WorldConfig (line 57) | public WorldConfig(DungeonsXL plugin, ConfigurationSection config) {
method load (line 66) | public void load() {
method updateGameRule (line 72) | public void updateGameRule(GameRule rule) {
method save (line 76) | public void save() {
method getInvitedPlayers (line 104) | public List<String> getInvitedPlayers() {
method addInvitedPlayer (line 111) | public void addInvitedPlayer(String uuid) {
method removeInvitedPlayers (line 121) | public void removeInvitedPlayers(String uuid, String name) {
method getWorldEnvironment (line 129) | public Environment getWorldEnvironment() {
method setWorldEnvironment (line 136) | public void setWorldEnvironment(Environment worldEnvironment) {
FILE: core/src/main/java/de/erethon/dungeonsxl/world/block/GameBlock.java
class GameBlock (line 28) | public abstract class GameBlock {
method GameBlock (line 34) | public GameBlock(DungeonsAPI api, Block block) {
method getBlock (line 43) | public Block getBlock() {
method setBlock (line 50) | public void setBlock(Block block) {
method onBreak (line 61) | public abstract boolean onBreak(BlockBreakEvent event);
method toString (line 63) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/world/block/LockedDoor.java
class LockedDoor (line 30) | public class LockedDoor extends GameBlock implements MultiBlock {
method LockedDoor (line 34) | public LockedDoor(DungeonsAPI api, Block block) {
method getAttachedBlock (line 40) | @Override
method onBreak (line 51) | @Override
method open (line 59) | public void open() {
method close (line 66) | public void close() {
method toString (line 70) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/world/block/MultiBlock.java
type MultiBlock (line 26) | public interface MultiBlock {
method getAttachedBlock (line 28) | Block getAttachedBlock();
FILE: core/src/main/java/de/erethon/dungeonsxl/world/block/PlaceableBlock.java
class PlaceableBlock (line 35) | public class PlaceableBlock extends GameBlock {
method PlaceableBlock (line 43) | public PlaceableBlock(DungeonsAPI api, DGameWorld gameWorld, Block blo...
method onBreak (line 67) | @Override
method onPlace (line 72) | public void onPlace(Player player) {
method canPlace (line 79) | public boolean canPlace(Block toPlace, ExItem material) {
method canBuildHere (line 84) | public static boolean canBuildHere(Block block, ExItem material, DGame...
FILE: core/src/main/java/de/erethon/dungeonsxl/world/block/ProtectedBlock.java
class ProtectedBlock (line 26) | public class ProtectedBlock extends GameBlock {
method ProtectedBlock (line 28) | public ProtectedBlock(DungeonsAPI api, Block block) {
method onBreak (line 33) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/world/block/RewardChest.java
class RewardChest (line 44) | public class RewardChest extends GameBlock {
method RewardChest (line 53) | public RewardChest(DungeonsXL plugin, Block container, double moneyRew...
method isUsed (line 65) | public boolean isUsed() {
method setUsed (line 72) | public void setUsed(boolean used) {
method getMoneyReward (line 79) | public double getMoneyReward() {
method setMoneyReward (line 86) | public void setMoneyReward(double moneyReward) {
method getLevelReward (line 93) | public double getLevelReward() {
method setLevelReward (line 100) | public void setLevelReward(int levelReward) {
method onBreak (line 105) | @Override
method onOpen (line 113) | public void onOpen(Player opener) {
method addTreasure (line 125) | public void addTreasure(PlayerGroup group, GamePlayer collector) {
FILE: core/src/main/java/de/erethon/dungeonsxl/world/block/TeamBed.java
class TeamBed (line 35) | public class TeamBed extends TeamBlock implements MultiBlock {
method TeamBed (line 39) | public TeamBed(DungeonsAPI api, Block block, DGroup owner) {
method getAttachedBlock (line 45) | public Block getAttachedBlock(Block block) {
method getAttachedBlock (line 63) | @Override
method onBreak (line 74) | @Override
method toString (line 99) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/world/block/TeamBlock.java
class TeamBlock (line 26) | public abstract class TeamBlock extends GameBlock {
method TeamBlock (line 30) | public TeamBlock(DungeonsAPI api, Block block, DGroup owner) {
method getOwner (line 39) | public DGroup getOwner() {
method setOwner (line 46) | public void setOwner(DGroup owner) {
method toString (line 50) | @Override
FILE: core/src/main/java/de/erethon/dungeonsxl/world/block/TeamFlag.java
class TeamFlag (line 33) | public class TeamFlag extends TeamBlock {
method TeamFlag (line 35) | public TeamFlag(DungeonsAPI api, Block block, DGroup owner) {
method reset (line 44) | public void reset() {
method onBreak (line 48) | @Override
Condensed preview — 279 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,246K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 1142,
"preview": "---\nname: Bug report\nabout: Create a bug report to help us improve\n\n---\n\n(Please follow this template, as doing so saves"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 486,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\n\n---\n\n**Please describe the use case or the problem yo"
},
{
"path": ".github/ISSUE_TEMPLATE/question.md",
"chars": 497,
"preview": "---\nname: Question\nabout: About things you do not understand in the documentation\n\n---\n\n**The feature you'd like to know"
},
{
"path": ".gitignore",
"chars": 97,
"preview": "*apache-maven-*\r\nlicenseheader.txt\r\n*dependency-reduced-pom.xml\r\n*nb-configuration.xml\r\n*target\r\n"
},
{
"path": ".travis.yml",
"chars": 15,
"preview": "language: java\n"
},
{
"path": "LICENSE",
"chars": 35067,
"preview": "\n\t\t GNU GENERAL PUBLIC LICENSE\n\t\t Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <"
},
{
"path": "README.md",
"chars": 4598,
"preview": "\n\n[ 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "addon/README.md",
"chars": 248,
"preview": "## DungeonsXL Donors Addon\n\n(C) 2020-2023 Daniel Saukel, All Rights Reserved.\n\nThis module is a plugin with additional f"
},
{
"path": "addon/core/pom.xml",
"chars": 1221,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
},
{
"path": "addon/core/src/main/java/de/erethon/dungeonsxxl/DungeonsXXL.java",
"chars": 2756,
"preview": "/*\n * Copyright (C) 2020-2026 Daniel Saukel\n *\n * All rights reserved.\n */\npackage de.erethon.dungeonsxxl;\n\nimport de.er"
},
{
"path": "addon/core/src/main/java/de/erethon/dungeonsxxl/requirement/FeeItemsRequirement.java",
"chars": 2262,
"preview": "/*\n * Copyright (C) 2020-2026 Daniel Saukel\n *\n * All rights reserved.\n */\npackage de.erethon.dungeonsxxl.requirement;\n\n"
},
{
"path": "addon/core/src/main/java/de/erethon/dungeonsxxl/sign/FireworkSign.java",
"chars": 1275,
"preview": "/*\n * Copyright (C) 2020-2026 Daniel Saukel\n *\n * All rights reserved.\n */\npackage de.erethon.dungeonsxxl.sign;\n\nimport "
},
{
"path": "addon/core/src/main/java/de/erethon/dungeonsxxl/sign/GlowingBlockSign.java",
"chars": 2878,
"preview": "/*\n * Copyright (C) 2020-2026 Daniel Saukel\n *\n * All rights reserved.\n */\npackage de.erethon.dungeonsxxl.sign;\n\nimport "
},
{
"path": "addon/core/src/main/java/de/erethon/dungeonsxxl/sign/InteractWallSign.java",
"chars": 1587,
"preview": "/*\n * Copyright (C) 2020-2026 Daniel Saukel\n *\n * All rights reserved.\n */\npackage de.erethon.dungeonsxxl.sign;\n\nimport "
},
{
"path": "addon/core/src/main/java/de/erethon/dungeonsxxl/sign/ParticleSign.java",
"chars": 2228,
"preview": "/*\n * Copyright (C) 2020-2026 Daniel Saukel\n *\n * All rights reserved.\n */\npackage de.erethon.dungeonsxxl.sign;\n\nimport "
},
{
"path": "addon/core/src/main/java/de/erethon/dungeonsxxl/util/FireworkUtil.java",
"chars": 2050,
"preview": "/*\n * Copyright (C) 2020-2026 Daniel Saukel\n *\n * All rights reserved.\n */\npackage de.erethon.dungeonsxxl.util;\n\nimport "
},
{
"path": "addon/core/src/main/java/de/erethon/dungeonsxxl/util/GlowUtil.java",
"chars": 14025,
"preview": "/*\n * Copyright (C) 2020-2026 Daniel Saukel\n *\n * All rights reserved.\n */\npackage de.erethon.dungeonsxxl.util;\n\nimport "
},
{
"path": "addon/core/src/main/java/de/erethon/dungeonsxxl/world/block/GlowingBlock.java",
"chars": 1460,
"preview": "/*\n * Copyright (C) 2020-2026 Daniel Saukel\n *\n * All rights reserved.\n */\npackage de.erethon.dungeonsxxl.world.block;\n\n"
},
{
"path": "addon/core/src/main/resources/plugin.yml",
"chars": 200,
"preview": "name: DungeonsXXL\nmain: de.erethon.dungeonsxxl.DungeonsXXL\nversion: ${project.version}${buildNo}\nauthor: Daniel Saukel\nd"
},
{
"path": "addon/dist/pom.xml",
"chars": 1481,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
},
{
"path": "addon/pom.xml",
"chars": 1100,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
},
{
"path": "api/LICENSE",
"chars": 7652,
"preview": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007"
},
{
"path": "api/pom.xml",
"chars": 1610,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/DungeonModule.java",
"chars": 2398,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/DungeonsAPI.java",
"chars": 10314,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/Requirement.java",
"chars": 2196,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/Reward.java",
"chars": 1157,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/dungeon/BuildMode.java",
"chars": 2375,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/dungeon/CollectionGameRule.java",
"chars": 4431,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/dungeon/ConfigReader.java",
"chars": 4678,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/dungeon/Copier.java",
"chars": 1069,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/dungeon/Dungeon.java",
"chars": 6373,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/dungeon/Game.java",
"chars": 6340,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/dungeon/GameGoal.java",
"chars": 4647,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/dungeon/GameRule.java",
"chars": 21400,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/dungeon/GameRuleContainer.java",
"chars": 3026,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/dungeon/MapGameRule.java",
"chars": 3614,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/DataReloadEvent.java",
"chars": 1568,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupCollectRewardEvent.java",
"chars": 2786,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupCreateEvent.java",
"chars": 2782,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupDisbandEvent.java",
"chars": 2749,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupEvent.java",
"chars": 1284,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupFinishDungeonEvent.java",
"chars": 2392,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupFinishFloorEvent.java",
"chars": 2721,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupPlayerJoinEvent.java",
"chars": 2369,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupPlayerKickEvent.java",
"chars": 2833,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupPlayerLeaveEvent.java",
"chars": 2044,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupScoreEvent.java",
"chars": 2351,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/group/GroupStartFloorEvent.java",
"chars": 2036,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/mob/DungeonMobDeathEvent.java",
"chars": 2096,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/mob/DungeonMobEvent.java",
"chars": 1558,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/mob/DungeonMobSpawnEvent.java",
"chars": 1548,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/player/EditPlayerEditEvent.java",
"chars": 1890,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/player/EditPlayerEvent.java",
"chars": 1280,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/player/EditPlayerLeaveEvent.java",
"chars": 2774,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/player/GamePlayerDeathEvent.java",
"chars": 2975,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/player/GamePlayerEvent.java",
"chars": 1280,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/player/GamePlayerFinishEvent.java",
"chars": 2433,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/player/GlobalPlayerEvent.java",
"chars": 1684,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/player/GlobalPlayerRewardPayOutEvent.java",
"chars": 2225,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/requirement/RequirementCheckEvent.java",
"chars": 3803,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/requirement/RequirementDemandEvent.java",
"chars": 2772,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/requirement/RequirementEvent.java",
"chars": 1884,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/trigger/TriggerActionEvent.java",
"chars": 2183,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/trigger/TriggerEvent.java",
"chars": 1498,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/trigger/TriggerRegistrationEvent.java",
"chars": 1716,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/trigger/TriggerUnregistrationEvent.java",
"chars": 1725,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/EditWorldEvent.java",
"chars": 1270,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/EditWorldGenerateEvent.java",
"chars": 1441,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/EditWorldSaveEvent.java",
"chars": 1706,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/EditWorldUnloadEvent.java",
"chars": 2090,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/GameWorldEvent.java",
"chars": 1605,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/GameWorldStartGameEvent.java",
"chars": 2077,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/InstanceWorldEvent.java",
"chars": 1573,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/InstanceWorldPostUnloadEvent.java",
"chars": 2071,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/InstanceWorldUnloadEvent.java",
"chars": 1729,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/ResourceWorldEvent.java",
"chars": 1353,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/event/world/ResourceWorldInstantiateEvent.java",
"chars": 2502,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/mob/DungeonMob.java",
"chars": 1578,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/mob/ExternalMobProvider.java",
"chars": 3196,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/mob/MobSet.java",
"chars": 1992,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/player/EditPlayer.java",
"chars": 2312,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/player/GamePlayer.java",
"chars": 6850,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/player/GlobalPlayer.java",
"chars": 4910,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/player/GroupAdapter.java",
"chars": 6186,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/player/InstancePlayer.java",
"chars": 1584,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/player/PlayerCache.java",
"chars": 8143,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/player/PlayerClass.java",
"chars": 3734,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/player/PlayerGroup.java",
"chars": 12466,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/sign/AbstractDSign.java",
"chars": 4627,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/sign/Button.java",
"chars": 3539,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/sign/Deactivatable.java",
"chars": 5963,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/sign/DungeonSign.java",
"chars": 4617,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/sign/Passive.java",
"chars": 1618,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/sign/Rocker.java",
"chars": 1965,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/sign/Windup.java",
"chars": 5054,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/trigger/AbstractTrigger.java",
"chars": 3231,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/trigger/LogicalExpression.java",
"chars": 11411,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/trigger/Trigger.java",
"chars": 9966,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/trigger/TriggerListener.java",
"chars": 3544,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/trigger/TriggerTypeKey.java",
"chars": 1473,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/world/EditWorld.java",
"chars": 1643,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/world/GameWorld.java",
"chars": 6826,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/world/InstanceWorld.java",
"chars": 4314,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "api/src/main/java/de/erethon/dungeonsxl/api/world/ResourceWorld.java",
"chars": 4779,
"preview": "/*\n * Copyright (C) 2015-2026 Daniel Saukel\n *\n * This library is free software: you can redistribute it and/or modify i"
},
{
"path": "build.bat",
"chars": 26,
"preview": "java -jar mvnbt.jar\npause\n"
},
{
"path": "build.sh",
"chars": 77,
"preview": "#!/bin/bash\njava -jar mvnbt.jar\nread -rp \"Press any key to continue...\" -n 1\n"
},
{
"path": "bukkit_blockdata/pom.xml",
"chars": 1342,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
},
{
"path": "bukkit_blockdata/src/main/java/de/erethon/dungeonsxl/adapter/block/BlockAdapterBlockData.java",
"chars": 3601,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "bukkit_magicvalues/pom.xml",
"chars": 1341,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
},
{
"path": "bukkit_magicvalues/src/main/java/de/erethon/dungeonsxl/adapter/block/BlockAdapterMagicValues.java",
"chars": 2687,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/pom.xml",
"chars": 6029,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocat"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/DXLModule.java",
"chars": 5568,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/DungeonsXL.java",
"chars": 28682,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/BreakCommand.java",
"chars": 1977,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/ChatCommand.java",
"chars": 2088,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/ChatSpyCommand.java",
"chars": 1852,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/CreateCommand.java",
"chars": 3461,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/DCommand.java",
"chars": 1392,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/DCommandRegistry.java",
"chars": 4385,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/DeleteCommand.java",
"chars": 4588,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/DungeonItemCommand.java",
"chars": 3228,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/EditCommand.java",
"chars": 3286,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/EnterCommand.java",
"chars": 3509,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/EscapeCommand.java",
"chars": 2960,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/GameCommand.java",
"chars": 3052,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/GroupCommand.java",
"chars": 10959,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/HelpCommand.java",
"chars": 2537,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/ImportCommand.java",
"chars": 3063,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/InviteCommand.java",
"chars": 2221,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/KickCommand.java",
"chars": 1973,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/LeaveCommand.java",
"chars": 3306,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/ListCommand.java",
"chars": 7098,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/LivesCommand.java",
"chars": 3250,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/MainCommand.java",
"chars": 3381,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/MsgCommand.java",
"chars": 4884,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/PlayCommand.java",
"chars": 3643,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/PortalCommand.java",
"chars": 3640,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/ReloadCommand.java",
"chars": 4249,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/RenameCommand.java",
"chars": 4557,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/ResourcePackCommand.java",
"chars": 2001,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/SaveCommand.java",
"chars": 2190,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/StatusCommand.java",
"chars": 5392,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/TestCommand.java",
"chars": 3904,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/command/UninviteCommand.java",
"chars": 2072,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/config/DMessage.java",
"chars": 11281,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/config/MainConfig.java",
"chars": 18421,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/dungeon/DDungeon.java",
"chars": 6062,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/dungeon/DGame.java",
"chars": 11346,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/dungeon/DungeonConfig.java",
"chars": 4108,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/global/DPortal.java",
"chars": 12359,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/global/GameSign.java",
"chars": 7788,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/global/GlobalProtection.java",
"chars": 3316,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/global/GlobalProtectionCache.java",
"chars": 10219,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/global/GlobalProtectionListener.java",
"chars": 13160,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/global/GroupSign.java",
"chars": 8465,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/global/JoinSign.java",
"chars": 7088,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/global/LeaveSign.java",
"chars": 4475,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/global/UnloadedProtection.java",
"chars": 2977,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/mob/CitizensMobProvider.java",
"chars": 4056,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/mob/CustomExternalMobProvider.java",
"chars": 1639,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/mob/DMob.java",
"chars": 5168,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/mob/DMobListener.java",
"chars": 3408,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/mob/DNPCRegistry.java",
"chars": 5332,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/mob/ExternalMobPlugin.java",
"chars": 1551,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/DEditPlayer.java",
"chars": 5875,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/DGamePlayer.java",
"chars": 27699,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/DGlobalPlayer.java",
"chars": 15404,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/DGroup.java",
"chars": 19155,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/DGroupTag.java",
"chars": 1611,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/DInstancePlayer.java",
"chars": 4311,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/DPermission.java",
"chars": 5301,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/DPlayerData.java",
"chars": 22032,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/DPlayerListener.java",
"chars": 21937,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/RespawnTask.java",
"chars": 1787,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/SecureModeTask.java",
"chars": 1897,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/TimeIsRunningTask.java",
"chars": 2852,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/player/groupadapter/PartiesAdapter.java",
"chars": 4614,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/requirement/FeeLevelRequirement.java",
"chars": 3832,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/requirement/FeeMoneyRequirement.java",
"chars": 2901,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/requirement/FinishedDungeonsRequirement.java",
"chars": 6195,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/requirement/ForbiddenItemsRequirement.java",
"chars": 4556,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/requirement/GroupSizeRequirement.java",
"chars": 3103,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/requirement/KeyItemsRequirement.java",
"chars": 3284,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/requirement/PermissionRequirement.java",
"chars": 2922,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/requirement/TimeSinceFinishRequirement.java",
"chars": 3082,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/requirement/TimeSinceStartRequirement.java",
"chars": 3076,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/requirement/TimeframeRequirement.java",
"chars": 5807,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/reward/ItemReward.java",
"chars": 2006,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/reward/LevelReward.java",
"chars": 1664,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/reward/MoneyReward.java",
"chars": 1811,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/reward/RewardListener.java",
"chars": 6337,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/sign/DSignListener.java",
"chars": 4697,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/sign/LocationSign.java",
"chars": 1502,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/sign/button/ActionBarSign.java",
"chars": 1571,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/sign/button/BossShopSign.java",
"chars": 3427,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/sign/button/ChatMessageSign.java",
"chars": 1585,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
},
{
"path": "core/src/main/java/de/erethon/dungeonsxl/sign/button/CheckpointSign.java",
"chars": 3165,
"preview": "/*\n * Copyright (C) 2012-2013 Frank Baumann; 2015-2026 Daniel Saukel\n *\n * This program is free software: you can redist"
}
]
// ... and 79 more files (download for full content)
About this extraction
This page contains the full source code of the DRE2N/DungeonsXL GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 279 files (1.1 MB), approximately 277.7k tokens, and a symbol index with 2467 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.