Giter Club home page Giter Club logo

civmodcore's Introduction

CivModCore

Common Plugin Core derived from Humbug

To use CivModCore, your Main Plugin class must extend ACivMod:

public class MyNewPlugin extends ACivMod
{

}

In addition to that, you must override getPluginName for log messages:

protected String getPluginName() {
    return "MyPluginsName";
}

CivModCore implements onEnable/onLoad, and as such an extending plugin must Override and call super:

https://github.com/Bergecraft/CivModCore/blob/master/src/vg/civcraft/mc/civmodcore/ACivMod.java#L108

@Override
public void onEnable()
{
    super.onEnable();
    //Do your stuff here that you need to do.
}

Then it is just a matter of adding CivConfigs and CivConfig Decorators on PUBLIC methods:

Types available are defined in vg.civcraft.mc.civmodcore.annotations.CivConfigType:

public enum CivConfigType {
     Bool,
     Double,
     Int,
     String
}

For Example, if you want to toggle a functionality on/off:

@CivConfig(name="mycapability", def="false", type = CivConfigType.Bool)
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerDamage(EntityDamageByEntityEvent event) {
    if (config_.get("mycapability").getBool())
    {
    
    }
}

since def="false", then by DEFAULT this capability will be disabled.

You can also have a group of CivConfig items on a single method:

@CivConfigs({
     @CivConfig(name="mycapability",      def="false", type = CivConfigType.Bool),
     @CivConfig(name="cooldown",          def="3000",  type = CivConfigType.Int),
     @CivConfig(name="mycapability2",     def="true",  type = CivConfigType.Bool),
     @CivConfig(name="damage_bonus",      def="0.66",  type = CivConfigType.Double),
     @CivConfig(name="mycapability3",     def="true",  type = CivConfigType.Bool),
	  @CivConfig(name="damage_multiplier", def="1.5",   type = CivConfigType.Double)
})
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerDamage(EntityDamageByEntityEvent event)
{
    if (config_.get("mycapability").getBool())
    {
    		//Make some cooldown
    }
    
    if (config_.get("mycapability2").getBool())
    {
        double newDamage = event.getDamage() + config_.get("damage_bonus").getDouble();
        event.setDamage(newDamage);
    }
    
    if (config_.get("mycapability3").getBool())
    {
        double newDamage = event.getDamage() * config_.get("damage_multiplier").getDouble();
        event.setDamage(newDamage);
    }
}

civmodcore's People

Contributors

valadian avatar

Watchers

James Cloos avatar  avatar

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.