Skip to content

Commit 40c2418

Browse files
committed
Merge branch 'master' into move-packages-and-move-config-sections
2 parents 5013604 + 046c0df commit 40c2418

File tree

13 files changed

+184
-32
lines changed

13 files changed

+184
-32
lines changed

buildSrc/src/main/kotlin/Versions.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ object Versions {
1818
const val CDN_CONFIGS = "1.14.6"
1919

2020
const val MARIA_DB = "3.5.1"
21-
const val POSTGRESQL = "42.7.4"
21+
const val POSTGRESQL = "42.7.5"
2222
const val H2 = "2.3.232"
2323
const val ORMLITE = "6.1"
2424
const val HIKARI_CP = "6.2.1"
@@ -37,7 +37,7 @@ object Versions {
3737

3838
const val BSTATS = "3.1.0"
3939

40-
const val CAFFEINE = "3.1.8"
40+
const val CAFFEINE = "3.2.0"
4141

4242
const val SPOTIFY_COMPLETABLE_FUTURES = "0.3.6"
4343

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.eternalcode.core.feature.butcher;
2+
3+
import org.bukkit.entity.Entity;
4+
import org.bukkit.event.Cancellable;
5+
import org.bukkit.event.Event;
6+
import org.bukkit.event.HandlerList;
7+
8+
public class ButcherEntityRemoveEvent extends Event implements Cancellable {
9+
10+
private static final HandlerList HANDLER_LIST = new HandlerList();
11+
12+
private boolean cancelled;
13+
private final Entity entity;
14+
15+
public ButcherEntityRemoveEvent(Entity entity) {
16+
this.entity = entity;
17+
}
18+
19+
@Override
20+
public boolean isCancelled() {
21+
return cancelled;
22+
}
23+
24+
@Override
25+
public void setCancelled(boolean cancelled) {
26+
this.cancelled = cancelled;
27+
}
28+
29+
public Entity getEntity() {
30+
return entity;
31+
}
32+
33+
@Override
34+
public HandlerList getHandlers() {
35+
return HANDLER_LIST;
36+
}
37+
38+
public static HandlerList getHandlerList() {
39+
return HANDLER_LIST;
40+
}
41+
}

eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.eternalcode.core.database.DatabaseType;
55
import com.eternalcode.core.feature.afk.AfkSettings;
66
import com.eternalcode.core.feature.automessage.AutoMessageSettings;
7+
import com.eternalcode.core.feature.catboy.CatBoySettings;
78
import com.eternalcode.core.feature.chat.ChatSettings;
89
import com.eternalcode.core.feature.helpop.HelpOpSettings;
910
import com.eternalcode.core.feature.jail.JailSettings;
@@ -421,6 +422,24 @@ public Set<String> allowedCommands() {
421422
}
422423
}
423424

425+
@Bean
426+
@Description({ " ", "# 4fun Section" })
427+
FunSection fun = new FunSection();
428+
429+
@Contextual
430+
public static class FunSection implements CatBoySettings {
431+
@Description({
432+
"# Speed of player walk speed while using /catboy feature",
433+
"# Default minecraft walk speed is 0.2"
434+
})
435+
public float catboyWalkSpeed = 0.4F;
436+
437+
@Override
438+
public float getCatboyWalkSpeed() {
439+
return this.catboyWalkSpeed;
440+
}
441+
}
442+
424443
@Override
425444
public Resource resource(File folder) {
426445
return Source.of(folder, "config.yml");
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
package com.eternalcode.core.feature.essentials.mob;
1+
package com.eternalcode.core.feature.butcher;
22

33
import com.eternalcode.core.bridge.litecommand.argument.AbstractViewerArgument;
44
import com.eternalcode.core.configuration.implementation.PluginConfiguration;
55
import com.eternalcode.core.injector.annotations.Inject;
66
import com.eternalcode.core.injector.annotations.lite.LiteArgument;
7+
import com.eternalcode.core.viewer.ViewerService;
78
import com.eternalcode.multification.notice.NoticeBroadcast;
89
import com.eternalcode.core.notice.NoticeService;
910
import com.eternalcode.core.translation.Translation;
1011
import com.eternalcode.core.translation.TranslationManager;
1112
import com.eternalcode.core.viewer.Viewer;
12-
import com.eternalcode.core.viewer.ViewerService;
1313
import dev.rollczi.litecommands.argument.Argument;
1414
import dev.rollczi.litecommands.argument.parser.ParseResult;
1515
import dev.rollczi.litecommands.invocation.Invocation;
Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.eternalcode.core.feature.essentials.mob;
1+
package com.eternalcode.core.feature.butcher;
22

33
import com.eternalcode.annotations.scan.command.DescriptionDocs;
4-
import com.eternalcode.core.configuration.implementation.PluginConfiguration;
4+
import com.eternalcode.core.event.EventCaller;
55
import com.eternalcode.core.injector.annotations.Inject;
66
import com.eternalcode.core.notice.NoticeService;
77
import dev.rollczi.litecommands.annotations.argument.Arg;
@@ -25,10 +25,12 @@
2525
class ButcherCommand {
2626

2727
private final NoticeService noticeService;
28+
private final EventCaller eventCaller;
2829

2930
@Inject
30-
ButcherCommand(NoticeService noticeService, PluginConfiguration pluginConfiguration) {
31+
ButcherCommand(NoticeService noticeService, EventCaller eventCaller) {
3132
this.noticeService = noticeService;
33+
this.eventCaller = eventCaller;
3234
}
3335

3436
@Execute
@@ -51,16 +53,21 @@ void execute(@Context Player player, @Arg(ButcherArgument.KEY) int chunks, @Arg(
5153

5254
private void killMobs(Player player, int chunksNumber, MobFilter mobFilter) {
5355
Collection<Chunk> chunks = this.getChunksNearPlayer(player, chunksNumber);
54-
5556
int killedMobs = 0;
5657

5758
for (Chunk chunk : chunks) {
5859
for (Entity entity : chunk.getEntities()) {
59-
6060
if (!mobFilter.filterMob(entity)) {
6161
continue;
6262
}
6363

64+
ButcherEntityRemoveEvent event = new ButcherEntityRemoveEvent(entity);
65+
this.eventCaller.callEvent(event);
66+
67+
if (event.isCancelled()) {
68+
continue;
69+
}
70+
6471
entity.remove();
6572
killedMobs++;
6673
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/essentials/mob/MobEntity.java renamed to eternalcore-core/src/main/java/com/eternalcode/core/feature/butcher/MobEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.eternalcode.core.feature.essentials.mob;
1+
package com.eternalcode.core.feature.butcher;
22

33
import com.eternalcode.core.util.EntityUtil;
44
import org.bukkit.entity.Animals;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.eternalcode.core.feature.essentials.mob;
1+
package com.eternalcode.core.feature.butcher;
22

33
import com.eternalcode.core.bridge.litecommand.argument.AbstractViewerArgument;
44
import com.eternalcode.core.injector.annotations.Inject;

eternalcore-core/src/main/java/com/eternalcode/core/feature/essentials/mob/MobFilter.java renamed to eternalcore-core/src/main/java/com/eternalcode/core/feature/butcher/MobFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.eternalcode.core.feature.essentials.mob;
1+
package com.eternalcode.core.feature.butcher;
22

33
import org.bukkit.entity.Entity;
44

eternalcore-core/src/main/java/com/eternalcode/core/feature/essentials/mob/MobType.java renamed to eternalcore-core/src/main/java/com/eternalcode/core/feature/butcher/MobType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.eternalcode.core.feature.essentials.mob;
1+
package com.eternalcode.core.feature.butcher;
22

33
enum MobType {
44

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.eternalcode.core.feature.catboy;
2+
3+
import com.eternalcode.core.injector.annotations.Inject;
4+
import com.eternalcode.core.injector.annotations.component.Service;
5+
import org.bukkit.NamespacedKey;
6+
import org.bukkit.entity.Cat;
7+
import org.bukkit.entity.EntityType;
8+
import org.bukkit.entity.Player;
9+
import org.bukkit.persistence.PersistentDataContainer;
10+
import org.bukkit.persistence.PersistentDataType;
11+
import org.bukkit.plugin.Plugin;
12+
13+
@Service
14+
class CatBoyEntityService {
15+
16+
private final NamespacedKey catboyNamespacedKey;
17+
18+
@Inject
19+
CatBoyEntityService(Plugin plugin) {
20+
this.catboyNamespacedKey = new NamespacedKey(plugin, "catboy");
21+
}
22+
23+
Cat createCatboyEntity(Player player, Cat.Type type) {
24+
Cat cat = (Cat) player.getWorld().spawnEntity(player.getLocation(), EntityType.CAT);
25+
cat.setInvulnerable(true);
26+
cat.setOwner(player);
27+
cat.setAI(false);
28+
cat.setCatType(type);
29+
30+
PersistentDataContainer persistentDataContainer = cat.getPersistentDataContainer();
31+
persistentDataContainer.set(catboyNamespacedKey, PersistentDataType.BOOLEAN, true);
32+
33+
return cat;
34+
}
35+
36+
boolean isCatboy(Cat cat) {
37+
return cat.getPersistentDataContainer().has(catboyNamespacedKey, PersistentDataType.BOOLEAN);
38+
}
39+
40+
}

0 commit comments

Comments
 (0)