From 7e156ff2ea926f02ab2a3f9aedc18009b4098e1d Mon Sep 17 00:00:00 2001 From: Harrison Date: Sat, 18 Apr 2020 00:08:05 -0500 Subject: [PATCH] initial commit. --- .gitignore | 132 ++++++++++++++++++ .vscode/settings.json | 3 + README.md | 55 ++++++++ plugin.yml | 6 + pom.xml | 45 ++++++ .../IslandSurvivalCraftPlugin.java | 21 +++ .../recrown/islandsurvivalcraft/AppTest.java | 38 +++++ 7 files changed, 300 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 plugin.yml create mode 100644 pom.xml create mode 100644 src/main/java/ca/recrown/islandsurvivalcraft/IslandSurvivalCraftPlugin.java create mode 100644 src/test/java/ca/recrown/islandsurvivalcraft/AppTest.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cf51e90 --- /dev/null +++ b/.gitignore @@ -0,0 +1,132 @@ + +# Created by https://www.gitignore.io/api/java,maven,eclipse,visualstudiocode +# Edit at https://www.gitignore.io/?templates=java,maven,eclipse,visualstudiocode + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Annotation Processing +.apt_generated + +.sts4-cache/ + +### 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* + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.flattened-pom.xml + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history + +# End of https://www.gitignore.io/api/java,maven,eclipse,visualstudiocode + +#Additional +local_tools + +#Test server stuff +test-server/* +!test-server/*.ps1 +!test-server/bukkit.yml +!test-server/paper-195.jar \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e0f15db --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..47109f2 --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +# Island Survival Craft + +Island Survival Craft is a new Minecraft gamemode based on the discovery of a variety of natural islands in a vast uncharted sea and claiming them for yourself. + +## Gameplay + +Start off by boating in a vast uncharted sea to discover and purchase your very own starter island from **Jerry's Island Protection Company**! Your first island is always free! Gather natural resources from this island to build yourself shelter and progress much like normal vanilla. If you want to mine more than your island can give, try the **Jeff's Mining Company**! They'll provide you with large caves for you to mine in. Want to visit your friends? Have them choose an island close to you, or use **Blaze Airlines** to travel to them! Remember: playing with friends is always more fun! + +Of course, eventually, you're probably going to want more bigger, better islands to explore and build on! No problem, Jerry's Island Protection Company has you covered, although you're going to need to pay for your next one. Don't worry though, Jerry, much like many other parts of this gamemode, takes Dragon Eggs as payments, which you can earn by participating in the recurring **minigames** hosted by **Zany's Arcade Games**! + +Now you might be wondering: what if you just want to explore the island and not inhabit it? That's perfectly fine! Just remember, islands that don't have Jerry's Island Protection will generally have much more aggressive mobs spawn, Nature also takes over quickly as blocks you place will eventually be overtaken by nature (they will decay)! Jeff's Mining Company and Blaze Airlines will also be afraid to leave their representatives on such dangerous islands. + +### Inhabited Islands + +Islands that have been claimed by a player are consider inhabited. Inhabited islands will have a dock built anywhere that touches water. The player will be allowed to choose exactly where this building will happen. They must choose wisely however as these docks cannot be moved by the player in the future. + +### The Dock + +The dock will be host to a variety of companies representatives. These representatives will help the player fast travel to various destinations which help integrate vanilla gameplay to the island based gameplay. + +### Jeff's Mining Company + +Jeff's Mining Company allows for players to not need to go island hopping to just gather resources. This allows for closer to vanilla gameplay in the sense that mining is still just a few blocks away. Everytime a player purchases an island, Jeff's Mining Company will send a company representative to that islands dock. By talking to the representative, the player can travel instantly to a very large cave (a mining dimension) where the player will be permitted to mine for as long as they want with the standard vanilla mechanics (mob spawn and ore generation). + +### Blaze Airlines + +Is the mode of transportation for when you want to visit a friends island, but they're island is very far away. Players can talk to the company's representative at the dock to get a nice zeppelin ride to their select destination. This is done by giving the representative the unique island code (UIC) of your friends island. Of course, your friend has to permit them to land, or else the player will be restricted from visiting. The speed of travel is configurable in the configurations (default is 4 chunks per second). + +### Jerry's Island Protection Company (JIPC) + +Is the mechanic that allows players to make an island theirs. They do this by placing a **call sign** that will let JIPC's representative know where to go to work at. Wherever the call sign is placed is also where the **dock** will be spawned. The benifits of claiming an island are as follows: Blocks players place won't decay, mob spawning will be turned down to normal rates, the various companies will leave their representatives at the dock. Claiming an island requires varying amounts of **ender eggs** dependent on the size of the island. + +### The Islands + +The islands will come in 5 different tiers based on solely on their size. The bigger the island, the higher the tier, and the more costly it will be to claim (after all, protecting big islands are a lot of work)! Island sizes and tiers are configurable. The cost is tier number in ender eggs. Players can name their islands by using the **call sign**, or by talking to the JIPC representative. Players will also be able to transfer island ownership allowing for potential trades for islands to occurr. For information on what happens with unclaimed islands, read the section on **Jerry's Island Protection Company**. + +For every island in the overworld, there will be a respective island in the nether. + +### Call Sign (Claiming Islands) + +The call sign is just a vanilla sign placed near the border between sea and land. This will generate the dock and make the island officially claimed. The sign needs to contain an configurable string and the player will be notified of the tier. They will then need to right click the sign, and the required amount of **ender eggs** will be taken as the dock is formed with company representatives as well. By putting another string on the sign, the player can also name the island. + +### Ender Eggs and Zany's Arcade Games + +Every configurable period, a new **challenge** will be selected for all the players of the server. These minigames are the only way to get **ender eggs** and include the ender dragon fight itself. To access these minigames, players can talk to Zany's Arcade Games representative on their dock. Leaving the game area is as simple as typing a command if midgame, or by talking to the representative at the end of the game. + +Possible minigames: + +- Ender Dragon Boss Fight: Fight the ender dragon in a vanilla-esque setup. The Egg will spawn normally, and the players can fight for it, or discuss in a civilized manner on who it should go to. + +- Build off: players are allocated plots, and are given a theme to build towards. Near the end, the players will vote. Whoever gets the most vote wins an ender egg. + +- It's a race: Players are spawned throughout the world, and the first one to find the stronghold is victorious and gets the egg. + +- Best Trap Wins: A minigame (heavily inspired by Youtuber Dream) where all players are placed in a survival world and assigned an apposing player. Every configurable amount of time passes, the players are teleported to a location their opposing players choice (set by command to where the player executing the command is standing). Each time a player successfully kills his enemy, he is assigned another at random. Last player standing gets the egg. diff --git a/plugin.yml b/plugin.yml new file mode 100644 index 0000000..33d73c6 --- /dev/null +++ b/plugin.yml @@ -0,0 +1,6 @@ +name: IslandSurvivalCraft +main: ca.recrown.IslandSurvivalCraft +version: 1.0.0 +description: Adds the gamemode IslandSurvivalCraft. +commands: +depend: [WorldGuard] \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..64c93cf --- /dev/null +++ b/pom.xml @@ -0,0 +1,45 @@ + + 4.0.0 + ca.recrown.islandsurvivalcraft + IslandSurvivalCraft + jar + 1.0.0 + IslandSurvivalCraft + http://maven.apache.org + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + sk89q-repo + https://maven.enginehub.org/repo/ + + + + + junit + junit + 3.8.1 + test + + + org.spigotmc + spigot-api + 1.15.2-R0.1-SNAPSHOT + provided + + + com.sk89q.worldguard + worldguard-bukkit + 7.0.2 + provided + + + + UTF-8 + 8 + 8 + + \ No newline at end of file diff --git a/src/main/java/ca/recrown/islandsurvivalcraft/IslandSurvivalCraftPlugin.java b/src/main/java/ca/recrown/islandsurvivalcraft/IslandSurvivalCraftPlugin.java new file mode 100644 index 0000000..4a3fe77 --- /dev/null +++ b/src/main/java/ca/recrown/islandsurvivalcraft/IslandSurvivalCraftPlugin.java @@ -0,0 +1,21 @@ +package ca.recrown.islandsurvivalcraft; + +import org.bukkit.plugin.java.JavaPlugin; + +/** + * Hello world! + * + */ +public class IslandSurvivalCraftPlugin extends JavaPlugin { + @Override + public void onEnable() { + // TODO Auto-generated method stub + super.onEnable(); + } + + @Override + public void onDisable() { + // TODO Auto-generated method stub + super.onDisable(); + } +} diff --git a/src/test/java/ca/recrown/islandsurvivalcraft/AppTest.java b/src/test/java/ca/recrown/islandsurvivalcraft/AppTest.java new file mode 100644 index 0000000..abec6b8 --- /dev/null +++ b/src/test/java/ca/recrown/islandsurvivalcraft/AppTest.java @@ -0,0 +1,38 @@ +package ca.recrown.islandsurvivalcraft; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +}