Initial commit
This commit is contained in:
+33
@@ -0,0 +1,33 @@
|
|||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/java
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=java
|
||||||
|
|
||||||
|
### Java ###
|
||||||
|
# Compiled class file
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# BlueJ files
|
||||||
|
*.ctxt
|
||||||
|
|
||||||
|
# Mobile Tools for Java (J2ME)
|
||||||
|
.mtj.tmp/
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.nar
|
||||||
|
*.ear
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
hs_err_pid*
|
||||||
|
replay_pid*
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/java
|
||||||
|
|
||||||
|
|
||||||
|
run
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
|
|||||||
|
#Fri Jan 09 21:21:17 CET 2026
|
||||||
|
gradle.version=8.8
|
||||||
Binary file not shown.
Binary file not shown.
Generated
+3
@@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
Generated
+6
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<bytecodeTargetLevel target="21" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+15
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="GradleSettings">
|
||||||
|
<option name="linkedExternalProjectsSettings">
|
||||||
|
<GradleProjectSettings>
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="modules">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</GradleProjectSettings>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="corretto-21" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/modules/BabyCreeper.main.iml" filepath="$PROJECT_DIR$/.idea/modules/BabyCreeper.main.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+13
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module version="4">
|
||||||
|
<component name="FacetManager">
|
||||||
|
<facet type="minecraft" name="Minecraft">
|
||||||
|
<configuration>
|
||||||
|
<autoDetectTypes>
|
||||||
|
<platformType>ADVENTURE</platformType>
|
||||||
|
</autoDetectTypes>
|
||||||
|
<projectReimportVersion>1</projectReimportVersion>
|
||||||
|
</configuration>
|
||||||
|
</facet>
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
Generated
+6
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
plugins {
|
||||||
|
id 'java'
|
||||||
|
id("xyz.jpenilla.run-paper") version "2.3.1"
|
||||||
|
}
|
||||||
|
|
||||||
|
group = 'eu.mhsl.minecraft.BabyCreeper'
|
||||||
|
version = '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven {
|
||||||
|
name = "papermc-repo"
|
||||||
|
url = "https://repo.papermc.io/repository/maven-public/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly("io.papermc.paper:paper-api:1.21.11-R0.1-SNAPSHOT")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
runServer {
|
||||||
|
// Configure the Minecraft version for our task.
|
||||||
|
// This is the only required configuration besides applying the plugin.
|
||||||
|
// Your plugin's jar (or shadowJar if present) will be used automatically.
|
||||||
|
minecraftVersion("1.21.10")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def targetJavaVersion = 21
|
||||||
|
java {
|
||||||
|
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
|
||||||
|
sourceCompatibility = javaVersion
|
||||||
|
targetCompatibility = javaVersion
|
||||||
|
if (JavaVersion.current() < javaVersion) {
|
||||||
|
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.withType(JavaCompile).configureEach {
|
||||||
|
options.encoding = 'UTF-8'
|
||||||
|
|
||||||
|
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
|
||||||
|
options.release.set(targetJavaVersion)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
processResources {
|
||||||
|
def props = [version: version]
|
||||||
|
inputs.properties props
|
||||||
|
filteringCharset 'UTF-8'
|
||||||
|
filesMatching('plugin.yml') {
|
||||||
|
expand props
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
babyCreepers:
|
||||||
|
enabled: true
|
||||||
|
spawnProbability: 0.1
|
||||||
|
size: 0.5
|
||||||
|
speed: 0.3
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
name: BabyCreeper
|
||||||
|
version: '1.0-SNAPSHOT'
|
||||||
|
main: eu.mhsl.minecraft.BabyCreeper
|
||||||
|
api-version: '1.21'
|
||||||
|
authors: [ MineTec ]
|
||||||
|
description: Hides Serverlist-Ping information
|
||||||
|
website: mhsl.eu
|
||||||
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
|
|||||||
|
Manifest-Version: 1.0
|
||||||
|
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
rootProject.name = 'BabyCreeper'
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package eu.mhsl.minecraft;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public final class BabyCreeper extends JavaPlugin {
|
||||||
|
@NotNull
|
||||||
|
public static final NamespacedKey babyCreeper = NamespacedKey.fromString("babycreeper");
|
||||||
|
|
||||||
|
public static ConfigurationSection config;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
saveResource("config.yml", false);
|
||||||
|
reloadConfig();
|
||||||
|
config = getConfig().getConfigurationSection("babyCreepers");
|
||||||
|
if(config == null) throw new IllegalStateException("Could not load config. Root element 'babyCreepers' is missing!");
|
||||||
|
|
||||||
|
if(!config.getBoolean("enabled", true)) return;
|
||||||
|
Bukkit.getPluginManager().registerEvents(new BabyCreeperListener(), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
Bukkit.getScheduler().cancelTasks(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package eu.mhsl.minecraft;
|
||||||
|
|
||||||
|
import org.bukkit.attribute.Attribute;
|
||||||
|
import org.bukkit.attribute.AttributeInstance;
|
||||||
|
import org.bukkit.entity.Creeper;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.WindCharge;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||||
|
import org.bukkit.persistence.PersistentDataType;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
|
public class BabyCreeperListener implements Listener {
|
||||||
|
@EventHandler
|
||||||
|
public void onCreeperSpawn(CreatureSpawnEvent event) {
|
||||||
|
if(!event.getEntity().getType().equals(EntityType.CREEPER)) return;
|
||||||
|
// if(ThreadLocalRandom.current().nextDouble() > BabyCreeper.config.getDouble("spawnProbability", 0.1)) return;
|
||||||
|
|
||||||
|
Creeper creeper = (Creeper) event.getEntity();
|
||||||
|
creeper.getPersistentDataContainer().set(BabyCreeper.babyCreeper, PersistentDataType.BOOLEAN, true);
|
||||||
|
AttributeInstance scaleAttribute = Objects.requireNonNull(creeper.getAttribute(Attribute.SCALE), "Could not find scale attribute for Entity");
|
||||||
|
AttributeInstance speedAttribute = Objects.requireNonNull(creeper.getAttribute(Attribute.MOVEMENT_SPEED), "Could not find speed attribute for Entity");
|
||||||
|
scaleAttribute.setBaseValue(BabyCreeper.config.getDouble("size", 0.5));
|
||||||
|
speedAttribute.setBaseValue(BabyCreeper.config.getDouble("speed", 0.5));
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onCreeperExplode(EntityExplodeEvent event) {
|
||||||
|
if(!event.getEntity().getType().equals(EntityType.CREEPER)) return;
|
||||||
|
Creeper creeper = (Creeper) event.getEntity();
|
||||||
|
if(!creeper.getPersistentDataContainer().has(BabyCreeper.babyCreeper, PersistentDataType.BOOLEAN)) return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
creeper.getLocation().createExplosion(creeper, 2, false, false);
|
||||||
|
|
||||||
|
// // WindCharge windCharge = creeper.getLocation().getWorld().spawn(creeper.getLocation(), WindCharge.class);
|
||||||
|
// windCharge.setVelocity(new Vector(0, -100, 0));
|
||||||
|
// windCharge.setInvulnerable(true);
|
||||||
|
// windCharge.setGravity(false);
|
||||||
|
// windCharge.setInvisible(true);
|
||||||
|
// windCharge.setVisibleByDefault(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onCreeperDamage(EntityDamageByEntityEvent event) {
|
||||||
|
if(!event.getDamager().getType().equals(EntityType.CREEPER)) return;
|
||||||
|
Creeper creeper = (Creeper) event.getDamager();
|
||||||
|
if(!creeper.getPersistentDataContainer().has(BabyCreeper.babyCreeper, PersistentDataType.BOOLEAN)) return;
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
babyCreepers:
|
||||||
|
enabled: true
|
||||||
|
spawnProbability: 0.1
|
||||||
|
size: 0.5
|
||||||
|
speed: 0.3
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
name: BabyCreeper
|
||||||
|
version: '1.0-SNAPSHOT'
|
||||||
|
main: eu.mhsl.minecraft.BabyCreeper
|
||||||
|
api-version: '1.21'
|
||||||
|
authors: [ MineTec ]
|
||||||
|
description: Hides Serverlist-Ping information
|
||||||
|
website: mhsl.eu
|
||||||
Reference in New Issue
Block a user