First Commit
This commit is contained in:
		
							
								
								
									
										119
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,119 @@
 | 
				
			|||||||
 | 
					# User-specific stuff
 | 
				
			||||||
 | 
					.idea/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*.iml
 | 
				
			||||||
 | 
					*.ipr
 | 
				
			||||||
 | 
					*.iws
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# IntelliJ
 | 
				
			||||||
 | 
					out/
 | 
				
			||||||
 | 
					# mpeltonen/sbt-idea plugin
 | 
				
			||||||
 | 
					.idea_modules/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# JIRA plugin
 | 
				
			||||||
 | 
					atlassian-ide-plugin.xml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Compiled class file
 | 
				
			||||||
 | 
					*.class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Log file
 | 
				
			||||||
 | 
					*.log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# BlueJ files
 | 
				
			||||||
 | 
					*.ctxt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# temporary files which can be created if a process still has a handle open of a deleted file
 | 
				
			||||||
 | 
					.fuse_hidden*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# KDE directory preferences
 | 
				
			||||||
 | 
					.directory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Linux trash folder which might appear on any partition or disk
 | 
				
			||||||
 | 
					.Trash-*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# .nfs files are created when an open file is removed but is still being accessed
 | 
				
			||||||
 | 
					.nfs*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# General
 | 
				
			||||||
 | 
					.DS_Store
 | 
				
			||||||
 | 
					.AppleDouble
 | 
				
			||||||
 | 
					.LSOverride
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Icon must end with two \r
 | 
				
			||||||
 | 
					Icon
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Thumbnails
 | 
				
			||||||
 | 
					._*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Files that might appear in the root of a volume
 | 
				
			||||||
 | 
					.DocumentRevisions-V100
 | 
				
			||||||
 | 
					.fseventsd
 | 
				
			||||||
 | 
					.Spotlight-V100
 | 
				
			||||||
 | 
					.TemporaryItems
 | 
				
			||||||
 | 
					.Trashes
 | 
				
			||||||
 | 
					.VolumeIcon.icns
 | 
				
			||||||
 | 
					.com.apple.timemachine.donotpresent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Directories potentially created on remote AFP share
 | 
				
			||||||
 | 
					.AppleDB
 | 
				
			||||||
 | 
					.AppleDesktop
 | 
				
			||||||
 | 
					Network Trash Folder
 | 
				
			||||||
 | 
					Temporary Items
 | 
				
			||||||
 | 
					.apdisk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Windows thumbnail cache files
 | 
				
			||||||
 | 
					Thumbs.db
 | 
				
			||||||
 | 
					Thumbs.db:encryptable
 | 
				
			||||||
 | 
					ehthumbs.db
 | 
				
			||||||
 | 
					ehthumbs_vista.db
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Dump file
 | 
				
			||||||
 | 
					*.stackdump
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Folder config file
 | 
				
			||||||
 | 
					[Dd]esktop.ini
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Recycle Bin used on file shares
 | 
				
			||||||
 | 
					$RECYCLE.BIN/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Windows Installer files
 | 
				
			||||||
 | 
					*.cab
 | 
				
			||||||
 | 
					*.msi
 | 
				
			||||||
 | 
					*.msix
 | 
				
			||||||
 | 
					*.msm
 | 
				
			||||||
 | 
					*.msp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Windows shortcuts
 | 
				
			||||||
 | 
					*.lnk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.gradle
 | 
				
			||||||
 | 
					build/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Ignore Gradle GUI config
 | 
				
			||||||
 | 
					gradle-app.setting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Cache of project
 | 
				
			||||||
 | 
					.gradletasknamecache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**/build/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Common working directory
 | 
				
			||||||
 | 
					run/
 | 
				
			||||||
 | 
					runs/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
 | 
				
			||||||
 | 
					!gradle-wrapper.jar
 | 
				
			||||||
							
								
								
									
										21
									
								
								LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					The MIT License (MIT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2025 Tonitch8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The above copyright notice and this permission notice shall be included in
 | 
				
			||||||
 | 
					all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
				
			||||||
 | 
					THE SOFTWARE.
 | 
				
			||||||
							
								
								
									
										89
									
								
								build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								build.gradle
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					plugins {
 | 
				
			||||||
 | 
					    id 'fabric-loom' version '1.10-SNAPSHOT'
 | 
				
			||||||
 | 
					    id 'maven-publish'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version = project.mod_version
 | 
				
			||||||
 | 
					group = project.maven_group
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					base {
 | 
				
			||||||
 | 
					    archivesName = project.archives_base_name
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					repositories {
 | 
				
			||||||
 | 
					    // Add repositories to retrieve artifacts from in here.
 | 
				
			||||||
 | 
					    // You should only use this when depending on other mods because
 | 
				
			||||||
 | 
					    // Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
 | 
				
			||||||
 | 
					    // See https://docs.gradle.org/current/userguide/declaring_repositories.html
 | 
				
			||||||
 | 
					    // for more information about repositories.
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dependencies {
 | 
				
			||||||
 | 
					    // To change the versions see the gradle.properties file
 | 
				
			||||||
 | 
					    minecraft "com.mojang:minecraft:${project.minecraft_version}"
 | 
				
			||||||
 | 
					    mappings "net.fabricmc:yarn:${project.yarn_mappings}"
 | 
				
			||||||
 | 
					    modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					processResources {
 | 
				
			||||||
 | 
					    inputs.property "version", project.version
 | 
				
			||||||
 | 
					    inputs.property "minecraft_version", project.minecraft_version
 | 
				
			||||||
 | 
					    inputs.property "loader_version", project.loader_version
 | 
				
			||||||
 | 
					    filteringCharset "UTF-8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    filesMatching("fabric.mod.json") {
 | 
				
			||||||
 | 
					        expand "version": project.version,
 | 
				
			||||||
 | 
					                "minecraft_version": project.minecraft_version,
 | 
				
			||||||
 | 
					                "loader_version": project.loader_version
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def targetJavaVersion = 17
 | 
				
			||||||
 | 
					tasks.withType(JavaCompile).configureEach {
 | 
				
			||||||
 | 
					    // ensure that the encoding is set to UTF-8, no matter what the system default is
 | 
				
			||||||
 | 
					    // this fixes some edge cases with special characters not displaying correctly
 | 
				
			||||||
 | 
					    // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
 | 
				
			||||||
 | 
					    // If Javadoc is generated, this must be specified in that task too.
 | 
				
			||||||
 | 
					    it.options.encoding = "UTF-8"
 | 
				
			||||||
 | 
					    if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
 | 
				
			||||||
 | 
					        it.options.release.set(targetJavaVersion)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					java {
 | 
				
			||||||
 | 
					    def javaVersion = JavaVersion.toVersion(targetJavaVersion)
 | 
				
			||||||
 | 
					    if (JavaVersion.current() < javaVersion) {
 | 
				
			||||||
 | 
					        toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
 | 
				
			||||||
 | 
					    // if it is present.
 | 
				
			||||||
 | 
					    // If you remove this line, sources will not be generated.
 | 
				
			||||||
 | 
					    withSourcesJar()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jar {
 | 
				
			||||||
 | 
					    from("LICENSE") {
 | 
				
			||||||
 | 
					        rename { "${it}_${project.archivesBaseName}" }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// configure the maven publication
 | 
				
			||||||
 | 
					publishing {
 | 
				
			||||||
 | 
					    publications {
 | 
				
			||||||
 | 
					        create("mavenJava", MavenPublication) {
 | 
				
			||||||
 | 
					            artifactId = project.archives_base_name
 | 
				
			||||||
 | 
					            from components.java
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
 | 
				
			||||||
 | 
					    repositories {
 | 
				
			||||||
 | 
					        // Add repositories to publish to here.
 | 
				
			||||||
 | 
					        // Notice: This block does NOT have the same function as the block in the top level.
 | 
				
			||||||
 | 
					        // The repositories here will be used for publishing your artifact, not for
 | 
				
			||||||
 | 
					        // retrieving dependencies.
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										14
									
								
								gradle.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								gradle.properties
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					# Done to increase the memory available to gradle.
 | 
				
			||||||
 | 
					org.gradle.jvmargs=-Xmx1G
 | 
				
			||||||
 | 
					# Fabric Properties
 | 
				
			||||||
 | 
					# check these on https://modmuss50.me/fabric.html
 | 
				
			||||||
 | 
					minecraft_version=1.20.1
 | 
				
			||||||
 | 
					yarn_mappings=1.20.1+build.10
 | 
				
			||||||
 | 
					loader_version=0.16.10
 | 
				
			||||||
 | 
					# Mod Properties
 | 
				
			||||||
 | 
					mod_version=1.0-SNAPSHOT
 | 
				
			||||||
 | 
					maven_group=ovh.herisson
 | 
				
			||||||
 | 
					archives_base_name=HornOfTheWild
 | 
				
			||||||
 | 
					# Dependencies
 | 
				
			||||||
 | 
					# check this on https://modmuss50.me/fabric.html
 | 
				
			||||||
 | 
					fabric_version=0.92.3+1.20.1
 | 
				
			||||||
							
								
								
									
										7
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					distributionBase=GRADLE_USER_HOME
 | 
				
			||||||
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
 | 
				
			||||||
 | 
					networkTimeout=10000
 | 
				
			||||||
 | 
					validateDistributionUrl=true
 | 
				
			||||||
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
							
								
								
									
										9
									
								
								settings.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								settings.gradle
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					pluginManagement {
 | 
				
			||||||
 | 
					    repositories {
 | 
				
			||||||
 | 
					        maven {
 | 
				
			||||||
 | 
					            name = 'Fabric'
 | 
				
			||||||
 | 
					            url = 'https://maven.fabricmc.net/'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        gradlePluginPortal()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								src/main/java/ovh/herisson/hornofthewild/HornOfTheWild.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/main/java/ovh/herisson/hornofthewild/HornOfTheWild.java
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					package ovh.herisson.hornofthewild;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import net.fabricmc.api.ModInitializer;
 | 
				
			||||||
 | 
					import net.minecraft.item.Item;
 | 
				
			||||||
 | 
					import net.minecraft.registry.Registries;
 | 
				
			||||||
 | 
					import net.minecraft.registry.Registry;
 | 
				
			||||||
 | 
					import net.minecraft.util.Identifier;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class HornOfTheWild implements ModInitializer {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static final String MOD_ID = "hotw";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static final HornOfTheWildItem hornofthewild = new HornOfTheWildItem(new Item.Settings());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onInitialize() {
 | 
				
			||||||
 | 
					        Registry.register(Registries.ITEM, new Identifier(MOD_ID, "hornofthewild"), hornofthewild);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,86 @@
 | 
				
			|||||||
 | 
					package ovh.herisson.hornofthewild;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import net.minecraft.block.Block;
 | 
				
			||||||
 | 
					import net.minecraft.block.BlockState;
 | 
				
			||||||
 | 
					import net.minecraft.block.entity.BlockEntity;
 | 
				
			||||||
 | 
					import net.minecraft.entity.LivingEntity;
 | 
				
			||||||
 | 
					import net.minecraft.entity.player.PlayerEntity;
 | 
				
			||||||
 | 
					import net.minecraft.item.Item;
 | 
				
			||||||
 | 
					import net.minecraft.item.ItemStack;
 | 
				
			||||||
 | 
					import net.minecraft.item.ItemUsage;
 | 
				
			||||||
 | 
					import net.minecraft.registry.RegistryKeys;
 | 
				
			||||||
 | 
					import net.minecraft.registry.tag.TagKey;
 | 
				
			||||||
 | 
					import net.minecraft.sound.SoundCategory;
 | 
				
			||||||
 | 
					import net.minecraft.sound.SoundEvents;
 | 
				
			||||||
 | 
					import net.minecraft.text.Text;
 | 
				
			||||||
 | 
					import net.minecraft.util.Hand;
 | 
				
			||||||
 | 
					import net.minecraft.util.Identifier;
 | 
				
			||||||
 | 
					import net.minecraft.util.TypedActionResult;
 | 
				
			||||||
 | 
					import net.minecraft.util.UseAction;
 | 
				
			||||||
 | 
					import net.minecraft.util.math.BlockBox;
 | 
				
			||||||
 | 
					import net.minecraft.util.math.BlockPos;
 | 
				
			||||||
 | 
					import net.minecraft.world.World;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.Collections;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class HornOfTheWildItem extends Item {
 | 
				
			||||||
 | 
					    public static final TagKey<Block> HORN_BREAKABLE = TagKey.of(RegistryKeys.BLOCK, new Identifier(HornOfTheWild.MOD_ID, "hotw_breakable"));
 | 
				
			||||||
 | 
					    public HornOfTheWildItem(Settings settings) {
 | 
				
			||||||
 | 
					        super(settings);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int getMaxUseTime(ItemStack itemStack) {
 | 
				
			||||||
 | 
					        return 72000;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public TypedActionResult<ItemStack> use(World world, PlayerEntity playerEntity, Hand hand) {
 | 
				
			||||||
 | 
					        return ItemUsage.consumeHeldItem(world, playerEntity, hand);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void usageTick(World world, LivingEntity livingEntity, ItemStack itemStack, int time) {
 | 
				
			||||||
 | 
					        if (!world.isClient) {
 | 
				
			||||||
 | 
					            if(time % 5 == 0){
 | 
				
			||||||
 | 
					               HornBeat(world, itemStack, livingEntity.getBlockPos(), livingEntity);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            world.playSound(null, livingEntity.getX(), livingEntity.getY(), livingEntity.getZ(), SoundEvents.ENTITY_HORSE_BREATHE, SoundCategory.PLAYERS, 1.0F, 1.0F);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public UseAction getUseAction(ItemStack itemStack) {
 | 
				
			||||||
 | 
					        return UseAction.BOW;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static boolean canHarvest(World world, ItemStack stack, BlockPos pos, LivingEntity livingEntity) {
 | 
				
			||||||
 | 
					        BlockState state = world.getBlockState(pos);
 | 
				
			||||||
 | 
					        return state.isIn(HORN_BREAKABLE);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static void HornBeat(World world, ItemStack stack, BlockPos srcPos, LivingEntity livingEntity){
 | 
				
			||||||
 | 
					        int range = 12;
 | 
				
			||||||
 | 
					        int rangeY = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<BlockPos> coords = new ArrayList<>();
 | 
				
			||||||
 | 
					        for (BlockPos pos: BlockPos.iterate(srcPos.add(-range, -rangeY, -range), srcPos.add(range, rangeY, range))){
 | 
				
			||||||
 | 
					            if(HornOfTheWildItem.canHarvest(world, stack, pos, livingEntity)){
 | 
				
			||||||
 | 
					                coords.add(pos.toImmutable());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Collections.shuffle(coords);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        int count = Math.min(coords.size(), 32);
 | 
				
			||||||
 | 
					        for (int i = 0; i < count; i++) {
 | 
				
			||||||
 | 
					            BlockPos currCoords = coords.get(i);
 | 
				
			||||||
 | 
					            BlockState state = world.getBlockState(currCoords);
 | 
				
			||||||
 | 
					            BlockEntity be = world.getBlockEntity(currCoords);
 | 
				
			||||||
 | 
					            world.breakBlock(currCoords, true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					package ovh.herisson.hornofthewild.client;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import net.fabricmc.api.ClientModInitializer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class HornofthewildClient implements ClientModInitializer {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onInitializeClient() {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										3
									
								
								src/main/resources/assets/hotw/lang/en_us.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/main/resources/assets/hotw/lang/en_us.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "item.hotw.hornofthewild": "Horn Of The Wild"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "parent": "item/generated",
 | 
				
			||||||
 | 
					  "textures": {
 | 
				
			||||||
 | 
					    "layer0": "hotw:item/hornofthewild"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								src/main/resources/assets/hotw/textures/item/hornofthewild.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/main/resources/assets/hotw/textures/item/hornofthewild.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 432 B  | 
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "type": "minecraft:crafting_shaped",
 | 
				
			||||||
 | 
					  "pattern": [
 | 
				
			||||||
 | 
					    " # ",
 | 
				
			||||||
 | 
					    "#F#",
 | 
				
			||||||
 | 
					    "## "
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "key": {
 | 
				
			||||||
 | 
					    "#": {
 | 
				
			||||||
 | 
					      "tag": "minecraft:logs"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "F": {
 | 
				
			||||||
 | 
					      "item": "minecraft:fern"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "result": {
 | 
				
			||||||
 | 
					    "item": "hotw:hornofthewild",
 | 
				
			||||||
 | 
					    "count": 1
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "type": "minecraft:stonecutting",
 | 
				
			||||||
 | 
					  "ingredient": {
 | 
				
			||||||
 | 
					    "item": "minecraft:goat_horn"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "result": "hotw:hornofthewild",
 | 
				
			||||||
 | 
					  "count": 1,
 | 
				
			||||||
 | 
					  "category": "misc"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										16
									
								
								src/main/resources/data/hotw/tags/blocks/hotw_breakable.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/main/resources/data/hotw/tags/blocks/hotw_breakable.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "replace": false,
 | 
				
			||||||
 | 
					  "values": [
 | 
				
			||||||
 | 
					    "#minecraft:leaves",
 | 
				
			||||||
 | 
					    "#minecraft:crops",
 | 
				
			||||||
 | 
					    "#minecraft:fire",
 | 
				
			||||||
 | 
					    "#minecraft:flowers",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    "minecraft:grass",
 | 
				
			||||||
 | 
					    "minecraft:large_fern",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    "minecraft:tall_seagrass",
 | 
				
			||||||
 | 
					    "minecraft:seagrass",
 | 
				
			||||||
 | 
					    "minecraft:kelp_plant"
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										28
									
								
								src/main/resources/fabric.mod.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/main/resources/fabric.mod.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "schemaVersion": 1,
 | 
				
			||||||
 | 
					  "id": "hornofthewild",
 | 
				
			||||||
 | 
					  "version": "${version}",
 | 
				
			||||||
 | 
					  "name": "HornOfTheWild",
 | 
				
			||||||
 | 
					  "description": "Horn of the wild from botania",
 | 
				
			||||||
 | 
					  "authors": [],
 | 
				
			||||||
 | 
					  "contact": {},
 | 
				
			||||||
 | 
					  "license": "MIT",
 | 
				
			||||||
 | 
					  "icon": "assets/hornofthewild/icon.png",
 | 
				
			||||||
 | 
					  "environment": "*",
 | 
				
			||||||
 | 
					  "entrypoints": {
 | 
				
			||||||
 | 
					    "client": [
 | 
				
			||||||
 | 
					      "ovh.herisson.hornofthewild.client.HornofthewildClient"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "main": [
 | 
				
			||||||
 | 
					      "ovh.herisson.hornofthewild.HornOfTheWild"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "mixins": [
 | 
				
			||||||
 | 
					    "hornofthewild.mixins.json"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "depends": {
 | 
				
			||||||
 | 
					    "fabricloader": ">=${loader_version}",
 | 
				
			||||||
 | 
					    "fabric": "*",
 | 
				
			||||||
 | 
					    "minecraft": "${minecraft_version}"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										13
									
								
								src/main/resources/hornofthewild.mixins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/main/resources/hornofthewild.mixins.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "required": true,
 | 
				
			||||||
 | 
					  "minVersion": "0.8",
 | 
				
			||||||
 | 
					  "package": "ovh.herisson.hornofthewild.mixin",
 | 
				
			||||||
 | 
					  "compatibilityLevel": "JAVA_17",
 | 
				
			||||||
 | 
					  "mixins": [
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "client": [
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "injectors": {
 | 
				
			||||||
 | 
					    "defaultRequire": 1
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user