Git Product home page Git Product logo

minestrike's Introduction

Minestrike

A 1.15.2 Paper plugin that is meant to bring the Counter-Strike defuse gamemode to Minecraft with "vanilla" pvp mechanics. Most, if not all servers that have a playable "Counter-Strike mode" are heavily modified with custom resource packs, clunky gun emulation, and custom resources for sound clips and fonts that just don't fit in Minecraft.

With this plugin, we aim to bring the beloved gamemode to vanilla Minecraft PvP.

The core of the defuse gamemode will all be there perfectly preserved, however, combat will involve classic Minecraft sword and bow combat with the exception of a few tweaks and additions to enhance the experience.

All weapons, armor, and equipment availble for purchase in the buy menu will have fine-tuned damage values/attack speeds, movement speed penalties/buffs, or even unique mechanics and/or utility. (Without straying away from the feel of classic Minecraft PvP of course!)

This plugin is for those who love Counter-Strike, but want a classic Minecraft twist on it.

Note:

This project is mainly being used as a learning resource for spigot minigame development for myself and my friends to cure our eternal boredom in quarantine, and learn something cool in the meantime. It also gives me (dev) an excuse to try out project management tools on Github that I never bothered to actually learn.

minestrike's People

Contributors

devvydont avatar courteouss avatar impuffs avatar jrobertm avatar

Stargazers

 avatar Nicholas Taylor avatar

Watchers

 avatar

minestrike's Issues

spawns and bomb zones

  • Spawn zone: Where Attackers and Defenders spawn every round
  • Bombsite zone: Where bombs can be planted by attackers

-curt

Custom Bows

  • Arrow speed
  • Draw speed
  • No drop
  • Explosive tipped

-curt

Set default max hp for players from 20 -> 100

We will use a max hp of 100 for our game to streamline the hp that players have
When players log in, they simply just need to have their max hp set immediately

since setting player max HP scales the players hearts to always display 1 heart per 2HP, it is also probably a good idea to do this as well, so we don't have 5 rows of hearts on the screen

Player p;
p.setHealthScaled(true);  // Makes sure the client is displaying the health scale just in case
p.setHealthScale​(20);  // Forces the client to display their health as if they had 20HP

Override vanilla Minecraft's damage values

Since our plugin will use custom damage and defense values, we need to completely override all damage done from all sources of damage

Damage values for items should be defined in a custom item manager

Setup a settings.minestrike file parser (or YAML) that reads a file stored in a world folder and grabs information to setup the game on the server

Every map needs the following things:

  • Coordinates for Defenders spawn point
  • Coordinates for Attackers spawn point
  • Coordinates for all bombsites
  • Coordinates for a default spot to spawn a spectator at (optional)

TBD - if a game isn't active, we may just have the server run on an indefinite 'warmup' round until a game starts with respawns and unlimited money (essentially kitPVP), if we don't decide to go with this, we will stick with a traditional (boring) lobby

  • Coordinates for a lobby spawn

Implement a way for players to change teams before a match starts, so that players can choose their teams

  • When players join the server, they are automatically spectators

    • If we are in a pre-game phase, players should be presented with a pick a team gui
    • If we are in a game, and the player is new, they will be a spectator the entire match
    • If the player is reconnecting but previously was in the game, we should handle them properly to reconnect them
  • Server admins will have the option to scramble teams and start a match, as well as force a team switch for a player, or force them to be a spectator

  • Server admins will also be able to toggle non-admin team switching permissions

Implement an interactive "Bomb" block

  • The bomb is placed by an attacker that has a bomb item
  • The bomb has an easy to adjust timer that ticks down to 0
  • The bomb can be "defused" by defenders
  • Custom events should fire for these scenarios for easy monitoring

Give custom weapons a "movement speed" stat

Items that the player are going to hold, such as swords, bows, etc. will have variability in agility

  • Listen for events where a player switches the item they are holding, and check to see if we should change movement speed

Integrate the new bomb block to work with bomb site zones

  • Bombs should only be planted in allowed zones
  • Bombs that run their timer should terminate a round and give the attackers a point
  • Bombs that are defused should terminate a round and give the defenders a point
  • If a bomb is planted and all terrorists die, we do not end the round yet, this does not apply for defenders

Give players money for doing certain things

For now these can be based on or be relatively close to cs:go values until we can properly balance

  • Winning/losing a round
  • Getting a kill

to give a player money, you simply just need a reference to the player object, then you can do

Minestrike plugin = Minestrike.getPlugin(Minestrike.class);
Player p;  // Some reference to player object
int moneyToGive;  // However much money you want to give
plugin.getGameManager().getPlayerManager().getCSPlayer(p).addMoney(moneyToGive);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.